my_chart.go 46 KB

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