my_chart.go 37 KB

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