edb_collect_classify.go 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. package data_manage
  2. import (
  3. "encoding/json"
  4. "eta_gn/eta_api/controllers"
  5. "eta_gn/eta_api/models"
  6. "eta_gn/eta_api/models/data_manage"
  7. "eta_gn/eta_api/utils"
  8. "fmt"
  9. "sort"
  10. "strconv"
  11. "strings"
  12. "time"
  13. )
  14. // EdbCollectClassifyController 指标收藏分类
  15. type EdbCollectClassifyController struct {
  16. controllers.BaseAuthController
  17. }
  18. // Add
  19. // @Title 新增分类
  20. // @Description 新增分类
  21. // @Param request body data_manage.EdbCollectClassifyAddReq true "type json string"
  22. // @Success Ret=200 保存成功
  23. // @router /edb_collect/classify/add [post]
  24. func (this *EdbCollectClassifyController) Add() {
  25. br := new(models.BaseResponse).Init()
  26. defer func() {
  27. if br.ErrMsg == "" {
  28. br.IsSendEmail = false
  29. }
  30. this.Data["json"] = br
  31. this.ServeJSON()
  32. }()
  33. sysUser := this.SysUser
  34. if sysUser == nil {
  35. br.Msg = "请登录"
  36. br.ErrMsg = "请登录,SysUser Is Empty"
  37. br.Ret = 408
  38. return
  39. }
  40. var req data_manage.EdbCollectClassifyAddReq
  41. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  42. br.Msg = "参数解析异常"
  43. br.ErrMsg = fmt.Sprintf("参数解析异常: %v", e)
  44. return
  45. }
  46. req.ClassifyName = strings.TrimSpace(req.ClassifyName)
  47. if req.ClassifyName == "" {
  48. br.Msg = "请输入名称"
  49. return
  50. }
  51. classifyOb := new(data_manage.EdbCollectClassify)
  52. // 校验分类名称
  53. //{
  54. // cond := fmt.Sprintf(" AND %s = ? AND %s = ?", classifyOb.Cols().ParentId, classifyOb.Cols().ClassifyName)
  55. // pars := make([]interface{}, 0)
  56. // pars = append(pars, req.ParentId, req.ClassifyName)
  57. // count, e := classifyOb.GetCountByCondition(cond, pars)
  58. // if e != nil {
  59. // br.Msg = "操作失败"
  60. // br.ErrMsg = fmt.Sprintf("获取分类名称重复数失败, %v", e)
  61. // return
  62. // }
  63. // if count > 0 {
  64. // br.Msg = "分类名称已存在"
  65. // return
  66. // }
  67. //}
  68. // 层级路径
  69. var levelPath string
  70. var rootId int
  71. if req.ParentId > 0 {
  72. parent, e := classifyOb.GetItemById(req.ParentId)
  73. if e != nil {
  74. br.Msg = "上级分类有误"
  75. br.ErrMsg = fmt.Sprintf("获取上级分类失败, %v", e)
  76. return
  77. }
  78. levelPath = parent.LevelPath
  79. rootId = parent.RootId
  80. }
  81. sortMax, e := classifyOb.GetSortMax(req.ParentId)
  82. if e != nil {
  83. br.Msg = "操作失败"
  84. br.ErrMsg = fmt.Sprintf("获取分类最大排序失败, %v", e)
  85. return
  86. }
  87. timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
  88. classifyOb.ParentId = req.ParentId
  89. classifyOb.ClassifyName = req.ClassifyName
  90. classifyOb.Level = req.Level + 1
  91. classifyOb.Sort = sortMax + 1
  92. classifyOb.SysUserId = sysUser.AdminId
  93. classifyOb.SysUserRealName = sysUser.RealName
  94. classifyOb.UniqueCode = utils.MD5(classifyOb.TableName() + "_" + timestamp)
  95. classifyOb.CreateTime = time.Now().Local()
  96. classifyOb.ModifyTime = time.Now().Local()
  97. if e = classifyOb.Create(); e != nil {
  98. br.Msg = "操作失败"
  99. br.ErrMsg = fmt.Sprintf("新增分类失败, %v", e)
  100. return
  101. }
  102. if req.ParentId > 0 {
  103. classifyOb.LevelPath = fmt.Sprintf("%s,%d", levelPath, classifyOb.EdbCollectClassifyId)
  104. classifyOb.RootId = rootId
  105. } else {
  106. classifyOb.LevelPath = fmt.Sprint(classifyOb.EdbCollectClassifyId)
  107. classifyOb.RootId = classifyOb.EdbCollectClassifyId
  108. }
  109. if e = classifyOb.Update([]string{classifyOb.Cols().LevelPath, classifyOb.Cols().RootId}); e != nil {
  110. br.Msg = "操作失败"
  111. br.ErrMsg = fmt.Sprintf("更新分类失败, %v", e)
  112. return
  113. }
  114. br.Data = classifyOb.Format2Item()
  115. br.Ret = 200
  116. br.Success = true
  117. br.Msg = "操作成功"
  118. }
  119. // Edit
  120. // @Title 编辑分类
  121. // @Description 编辑分类
  122. // @Param request body data_manage.EdbCollectClassifyEditReq true "type json string"
  123. // @Success Ret=200 保存成功
  124. // @router /edb_collect/classify/edit [post]
  125. func (this *EdbCollectClassifyController) Edit() {
  126. br := new(models.BaseResponse).Init()
  127. defer func() {
  128. if br.ErrMsg == "" {
  129. br.IsSendEmail = false
  130. }
  131. this.Data["json"] = br
  132. this.ServeJSON()
  133. }()
  134. sysUser := this.SysUser
  135. if sysUser == nil {
  136. br.Msg = "请登录"
  137. br.ErrMsg = "请登录,SysUser Is Empty"
  138. br.Ret = 408
  139. return
  140. }
  141. var req data_manage.EdbCollectClassifyEditReq
  142. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  143. br.Msg = "参数解析异常"
  144. br.ErrMsg = fmt.Sprintf("参数解析异常: %v", e)
  145. return
  146. }
  147. if req.ClassifyId < 0 {
  148. br.Msg = "请选择分类"
  149. return
  150. }
  151. req.ClassifyName = strings.TrimSpace(req.ClassifyName)
  152. if req.ClassifyName == "" {
  153. br.Msg = "请输入分类名称"
  154. return
  155. }
  156. classifyOb := new(data_manage.EdbCollectClassify)
  157. classifyItem, e := classifyOb.GetItemById(req.ClassifyId)
  158. if e != nil {
  159. if utils.IsErrNoRow(e) {
  160. br.Msg = "分类不存在, 请刷新页面"
  161. return
  162. }
  163. br.Msg = "操作失败"
  164. br.ErrMsg = fmt.Sprintf("获取分类失败, %v", e)
  165. return
  166. }
  167. // 校验分类名称
  168. //{
  169. // cond := fmt.Sprintf(" AND %s <> ? AND %s = ?", classifyOb.Cols().PrimaryId, classifyOb.Cols().ClassifyName)
  170. // pars := make([]interface{}, 0)
  171. // pars = append(pars, req.ClassifyId, req.ClassifyName)
  172. // count, e := classifyOb.GetCountByCondition(cond, pars)
  173. // if e != nil {
  174. // br.Msg = "操作失败"
  175. // br.ErrMsg = fmt.Sprintf("获取分类名称重复数失败, %v", e)
  176. // return
  177. // }
  178. // if count > 0 {
  179. // br.Msg = "分类名称已存在"
  180. // return
  181. // }
  182. //}
  183. classifyItem.ClassifyName = req.ClassifyName
  184. classifyItem.ModifyTime = time.Now().Local()
  185. updateCols := []string{classifyOb.Cols().ClassifyName, classifyOb.Cols().ModifyTime}
  186. if e = classifyItem.Update(updateCols); e != nil {
  187. br.Msg = "操作失败"
  188. br.ErrMsg = fmt.Sprintf("更新分类失败, %v", e)
  189. return
  190. }
  191. br.Data = classifyItem.Format2Item()
  192. br.Ret = 200
  193. br.Success = true
  194. br.Msg = "操作成功"
  195. }
  196. // List
  197. // @Title 分类列表-含指标
  198. // @Description 分类列表-含指标
  199. // @Param ParentId query int false "父级ID"
  200. // @Success 200 {object} data_manage.EdbCollectClassifyListItem
  201. // @router /edb_collect/classify/list [get]
  202. func (this *EdbCollectClassifyController) List() {
  203. br := new(models.BaseResponse).Init()
  204. defer func() {
  205. if br.ErrMsg == "" {
  206. br.IsSendEmail = false
  207. }
  208. this.Data["json"] = br
  209. this.ServeJSON()
  210. }()
  211. sysUser := this.SysUser
  212. if sysUser == nil {
  213. br.Msg = "请登录"
  214. br.ErrMsg = "请登录,SysUser Is Empty"
  215. br.Ret = 408
  216. return
  217. }
  218. parentId, _ := this.GetInt("ParentId")
  219. resp := make([]*data_manage.EdbCollectClassifyListItem, 0)
  220. // 查询分类
  221. classifyOb := new(data_manage.EdbCollectClassify)
  222. {
  223. cond := fmt.Sprintf(" AND %s = ? AND %s = ?", classifyOb.Cols().ParentId, classifyOb.Cols().SysUserId)
  224. pars := make([]interface{}, 0)
  225. pars = append(pars, parentId, sysUser.AdminId)
  226. list, e := classifyOb.GetItemsByCondition(cond, pars, []string{}, fmt.Sprintf("%s ASC", classifyOb.Cols().Sort))
  227. if e != nil {
  228. br.Msg = "获取失败"
  229. br.ErrMsg = fmt.Sprintf("获取子分类失败, %v", e)
  230. return
  231. }
  232. for _, v := range list {
  233. resp = append(resp, &data_manage.EdbCollectClassifyListItem{
  234. NodeType: 1,
  235. ClassifyId: v.EdbCollectClassifyId,
  236. ClassifyName: v.ClassifyName,
  237. ParentId: v.ParentId,
  238. Level: v.Level,
  239. Sort: v.Sort,
  240. UniqueCode: v.UniqueCode,
  241. })
  242. }
  243. }
  244. // 查询分类下收藏的指标
  245. {
  246. list, e := data_manage.GetCollectEdbInfoByClassifyId(parentId)
  247. if e != nil {
  248. br.Msg = "获取失败"
  249. br.ErrMsg = fmt.Sprintf("获取分类下指标失败, %v", e)
  250. return
  251. }
  252. for _, v := range list {
  253. resp = append(resp, &data_manage.EdbCollectClassifyListItem{
  254. NodeType: 2,
  255. EdbInfoId: v.EdbInfoId,
  256. EdbCode: v.EdbCode,
  257. EdbName: v.EdbName,
  258. ParentId: parentId,
  259. Sort: v.Sort,
  260. UniqueCode: v.UniqueCode,
  261. })
  262. }
  263. }
  264. sort.Slice(resp, func(i, j int) bool {
  265. return resp[i].Sort < resp[j].Sort
  266. })
  267. br.Data = resp
  268. br.Ret = 200
  269. br.Success = true
  270. br.Msg = "获取成功"
  271. }