package knowledge import ( "eta_gn/eta_api/global" "eta_gn/eta_api/utils" "fmt" "time" "github.com/rdlucklib/rdluck_tools/paging" ) const ( // 事件类型-事件库 KnowledgeResourceTypeEvent = 0 // 事件-政策库 KnowledgeResourceTypePolicy = 1 // 事件-观点库 KnowledgeResourceTypeOpinion = 2 // 事件类型-知识库 KnowledgeResourceTypeKnow = 3 ) 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:已发布;"` 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"` IsDelete int `gorm:"column:is_delete;default:0;NOT NULL"` } func (m *KnowledgeResource) TableName() string { return "knowledge_resource" } // 查询列表 func (m *KnowledgeResource) QueryList(condition string, pars []interface{}) (items []*KnowledgeResource, err error) { return } type KnowledgeResourceList 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 string `gorm:"column:create_time" description:"创建时间"` ModifyTime string `gorm:"column:modify_time;autoUpdateTime" description:"修改时间"` State int `gorm:"column:state" description:"1:未发布;2:已发布;3-待提交;4-待审批;5-已驳回;6-已通过"` 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 string `gorm:"column:start_time"` EndTime string `gorm:"column:end_time"` Content string `gorm:"-"` ClassifyFullName string TagName string } type KnowledgeResourceListResp struct { List []*KnowledgeResourceList Paging *paging.PagingItem `description:"分页数据"` } func GetBatchKnowledgeResource(batchSize int, id int) (items []*KnowledgeResource, err error) { sql := `SELECT * FROM knowledge_resource WHERE knowledge_resource_id>=? AND is_delete=0 ORDER BY knowledge_resource_id ASC LIMIT ?` pars := []interface{}{id, batchSize} err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error return } func GetKnowledgeResourcePageList(condition string, pars []interface{}, startSize, pageSize int) (items []*KnowledgeResource, err error) { sql := `SELECT * FROM knowledge_resource WHERE 1=1 AND is_delete=0 ` if condition != "" { sql += condition } sql += `ORDER BY modify_time DESC LIMIT ?,?` pars = append(pars, startSize) pars = append(pars, pageSize) err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error return } func GetKnowledgeResourceIdList(condition string, pars []interface{}) (items []int, err error) { sql := `SELECT knowledge_resource_id FROM knowledge_resource WHERE 1=1 ` if condition != "" { sql += condition } sql += `ORDER BY modify_time DESC` err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error return } func GetKnowledgeResourceListCount(condition string, pars []interface{}) (count int, err error) { sql := `SELECT COUNT(1) AS count FROM knowledge_resource WHERE 1=1 AND is_delete=0 ` if condition != "" { sql += condition } err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error return } func GetKnowledgeResourcePageByIds(ids []int, startSize, pageSize int) (items []*KnowledgeResource, err error) { if len(ids) == 0 { return } sql := `SELECT * FROM knowledge_resource WHERE knowledge_resource_id in (?) ORDER BY modify_time DESC LIMIT ?,?` err = global.DmSQL["rddp"].Raw(sql, ids, startSize, pageSize).Find(&items).Error return } func GetKnowledgeResourceByIds(ids []int) (items []*KnowledgeResource, err error) { if len(ids) == 0 { return } sql := `SELECT * FROM knowledge_resource WHERE knowledge_resource_id in (?) ORDER BY start_time DESC` err = global.DmSQL["rddp"].Raw(sql, ids).Find(&items).Error return } // Delete逻辑删除 func (m *KnowledgeResource) Delete(knowledgeResourceIds int) (err error) { sql := ` UPDATE knowledge_resource SET is_delete = 1 WHERE knowledge_resource_id =? ` err = global.DmSQL["rddp"].Exec(sql, knowledgeResourceIds).Error return } func (m *KnowledgeResource) GetById(knowledgeResourceId int) (item *KnowledgeResource, err error) { sql := `SELECT * FROM knowledge_resource WHERE knowledge_resource_id =?` err = global.DmSQL["rddp"].Raw(sql, knowledgeResourceId).First(&item).Error return } type DeleteReq struct { KnowledgeResourceId int `description:"事件id"` ResourceType int } type AddReq struct { ResourceType int `gorm:"column:resource_type;"` ClassifyId int `gorm:"column:classify_id"` Title string `gorm:"column:title;"` State int `gorm:"column:state" description:"0:未发布;1:已发布"` Content string `gorm:"column:content"` SourceFrom string `gorm:"column:source_from"` TagId int `gorm:"column:tag_id;default:0;NOT NULL"` StartTime string `gorm:"column:start_time"` EndTime string `gorm:"column:end_time"` FileUrl string `gorm:"column:file_url"` } type AddResp struct { KnowledgeResourceId int `description:"事件id"` ResourceCode string `description:"事件code"` } func (m *KnowledgeResource) Add(item *KnowledgeResource) (err error) { err = global.DmSQL["rddp"].Create(item).Error return } func (m *KnowledgeResource) AddBatch(item []*KnowledgeResource) (err error) { err = global.DmSQL["rddp"].CreateInBatches(item, 50).Error return } type EditReq struct { KnowledgeResourceId int64 `description:"事件id"` AddReq } type EditResp struct { KnowledgeResourceId int64 `description:"事件id"` ResourceCode string `description:"事件code"` } type SaveReportContent struct { Content string `description:"内容"` KnowledgeResourceId int `description:"事件id"` NoChange int `description:"内容是否未改变:1:内容未改变"` // 以下是智能研报相关 ContentStruct string `description:"内容组件"` HeadImg string `description:"事件头图地址"` EndImg string `description:"事件尾图地址"` CanvasColor string `description:"画布颜色"` NeedSplice int `description:"是否拼接版头版位的标记,主要是为了兼容历史事件。0-不需要 1-需要"` HeadResourceId int `description:"版头资源ID"` EndResourceId int `description:"版尾资源ID"` } type SaveReportContentResp struct { KnowledgeResourceId int `description:"事件id"` } // SaveDayWeekReportReq 新增晨报周报请求体 type SaveDayWeekReportReq struct { KnowledgeResourceId int `description:"事件ID"` Title string `description:"标题"` ReportType string `description:"一级分类ID"` Author string `description:"作者"` CreateTime string `description:"创建时间"` } func (m *KnowledgeResource) Update(cols []string) (err error) { err = global.DmSQL["rddp"].Select(cols).Updates(m).Error return } // MarkEditReport 标记编辑英文研报的请求数据 type MarkEditReport struct { KnowledgeResourceId int `description:"研报id"` ReportChapterId int `description:"研报章节id"` Status int `description:"标记状态,1:编辑中,2:查询状态,3:编辑完成"` } type MarkReportResp struct { Status int `description:"状态:0:无人编辑, 1:当前有人在编辑"` Msg string `description:"提示信息"` Editor string `description:"编辑者姓名"` } type MarkReportItem struct { AdminId int `description:"编辑者ID"` Editor string `description:"编辑者姓名"` ReportClassifyNameFirst string } func (m *KnowledgeResource) AddMulti(items []*KnowledgeResource) (err error) { err = global.DmSQL["rddp"].CreateInBatches(items, utils.MultiAddNum).Error return } func (m *KnowledgeResource) GetSourceFrom(keyword string, resourceType int) (items []string, err error) { sql := fmt.Sprintf(`SELECT distinct source_from FROM %s WHERE 1=1 and resource_type=? `, m.TableName()) if keyword != `` { sql += ` AND source_from LIKE '%` + keyword + `%'` } err = global.DmSQL["rddp"].Raw(sql, resourceType).Scan(&items).Error return } type KnowledgeResourceDetailView struct { *KnowledgeResource } type ResourceImportData struct { Title string `description:"标题"` StartDate string `description:"开始日期"` EndDate string `description:"开始时间"` StartTime string `description:"结束日期"` EndTime string `description:"结束时间"` Content string `description:"正文"` Tag string `description:"标签"` SourceFrom string `description:"来源"` ClassifyFirstName string `description:"一级分类"` ClassifySecondName string `description:"二级分类"` ClassifyThirdName string `description:"三级分类"` } type UpdateResourceResp struct { FileUrl string `description:"文件地址"` } type GetSourceFromResp struct { List []string `description:"来源列表"` } type GetAdminsResp struct { List []*GetAdminsRespItem `description:"添加人"` } type GetAdminsRespItem struct { AdminId int `gorm:"column:admin_id" description:"创建者账号"` AdminRealName string `gorm:"column:admin_real_name" description:"创建者姓名"` } func (m *KnowledgeResource) GetAdmins(keyword string, resourceType int) (items []*GetAdminsRespItem, err error) { sql := fmt.Sprintf(`SELECT distinct admin_id, admin_real_name FROM %s WHERE 1=1 and resource_type=? `, m.TableName()) if keyword != `` { sql += ` AND admin_real_name LIKE '%` + keyword + `%'` } err = global.DmSQL["rddp"].Raw(sql, resourceType).Scan(&items).Error return } // UpdateClassifySortByParentId 根据父类id更新排序 func (m *KnowledgeResource) UpdateClassifyIdByIds(ids []int, classifyId int, resourceType int) (err error) { var pars []interface{} sql := ` UPDATE %s set classify_id =? WHERE resource_type=? AND knowledge_resource_id in (?) ` pars = append(pars, classifyId, resourceType, ids) sql = fmt.Sprintf(sql, m.TableName()) err = global.DmSQL["rddp"].Exec(sql, pars...).Error return } type BiDashboardResourceAddReq struct { BiDashboardDetailId int `description:"Bi看板详情"` KnowledgeResourceList []KnowledgeResourceMapItem `description:"知识资源id"` } type BiDashboardResourceAddResp struct { BiDashboardDetailId int `description:"Bi看板详情"` KnowledgeResourceList []*KnowledgeResourceList `description:"知识资源列表"` } type KnowledgeResourceMapItem struct { KnowledgeResourceId int ResourceType int }