package model import ( "admin/apps/game/model/dto" "admin/internal/consts" "admin/internal/db" "admin/internal/global" "errors" "gorm.io/gorm" "time" ) func init() { db.RegisterTableModels(Project{}) } // Project 游戏项目,例如神谕、神魔大陆 type Project struct { ID int `gorm:"primarykey" readonly:"true"` ProjectType string `gorm:"type:varchar(255);uniqueIndex:project" name:"项目类型" choices:"GetProjectChoices" uneditable:"true" required:"true"` Name string `gorm:"primarykey;uniqueIndex:project" required:"true" name:"项目名" desc:"例如神魔大陆-正式服、神魔大陆-主播服" uneditable:"true"` Desc string `name:"项目描述"` // command_list接口服务器地址,为空代表由由项目下各个逻辑服提供command_list. // 取决于每个项目改造难度: // 不为空就代表项目要实现一个自己统一对外暴露的gm调用服务对内聚合、分发指令执行,本后台执行指令只调用一次; // 为空就代表command_list实现在各个逻辑服,由本后台系统在执行指令时聚合、分发指令 // 调用各个逻辑服执行,本后台执行指令需要根据逻辑服数量调用; ApiAddr string `name:"游戏api地址" desc:"api服务器地址,例如神魔大陆就是alisrv服务器地址,用于后台调用gm"` CreatedAt time.Time `readonly:"true"` } func (lm *Project) TableName() string { return "project" } func (m *Project) GetId() int { return m.ID } func (m *Project) GetProjectChoices(_ *Project) []*dto.CommonDtoFieldChoice { return []*dto.CommonDtoFieldChoice{ {Desc: "神魔大陆", Value: consts.RegisteredProjectId_shenmodalu, Type: 0}, } } func (p *Project) GetByID() (bool, error) { err := global.GLOB_DB.Where("id=?", p.ID).First(p).Error if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return false, nil } return false, err } return true, nil }