chart.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. package chart_collect
  2. import (
  3. "eta/eta_forum_hub/utils"
  4. "fmt"
  5. "github.com/beego/beego/v2/client/orm"
  6. "github.com/rdlucklib/rdluck_tools/paging"
  7. "time"
  8. )
  9. type ChartCollect struct {
  10. ChartCollectId int `orm:"column(chart_collect_id);pk"`
  11. UserId int `orm:"column(user_id)" description:"用户ID"`
  12. BusinessCode string `orm:"column(business_code)" description:"客户编码"`
  13. RealName string `orm:"column(real_name)" description:"用户姓名"`
  14. CollectTime time.Time `orm:"column(collect_time)" description:"收藏时间"`
  15. ChartInfoId int `orm:"column(chart_info_id)" description:"图表ID"`
  16. CollectClassifyId int `orm:"column(collect_classify_id)" description:"收藏的分类ID"`
  17. ChartSource int `orm:"column(chart_source)" description:"图表来源"`
  18. CreateTime time.Time `orm:"column(create_time)" description:"创建时间"`
  19. ModifyTime time.Time `orm:"column(modify_time)" description:"修改时间"`
  20. }
  21. type ChartCollectAddReq struct {
  22. ChartInfoId int `description:"图表id"`
  23. CollectClassifyId int `description:"收藏分类id"`
  24. }
  25. type ChartCollectView struct {
  26. ChartCollectId int `orm:"column(chart_collect_id);pk"`
  27. ChartInfoId int `description:"图表id"`
  28. UserId int `description:"用户id"`
  29. CreateTime time.Time `description:"创建时间"`
  30. CollectTime time.Time `description:"收藏时间"`
  31. CollectClassifyId int
  32. ChartName string `description:"来源名称"`
  33. ChartNameEn string `description:"英文图表名称"`
  34. ChartImage string `description:"图表图片"`
  35. UniqueCode string `description:"图表唯一编码"`
  36. }
  37. func AddChartCollect(item *ChartCollect) (lastId int64, err error) {
  38. o := orm.NewOrm()
  39. lastId, err = o.Insert(item)
  40. return
  41. }
  42. type ChartCollectDeleteReq struct {
  43. ChartInfoId int `description:"我的图表id"`
  44. //CollectClassifyId int `description:"我的图表分类id"`
  45. }
  46. func DeleteChartCollect(chartInfoId, classifyId, userId int) (err error) {
  47. o := orm.NewOrm()
  48. if classifyId > 0 {
  49. sql := `DELETE FROM chart_collect WHERE chart_info_id=? AND user_id=? AND classify_id=? `
  50. _, err = o.Raw(sql, chartInfoId, userId, classifyId).Exec()
  51. if err != nil {
  52. return
  53. }
  54. } else {
  55. sql := `DELETE FROM chart_collect WHERE chart_info_id=? AND user_id=? `
  56. _, err = o.Raw(sql, chartInfoId, userId).Exec()
  57. if err != nil {
  58. return
  59. }
  60. }
  61. return
  62. }
  63. type ChartCollectListResp struct {
  64. Paging *paging.PagingItem
  65. List []*ChartCollectView
  66. }
  67. func GetChartCollectListByAdminId(adminId int) (item []*ChartCollectView, err error) {
  68. o := orm.NewOrm()
  69. //sql := ` SELECT * FROM chart_collect WHERE 1=1 AND user_id=? `
  70. sql := ` SELECT a.*,GROUP_CONCAT(c.classify_id SEPARATOR ',') AS classify_id FROM chart_collect AS a
  71. LEFT JOIN chart_collect_classify AS c ON b.classify_id=c.classify_id
  72. WHERE 1=1 AND a.user_id=?
  73. GROUP BY a.chart_info_id `
  74. _, err = o.Raw(sql, adminId).QueryRows(&item)
  75. return
  76. }
  77. func GetChartCollectListByChartInfoId(chartInfoId int) (item []*ChartCollectView, err error) {
  78. o := orm.NewOrm()
  79. //sql := ` SELECT * FROM chart_collect WHERE 1=1 AND user_id=? `
  80. sql := ` SELECT a.*,GROUP_CONCAT(c.collect_classify_id SEPARATOR ',') AS classify_id FROM chart_collect AS a
  81. LEFT JOIN chart_collect_classify AS c ON a.collect_classify_id=c.collect_classify_id
  82. WHERE 1=1 AND a.chart_info_id=?
  83. GROUP BY a.chart_info_id, a.user_id `
  84. _, err = o.Raw(sql, chartInfoId).QueryRows(&item)
  85. return
  86. }
  87. type ChartCollectEditReq struct {
  88. ChartCollectId int `description:"我的图表主键"`
  89. CurrentClassifyId int `description:"当前分类ID"`
  90. ClassifyId []int `description:"分类id,数组形式"`
  91. }
  92. func GetChartCollectPageByCondition(condition string, pars []interface{}, currentIndex, pageSize int) (item []*ChartCollectView, err error) {
  93. o := orm.NewOrm()
  94. //sql := ` SELECT * FROM chart_collect WHERE 1=1 `
  95. 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,
  96. 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
  97. INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id
  98. WHERE 1=1
  99. `
  100. if condition != "" {
  101. sql += condition
  102. }
  103. sql += ` GROUP BY a.chart_info_id ORDER BY a.collect_time desc limit ?,?`
  104. _, err = o.Raw(sql, pars, currentIndex, pageSize).QueryRows(&item)
  105. return
  106. }
  107. func GetChartCollectDetailByCondition(condition string, pars []interface{}) (item []*ChartCollectView, err error) {
  108. o := orm.NewOrm()
  109. //sql := ` SELECT * FROM chart_collect WHERE 1=1 `
  110. sql := `SELECT a.*,b.chart_name_en,b.chart_name, b.unique_code, b.chart_image FROM chart_collect AS a
  111. INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id
  112. WHERE 1=1
  113. `
  114. if condition != "" {
  115. sql += condition
  116. }
  117. sql += ` GROUP BY a.chart_info_id`
  118. _, err = o.Raw(sql, pars).QueryRows(&item)
  119. return
  120. }
  121. func GetChartCollectCountByCondition(condition string, pars []interface{}) (total int64, err error) {
  122. o := orm.NewOrm()
  123. 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
  124. WHERE 1=1
  125. `
  126. if condition != "" {
  127. sql += condition
  128. }
  129. sql += ` GROUP BY a.chart_info_id`
  130. totalSql := `select count(1) as total from (` + sql + `) as t`
  131. err = o.Raw(totalSql, pars).QueryRow(&total)
  132. return
  133. }
  134. // Update 更新分类基础信息
  135. func (ChartCollectClassify *ChartCollectClassify) Update(cols []string) (err error) {
  136. o := orm.NewOrm()
  137. _, err = o.Update(ChartCollectClassify, cols...)
  138. return
  139. }
  140. // GetFirstChartCollectClassifyByAdminId 获取当前账号下,排序第一条的分类数据
  141. func GetFirstChartCollectClassifyByAdminId(adminId int) (item *ChartCollectClassify, err error) {
  142. o := orm.NewOrm()
  143. sql := ` SELECT * FROM chart_collect_classify WHERE user_id=? order by sort asc,classify_id asc limit 1`
  144. err = o.Raw(sql, adminId).QueryRow(&item)
  145. return
  146. }
  147. // UpdateChartCollectClassifySortByClassifyId 根据分类id更新排序
  148. func UpdateChartCollectClassifySortByClassifyId(adminId, classifyId, nowSort int, updateSort string) (err error) {
  149. o := orm.NewOrm()
  150. sql := ` update chart_collect_classify set sort = ` + updateSort + ` WHERE user_id = ? and sort > ? `
  151. if classifyId > 0 {
  152. sql += ` or ( classify_id > ` + fmt.Sprint(classifyId) + ` and sort = ` + fmt.Sprint(nowSort) + `)`
  153. }
  154. _, err = o.Raw(sql, adminId, nowSort).Exec()
  155. return
  156. }
  157. // ModifyChartClassifyPublicReq 修改我的图库分类是否可见
  158. type ModifyChartClassifyPublicReq struct {
  159. ClassifyId int `description:"分类id"`
  160. IsPublic int `description:"是否所有人可见,0:仅自己可见,1:所有人可见"`
  161. }
  162. // CopyChartClassifyReq 复制我的图库分类
  163. type CopyChartClassifyReq struct {
  164. ClassifyId int `description:"分类id"`
  165. }
  166. func GetRelationChartListCountByCondition(condition string, pars []interface{}) (count int, err error) {
  167. o := orm.NewOrm()
  168. sql := ` SELECT COUNT(1) AS count FROM chart_info AS a
  169. WHERE 1=1 `
  170. if condition != "" {
  171. sql += condition
  172. }
  173. err = o.Raw(sql, pars).QueryRow(&count)
  174. return
  175. }
  176. // GetChartCollectClassifyByClassifyId 主键获取分类
  177. func GetChartCollectClassifyByClassifyId(classifyId int) (item *ChartCollectClassify, err error) {
  178. o := orm.NewOrm()
  179. sql := ` SELECT * FROM chart_collect_classify WHERE classify_id = ? `
  180. err = o.Raw(sql, classifyId).QueryRow(&item)
  181. return
  182. }
  183. // ChartCollectClassifyItem 我的图表分类信息
  184. type ChartCollectClassifyItem struct {
  185. CollectClassifyId int `description:"分类ID"`
  186. ClassifyName string `description:"分类名称"`
  187. UserId int `description:"创建人id"`
  188. /*IsPublic int `description:"是否公共分类"`
  189. IsCompanyPublic int `description:"是否为用户公共分类"`*/
  190. ChartNum int `description:"分类下的图表数量"`
  191. }
  192. // ClassifyIdAndNum 我的图表-分类ID及图表数
  193. type ClassifyIdAndNum struct {
  194. ClassifyId int `description:"分类ID"`
  195. ChartNum int `description:"分类下的图表数量"`
  196. }
  197. // GetClassifyIdAndNum 我的图表-获取分类ID及图表数
  198. func GetClassifyIdAndNum(cond string, pars []interface{}) (items []*ClassifyIdAndNum, err error) {
  199. o := orm.NewOrm()
  200. sql := fmt.Sprintf(`SELECT
  201. a.classify_id,
  202. COUNT(1) AS chart_num
  203. FROM
  204. chart_collect_classify AS a
  205. INNER JOIN chart_collect_classify_mapping AS b ON a.classify_id = b.classify_id
  206. INNER JOIN chart_collect AS c ON b.chart_collect_id = c.chart_collect_id
  207. INNER JOIN chart_info AS d ON c.chart_info_id = d.chart_info_id
  208. WHERE
  209. 1 = 1 %s
  210. GROUP BY
  211. a.classify_id`, cond)
  212. _, err = o.Raw(sql, pars).QueryRows(&items)
  213. return
  214. }
  215. func GetChartClassifyByIds(chartClassifyIds []string) (chart_classify_ids string, err error) {
  216. o := orm.NewOrm()
  217. sql := `SELECT GROUP_CONCAT(DISTINCT t.chart_classify_id) AS chart_classify_ids
  218. FROM (
  219. SELECT chart_classify_id
  220. FROM chart_classify
  221. WHERE chart_classify_id IN (` + utils.GetOrmInReplace(len(chartClassifyIds)) + `)
  222. OR parent_id IN (` + utils.GetOrmInReplace(len(chartClassifyIds)) + `)
  223. OR parent_id IN (
  224. SELECT chart_classify_id
  225. FROM chart_classify
  226. WHERE parent_id IN (` + utils.GetOrmInReplace(len(chartClassifyIds)) + `)
  227. )
  228. ) AS t;`
  229. err = o.Raw(sql, chartClassifyIds, chartClassifyIds, chartClassifyIds).QueryRow(&chart_classify_ids)
  230. return
  231. }
  232. func GetChartClassifyByIdsNoSubClassify(chartClassifyIds []string) (chart_classify_ids string, err error) {
  233. o := orm.NewOrm()
  234. sql := `SELECT GROUP_CONCAT(DISTINCT t.chart_classify_id) AS chart_classify_ids
  235. FROM (
  236. SELECT chart_classify_id
  237. FROM chart_classify
  238. WHERE chart_classify_id IN (` + utils.GetOrmInReplace(len(chartClassifyIds)) + `)
  239. ) AS t;`
  240. err = o.Raw(sql, chartClassifyIds).QueryRow(&chart_classify_ids)
  241. return
  242. }
  243. func GetChartCollectListByCondition(condition string, pars []interface{}) (items []*ChartCollect, err error) {
  244. o := orm.NewOrm()
  245. sql := ` SELECT * FROM chart_collect WHERE 1=1 `
  246. if condition != "" {
  247. sql += condition
  248. }
  249. _, err = o.Raw(sql, pars).QueryRows(&items)
  250. return
  251. }
  252. func GetChartCollectByCondition(condition string, pars []interface{}) (item *ChartCollect, err error) {
  253. o := orm.NewOrm()
  254. sql := ` SELECT * FROM chart_collect WHERE 1=1 `
  255. if condition != "" {
  256. sql += condition
  257. }
  258. sql += " order by chart_collect_id desc"
  259. err = o.Raw(sql, pars).QueryRow(&item)
  260. return
  261. }
  262. type ChartCollectAddResp struct {
  263. CollectMsg string `description:"提示信息"`
  264. }
  265. // UpdateCollectClassifyIdByChartInfoId 根据图表分类ID
  266. func UpdateCollectClassifyIdByChartInfoId(chartInfoIds []int, classifyId int, userId int) (err error) {
  267. o := orm.NewOrm()
  268. sql := ` update chart_collect set collect_classify_id = ? WHERE chart_info_id in (` + utils.GetOrmInReplace(len(chartInfoIds)) + `) and user_id=? `
  269. _, err = o.Raw(sql, classifyId, chartInfoIds, userId).Exec()
  270. return
  271. }
  272. type ChartCollectEsItem struct {
  273. UserChartInfoId string
  274. ChartInfoId int `description:"图表id"`
  275. UserId int `description:"用户id"`
  276. CollectTime time.Time `description:"收藏时间"`
  277. ChartName string `description:"来源名称"`
  278. ChartNameEn string `description:"英文图表名称"`
  279. ChartImage string `description:"图表图片"`
  280. UniqueCode string `description:"图表唯一编码"`
  281. ChartClassifyId int `description:"图表分类id"`
  282. SysUserId int
  283. SysUserRealName string
  284. CreateTime time.Time
  285. ModifyTime time.Time
  286. ChartSource int
  287. CollectClassifyIds string
  288. ChartCollectClassifyNames string
  289. }
  290. // GetChartCollectByChartInfoIdAndUserIdByCondition 获图表收藏数据
  291. func GetChartCollectByChartInfoIdAndUserIdByCondition(condition string, pars []interface{}) (item []*ChartCollectEsItem, err error) {
  292. o := orm.NewOrm()
  293. 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,
  294. 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,
  295. GROUP_CONCAT(DISTINCT d.classify_name) AS chart_collect_classify_names,GROUP_CONCAT(DISTINCT d.collect_classify_id) AS collect_classify_ids
  296. FROM chart_collect AS a
  297. INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id
  298. INNER JOIN chart_collect_classify AS d ON a.collect_classify_id=d.collect_classify_id
  299. WHERE 1=1 `
  300. if condition != "" {
  301. sql += condition
  302. }
  303. sql += " GROUP BY a.chart_info_id,a.user_id ORDER BY a.collect_time Desc, a.chart_collect_id DESC "
  304. _, err = o.Raw(sql, pars).QueryRows(&item)
  305. return
  306. }