package chart_collect import ( "eta/eta_forum_hub/utils" "fmt" "github.com/beego/beego/v2/client/orm" "github.com/rdlucklib/rdluck_tools/paging" "time" ) type ChartCollect struct { ChartCollectId int `orm:"column(chart_collect_id);pk"` UserId int `orm:"column(user_id)" description:"用户ID"` BusinessCode string `orm:"column(business_code)" description:"客户编码"` RealName string `orm:"column(real_name)" description:"用户姓名"` CollectTime time.Time `orm:"column(collect_time)" description:"收藏时间"` ChartInfoId int `orm:"column(chart_info_id)" description:"图表ID"` CollectClassifyId int `orm:"column(collect_classify_id)" description:"收藏的分类ID"` ChartSource int `orm:"column(chart_source)" description:"图表来源"` CreateTime time.Time `orm:"column(create_time)" description:"创建时间"` ModifyTime time.Time `orm:"column(modify_time)" description:"修改时间"` } type ChartCollectAddReq struct { ChartInfoId int `description:"图表id"` CollectClassifyId int `description:"收藏分类id"` } type ChartCollectView struct { ChartCollectId int `orm:"column(chart_collect_id);pk"` ChartInfoId int `description:"图表id"` UserId int `description:"用户id"` CreateTime time.Time `description:"创建时间"` CollectTime time.Time `description:"收藏时间"` CollectClassifyId int ChartName string `description:"来源名称"` ChartNameEn string `description:"英文图表名称"` ChartImage string `description:"图表图片"` UniqueCode string `description:"图表唯一编码"` } func AddChartCollect(item *ChartCollect) (lastId int64, err error) { o := orm.NewOrm() lastId, err = o.Insert(item) return } type ChartCollectDeleteReq struct { ChartInfoId int `description:"我的图表id"` //CollectClassifyId int `description:"我的图表分类id"` } func DeleteChartCollect(chartInfoId, classifyId, userId int) (err error) { o := orm.NewOrm() if classifyId > 0 { sql := `DELETE FROM chart_collect WHERE chart_info_id=? AND user_id=? AND classify_id=? ` _, err = o.Raw(sql, chartInfoId, userId, classifyId).Exec() if err != nil { return } } else { sql := `DELETE FROM chart_collect WHERE chart_info_id=? AND user_id=? ` _, err = o.Raw(sql, chartInfoId, userId).Exec() if err != nil { return } } return } type ChartCollectListResp struct { Paging *paging.PagingItem List []*ChartCollectView } func GetChartCollectListByAdminId(adminId int) (item []*ChartCollectView, err error) { o := orm.NewOrm() //sql := ` SELECT * FROM chart_collect WHERE 1=1 AND user_id=? ` sql := ` SELECT a.*,GROUP_CONCAT(c.classify_id SEPARATOR ',') AS classify_id FROM chart_collect AS a LEFT JOIN chart_collect_classify AS c ON b.classify_id=c.classify_id WHERE 1=1 AND a.user_id=? GROUP BY a.chart_info_id ` _, err = o.Raw(sql, adminId).QueryRows(&item) return } func GetChartCollectListByChartInfoId(chartInfoId int) (item []*ChartCollectView, err error) { o := orm.NewOrm() //sql := ` SELECT * FROM chart_collect WHERE 1=1 AND user_id=? ` sql := ` SELECT a.*,GROUP_CONCAT(c.collect_classify_id SEPARATOR ',') AS classify_id FROM chart_collect AS a LEFT JOIN chart_collect_classify AS c ON a.collect_classify_id=c.collect_classify_id WHERE 1=1 AND a.chart_info_id=? GROUP BY a.chart_info_id, a.user_id ` _, err = o.Raw(sql, chartInfoId).QueryRows(&item) return } type ChartCollectEditReq struct { ChartCollectId int `description:"我的图表主键"` CurrentClassifyId int `description:"当前分类ID"` ClassifyId []int `description:"分类id,数组形式"` } func GetChartCollectPageByCondition(condition string, pars []interface{}, currentIndex, pageSize int) (item []*ChartCollectView, err error) { o := orm.NewOrm() //sql := ` SELECT * FROM chart_collect WHERE 1=1 ` sql := `SELECT a.chart_collect_id, a.user_id, a.business_code, a.real_name, a.chart_info_id, a.collect_classify_id, a.chart_source, a.create_time, a.modify_time, max(a.collect_time) as collect_time, b.chart_name_en,b.chart_name, b.unique_code, b.chart_image, b.sys_user_id, b.sys_user_real_name FROM chart_collect AS a INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id WHERE 1=1 ` if condition != "" { sql += condition } sql += ` GROUP BY a.chart_info_id ORDER BY a.collect_time desc limit ?,?` _, err = o.Raw(sql, pars, currentIndex, pageSize).QueryRows(&item) return } func GetChartCollectDetailByCondition(condition string, pars []interface{}) (item []*ChartCollectView, err error) { o := orm.NewOrm() //sql := ` SELECT * FROM chart_collect WHERE 1=1 ` sql := `SELECT a.*,b.chart_name_en,b.chart_name, b.unique_code, b.chart_image FROM chart_collect AS a INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id WHERE 1=1 ` if condition != "" { sql += condition } sql += ` GROUP BY a.chart_info_id` _, err = o.Raw(sql, pars).QueryRows(&item) return } func GetChartCollectCountByCondition(condition string, pars []interface{}) (total int64, err error) { o := orm.NewOrm() sql := `SELECT a.chart_info_id FROM chart_collect AS a INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id WHERE 1=1 ` if condition != "" { sql += condition } sql += ` GROUP BY a.chart_info_id` totalSql := `select count(1) as total from (` + sql + `) as t` err = o.Raw(totalSql, pars).QueryRow(&total) return } // Update 更新分类基础信息 func (ChartCollectClassify *ChartCollectClassify) Update(cols []string) (err error) { o := orm.NewOrm() _, err = o.Update(ChartCollectClassify, cols...) return } // GetFirstChartCollectClassifyByAdminId 获取当前账号下,排序第一条的分类数据 func GetFirstChartCollectClassifyByAdminId(adminId int) (item *ChartCollectClassify, err error) { o := orm.NewOrm() sql := ` SELECT * FROM chart_collect_classify WHERE user_id=? order by sort asc,classify_id asc limit 1` err = o.Raw(sql, adminId).QueryRow(&item) return } // UpdateChartCollectClassifySortByClassifyId 根据分类id更新排序 func UpdateChartCollectClassifySortByClassifyId(adminId, classifyId, nowSort int, updateSort string) (err error) { o := orm.NewOrm() sql := ` update chart_collect_classify set sort = ` + updateSort + ` WHERE user_id = ? and sort > ? ` if classifyId > 0 { sql += ` or ( classify_id > ` + fmt.Sprint(classifyId) + ` and sort = ` + fmt.Sprint(nowSort) + `)` } _, err = o.Raw(sql, adminId, nowSort).Exec() return } // ModifyChartClassifyPublicReq 修改我的图库分类是否可见 type ModifyChartClassifyPublicReq struct { ClassifyId int `description:"分类id"` IsPublic int `description:"是否所有人可见,0:仅自己可见,1:所有人可见"` } // CopyChartClassifyReq 复制我的图库分类 type CopyChartClassifyReq struct { ClassifyId int `description:"分类id"` } func GetRelationChartListCountByCondition(condition string, pars []interface{}) (count int, err error) { o := orm.NewOrm() sql := ` SELECT COUNT(1) AS count FROM chart_info AS a WHERE 1=1 ` if condition != "" { sql += condition } err = o.Raw(sql, pars).QueryRow(&count) return } // GetChartCollectClassifyByClassifyId 主键获取分类 func GetChartCollectClassifyByClassifyId(classifyId int) (item *ChartCollectClassify, err error) { o := orm.NewOrm() sql := ` SELECT * FROM chart_collect_classify WHERE classify_id = ? ` err = o.Raw(sql, classifyId).QueryRow(&item) return } // ChartCollectClassifyItem 我的图表分类信息 type ChartCollectClassifyItem struct { CollectClassifyId int `description:"分类ID"` ClassifyName string `description:"分类名称"` UserId int `description:"创建人id"` /*IsPublic int `description:"是否公共分类"` IsCompanyPublic int `description:"是否为用户公共分类"`*/ ChartNum int `description:"分类下的图表数量"` } // ClassifyIdAndNum 我的图表-分类ID及图表数 type ClassifyIdAndNum struct { ClassifyId int `description:"分类ID"` ChartNum int `description:"分类下的图表数量"` } // GetClassifyIdAndNum 我的图表-获取分类ID及图表数 func GetClassifyIdAndNum(cond string, pars []interface{}) (items []*ClassifyIdAndNum, err error) { o := orm.NewOrm() sql := fmt.Sprintf(`SELECT a.classify_id, COUNT(1) AS chart_num FROM chart_collect_classify AS a INNER JOIN chart_collect_classify_mapping AS b ON a.classify_id = b.classify_id INNER JOIN chart_collect AS c ON b.chart_collect_id = c.chart_collect_id INNER JOIN chart_info AS d ON c.chart_info_id = d.chart_info_id WHERE 1 = 1 %s GROUP BY a.classify_id`, cond) _, err = o.Raw(sql, pars).QueryRows(&items) return } func GetChartClassifyByIds(chartClassifyIds []string) (chart_classify_ids string, err error) { o := orm.NewOrm() sql := `SELECT GROUP_CONCAT(DISTINCT t.chart_classify_id) AS chart_classify_ids FROM ( SELECT chart_classify_id FROM chart_classify WHERE chart_classify_id IN (` + utils.GetOrmInReplace(len(chartClassifyIds)) + `) OR parent_id IN (` + utils.GetOrmInReplace(len(chartClassifyIds)) + `) OR parent_id IN ( SELECT chart_classify_id FROM chart_classify WHERE parent_id IN (` + utils.GetOrmInReplace(len(chartClassifyIds)) + `) ) ) AS t;` err = o.Raw(sql, chartClassifyIds, chartClassifyIds, chartClassifyIds).QueryRow(&chart_classify_ids) return } func GetChartClassifyByIdsNoSubClassify(chartClassifyIds []string) (chart_classify_ids string, err error) { o := orm.NewOrm() sql := `SELECT GROUP_CONCAT(DISTINCT t.chart_classify_id) AS chart_classify_ids FROM ( SELECT chart_classify_id FROM chart_classify WHERE chart_classify_id IN (` + utils.GetOrmInReplace(len(chartClassifyIds)) + `) ) AS t;` err = o.Raw(sql, chartClassifyIds).QueryRow(&chart_classify_ids) return } func GetChartCollectListByCondition(condition string, pars []interface{}) (items []*ChartCollect, err error) { o := orm.NewOrm() sql := ` SELECT * FROM chart_collect WHERE 1=1 ` if condition != "" { sql += condition } _, err = o.Raw(sql, pars).QueryRows(&items) return } func GetChartCollectByCondition(condition string, pars []interface{}) (item *ChartCollect, err error) { o := orm.NewOrm() sql := ` SELECT * FROM chart_collect WHERE 1=1 ` if condition != "" { sql += condition } sql += " order by chart_collect_id desc" err = o.Raw(sql, pars).QueryRow(&item) return } type ChartCollectAddResp struct { CollectMsg string `description:"提示信息"` } // UpdateCollectClassifyIdByChartInfoId 根据图表分类ID func UpdateCollectClassifyIdByChartInfoId(chartInfoIds []int, classifyId int, userId int) (err error) { o := orm.NewOrm() sql := ` update chart_collect set collect_classify_id = ? WHERE chart_info_id in (` + utils.GetOrmInReplace(len(chartInfoIds)) + `) and user_id=? ` _, err = o.Raw(sql, classifyId, chartInfoIds, userId).Exec() return } type ChartCollectEsItem struct { UserChartInfoId string ChartInfoId int `description:"图表id"` UserId int `description:"用户id"` CollectTime time.Time `description:"收藏时间"` ChartName string `description:"来源名称"` ChartNameEn string `description:"英文图表名称"` ChartImage string `description:"图表图片"` UniqueCode string `description:"图表唯一编码"` ChartClassifyId int `description:"图表分类id"` SysUserId int SysUserRealName string CreateTime time.Time ModifyTime time.Time ChartSource int CollectClassifyIds string ChartCollectClassifyNames string } // GetChartCollectByChartInfoIdAndUserIdByCondition 获图表收藏数据 func GetChartCollectByChartInfoIdAndUserIdByCondition(condition string, pars []interface{}) (item []*ChartCollectEsItem, err error) { o := orm.NewOrm() sql := ` SELECT a.user_id, CONCAT(a.user_id,"_", a.chart_info_id) as user_chart_info_id, max(a.collect_time) as collect_time, b.chart_info_id,b.chart_name,b.chart_name_en,b.chart_image,b.unique_code,b.chart_classify_id,b.sys_user_id,b.sys_user_real_name,b.create_time,b.modify_time,b.source as chart_source, GROUP_CONCAT(DISTINCT d.classify_name) AS chart_collect_classify_names,GROUP_CONCAT(DISTINCT d.collect_classify_id) AS collect_classify_ids FROM chart_collect AS a INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id INNER JOIN chart_collect_classify AS d ON a.collect_classify_id=d.collect_classify_id WHERE 1=1 ` if condition != "" { sql += condition } sql += " GROUP BY a.chart_info_id,a.user_id ORDER BY a.collect_time Desc, a.chart_collect_id DESC " _, err = o.Raw(sql, pars).QueryRows(&item) return }