chart_framework.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. package data_manage
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/utils"
  5. "fmt"
  6. "strings"
  7. "time"
  8. )
  9. // ChartFramework 图库框架表
  10. type ChartFramework struct {
  11. ChartFrameworkId int `orm:"column(chart_framework_id);pk" gorm:"primaryKey" `
  12. FrameworkCode string `description:"框架唯一编码"`
  13. FrameworkName string `description:"框架名称"`
  14. FrameworkImg string `description:"框架图片"`
  15. FrameworkContent string `description:"框架内容"`
  16. IsPublic int `description:"是否公开:0-私有;1-公开"`
  17. PublicTime time.Time `description:"公开时间"`
  18. Sort int `description:"排序"`
  19. AdminId int `description:"创建人ID"`
  20. AdminName string `description:"创建人姓名"`
  21. CreateTime time.Time `description:"创建时间"`
  22. ModifyTime time.Time `description:"更新时间"`
  23. }
  24. func (m *ChartFramework) TableName() string {
  25. return "chart_framework"
  26. }
  27. func (m *ChartFramework) PrimaryId() string {
  28. return ChartFrameworkColumns.ChartFrameworkId
  29. }
  30. var ChartFrameworkColumns = struct {
  31. ChartFrameworkId string
  32. FrameworkCode string
  33. FrameworkName string
  34. FrameworkImg string
  35. FrameworkContent string
  36. IsPublic string
  37. PublicTime string
  38. Sort string
  39. AdminId string
  40. AdminName string
  41. CreateTime string
  42. ModifyTime string
  43. }{
  44. ChartFrameworkId: "chart_framework_id",
  45. FrameworkCode: "framework_code",
  46. FrameworkName: "framework_name",
  47. FrameworkImg: "framework_img",
  48. FrameworkContent: "framework_content",
  49. IsPublic: "is_public",
  50. PublicTime: "public_time",
  51. Sort: "sort",
  52. AdminId: "admin_id",
  53. AdminName: "admin_name",
  54. CreateTime: "create_time",
  55. ModifyTime: "modify_time",
  56. }
  57. func (m *ChartFramework) Create() (err error) {
  58. err = global.DmSQL["data"].Create(m).Error
  59. return
  60. }
  61. func (m *ChartFramework) CreateMulti(items []*ChartFramework) (err error) {
  62. if len(items) == 0 {
  63. return
  64. }
  65. err = global.DmSQL["data"].CreateInBatches(items, utils.MultiAddNum).Error
  66. return
  67. }
  68. func (m *ChartFramework) Update(cols []string) (err error) {
  69. o := global.DmSQL["data"]
  70. err = o.Select(cols).Updates(m).Error
  71. return
  72. }
  73. func (m *ChartFramework) Del() (err error) {
  74. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
  75. err = global.DmSQL["data"].Exec(sql, m.ChartFrameworkId).Error
  76. return
  77. }
  78. func (m *ChartFramework) GetItemById(id int) (item *ChartFramework, err error) {
  79. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
  80. err = global.DmSQL["data"].Raw(sql, id).First(&item).Error
  81. return
  82. }
  83. func (m *ChartFramework) GetItemByCondition(condition string, pars []interface{}) (item *ChartFramework, err error) {
  84. sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
  85. err = global.DmSQL["data"].Raw(sql, pars).First(&item).Error
  86. return
  87. }
  88. func (m *ChartFramework) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  89. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  90. err = global.DmSQL["data"].Raw(sql, pars).Scan(&count).Error
  91. return
  92. }
  93. func (m *ChartFramework) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*ChartFramework, err error) {
  94. o := global.DmSQL["data"]
  95. fields := strings.Join(fieldArr, ",")
  96. if len(fieldArr) == 0 {
  97. fields = `*`
  98. }
  99. order := `ORDER BY create_time DESC`
  100. if orderRule != "" {
  101. order = ` ORDER BY ` + orderRule
  102. }
  103. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  104. err = o.Raw(sql, pars).Scan(&items).Error
  105. return
  106. }
  107. func (m *ChartFramework) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*ChartFramework, err error) {
  108. o := global.DmSQL["data"]
  109. fields := strings.Join(fieldArr, ",")
  110. if len(fieldArr) == 0 {
  111. fields = `*`
  112. }
  113. order := `ORDER BY create_time DESC`
  114. if orderRule != "" {
  115. order = ` ORDER BY ` + orderRule
  116. }
  117. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
  118. err = o.Raw(sql, pars, startSize, pageSize).Scan(&items).Error
  119. return
  120. }
  121. func (m *ChartFramework) CreateFrameworkAndNodes(item *ChartFramework, nodes []*ChartFrameworkNode) (err error) {
  122. tx := global.DmSQL["data"].Begin()
  123. defer func() {
  124. if err != nil {
  125. _ = tx.Rollback()
  126. return
  127. }
  128. _ = tx.Commit()
  129. }()
  130. e := tx.Create(item).Error
  131. if e != nil {
  132. err = fmt.Errorf("insert framework err: %s", e.Error())
  133. return
  134. }
  135. if len(nodes) > 0 {
  136. for _, n := range nodes {
  137. n.ChartFrameworkId = item.ChartFrameworkId
  138. }
  139. e = tx.CreateInBatches(nodes, utils.MultiAddNum).Error
  140. if e != nil {
  141. err = fmt.Errorf("insert multi nodes err: %s", e.Error())
  142. return
  143. }
  144. }
  145. return
  146. }
  147. func (m *ChartFramework) EditFrameworkAndNodes(item *ChartFramework, updateCols []string, nodes []*ChartFrameworkNode) (err error) {
  148. tx := global.DmSQL["data"].Begin()
  149. defer func() {
  150. if err != nil {
  151. _ = tx.Rollback()
  152. return
  153. }
  154. _ = tx.Commit()
  155. }()
  156. e := tx.Select(updateCols).Updates(item).Error
  157. if e != nil {
  158. err = fmt.Errorf("framework update err: %s", e.Error())
  159. return
  160. }
  161. sql := `DELETE FROM chart_framework_node WHERE chart_framework_id = ?`
  162. e = tx.Exec(sql, item.ChartFrameworkId).Error
  163. if e != nil {
  164. err = fmt.Errorf("clear nodes err: %s", e.Error())
  165. return
  166. }
  167. if len(nodes) > 0 {
  168. e = tx.CreateInBatches(nodes, utils.MultiAddNum).Error
  169. if e != nil {
  170. err = fmt.Errorf("insert multi nodes err: %s", e.Error())
  171. return
  172. }
  173. }
  174. return
  175. }
  176. func (m *ChartFramework) RemoveFrameworkAndNodes(frameworkId int) (err error) {
  177. tx := global.DmSQL["data"].Begin()
  178. defer func() {
  179. if err != nil {
  180. _ = tx.Rollback()
  181. return
  182. }
  183. _ = tx.Commit()
  184. }()
  185. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
  186. e := tx.Exec(sql, frameworkId).Error
  187. if e != nil {
  188. err = fmt.Errorf("delete framework err: %s", e.Error())
  189. return
  190. }
  191. sql = `DELETE FROM chart_framework_node WHERE chart_framework_id = ?`
  192. e = tx.Exec(sql, frameworkId).Error
  193. if e != nil {
  194. err = fmt.Errorf("clear nodes err: %s", e.Error())
  195. return
  196. }
  197. return
  198. }
  199. // ChartFrameworkAddReq 图库框架新增请求体
  200. type ChartFrameworkAddReq struct {
  201. FrameworkName string `description:"框架名称"`
  202. FrameworkImg string `description:"框架图片"`
  203. FrameworkContent string `description:"框架内容"`
  204. Nodes []ChartFrameworkNodeReq `description:"框架节点"`
  205. }
  206. // ChartFrameworkNodeReq 图库框架节点请求体
  207. type ChartFrameworkNodeReq struct {
  208. MyChartClassifyId int `description:"我的图表分类ID"`
  209. NodeId string `description:"节点ID"`
  210. NodeName string `description:"节点名称"`
  211. }
  212. // ChartFrameworkEditReq 图库框架编辑请求体
  213. type ChartFrameworkEditReq struct {
  214. ChartFrameworkId int `description:"图库框架ID"`
  215. ChartFrameworkAddReq
  216. }
  217. // ChartFrameworkRemoveReq 图库框架编辑请求体
  218. type ChartFrameworkRemoveReq struct {
  219. ChartFrameworkId int `description:"图库框架ID"`
  220. }
  221. // ChartFrameworkRenameReq 图库框架重命名请求体
  222. type ChartFrameworkRenameReq struct {
  223. ChartFrameworkId int `description:"图库框架ID"`
  224. FrameworkName string `description:"框架名称"`
  225. }
  226. // ChartFrameworkEditPublicReq 图库框架编辑公开请求体
  227. type ChartFrameworkEditPublicReq struct {
  228. ChartFrameworkId int `description:"图库框架ID"`
  229. IsPublic int `description:"0-隐藏公开; 1-公开"`
  230. }
  231. // ChartFrameworkMoveReq 图库框架移动排序请求体
  232. type ChartFrameworkMoveReq struct {
  233. ChartFrameworkId int `description:"图库框架ID"`
  234. PrevChartFrameworkId int `description:"上一个框架ID"`
  235. NextChartFrameworkId int `description:"下一个框架ID"`
  236. }
  237. // UpdateChartFrameworkSort 更新我的图库框架排序
  238. func UpdateChartFrameworkSort(adminId, frameworkId, current int, updates string) (err error) {
  239. o := global.DmSQL["data"]
  240. sql := fmt.Sprintf(`UPDATE chart_framework SET sort = %s WHERE admin_id = ? and sort > ?`, updates)
  241. if frameworkId > 0 {
  242. sql += ` OR (chart_framework_id > ` + fmt.Sprint(frameworkId) + ` AND sort = ` + fmt.Sprint(current) + `)`
  243. }
  244. err = o.Exec(sql, adminId, current).Error
  245. return
  246. }
  247. // GetFirstChartFramework 获取我的图库框架排首位的数据
  248. func GetFirstChartFramework(adminId int) (item *ChartFramework, err error) {
  249. o := global.DmSQL["data"]
  250. sql := `SELECT * FROM chart_framework WHERE admin_id = ? ORDER BY sort ASC,chart_framework_id ASC LIMIT 1`
  251. err = o.Raw(sql, adminId).First(&item).Error
  252. return
  253. }
  254. // ChartFrameworkItem 图库框架表信息
  255. type ChartFrameworkItem struct {
  256. ChartFrameworkId int `description:"框架ID"`
  257. FrameworkCode string `description:"框架唯一编码"`
  258. FrameworkName string `description:"框架名称"`
  259. FrameworkImg string `description:"框架图片"`
  260. FrameworkContent string `description:"框架内容"`
  261. IsPublic int `description:"是否公开:0-私有;1-公开"`
  262. PublicTime string `description:"公开时间"`
  263. Sort int `description:"排序"`
  264. AdminId int `description:"创建人ID"`
  265. AdminName string `description:"创建人姓名"`
  266. CreateTime string `description:"创建时间"`
  267. ModifyTime string `description:"更新时间"`
  268. Nodes []*ChartFrameworkNodeItem `description:"框架节点"`
  269. }
  270. // FormatChartFramework2Item 格式化框架信息
  271. func FormatChartFramework2Item(origin *ChartFramework, nodes []*ChartFrameworkNodeItem) (item *ChartFrameworkItem) {
  272. if origin == nil {
  273. return
  274. }
  275. item = new(ChartFrameworkItem)
  276. item.ChartFrameworkId = origin.ChartFrameworkId
  277. item.FrameworkCode = origin.FrameworkCode
  278. item.FrameworkName = origin.FrameworkName
  279. item.FrameworkImg = origin.FrameworkImg
  280. item.FrameworkContent = origin.FrameworkContent
  281. item.IsPublic = origin.IsPublic
  282. item.PublicTime = utils.TimeTransferString(utils.FormatDateTime, origin.PublicTime)
  283. item.Sort = origin.Sort
  284. item.AdminId = origin.AdminId
  285. item.AdminName = origin.AdminName
  286. item.CreateTime = utils.TimeTransferString(utils.FormatDateTime, origin.CreateTime)
  287. item.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, origin.ModifyTime)
  288. item.Nodes = nodes
  289. return
  290. }
  291. // ChartFrameworkPublicMenuItem 公开框架目录
  292. type ChartFrameworkPublicMenuItem struct {
  293. AdminId int `description:"创建人ID"`
  294. MenuName string `description:"目录名称"`
  295. Frameworks []*ChartFrameworkItem `description:"框架列表"`
  296. }