package models import ( "eta_gn/eta_task/global" "eta_gn/eta_task/utils" "time" ) const ( // 事件类型-事件库 KnowledgeResourceTypeEvent = iota // 事件-政策库 KnowledgeResourceTypePolicy // 事件-报告库 KnowledgeResourceTypeReport // 事件类型-知识库 KnowledgeResourceTypeKnow // 事件-观点库 KnowledgeResourceTypeOpinion ) const ( // 未发布 KnowledgeResourceStateUnpublished = iota // 已发布 KnowledgeResourceStatePublished // 待审批 KnowledgeResourceStatePending // 已驳回 KnowledgeResourceStateRejected // 已通过 KnowledgeResourceStateApproved ) type KnowledgeResourceFile struct { KnowledgeResourceFileId int `gorm:"column:knowledge_resource_file_id;primaryKey;autoIncrement"` KnowledgeResourceId int `gorm:"column:knowledge_resource_id"` FileUrl string `gorm:"column:file_url"` } func (k KnowledgeResourceFile) TableName() string { return "knowledge_resource_file" } type KnowledgeResource struct { KnowledgeResourceId int `gorm:"column:knowledge_resource_id;;primaryKey;autoIncrement"` ResourceType int `gorm:"column:resource_type;"` ClassifyId int `gorm:"column:classify_id"` Title string `gorm:"column:title;"` CreateTime time.Time `gorm:"column:create_time" description:"创建时间"` ModifyTime time.Time `gorm:"column:modify_time;autoUpdateTime" description:"修改时间"` State int `gorm:"column:state" description:"0:未发布;1:已发布;2:待审批;3:已驳回;4:已通过"` Content string `gorm:"column:content"` ResourceCode string `gorm:"column:resource_code"` AdminId int `gorm:"column:admin_id" description:"创建者账号"` AdminRealName string `gorm:"column:admin_real_name" description:"创建者姓名"` SourceFrom string `gorm:"column:source_from"` TagId int `gorm:"column:tag_id;default:0;NOT NULL"` StartTime *time.Time `gorm:"column:start_time"` EndTime *time.Time `gorm:"column:end_time"` IsFile int `gorm:"column:is_file;default:0;NOT NULL"` FileUrl string `gorm:"column:file_url"` OutId int `gorm:"column:out_id" description:"外部系统ID"` IsDelete int `gorm:"column:is_delete;default:0;NOT NULL"` } func (k KnowledgeResource) TableName() string { return "knowledge_resource" } func (k *KnowledgeResource) BatchCreate(item []*KnowledgeResource) (err error) { return global.DmSQL["rddp"].CreateInBatches(item, utils.MultiAddNum).Error } func (k *KnowledgeResource) Create(fileUrl []string) (err error) { tx := global.DmSQL["rddp"].Begin() defer func() { if err != nil { tx.Rollback() } else { tx.Commit() } }() err = tx.Create(k).Error if len(fileUrl) > 0 { addFile := make([]*KnowledgeResourceFile, 0, len(fileUrl)) for _, url := range fileUrl { file := new(KnowledgeResourceFile) file.KnowledgeResourceId = k.KnowledgeResourceId file.FileUrl = url addFile = append(addFile, file) } err = tx.CreateInBatches(addFile, utils.MultiAddNum).Error } return } func (k *KnowledgeResource) Update(cols []string) error { return global.DmSQL["rddp"].Model(k).Select(cols).Updates(k).Error } func (k *KnowledgeResource) GetBatchKnowledgeResourceByOutIds(id []int, resourceType int) (item []*KnowledgeResource, err error) { if len(id) == 0 { return } sql := "SELECT * FROM knowledge_resource WHERE out_id IN (?) AND resource_type = ?" err = global.DmSQL["rddp"].Raw(sql, id, resourceType).Find(&item).Error return } // GetKnowledgeResourceByOutId 根据外部系统ID获取知识资源 func (k *KnowledgeResource) GetKnowledgeResourceByOutId(outId int) (item *KnowledgeResource, err error) { sql := "SELECT * FROM knowledge_resource WHERE out_id = ?" err = global.DmSQL["rddp"].Raw(sql, outId).First(&item).Error return } func (k *KnowledgeResource) GetMaxTimeKnowledgeByCondition(condition string, pars []interface{}) (item *KnowledgeResource, err error) { sql := "SELECT * FROM knowledge_resource WHERE 1=1 " if condition != "" { sql += condition } sql += " ORDER BY modify_time DESC " err = global.DmSQL["rddp"].Raw(sql, pars...).First(&item).Error return } type KnowledgeClassify struct { ClassifyId int `gorm:"primaryKey;column:classify_id"` ClassifyName string `gorm:"column:classify_name;default:'';type:varchar(125);not null"` // 注意:varchar的默认长度可能需要根据实际情况调整 Sort int `gorm:"column:sort;default:0;type:tinyint"` ParentId int `gorm:"column:parent_id;default:0;type:int"` CreateTime time.Time `gorm:"column:create_time;default:CURRENT_TIMESTAMP"` ModifyTime time.Time `gorm:"column:modify_time;default:CURRENT_TIMESTAMP"` Enabled int `gorm:"column:enabled;default:1;type:tinyint"` Level int `gorm:"column:level;default:0;type:bigint"` ResourceType int `gorm:"column:resource_type;default:0;not null;type:tinyint"` } func (k KnowledgeClassify) TableName() string { return "knowledge_classify" } func (k *KnowledgeClassify) Create() error { return global.DmSQL["rddp"].Create(k).Error } func (k *KnowledgeClassify) GetClassifyByNameTypeAndParentId(classifyName string, resourceType, parentId int) (items *KnowledgeClassify, err error) { sql := "SELECT * FROM knowledge_classify WHERE classify_name = ? AND resource_type = ? AND parent_id = ?" err = global.DmSQL["rddp"].Raw(sql, classifyName, resourceType, parentId).First(&items).Error return } func (k *KnowledgeClassify) GetClassifysByNameAndType(classifyName string, resourceType int) (item *KnowledgeClassify, err error) { sql := "SELECT * FROM knowledge_classify WHERE classify_name = ? AND resource_type = ?" err = global.DmSQL["rddp"].Raw(sql, classifyName, resourceType).Find(&item).Error return } func (k *KnowledgeClassify) GetChildClassifyIdByNamePath(classifyNameFirst string, classifyNameSecond string, classifyNameThird string) (id int, err error) { sql := `SELECT c3.classify_id AS id FROM knowledge_classify c1 JOIN knowledge_classify c2 ON c2.parent_id = c1.classify_id AND c2.classify_name = ? AND c2.level = 2 JOIN knowledge_classify c3 ON c3.parent_id = c2.classify_id AND c3.classify_name = ? AND c3.level = 3 WHERE c1.classify_name = ? AND c1.level = 1 ` err = global.DmSQL["rddp"].Raw(sql, classifyNameSecond, classifyNameThird, classifyNameFirst).Scan(&id).Error return } type EtaBridgeKnowledgeResourceResp struct { Code int `json:"code" description:"状态码"` Msg string `json:"msg" description:"提示信息"` Data MarketOverviewResp `json:"data" description:"返回数据"` ErrMsg string `json:"-" description:"错误信息"` } type MarketOverviewResp struct { Code string `json:"code"` Mesg string `json:"mesg"` Time string `json:"time"` Data struct { Result bool `json:"result"` Total int `json:"total"` Records []MarketOverviewRecord `json:"records"` } `json:"data"` } type MarketOverviewRecord struct { Category string `json:"CATEGORY"` Content string `json:"CONTENT"` CreateOriginTime string `json:"CREATE_ORIGIN_TIME"` CreateTime string `json:"CREATE_TIME"` DataDate string `json:"DATA_DATE"` DataSource string `json:"DATA_SOURCE"` DataSourceCode string `json:"DATA_SOURCE_CODE"` Des string `json:"DES"` Id int `json:"ID"` IsValidData int `json:"IS_VALID_DATA"` // 1:未删除;0:已删除 Person string `json:"PERSON"` Title string `json:"TITLE"` UpdateOriginTime string `json:"UPDATE_ORIGIN_TIME"` UpdateTime string `json:"UPDATE_TIME"` }