my_chart.go 49 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312
  1. package data_manage
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/utils"
  5. "fmt"
  6. "github.com/rdlucklib/rdluck_tools/paging"
  7. "time"
  8. )
  9. type ChartListResp struct {
  10. Paging *paging.PagingItem
  11. List []*ChartInfoView
  12. }
  13. func GetChartListByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*ChartInfoView, err error) {
  14. //o := orm.NewOrmUsingDB("data")
  15. //sql := ` SELECT * FROM chart_info WHERE 1=1 `
  16. //if condition != "" {
  17. // sql += condition
  18. //}
  19. ////sql += " ORDER BY sort ASC,chart_info_id DESC LIMIT ?,? "
  20. //sql += " ORDER BY create_time DESC LIMIT ?,? "
  21. //_, err = o.Raw(sql, pars...).QueryRows(&item)
  22. sql := ` SELECT * FROM chart_info WHERE 1=1 `
  23. if condition != "" {
  24. sql += condition
  25. }
  26. //sql += " ORDER BY sort ASC,chart_info_id DESC LIMIT ?,? "
  27. sql += " ORDER BY create_time DESC LIMIT ?,? "
  28. pars = append(pars, startSize)
  29. pars = append(pars, pageSize)
  30. err = global.DmSQL["data"].Raw(sql, pars...).Find(&item).Error
  31. return
  32. }
  33. func GetChartListCountByCondition(condition string, pars []interface{}) (count int, err error) {
  34. //o := orm.NewOrmUsingDB("data")
  35. //sql := ` SELECT COUNT(1) AS count FROM chart_info WHERE 1=1 `
  36. //if condition != "" {
  37. // sql += condition
  38. //}
  39. //err = o.Raw(sql, pars).QueryRow(&count)
  40. sql := ` SELECT COUNT(1) AS count FROM chart_info WHERE 1=1 `
  41. if condition != "" {
  42. sql += condition
  43. }
  44. err = global.DmSQL["data"].Raw(sql, pars...).Scan(&count).Error
  45. return
  46. }
  47. type MyChartClassify struct {
  48. MyChartClassifyId int `orm:"column(my_chart_classify_id);pk" gorm:"primaryKey" `
  49. MyChartClassifyName string
  50. Sort int `json:"-" description:"排序字段,值越小,排的越靠前"`
  51. AdminId int `description:"创建人id"`
  52. IsPublic int `description:"是否公共分类"`
  53. IsCompanyPublic int `description:"是否为用户公共分类"`
  54. CreateTime time.Time `json:"-"`
  55. ModifyTime time.Time `json:"-"`
  56. PublicTime time.Time `json:"-" description:"公开(分享)时间"`
  57. CompanyPublicTime time.Time `json:"-" description:"用户可见公开时间"`
  58. }
  59. func AddMyChartClassify(item *MyChartClassify) (err error) {
  60. //o := orm.NewOrmUsingDB("data")
  61. //_, err = o.Insert(item)
  62. err = global.DmSQL["data"].Create(item).Error
  63. return
  64. }
  65. func GetMyChartClassifyAll(adminId int) (item []*MyChartClassify, err error) {
  66. //o := orm.NewOrmUsingDB("data")
  67. //sql := ` SELECT * FROM my_chart_classify WHERE 1=1 AND admin_id=? `
  68. //sql += " ORDER BY sort asc, my_chart_classify_id asc "
  69. //_, err = o.Raw(sql, adminId).QueryRows(&item)
  70. sql := ` SELECT * FROM my_chart_classify WHERE 1=1 AND admin_id=? `
  71. sql += " ORDER BY sort asc, my_chart_classify_id asc "
  72. err = global.DmSQL["data"].Raw(sql, adminId).Find(&item).Error
  73. return
  74. }
  75. func GetPublicChartClassifyAllExceptMy(adminId int) (item []*MyChartClassify, err error) {
  76. //o := orm.NewOrmUsingDB("data")
  77. //sql := ` SELECT * FROM my_chart_classify WHERE 1=1 AND is_public=1 AND admin_id !=?`
  78. //sql += " ORDER BY public_time asc"
  79. //_, err = o.Raw(sql, adminId).QueryRows(&item)
  80. sql := ` SELECT * FROM my_chart_classify WHERE 1=1 AND is_public=1 AND admin_id !=?`
  81. sql += " ORDER BY public_time asc"
  82. err = global.DmSQL["data"].Raw(sql, adminId).Find(&item).Error
  83. return
  84. }
  85. type MyChartClassifyResp struct {
  86. List []*MyChartClassifyItem
  87. Language string `description:"指标的展示语言,CN:中文,EN:英文"`
  88. }
  89. // PublicChartClassifyResp 公共分类返回数据结构体
  90. type PublicChartClassifyResp struct {
  91. List []PublicChartClassifyList
  92. Language string `description:"指标的展示语言,CN:中文,EN:英文"`
  93. }
  94. // PublicChartClassifyItem 公共分类结构体
  95. type PublicChartClassifyItem struct {
  96. MyChartClassifyId int `description:"分类id"`
  97. MyChartClassifyName string `description:"分类名称"`
  98. AdminId int `description:"创建人id"`
  99. RealName string `description:"创建人名称"`
  100. IsPublic int `description:"是否公共分类"`
  101. IsCompanyPublic int `description:"是否为客户可见"`
  102. }
  103. // PublicChartClassifyList 公共分类结构体
  104. type PublicChartClassifyList struct {
  105. MenuAdminId int `description:"目录创建人ID"`
  106. MenuName string `description:"目录名称"`
  107. Items []PublicChartClassifyItem `description:"分类数据"`
  108. }
  109. type MyChartClassifyAddReq struct {
  110. MyChartClassifyName string `description:"分类名称"`
  111. }
  112. func GetMyChartClassifyCountByCondition(condition string, pars []interface{}) (count int, err error) {
  113. //o := orm.NewOrmUsingDB("data")
  114. //sql := ` SELECT COUNT(1) AS count FROM my_chart_classify WHERE 1=1 `
  115. //if condition != "" {
  116. // sql += condition
  117. //}
  118. //err = o.Raw(sql, pars).QueryRow(&count)
  119. sql := ` SELECT COUNT(1) AS count FROM my_chart_classify WHERE 1=1 `
  120. if condition != "" {
  121. sql += condition
  122. }
  123. err = global.DmSQL["data"].Raw(sql, pars...).Scan(&count).Error
  124. return
  125. }
  126. func GetMyChartClassifyById(adminId, myChartClassifyId int) (item *MyChartClassify, err error) {
  127. //o := orm.NewOrmUsingDB("data")
  128. //sql := ` SELECT * FROM my_chart_classify WHERE admin_id=? AND my_chart_classify_id=? `
  129. //err = o.Raw(sql, adminId, myChartClassifyId).QueryRow(&item)
  130. sql := ` SELECT * FROM my_chart_classify WHERE admin_id=? AND my_chart_classify_id=? `
  131. err = global.DmSQL["data"].Raw(sql, adminId, myChartClassifyId).First(&item).Error
  132. return
  133. }
  134. //// GetMyChartClassifyMastSort 获取MY ETA 分类中排序最大的值
  135. //func GetMyChartClassifyMastSort(adminId int) (sort int, err error) {
  136. // o := orm.NewOrmUsingDB("data")
  137. // sql := ` SELECT MAX(sort) sort FROM my_chart_classify WHERE admin_id=? `
  138. // err = o.Raw(sql, adminId).QueryRow(&sort)
  139. // return
  140. //}
  141. // GetMyChartClassifyMinSort 获取MY ETA 分类中排序最小的值
  142. func GetMyChartClassifyMinSort(adminId int) (sort int, err error) {
  143. //o := orm.NewOrmUsingDB("data")
  144. //sql := ` SELECT MIN(sort) sort FROM my_chart_classify WHERE admin_id=? `
  145. //err = o.Raw(sql, adminId).QueryRow(&sort)
  146. sql := ` SELECT MIN(sort) sort FROM my_chart_classify WHERE admin_id=? `
  147. err = global.DmSQL["data"].Raw(sql, adminId).Scan(&sort).Error
  148. return
  149. }
  150. type MyChartClassifyEditReq struct {
  151. MyChartClassifyId int `description:"分类ID"`
  152. MyChartClassifyName string `description:"分类名称"`
  153. }
  154. // MyChartClassifyMoveReq 移动分类请求参数
  155. type MyChartClassifyMoveReq struct {
  156. MyChartClassifyId int `description:"分类id"`
  157. PrevClassifyId int `description:"上一个兄弟节点分类id"`
  158. NextClassifyId int `description:"下一个兄弟节点分类id"`
  159. }
  160. func ModifyMyChartClassify(myChartClassifyId int, myChartClassifyName string) (err error) {
  161. //o := orm.NewOrmUsingDB("data")
  162. //sql := `UPDATE my_chart_classify SET my_chart_classify_name=?,modify_time=NOW() WHERE my_chart_classify_id=?`
  163. //_, err = o.Raw(sql, myChartClassifyName, myChartClassifyId).Exec()
  164. sql := `UPDATE my_chart_classify SET my_chart_classify_name=?,modify_time=NOW() WHERE my_chart_classify_id=?`
  165. err = global.DmSQL["data"].Exec(sql, myChartClassifyName, myChartClassifyId).Error
  166. return
  167. }
  168. type MyChartClassifyDeleteReq struct {
  169. MyChartClassifyId int `description:"分类ID"`
  170. }
  171. func DeleteMyChartClassify(myChartClassifyId int) (err error) {
  172. //o := orm.NewOrmUsingDB("data")
  173. //o.Begin()
  174. //
  175. //defer func() {
  176. // if err != nil {
  177. // o.Rollback()
  178. // } else {
  179. // o.Commit()
  180. // }
  181. //}()
  182. sql := `DELETE FROM my_chart_classify WHERE my_chart_classify_id=?`
  183. err = global.DmSQL["data"].Exec(sql, myChartClassifyId).Error
  184. if err != nil {
  185. return err
  186. }
  187. mappingList := make([]*MyChartClassifyMapping, 0)
  188. sql = `SELECT * FROM my_chart_classify_mapping WHERE my_chart_classify_id=?`
  189. err = global.DmSQL["data"].Raw(sql, myChartClassifyId).Find(&mappingList).Error
  190. sql = `DELETE FROM my_chart_classify_mapping WHERE my_chart_classify_id=?`
  191. err = global.DmSQL["data"].Exec(sql, myChartClassifyId).Error
  192. if err != nil {
  193. return err
  194. }
  195. for _, v := range mappingList {
  196. var count int
  197. sql = ` SELECT COUNT(1) AS count FROM my_chart_classify_mapping WHERE my_chart_id=?`
  198. err = global.DmSQL["data"].Raw(sql, v.MyChartId).First(&count).Error
  199. if err != nil {
  200. return err
  201. }
  202. if count <= 0 {
  203. sql = `DELETE FROM my_chart WHERE my_chart_id=?`
  204. err = global.DmSQL["data"].Exec(sql, v.MyChartId).Error
  205. if err != nil {
  206. return err
  207. }
  208. }
  209. }
  210. return
  211. }
  212. type MyChartAddReq struct {
  213. ChartInfoId int `description:"图表id"`
  214. MyChartClassifyId []int `description:"分类id,数组形式"`
  215. }
  216. type MyChartAddResp struct {
  217. MyChartInfoId int `description:"图表id"`
  218. MyChartClassifyId string `description:"分类id,多个用英文逗号隔开"`
  219. }
  220. type MyChart struct {
  221. MyChartId int `orm:"column(my_chart_id);pk" gorm:"primaryKey" `
  222. ChartInfoId int `description:"图表id"`
  223. Source int `description:"1:ETA图库;2:商品价格"`
  224. AdminId int `description:"用户id"`
  225. CreateTime time.Time `description:"创建时间"`
  226. ModifyTime time.Time `description:"修改时间"`
  227. }
  228. type MyChartView struct {
  229. MyChartId int `orm:"column(my_chart_id);pk" gorm:"primaryKey" `
  230. ChartInfoId int `description:"图表id"`
  231. AdminId int `description:"用户id"`
  232. CreateTime time.Time `description:"创建时间"`
  233. ModifyTime time.Time `description:"修改时间"`
  234. MyChartClassifyId string
  235. }
  236. func AddMyChart(item *MyChart) (lastId int64, err error) {
  237. //o := orm.NewOrmUsingDB("data")
  238. //lastId, err = o.Insert(item)
  239. err = global.DmSQL["data"].Create(item).Error
  240. return
  241. }
  242. type MyChartClassifyMapping struct {
  243. MyChartClassifyMappingId int `orm:"column(my_chart_classify_mapping_id);pk" gorm:"primaryKey" `
  244. AdminId int
  245. MyChartId int
  246. MyChartClassifyId int
  247. CreateTime time.Time
  248. ModifyTime time.Time
  249. Sort float64
  250. }
  251. func AddMyChartClassifyMapping(item *MyChartClassifyMapping) (lastId int64, err error) {
  252. //o := orm.NewOrmUsingDB("data")
  253. //lastId, err = o.Insert(item)
  254. err = global.DmSQL["data"].Create(item).Error
  255. return
  256. }
  257. func GetMyChartClassifyMapping(adminId, myChartId, myChartClassifyId int) (item *MyChartClassifyMapping, err error) {
  258. //o := orm.NewOrmUsingDB("data")
  259. //sql := `SELECT * FROM my_chart_classify_mapping WHERE admin_id=? AND my_chart_id=? AND my_chart_classify_id=? `
  260. //err = o.Raw(sql, adminId, myChartId, myChartClassifyId).QueryRow(&item)
  261. sql := `SELECT * FROM my_chart_classify_mapping WHERE admin_id=? AND my_chart_id=? AND my_chart_classify_id=? `
  262. err = global.DmSQL["data"].Raw(sql, adminId, myChartId, myChartClassifyId).First(&item).Error
  263. return
  264. }
  265. type MyChartDeleteReq struct {
  266. MyChartId int `description:"我的图表id"`
  267. MyChartClassifyId int `description:"我的图表分类id"`
  268. }
  269. func DeleteMyChart(myChartId, myChartClassifyId int) (isDelMyChart bool, err error) {
  270. //o := orm.NewOrmUsingDB("data")
  271. if myChartClassifyId > 0 {
  272. sql := `DELETE FROM my_chart_classify_mapping WHERE my_chart_id=? AND my_chart_classify_id=? `
  273. err = global.DmSQL["data"].Exec(sql, myChartId, myChartClassifyId).Error
  274. if err != nil {
  275. return
  276. }
  277. var count int
  278. sql = ` SELECT COUNT(1) AS count FROM my_chart_classify_mapping WHERE my_chart_id=? `
  279. err = global.DmSQL["data"].Raw(sql, myChartId).Scan(&count).Error
  280. if err != nil {
  281. return
  282. }
  283. if count <= 0 {
  284. sql = `DELETE FROM my_chart WHERE my_chart_id=? `
  285. err = global.DmSQL["data"].Exec(sql, myChartId).Error
  286. if err != nil {
  287. return
  288. }
  289. isDelMyChart = true
  290. }
  291. } else {
  292. sql := `DELETE FROM my_chart WHERE my_chart_id=? `
  293. err = global.DmSQL["data"].Exec(sql, myChartId).Error
  294. if err != nil {
  295. return
  296. }
  297. isDelMyChart = true
  298. }
  299. return
  300. }
  301. type MyChartList struct {
  302. AdminId int `description:"关联人id"`
  303. MyChartId int `description:"我的图表主键"`
  304. ChartInfoId int
  305. ChartName string `description:"来源名称"`
  306. ChartNameEn string `description:"英文图表名称"`
  307. ChartClassifyId int `description:"图表分类id"`
  308. SysUserId int
  309. SysUserRealName string
  310. UniqueCode string `description:"图表唯一编码"`
  311. CreateTime time.Time
  312. ModifyTime time.Time
  313. DateType int `description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间"`
  314. StartDate string `description:"自定义开始日期"`
  315. EndDate string `description:"自定义结束日期"`
  316. IsSetName int `description:"设置名称"`
  317. EdbInfoIds string `description:"指标id"`
  318. ChartType int `description:"生成样式:1:曲线图,2:季节性图"`
  319. Calendar string `description:"公历/农历"`
  320. SeasonStartDate string `description:"季节性图开始日期"`
  321. SeasonEndDate string `description:"季节性图开始日期"`
  322. ChartImage string `description:"图表图片"`
  323. Sort int `description:"排序字段,数字越小越排前面"`
  324. IsAdd bool `description:"true:已加入我的图库,false:未加入我的图库"`
  325. MyChartClassifyName string `description:"分类名称,多个用英文逗号分割"`
  326. MyChartClassifyId string `description:"分类id,多个用英文逗号分割"`
  327. EdbEndDate string `description:"指标最新更新日期"`
  328. IsEnChart bool `description:"是否展示英文标识"`
  329. Disabled int `description:"是否禁用,0:启用,1:禁用,默认:0"`
  330. Source int `description:"1:ETA图库;2:商品价格曲线"`
  331. IsJoinPermission int `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
  332. HaveOperaAuth bool `description:"是否有数据权限,默认:false"`
  333. }
  334. type MyChartListResp struct {
  335. Paging *paging.PagingItem
  336. List []*MyChartList
  337. }
  338. func GetMyChartListByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*MyChartList, err error) {
  339. //o := orm.NewOrmUsingDB("data")
  340. //
  341. //field := `a.my_chart_id,c.admin_id,c.sort,c.create_time as c_ctime,b.chart_info_id,b.chart_name,b.chart_name_en,b.chart_classify_id,b.sys_user_id,b.sys_user_real_name,b.unique_code,b.create_time,b.modify_time,b.date_type,b.start_date,b.end_date,b.is_set_name,b.edb_info_ids,b.chart_type,b.calendar,b.season_start_date,b.season_end_date,b.chart_image,b.edb_end_date,b.disabled,b.source,b.is_join_permission `
  342. ////MyChartClassifyName string `description:"分类名称,多个用英文逗号分割"`
  343. ////MyChartClassifyId string `description:"分类id,多个用英文逗号分割"`
  344. //sql := ` SELECT * FROM ( SELECT ` + field + ` FROM my_chart AS a
  345. // INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id
  346. // INNER JOIN my_chart_classify_mapping AS c ON a.my_chart_id=c.my_chart_id
  347. // INNER JOIN my_chart_classify AS d ON c.my_chart_classify_id=d.my_chart_classify_id
  348. // WHERE 1=1 `
  349. //if condition != "" {
  350. // sql += condition
  351. //}
  352. //sql += " GROUP BY a.chart_info_id) AS f ORDER BY sort ASC,c_ctime desc LIMIT ?,? "
  353. //_, err = o.Raw(sql, pars...).QueryRows(&item)
  354. field := `a.my_chart_id,c.admin_id,c.sort,c.create_time as c_ctime,b.chart_info_id,b.chart_name,b.chart_name_en,b.chart_classify_id,b.sys_user_id,b.sys_user_real_name,b.unique_code,b.create_time,b.modify_time,b.date_type,b.start_date,b.end_date,b.is_set_name,b.edb_info_ids,b.chart_type,b.calendar,b.season_start_date,b.season_end_date,b.chart_image,b.edb_end_date,b.disabled,b.source,b.is_join_permission `
  355. //MyChartClassifyName string `description:"分类名称,多个用英文逗号分割"`
  356. //MyChartClassifyId string `description:"分类id,多个用英文逗号分割"`
  357. sql := ` SELECT * FROM ( SELECT ` + field + ` FROM my_chart AS a
  358. INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id
  359. INNER JOIN my_chart_classify_mapping AS c ON a.my_chart_id=c.my_chart_id
  360. INNER JOIN my_chart_classify AS d ON c.my_chart_classify_id=d.my_chart_classify_id
  361. WHERE 1=1 `
  362. if condition != "" {
  363. sql += condition
  364. }
  365. sql += " GROUP BY a.chart_info_id) AS f ORDER BY sort ASC,c_ctime desc LIMIT ?,? "
  366. pars = append(pars, startSize)
  367. pars = append(pars, pageSize)
  368. err = global.DmSQL["data"].Raw(sql, pars...).Find(&item).Error
  369. return
  370. }
  371. func GetMyChartListCountByCondition(condition string, pars []interface{}) (count int, err error) {
  372. //o := orm.NewOrmUsingDB("data")
  373. //sql := ` select a.* from my_chart AS a
  374. // INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id
  375. // INNER JOIN my_chart_classify_mapping AS c ON a.my_chart_id=c.my_chart_id
  376. // INNER JOIN my_chart_classify AS d ON c.my_chart_classify_id=d.my_chart_classify_id
  377. // WHERE 1=1`
  378. //if condition != "" {
  379. // sql += condition
  380. //}
  381. //sql1 := ` SELECT COUNT(1) AS count FROM (` + sql + ` GROUP BY a.chart_info_id ) d`
  382. //err = o.Raw(sql1, pars).QueryRow(&count)
  383. sql := ` select a.* from my_chart AS a
  384. INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id
  385. INNER JOIN my_chart_classify_mapping AS c ON a.my_chart_id=c.my_chart_id
  386. INNER JOIN my_chart_classify AS d ON c.my_chart_classify_id=d.my_chart_classify_id
  387. WHERE 1=1`
  388. if condition != "" {
  389. sql += condition
  390. }
  391. sql1 := ` SELECT COUNT(1) AS count FROM (` + sql + ` GROUP BY a.chart_info_id ) d`
  392. err = global.DmSQL["data"].Raw(sql1, pars...).Scan(&count).Error
  393. return
  394. }
  395. func GetMyChartMaxSort(adminId, myChartClassifyId int) (count int, err error) {
  396. //o := orm.NewOrmUsingDB("data")
  397. //sql := ` SELECT COUNT(1) AS count FROM my_chart_classify_mapping WHERE 1=1 AND admin_id=? AND my_chart_classify_id=? `
  398. //err = o.Raw(sql, adminId, myChartClassifyId).QueryRow(&count)
  399. sql := ` SELECT COUNT(1) AS count FROM my_chart_classify_mapping WHERE 1=1 AND admin_id=? AND my_chart_classify_id=? `
  400. err = global.DmSQL["data"].Raw(sql, adminId, myChartClassifyId).Scan(&count).Error
  401. return
  402. }
  403. type MoveMyChartReq struct {
  404. MyChartId int `description:"移动的,我的图表图表ID"`
  405. PrevMyChartId int `description:"移动到的位置,上一级的,我的图表ID,如果没有上一级,则传0"`
  406. NextMyChartId int `description:"移动到的位置,下一级的,我的图表ID,如果没有下一级,则传0"`
  407. MyChartClassifyId int `description:"当前分类id"`
  408. }
  409. func MyChartMove(sort float64, adminId int, myChartId, myChartClassifyId int) (err error) {
  410. //o := orm.NewOrmUsingDB("data")
  411. //sql := ` UPDATE my_chart_classify_mapping SET sort = ?,modify_time=NOW() WHERE admin_id=? AND my_chart_id=? AND my_chart_classify_id=? `
  412. //_, err = o.Raw(sql, sort, adminId, myChartId, myChartClassifyId).Exec()
  413. sql := ` UPDATE my_chart_classify_mapping SET sort = ?,modify_time=NOW() WHERE admin_id=? AND my_chart_id=? AND my_chart_classify_id=? `
  414. err = global.DmSQL["data"].Exec(sql, sort, adminId, myChartId, myChartClassifyId).Error
  415. return
  416. }
  417. // UpdateMyChartSortByClassifyId 根据分类id更新排序
  418. func UpdateMyChartSortByClassifyId(myChartClassifyId, nowSort int, prevMyChartClassifyMappingId int, updateSort string) (err error) {
  419. //o := orm.NewOrmUsingDB("data")
  420. //sql := ` update my_chart_classify_mapping set sort = ` + updateSort + ` WHERE my_chart_classify_id=? AND `
  421. //if prevMyChartClassifyMappingId > 0 {
  422. // sql += ` ( sort > ? or ( my_chart_classify_mapping_id < ? and sort=? )) `
  423. //}
  424. //_, err = o.Raw(sql, myChartClassifyId, nowSort, prevMyChartClassifyMappingId, nowSort).Exec()
  425. sql := ` update my_chart_classify_mapping set sort = ` + updateSort + ` WHERE my_chart_classify_id=? AND `
  426. if prevMyChartClassifyMappingId > 0 {
  427. sql += ` ( sort > ? or ( my_chart_classify_mapping_id < ? and sort=? )) `
  428. }
  429. err = global.DmSQL["data"].Exec(sql, myChartClassifyId, nowSort, prevMyChartClassifyMappingId, nowSort).Error
  430. return
  431. }
  432. //func GetMyChartMinSortByAdminId(adminId int) (item *MyChart, err error) {
  433. // o := orm.NewOrmUsingDB("data")
  434. // sql := ` SELECT * FROM my_chart WHERE admin_id=? ORDER BY sort ASC LIMIT 1`
  435. // err = o.Raw(sql, adminId).QueryRow(&item)
  436. // return
  437. //}
  438. type ChartRecommendListResp struct {
  439. List []*ChartInfoView
  440. }
  441. func GetChartClassify(chartClassifyId int) (chart_classify_id string, err error) {
  442. // o := orm.NewOrmUsingDB("data")
  443. // sql := `SELECT GROUP_CONCAT(t.chart_classify_id) AS chart_classify_id FROM (
  444. // SELECT a.chart_classify_id FROM chart_classify AS a
  445. // WHERE a.chart_classify_id=?
  446. // UNION ALL
  447. // SELECT a.chart_classify_id FROM chart_classify AS a
  448. // WHERE a.parent_id=? UNION ALL
  449. // SELECT
  450. // chart_classify_id
  451. // FROM
  452. // chart_classify
  453. //WHERE
  454. // parent_id IN ( SELECT chart_classify_id FROM chart_classify WHERE parent_id = ? )
  455. // )AS t`
  456. // err = o.Raw(sql, chartClassifyId, chartClassifyId, chartClassifyId).QueryRow(&chart_classify_id)
  457. sql := `SELECT LISTAGG(t.chart_classify_id, ',') WITHIN GROUP (ORDER BY t.chart_classify_id) AS chart_classify_id FROM (
  458. SELECT a.chart_classify_id FROM chart_classify AS a
  459. WHERE a.chart_classify_id=?
  460. UNION ALL
  461. SELECT a.chart_classify_id FROM chart_classify AS a
  462. WHERE a.parent_id=? UNION ALL
  463. SELECT
  464. chart_classify_id
  465. FROM
  466. chart_classify
  467. WHERE
  468. parent_id IN ( SELECT chart_classify_id FROM chart_classify WHERE parent_id = ? )
  469. )AS t`
  470. err = global.DmSQL["data"].Raw(sql, chartClassifyId, chartClassifyId, chartClassifyId).First(&chart_classify_id).Error
  471. return
  472. }
  473. func GetRecommendChartListByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*ChartInfoView, err error) {
  474. //o := orm.NewOrmUsingDB("data")
  475. //sql := ` SELECT b.* FROM my_chart AS a
  476. // INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id `
  477. //if condition != "" {
  478. // sql += condition
  479. //}
  480. //sql += " ORDER BY a.create_time DESC LIMIT ?,? "
  481. //_, err = o.Raw(sql, pars...).QueryRows(&item)
  482. sql := ` SELECT b.* FROM my_chart AS a
  483. INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id `
  484. if condition != "" {
  485. sql += condition
  486. }
  487. sql += " ORDER BY a.create_time DESC LIMIT ?,? "
  488. pars = append(pars, startSize)
  489. pars = append(pars, pageSize)
  490. err = global.DmSQL["data"].Raw(sql, pars...).Find(&item).Error
  491. return
  492. }
  493. func GetMyChartListByAdminId(adminId int) (item []*MyChartView, err error) {
  494. //o := orm.NewOrmUsingDB("data")
  495. ////sql := ` SELECT * FROM my_chart WHERE 1=1 AND admin_id=? `
  496. //
  497. //sql := ` SELECT a.*,GROUP_CONCAT(c.my_chart_classify_id SEPARATOR ',') AS my_chart_classify_id FROM my_chart AS a
  498. // LEFT JOIN my_chart_classify_mapping AS b ON a.my_chart_id=b.my_chart_id AND a.admin_id=b.admin_id
  499. // LEFT JOIN my_chart_classify AS c ON b.my_chart_classify_id=c.my_chart_classify_id AND b.admin_id=c.admin_id
  500. // WHERE 1=1 AND a.admin_id=?
  501. // GROUP BY a.chart_info_id `
  502. //_, err = o.Raw(sql, adminId).QueryRows(&item)
  503. //sql := ` SELECT * FROM my_chart WHERE 1=1 AND admin_id=? `
  504. sql := ` SELECT
  505. a.my_chart_id,a.chart_info_id,a.source,a.admin_id,a.create_time,a.modify_time,LISTAGG(c.my_chart_classify_id, ',') WITHIN GROUP (ORDER BY c.my_chart_classify_id) AS my_chart_classify_id
  506. FROM my_chart AS a
  507. LEFT JOIN my_chart_classify_mapping AS b ON a.my_chart_id=b.my_chart_id AND a.admin_id=b.admin_id
  508. LEFT JOIN my_chart_classify AS c ON b.my_chart_classify_id=c.my_chart_classify_id AND b.admin_id=c.admin_id
  509. WHERE 1=1 AND a.admin_id=?
  510. GROUP BY
  511. a.chart_info_id,
  512. a.my_chart_id,
  513. a.chart_info_id,
  514. a.source,
  515. a.admin_id,
  516. a.create_time,
  517. a.modify_time `
  518. err = global.DmSQL["data"].Raw(sql, adminId).Find(&item).Error
  519. return
  520. }
  521. func GetMyChartSearchByCondition(condition string, pars []interface{}) (item []*MyChartList, err error) {
  522. //o := orm.NewOrmUsingDB("data")
  523. //sql := ` SELECT a.my_chart_id,c.sort,b.*,GROUP_CONCAT(DISTINCT d.my_chart_classify_name) AS my_chart_classify_name,GROUP_CONCAT(DISTINCT d.my_chart_classify_id) AS my_chart_classify_id
  524. // FROM my_chart AS a
  525. // INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id
  526. // INNER JOIN my_chart_classify_mapping AS c ON a.my_chart_id=c.my_chart_id
  527. // INNER JOIN my_chart_classify AS d ON c.my_chart_classify_id=d.my_chart_classify_id
  528. // WHERE 1=1 `
  529. //
  530. //if condition != "" {
  531. // sql += condition
  532. //}
  533. //sql += " GROUP BY a.chart_info_id ORDER BY c.sort DESC "
  534. //_, err = o.Raw(sql, pars).QueryRows(&item)
  535. sql := ` SELECT a.my_chart_id,c.sort,b.*,GROUP_CONCAT(DISTINCT d.my_chart_classify_name) AS my_chart_classify_name,GROUP_CONCAT(DISTINCT d.my_chart_classify_id) AS my_chart_classify_id
  536. FROM my_chart AS a
  537. INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id
  538. INNER JOIN my_chart_classify_mapping AS c ON a.my_chart_id=c.my_chart_id
  539. INNER JOIN my_chart_classify AS d ON c.my_chart_classify_id=d.my_chart_classify_id
  540. WHERE 1=1 `
  541. if condition != "" {
  542. sql += condition
  543. }
  544. sql += " GROUP BY a.chart_info_id ORDER BY c.sort DESC "
  545. err = global.DmSQL["data"].Raw(sql, pars...).Find(&item).Error
  546. return
  547. }
  548. type MyChartSearchListResp struct {
  549. List []*MyChartList
  550. Paging *paging.PagingItem
  551. }
  552. type MyChartEditReq struct {
  553. MyChartId int `description:"我的图表主键"`
  554. CurrentMyChartClassifyId int `description:"当前分类ID"`
  555. MyChartClassifyId []int `description:"分类id,数组形式"`
  556. }
  557. func GetMyChartClassifyMappingCount(adminId, myChartId, myChartClassifyId int) (count int, err error) {
  558. //o := orm.NewOrmUsingDB("data")
  559. //sql := ` SELECT COUNT(1) AS count
  560. // FROM my_chart_classify_mapping
  561. // WHERE 1=1 AND admin_id=? AND my_chart_id=? AND my_chart_classify_id=? `
  562. //err = o.Raw(sql, adminId, myChartId, myChartClassifyId).QueryRow(&count)
  563. sql := ` SELECT COUNT(1) AS count
  564. FROM my_chart_classify_mapping
  565. WHERE 1=1 AND admin_id=? AND my_chart_id=? AND my_chart_classify_id=? `
  566. err = global.DmSQL["data"].Raw(sql, adminId, myChartId, myChartClassifyId).Scan(&count).Error
  567. return
  568. }
  569. func DeleteMyChartClassifyMapping(adminId, myChartId, myChartClassifyId int) (err error) {
  570. //o := orm.NewOrmUsingDB("data")
  571. //sql := ` DELETE FROM my_chart_classify_mapping
  572. // WHERE admin_id=? AND my_chart_id=? AND my_chart_classify_id=? `
  573. //_, err = o.Raw(sql, adminId, myChartId, myChartClassifyId).Exec()
  574. sql := ` DELETE FROM my_chart_classify_mapping
  575. WHERE admin_id=? AND my_chart_id=? AND my_chart_classify_id=? `
  576. err = global.DmSQL["data"].Exec(sql, adminId, myChartId, myChartClassifyId).Error
  577. return
  578. }
  579. func GetMyChartSort(adminId, myChartClassifyId, sort int) (item *MyChartClassifyMapping, err error) {
  580. //o := orm.NewOrmUsingDB("data")
  581. //sql := ` SELECT * FROM my_chart_classify_mapping WHERE 1=1 AND admin_id=? AND my_chart_classify_id=? `
  582. //if sort == 1 {
  583. // sql += ` ORDER BY sort DESC,my_chart_classify_mapping_id ASC LIMIT 1 `
  584. //} else {
  585. // sql += ` ORDER BY sort ASC,my_chart_classify_mapping_id DESC LIMIT 1 `
  586. //}
  587. //err = o.Raw(sql, adminId, myChartClassifyId).QueryRow(&item)
  588. sql := ` SELECT * FROM my_chart_classify_mapping WHERE 1=1 AND admin_id=? AND my_chart_classify_id=? `
  589. if sort == 1 {
  590. sql += ` ORDER BY sort DESC,my_chart_classify_mapping_id ASC LIMIT 1 `
  591. } else {
  592. sql += ` ORDER BY sort ASC,my_chart_classify_mapping_id DESC LIMIT 1 `
  593. }
  594. err = global.DmSQL["data"].Raw(sql, adminId, myChartClassifyId).First(&item).Error
  595. return
  596. }
  597. func GetMyChartByCondition(condition string, pars []interface{}) (item []*MyChartView, err error) {
  598. //o := orm.NewOrmUsingDB("data")
  599. ////sql := ` SELECT * FROM my_chart WHERE 1=1 `
  600. //sql := `SELECT a.*,GROUP_CONCAT(c.my_chart_classify_id SEPARATOR ',') AS my_chart_classify_id FROM my_chart AS a
  601. // LEFT JOIN my_chart_classify_mapping AS b ON a.my_chart_id=b.my_chart_id AND a.admin_id=b.admin_id
  602. // LEFT JOIN my_chart_classify AS c ON b.my_chart_classify_id=c.my_chart_classify_id AND b.admin_id=c.admin_id
  603. // WHERE 1=1
  604. // `
  605. //if condition != "" {
  606. // sql += condition
  607. //}
  608. //sql += ` GROUP BY a.chart_info_id `
  609. //_, err = o.Raw(sql, pars).QueryRows(&item)
  610. sql := `SELECT a.my_chart_id,a.chart_info_id,a.source,a.admin_id,a.create_time,a.modify_time,LISTAGG(c.my_chart_classify_id, ',') WITHIN GROUP (ORDER BY c.my_chart_classify_id) AS my_chart_classify_id
  611. FROM my_chart AS a
  612. LEFT JOIN my_chart_classify_mapping AS b ON a.my_chart_id=b.my_chart_id AND a.admin_id=b.admin_id
  613. LEFT JOIN my_chart_classify AS c ON b.my_chart_classify_id=c.my_chart_classify_id AND b.admin_id=c.admin_id
  614. WHERE 1=1
  615. `
  616. if condition != "" {
  617. sql += condition
  618. }
  619. sql += ` GROUP BY
  620. a.chart_info_id,
  621. a.my_chart_id,
  622. a.chart_info_id,
  623. a.source,
  624. a.admin_id,
  625. a.create_time,
  626. a.modify_time `
  627. err = global.DmSQL["data"].Raw(sql, pars...).Find(&item).Error
  628. return
  629. }
  630. func GetMyChartDetailByCondition(condition string, pars []interface{}) (item *MyChartView, err error) {
  631. //o := orm.NewOrmUsingDB("data")
  632. //sql := ` SELECT * FROM my_chart WHERE 1=1 `
  633. //if condition != "" {
  634. // sql += condition
  635. //}
  636. //err = o.Raw(sql, pars).QueryRow(&item)
  637. sql := ` SELECT * FROM my_chart WHERE 1=1 `
  638. if condition != "" {
  639. sql += condition
  640. }
  641. err = global.DmSQL["data"].Raw(sql, pars...).First(&item).Error
  642. return
  643. }
  644. func MoveMyChartClassify(adminId, myChartId int, myChartClassifyId []int) (err error) {
  645. //o := orm.NewOrmUsingDB("data")
  646. //to, err := o.Begin()
  647. //if err != nil {
  648. // return
  649. //}
  650. //defer func() {
  651. // if err != nil {
  652. // _ = to.Rollback()
  653. // } else {
  654. // _ = to.Commit()
  655. // }
  656. //}()
  657. to := global.DmSQL["data"].Begin()
  658. defer func() {
  659. if err != nil {
  660. _ = to.Rollback()
  661. } else {
  662. _ = to.Commit()
  663. }
  664. }()
  665. classifyIdMap := make(map[int]int)
  666. for _, v := range myChartClassifyId {
  667. classifyIdMap[v] = v
  668. }
  669. mappingList := make([]*MyChartClassifyMapping, 0)
  670. //sql := `SELECT * FROM my_chart_classify_mapping WHERE admin_id=? AND my_chart_id=?`
  671. //_, err = to.Raw(sql, adminId, myChartId).QueryRows(&mappingList)
  672. //if err != nil {
  673. // return
  674. //}
  675. sql := `SELECT * FROM my_chart_classify_mapping WHERE admin_id=? AND my_chart_id=?`
  676. err = to.Raw(sql, adminId, myChartId).Find(&mappingList).Error
  677. if err != nil {
  678. return
  679. }
  680. for _, v := range mappingList {
  681. if _, ok := classifyIdMap[v.MyChartClassifyId]; !ok {
  682. //sql := ` DELETE FROM my_chart_classify_mapping WHERE my_chart_classify_mapping_id=? `
  683. //_, err = to.Raw(sql, v.MyChartClassifyMappingId).Exec()
  684. //if err != nil {
  685. // return
  686. //}
  687. sql := ` DELETE FROM my_chart_classify_mapping WHERE my_chart_classify_mapping_id=? `
  688. err = to.Exec(sql, v.MyChartClassifyMappingId).Error
  689. if err != nil {
  690. return
  691. }
  692. }
  693. }
  694. //sql := `DELETE FROM my_chart_classify_mapping WHERE admin_id=? AND my_chart_id=? `
  695. //_, err = to.Raw(sql, adminId, myChartId).Exec()
  696. //if err != nil {
  697. // return err
  698. //}
  699. //step := float64(65536)
  700. for _, v := range myChartClassifyId {
  701. var count int
  702. sql := ` SELECT COUNT(1) AS count FROM my_chart_classify_mapping WHERE my_chart_id=? AND my_chart_classify_id=? `
  703. err = to.Raw(sql, myChartId, v).Scan(&count).Error
  704. if err != nil {
  705. return
  706. }
  707. if count <= 0 {
  708. //total, err := GetMyChartMaxSort(adminId, v)
  709. if err != nil {
  710. return err
  711. }
  712. //sort := (float64(total) + 1) * step
  713. sort := 0
  714. sql = ` INSERT INTO my_chart_classify_mapping (
  715. admin_id,
  716. my_chart_id,
  717. my_chart_classify_id,
  718. create_time,
  719. modify_time,
  720. sort )VALUES (?,?,?,NOW(),NOW(),?) `
  721. err = to.Exec(sql, adminId, myChartId, v, sort).Error
  722. if err != nil {
  723. return err
  724. }
  725. }
  726. }
  727. return
  728. }
  729. // Update 更新分类基础信息
  730. func (myChartClassify *MyChartClassify) Update(cols []string) (err error) {
  731. //o := orm.NewOrmUsingDB("data")
  732. //_, err = o.Update(myChartClassify, cols...)
  733. err = global.DmSQL["data"].Select(cols).Updates(myChartClassify).Error
  734. return
  735. }
  736. // GetFirstMyChartClassifyByAdminId 获取当前账号下,排序第一条的分类数据
  737. func GetFirstMyChartClassifyByAdminId(adminId int) (item *MyChartClassify, err error) {
  738. //o := orm.NewOrmUsingDB("data")
  739. //sql := ` SELECT * FROM my_chart_classify WHERE admin_id=? order by sort asc,my_chart_classify_id asc limit 1`
  740. //err = o.Raw(sql, adminId).QueryRow(&item)
  741. sql := ` SELECT * FROM my_chart_classify WHERE admin_id=? order by sort asc,my_chart_classify_id asc limit 1`
  742. err = global.DmSQL["data"].Raw(sql, adminId).First(&item).Error
  743. return
  744. }
  745. // UpdateMyChartClassifySortByClassifyId 根据分类id更新排序
  746. func UpdateMyChartClassifySortByClassifyId(adminId, classifyId, nowSort int, updateSort string) (err error) {
  747. //o := orm.NewOrmUsingDB("data")
  748. //sql := ` update my_chart_classify set sort = ` + updateSort + ` WHERE admin_id = ? and sort > ? `
  749. //if classifyId > 0 {
  750. // sql += ` or ( my_chart_classify_id > ` + fmt.Sprint(classifyId) + ` and sort = ` + fmt.Sprint(nowSort) + `)`
  751. //}
  752. //_, err = o.Raw(sql, adminId, nowSort).Exec()
  753. sql := ` update my_chart_classify set sort = ` + updateSort + ` WHERE admin_id = ? and sort > ? `
  754. if classifyId > 0 {
  755. sql += ` or ( my_chart_classify_id > ` + fmt.Sprint(classifyId) + ` and sort = ` + fmt.Sprint(nowSort) + `)`
  756. }
  757. err = global.DmSQL["data"].Exec(sql, adminId, nowSort).Error
  758. return
  759. }
  760. // ModifyChartClassifyPublicReq 修改我的图库分类是否可见
  761. type ModifyChartClassifyPublicReq struct {
  762. MyChartClassifyId int `description:"分类id"`
  763. IsPublic int `description:"是否所有人可见,0:仅自己可见,1:所有人可见"`
  764. }
  765. // CopyChartClassifyReq 复制我的图库分类
  766. type CopyChartClassifyReq struct {
  767. MyChartClassifyId int `description:"分类id"`
  768. }
  769. // GetPublicMyChartClassifyById 根据分类ID获取公开分类
  770. func GetPublicMyChartClassifyById(myChartClassifyId int) (item *MyChartClassify, err error) {
  771. //o := orm.NewOrmUsingDB("data")
  772. //sql := ` SELECT * FROM my_chart_classify WHERE is_public=1 AND my_chart_classify_id=? `
  773. //err = o.Raw(sql, myChartClassifyId).QueryRow(&item)
  774. sql := ` SELECT * FROM my_chart_classify WHERE is_public=1 AND my_chart_classify_id=? `
  775. err = global.DmSQL["data"].Raw(sql, myChartClassifyId).First(&item).Error
  776. return
  777. }
  778. // CopyPublicMyChartClassifyById 根据分类ID获取公开分类
  779. func CopyPublicMyChartClassifyById(myChartClassifyId, adminId int, newMyChartClassifyName string) (newMyChartClassify *MyChartClassify, err error) {
  780. //o := orm.NewOrmUsingDB("data")
  781. //to, err := o.Begin()
  782. //if err != nil {
  783. // return
  784. //}
  785. //defer func() {
  786. // if err != nil {
  787. // _ = to.Rollback()
  788. // } else {
  789. // _ = to.Commit()
  790. // }
  791. //}()
  792. to := global.DmSQL["data"].Begin()
  793. defer func() {
  794. if err != nil {
  795. _ = to.Rollback()
  796. } else {
  797. _ = to.Commit()
  798. }
  799. }()
  800. //获取分类里面所有的图表信息
  801. fromMappingList := make([]*MyChartClassifyMapping, 0)
  802. sql := `SELECT * FROM my_chart_classify_mapping WHERE my_chart_classify_id=?`
  803. err = to.Raw(sql, myChartClassifyId).Find(&fromMappingList).Error
  804. if err != nil {
  805. return
  806. }
  807. fromMyChartSortMap := make(map[int]float64)
  808. for _, fromMapping := range fromMappingList {
  809. fromMyChartSortMap[fromMapping.MyChartId] = fromMapping.Sort
  810. }
  811. var minSort int
  812. sql = ` SELECT MIN(sort) sort FROM my_chart_classify WHERE admin_id=? `
  813. err = to.Raw(sql, adminId).Scan(&minSort).Error
  814. if err != nil {
  815. return
  816. }
  817. // 我的图表
  818. fromMyChartList := make([]*MyChart, 0)
  819. sql = `SELECT a.* FROM my_chart a join my_chart_classify_mapping b on a.my_chart_id=b.my_chart_id
  820. WHERE b.my_chart_classify_id=?`
  821. err = to.Raw(sql, myChartClassifyId).Find(&fromMyChartList).Error
  822. if err != nil {
  823. return
  824. }
  825. //新增我的图库分类
  826. newMyChartClassify = &MyChartClassify{
  827. MyChartClassifyName: newMyChartClassifyName,
  828. AdminId: adminId,
  829. CreateTime: time.Now(),
  830. ModifyTime: time.Now(),
  831. Sort: minSort - 1,
  832. }
  833. //newMyChartClassifyId, err := to.Insert(newMyChartClassify)
  834. //if err != nil {
  835. // return
  836. //}
  837. err = to.Create(newMyChartClassify).Error
  838. newMappingList := make([]*MyChartClassifyMapping, 0)
  839. //将图表加入我的图库
  840. for _, v := range fromMyChartList {
  841. tmpMyChart := &MyChart{
  842. ChartInfoId: v.ChartInfoId,
  843. AdminId: adminId,
  844. Source: v.Source,
  845. CreateTime: time.Now(),
  846. ModifyTime: time.Now(),
  847. }
  848. //tmpMyChartId, tmpErr := to.Insert(tmpMyChart)
  849. //if tmpErr != nil {
  850. // err = tmpErr
  851. //}
  852. //tmpMyChart.MyChartId = int(tmpMyChartId)
  853. tmpErr := to.Create(tmpMyChart)
  854. if tmpErr != nil {
  855. err = tmpErr.Error
  856. }
  857. // 往自己的分类里面新增图表关系
  858. //原始图表的排序
  859. tmpSort, ok := fromMyChartSortMap[v.MyChartId]
  860. if !ok {
  861. tmpSort = 0
  862. }
  863. tmp := &MyChartClassifyMapping{
  864. AdminId: adminId,
  865. MyChartId: tmpMyChart.MyChartId,
  866. //MyChartId: int(tmpMyChartId),
  867. //MyChartClassifyId: int(newMyChartClassifyId),
  868. MyChartClassifyId: newMyChartClassify.MyChartClassifyId,
  869. CreateTime: time.Now(),
  870. ModifyTime: time.Now(),
  871. Sort: tmpSort,
  872. }
  873. newMappingList = append(newMappingList, tmp)
  874. }
  875. if len(newMappingList) > 0 {
  876. //_, err = to.InsertMulti(len(newMappingList), newMappingList)
  877. err = to.CreateInBatches(newMappingList, utils.MultiAddNum).Error
  878. }
  879. return
  880. }
  881. // ModifyChartClassifyCompanyPublicReq 修改公共图库分类是否用户可见
  882. type ModifyChartClassifyCompanyPublicReq struct {
  883. MyChartClassifyId int `description:"分类id"`
  884. IsCompanyPublic int `description:"是否用户可见 0-否 1-是"`
  885. }
  886. // GetCompanyPublicClassifyList 获取用户可见的分类列表
  887. func GetCompanyPublicClassifyList(condition string, pars []interface{}) (item []*MyChartClassify, err error) {
  888. //o := orm.NewOrmUsingDB("data")
  889. //sql := ` SELECT * FROM my_chart_classify WHERE 1 = 1 AND is_public = 1 AND is_company_public = 1 `
  890. //sql += condition
  891. //sql += " ORDER BY public_time asc"
  892. //_, err = o.Raw(sql, pars).QueryRows(&item)
  893. sql := ` SELECT * FROM my_chart_classify WHERE 1 = 1 AND is_public = 1 AND is_company_public = 1 `
  894. sql += condition
  895. sql += " ORDER BY public_time asc"
  896. err = global.DmSQL["data"].Raw(sql, pars...).Find(&item).Error
  897. return
  898. }
  899. // GetMyChartClassifyList 获取我的图表关联的分类列表数据
  900. func GetMyChartClassifyList(myChartClassifyId int) (mappingList []*MyChartClassifyMapping, err error) {
  901. //o := orm.NewOrmUsingDB("data")
  902. ////o.Begin()
  903. ////
  904. ////defer func() {
  905. //// if err != nil {
  906. //// o.Rollback()
  907. //// } else {
  908. //// o.Commit()
  909. //// }
  910. ////}()
  911. //sql := `SELECT * FROM my_chart_classify_mapping WHERE my_chart_id=?`
  912. //_, err = o.Raw(sql, myChartClassifyId).QueryRows(&mappingList)
  913. sql := `SELECT * FROM my_chart_classify_mapping WHERE my_chart_id=?`
  914. err = global.DmSQL["data"].Raw(sql, myChartClassifyId).Find(&mappingList).Error
  915. return
  916. }
  917. // AddMyChartToMyChartClassify 添加我的图表至我的分类
  918. func AddMyChartToMyChartClassify(adminId, myChartId int, myChartClassifyId []int) (err error) {
  919. //o := orm.NewOrmUsingDB("data")
  920. //o.Begin()
  921. //defer func() {
  922. // if err != nil {
  923. // o.Rollback()
  924. // } else {
  925. // o.Commit()
  926. // }
  927. //}()
  928. //需要添加的分类id 集合map
  929. classifyIdMap := make(map[int]int)
  930. for _, v := range myChartClassifyId {
  931. classifyIdMap[v] = v
  932. }
  933. //查询已存在系统中的图表分类集合
  934. mappingList := make([]*MyChartClassifyMapping, 0)
  935. //sql := `SELECT * FROM my_chart_classify_mapping WHERE admin_id=? AND my_chart_id=?`
  936. //_, err = o.Raw(sql, adminId, myChartId).QueryRows(&mappingList)
  937. //if err != nil {
  938. // return
  939. //}
  940. sql := `SELECT * FROM my_chart_classify_mapping WHERE admin_id=? AND my_chart_id=?`
  941. err = global.DmSQL["data"].Raw(sql, adminId, myChartId).Find(&mappingList).Error
  942. if err != nil {
  943. return
  944. }
  945. //遍历已存在系统中的图表分类集合,如果和需要添加的分类重复了,那么移除需要添加分类集合map里面的数据
  946. for _, v := range mappingList {
  947. if _, ok := classifyIdMap[v.MyChartClassifyId]; ok {
  948. delete(classifyIdMap, v.MyChartClassifyId)
  949. }
  950. }
  951. step := float64(65536)
  952. for _, v := range myChartClassifyId {
  953. var count int
  954. //sql := ` SELECT COUNT(1) AS count FROM my_chart_classify_mapping WHERE my_chart_id=? AND my_chart_classify_id=? `
  955. //err = o.Raw(sql, myChartId, v).QueryRow(&count)
  956. //if err != nil {
  957. // return
  958. //}
  959. sql := ` SELECT COUNT(1) AS count FROM my_chart_classify_mapping WHERE my_chart_id=? AND my_chart_classify_id=? `
  960. err = global.DmSQL["data"].Raw(sql, myChartId, v).Scan(&count).Error
  961. if err != nil {
  962. return
  963. }
  964. if count <= 0 {
  965. total, err := GetMyChartMaxSort(adminId, v)
  966. if err != nil {
  967. return err
  968. }
  969. sort := (float64(total) + 1) * step
  970. //sql = ` INSERT INTO my_chart_classify_mapping (
  971. // admin_id,
  972. // my_chart_id,
  973. // my_chart_classify_id,
  974. // create_time,
  975. // modify_time,
  976. // sort )VALUES (?,?,?,NOW(),NOW(),?) `
  977. //_, err = o.Raw(sql, adminId, myChartId, v, sort).Exec()
  978. //if err != nil {
  979. // return err
  980. //}
  981. sql = ` INSERT INTO my_chart_classify_mapping (
  982. admin_id,
  983. my_chart_id,
  984. my_chart_classify_id,
  985. create_time,
  986. modify_time,
  987. sort )VALUES (?,?,?,NOW(),NOW(),?) `
  988. err = global.DmSQL["data"].Exec(sql, adminId, myChartId, v, sort).Error
  989. if err != nil {
  990. return err
  991. }
  992. }
  993. }
  994. return
  995. }
  996. // GetMyChartListGroupByCharyInfoIdAndAdminIdByCondition 获取MY ETA 图表数据,根据图表id和操作员id
  997. func GetMyChartListGroupByCharyInfoIdAndAdminIdByCondition(condition string, pars []interface{}) (item []*MyChartList, err error) {
  998. //o := orm.NewOrmUsingDB("data")
  999. //sql := ` SELECT a.admin_id,a.my_chart_id,c.sort,b.*,GROUP_CONCAT(DISTINCT d.my_chart_classify_name) AS my_chart_classify_name,GROUP_CONCAT(DISTINCT d.my_chart_classify_id) AS my_chart_classify_id
  1000. // FROM my_chart AS a
  1001. // INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id
  1002. // INNER JOIN my_chart_classify_mapping AS c ON a.my_chart_id=c.my_chart_id
  1003. // INNER JOIN my_chart_classify AS d ON c.my_chart_classify_id=d.my_chart_classify_id
  1004. // WHERE 1=1 `
  1005. //
  1006. //if condition != "" {
  1007. // sql += condition
  1008. //}
  1009. //sql += " GROUP BY a.chart_info_id,a.admin_id ORDER BY c.sort DESC "
  1010. //_, err = o.Raw(sql, pars).QueryRows(&item)
  1011. //sql := ` SELECT a.admin_id,a.my_chart_id,c.sort,b.*,LISTAGG(DISTINCT d.my_chart_classify_name, ',') WITHIN GROUP (ORDER BY d.my_chart_classify_name) AS my_chart_classify_name,LISTAGG(d.my_chart_classify_id, ',') WITHIN GROUP (ORDER BY d.my_chart_classify_id) AS my_chart_classify_id
  1012. // FROM my_chart AS a
  1013. // INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id
  1014. // INNER JOIN my_chart_classify_mapping AS c ON a.my_chart_id=c.my_chart_id
  1015. // INNER JOIN my_chart_classify AS d ON c.my_chart_classify_id=d.my_chart_classify_id
  1016. // WHERE 1=1 `
  1017. //
  1018. //if condition != "" {
  1019. // sql += condition
  1020. //}
  1021. //sql += " GROUP BY a.chart_info_id,a.admin_id ORDER BY c.sort DESC "
  1022. sql := `SELECT a.admin_id,a.my_chart_id,c.sort,b.chart_info_id, b.chart_name, b.unique_code, b.chart_classify_id, b.sys_user_id, b.sys_user_real_name, b.create_time, b.modify_time, b.date_type, b.start_date, b.end_date, b.is_set_name, b.edb_info_ids, b.chart_type, b.calendar, b.season_start_date, b.season_end_date, b.chart_image, b.sort, b.edb_end_date, b.x_min, b.x_max, b.left_min, b.left_max, b.right_min, b.right_max, b.right2_min, b.right2_max, b.min_max_save, b.chart_name_en, b.disabled, b.bar_config, b.source, b.extra_config, b.season_extra_config, b.start_year, b.chart_theme_id, b.sources_from, b.instructions, b.markers_lines, b.markers_areas, b.unit, b.unit_en, b.is_join_permission, b.forum_chart_info_id, b.chart_alias, b.date_type_num,LISTAGG(DISTINCT d.my_chart_classify_name, ',') WITHIN GROUP (ORDER BY d.my_chart_classify_name) AS my_chart_classify_name,LISTAGG(d.my_chart_classify_id, ',') WITHIN GROUP (ORDER BY d.my_chart_classify_id) AS my_chart_classify_id
  1023. FROM "eta_index".my_chart AS a
  1024. INNER JOIN "eta_index".chart_info AS b ON a.chart_info_id=b.chart_info_id
  1025. INNER JOIN "eta_index".my_chart_classify_mapping AS c ON a.my_chart_id=c.my_chart_id
  1026. INNER JOIN "eta_index".my_chart_classify AS d ON c.my_chart_classify_id=d.my_chart_classify_id
  1027. WHERE 1=1 `
  1028. if condition != "" {
  1029. sql += condition
  1030. }
  1031. sql += " GROUP BY a.chart_info_id,a.admin_id,c.sort,a.my_chart_id,b.chart_info_id, b.chart_name, b.unique_code, b.chart_classify_id, b.sys_user_id, b.sys_user_real_name, b.create_time, b.modify_time, b.date_type, b.start_date, b.end_date, b.is_set_name, b.edb_info_ids, b.chart_type, b.calendar, b.season_start_date, b.season_end_date, b.chart_image, b.sort, b.edb_end_date, b.x_min, b.x_max, b.left_min, b.left_max, b.right_min, b.right_max, b.right2_min, b.right2_max, b.min_max_save, b.chart_name_en, b.disabled, b.bar_config, b.source, b.extra_config, b.season_extra_config, b.start_year, b.chart_theme_id, b.sources_from, b.instructions, b.markers_lines, b.markers_areas, b.unit, b.unit_en, b.is_join_permission, b.forum_chart_info_id, b.chart_alias, b.date_type_num" +
  1032. " ORDER BY c.sort DESC "
  1033. err = global.DmSQL["data"].Raw(sql, pars...).Find(&item).Error
  1034. return
  1035. }
  1036. func GetRelationChartListByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*ChartInfoView, err error) {
  1037. //o := orm.NewOrmUsingDB("data")
  1038. //sql := ` SELECT a.* FROM chart_info AS a
  1039. //WHERE 1=1 `
  1040. //if condition != "" {
  1041. // sql += condition
  1042. //}
  1043. ////sql += " ORDER BY sort ASC,chart_info_id DESC LIMIT ?,? "
  1044. //sql += " ORDER BY a.create_time DESC LIMIT ?,? "
  1045. //_, err = o.Raw(sql, pars...).QueryRows(&item)
  1046. sql := ` SELECT a.* FROM chart_info AS a
  1047. WHERE 1=1 `
  1048. if condition != "" {
  1049. sql += condition
  1050. }
  1051. //sql += " ORDER BY sort ASC,chart_info_id DESC LIMIT ?,? "
  1052. sql += " ORDER BY a.create_time DESC LIMIT ?,? "
  1053. pars = append(pars, startSize)
  1054. pars = append(pars, pageSize)
  1055. err = global.DmSQL["data"].Raw(sql, pars...).Find(&item).Error
  1056. return
  1057. }
  1058. func GetRelationChartListCountByCondition(condition string, pars []interface{}) (count int, err error) {
  1059. //o := orm.NewOrmUsingDB("data")
  1060. //sql := ` SELECT COUNT(1) AS count FROM chart_info AS a
  1061. //WHERE 1=1 `
  1062. //if condition != "" {
  1063. // sql += condition
  1064. //}
  1065. //err = o.Raw(sql, pars).QueryRow(&count)
  1066. sql := ` SELECT COUNT(1) AS count FROM chart_info AS a
  1067. WHERE 1=1 `
  1068. if condition != "" {
  1069. sql += condition
  1070. }
  1071. err = global.DmSQL["data"].Raw(sql, pars...).Scan(&count).Error
  1072. return
  1073. }
  1074. // GetChartInfoByIdList 根据图表id集合 获取 图表列表
  1075. func GetChartInfoByIdList(chartInfoIdList []int) (items []*ChartInfo, err error) {
  1076. num := len(chartInfoIdList)
  1077. if num <= 0 {
  1078. return
  1079. }
  1080. //o := orm.NewOrmUsingDB("data")
  1081. //sql := ` SELECT * FROM chart_info WHERE chart_info_id in (` + utils.GetOrmInReplace(num) + `) `
  1082. //_, err = o.Raw(sql, chartInfoIdList).QueryRows(&items)
  1083. sql := ` SELECT * FROM chart_info WHERE chart_info_id in (` + utils.GetOrmInReplace(num) + `) `
  1084. err = global.DmSQL["data"].Raw(sql, chartInfoIdList).Find(&items).Error
  1085. return
  1086. }
  1087. func GetChartInfoViewByIdList(chartInfoIdList []int) (items []*ChartInfoView, err error) {
  1088. num := len(chartInfoIdList)
  1089. if num <= 0 {
  1090. return
  1091. }
  1092. //o := orm.NewOrmUsingDB("data")
  1093. //sql := ` SELECT * FROM chart_info WHERE chart_info_id in (` + utils.GetOrmInReplace(num) + `) `
  1094. //_, err = o.Raw(sql, chartInfoIdList).QueryRows(&items)
  1095. sql := ` SELECT * FROM chart_info WHERE chart_info_id in (` + utils.GetOrmInReplace(num) + `) `
  1096. err = global.DmSQL["data"].Raw(sql, chartInfoIdList).Find(&items).Error
  1097. return
  1098. }
  1099. // GetMyChartClassifyByClassifyId 主键获取分类
  1100. func GetMyChartClassifyByClassifyId(classifyId int) (item *MyChartClassify, err error) {
  1101. //o := orm.NewOrmUsingDB("data")
  1102. //sql := ` SELECT * FROM my_chart_classify WHERE my_chart_classify_id = ? `
  1103. //err = o.Raw(sql, classifyId).QueryRow(&item)
  1104. sql := ` SELECT * FROM my_chart_classify WHERE my_chart_classify_id = ? `
  1105. err = global.DmSQL["data"].Raw(sql, classifyId).First(&item).Error
  1106. return
  1107. }
  1108. // MyChartClassifyItem 我的图表分类信息
  1109. type MyChartClassifyItem struct {
  1110. MyChartClassifyId int `description:"分类ID"`
  1111. MyChartClassifyName string `description:"分类名称"`
  1112. AdminId int `description:"创建人id"`
  1113. IsPublic int `description:"是否公共分类"`
  1114. IsCompanyPublic int `description:"是否为用户公共分类"`
  1115. ChartNum int `description:"分类下的图表数量"`
  1116. }
  1117. // FormatMyChartClassify2Item 格式化我的图表信息
  1118. func FormatMyChartClassify2Item(origin *MyChartClassify, chartNum int) (item *MyChartClassifyItem) {
  1119. if origin == nil {
  1120. return
  1121. }
  1122. item = new(MyChartClassifyItem)
  1123. item.MyChartClassifyId = origin.MyChartClassifyId
  1124. item.MyChartClassifyName = origin.MyChartClassifyName
  1125. item.AdminId = origin.AdminId
  1126. item.IsPublic = origin.IsPublic
  1127. item.IsCompanyPublic = origin.IsCompanyPublic
  1128. item.ChartNum = chartNum
  1129. return
  1130. }
  1131. // MyChartClassifyIdAndNum 我的图表-分类ID及图表数
  1132. type MyChartClassifyIdAndNum struct {
  1133. MyChartClassifyId int `description:"分类ID"`
  1134. ChartNum int `description:"分类下的图表数量"`
  1135. }
  1136. // GetMyChartClassifyIdAndNum 我的图表-获取分类ID及图表数
  1137. func GetMyChartClassifyIdAndNum(cond string, pars []interface{}) (items []*MyChartClassifyIdAndNum, err error) {
  1138. //o := orm.NewOrmUsingDB("data")
  1139. //sql := fmt.Sprintf(`SELECT
  1140. // a.my_chart_classify_id,
  1141. // COUNT(1) AS chart_num
  1142. // FROM
  1143. // my_chart_classify AS a
  1144. // INNER JOIN my_chart_classify_mapping AS b ON a.my_chart_classify_id = b.my_chart_classify_id
  1145. // INNER JOIN my_chart AS c ON b.my_chart_id = c.my_chart_id
  1146. // INNER JOIN chart_info AS d ON c.chart_info_id = d.chart_info_id
  1147. // WHERE
  1148. // 1 = 1 %s
  1149. // GROUP BY
  1150. // a.my_chart_classify_id`, cond)
  1151. //_, err = o.Raw(sql, pars).QueryRows(&items)
  1152. sql := fmt.Sprintf(`SELECT
  1153. a.my_chart_classify_id,
  1154. COUNT(1) AS chart_num
  1155. FROM
  1156. my_chart_classify AS a
  1157. INNER JOIN my_chart_classify_mapping AS b ON a.my_chart_classify_id = b.my_chart_classify_id
  1158. INNER JOIN my_chart AS c ON b.my_chart_id = c.my_chart_id
  1159. INNER JOIN chart_info AS d ON c.chart_info_id = d.chart_info_id
  1160. WHERE
  1161. 1 = 1 %s
  1162. GROUP BY
  1163. a.my_chart_classify_id`, cond)
  1164. err = global.DmSQL["data"].Raw(sql, pars...).Find(&items).Error
  1165. return
  1166. }