classify.go 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/models"
  5. "eta/eta_api/models/report_approve"
  6. "eta/eta_api/services"
  7. "eta/eta_api/utils"
  8. "fmt"
  9. )
  10. // 分类
  11. type ClassifyController struct {
  12. BaseAuthController
  13. }
  14. // @Title 新增分类接口
  15. // @Description 新增分类
  16. // @Param request body models.ClassifyAddReq true "type json string"
  17. // @Success 200 新增成功
  18. // @router /add [post]
  19. func (this *ClassifyController) Add() {
  20. br := new(models.BaseResponse).Init()
  21. defer func() {
  22. this.Data["json"] = br
  23. this.ServeJSON()
  24. }()
  25. var req models.ClassifyAddReq
  26. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  27. if err != nil {
  28. br.Msg = "参数解析异常!"
  29. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  30. return
  31. }
  32. // 获取系统菜单, 如果没有对应的字段的特殊处理项, 则忽略必填
  33. /*menus, e := system.GetSysMenuItemsByCondition(` AND hidden = 0`, make([]interface{}, 0), []string{}, ``)
  34. if e != nil {
  35. br.Msg = "保存失败"
  36. br.ErrMsg = "获取菜单列表失败, Err: " + e.Error()
  37. return
  38. }
  39. menuMap := make(map[string]bool)
  40. for _, m := range menus {
  41. if m.ButtonCode != "" {
  42. menuMap[m.ButtonCode] = true
  43. }
  44. }*/
  45. if req.ClassifyName == "" {
  46. br.Msg = "分类名称不可为空"
  47. return
  48. }
  49. // 新增分类
  50. err, errMsg, isSentEmail := services.AddReportClassify(req.ClassifyName, req.ParentId, req.ChartPermissionIdList)
  51. if err != nil {
  52. br.Msg = "添加失败"
  53. if errMsg != "" {
  54. br.Msg = errMsg
  55. }
  56. br.ErrMsg = "添加失败,Err:" + err.Error()
  57. br.IsSendEmail = isSentEmail
  58. return
  59. }
  60. br.Ret = 200
  61. br.Success = true
  62. br.Msg = "新增成功"
  63. }
  64. // @Title 删除分类-检测接口
  65. // @Description 删除分类-信息检测,是否符合删除条件
  66. // @Param ClassifyId query int true "分类ID"
  67. // @Success 200 {object} models.CheckDeleteClassifyResp
  68. // @router /checkDeleteClassify [get]
  69. func (this *ClassifyController) CheckDeleteClassify() {
  70. br := new(models.BaseResponse).Init()
  71. defer func() {
  72. this.Data["json"] = br
  73. this.ServeJSON()
  74. }()
  75. classifyId, err := this.GetInt("ClassifyId")
  76. if classifyId <= 0 {
  77. br.Msg = "参数错误"
  78. return
  79. }
  80. classify, err := models.GetClassifyById(classifyId)
  81. if err != nil {
  82. br.Msg = "获取信息失败"
  83. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  84. return
  85. }
  86. resp := new(models.CheckDeleteClassifyResp)
  87. if classify == nil {
  88. br.Msg = "分类不存在"
  89. resp.Code = 1
  90. resp.Msg = "分类不存在"
  91. br.Data = resp
  92. br.Ret = 200
  93. br.Success = true
  94. return
  95. }
  96. //判断分类是否关联了报告
  97. if classify.ParentId > 0 {
  98. count, err := models.GetReportCountByClassifyId(classifyId)
  99. if err != nil {
  100. br.Msg = "获取信息失败"
  101. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  102. return
  103. }
  104. if count > 0 {
  105. resp.Code = 2
  106. resp.Msg = "该分类有关联报告,不允许删除"
  107. br.Data = resp
  108. br.Ret = 200
  109. br.Msg = "该分类有关联报告,不允许删除"
  110. br.Success = true
  111. return
  112. }
  113. } else {
  114. subCount, err := models.GetClassifySubCountByClassifyId(classifyId)
  115. if err != nil {
  116. br.Msg = "获取信息失败"
  117. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  118. return
  119. }
  120. if subCount > 0 {
  121. resp.Code = 3
  122. resp.Msg = "二级分类有关联报告,不允许删除"
  123. br.Data = resp
  124. br.Ret = 200
  125. br.Msg = "二级分类有关联报告,不允许删除"
  126. br.Success = true
  127. return
  128. }
  129. subTotal, err := models.GetClassifySubCountByParentId(classifyId)
  130. if err != nil {
  131. br.Msg = "获取信息失败"
  132. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  133. return
  134. }
  135. if subTotal > 0 {
  136. resp.Code = 4
  137. resp.Msg = "请先删除该分类下关联分类"
  138. br.Data = resp
  139. br.Ret = 200
  140. br.Msg = "请先删除该分类下关联分类"
  141. br.Success = true
  142. return
  143. }
  144. }
  145. // 查询该分类是否关联了审批流
  146. flowOb := new(report_approve.ReportApproveFlow)
  147. flowCond := fmt.Sprintf(` AND (%s = ? OR %s = ?) AND (%s = ? OR %s = ?)`, report_approve.ReportApproveFlowCols.ReportType, report_approve.ReportApproveFlowCols.ReportType, report_approve.ReportApproveFlowCols.ClassifyFirstId, report_approve.ReportApproveFlowCols.ClassifySecondId)
  148. flowPars := make([]interface{}, 0)
  149. flowPars = append(flowPars, report_approve.FlowReportTypeChinese, report_approve.FlowReportTypeSmart, classifyId, classifyId)
  150. flowCount, e := flowOb.GetCountByCondition(flowCond, flowPars)
  151. if e != nil {
  152. br.Msg = "检测失败"
  153. br.ErrMsg = "获取关联审批流失败, Err: " + e.Error()
  154. return
  155. }
  156. if flowCount > 0 {
  157. resp.Code = 5
  158. resp.Msg = "该分类关联审批流,不允许删除"
  159. br.Data = resp
  160. br.Ret = 200
  161. br.Msg = resp.Msg
  162. br.Success = true
  163. return
  164. }
  165. resp.Code = 0
  166. resp.Msg = "检测完成,可进行删除操作"
  167. br.Ret = 200
  168. br.Data = resp
  169. br.Success = true
  170. br.Msg = "检测成功"
  171. }
  172. // @Title 删除分类接口
  173. // @Description 删除分类
  174. // @Param request body models.DeleteClassifyReq true "type json string"
  175. // @Success 200 Ret=200,删除成功
  176. // @router /delete [post]
  177. func (this *ClassifyController) Delete() {
  178. br := new(models.BaseResponse).Init()
  179. defer func() {
  180. this.Data["json"] = br
  181. this.ServeJSON()
  182. }()
  183. var req models.DeleteClassifyReq
  184. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  185. if err != nil {
  186. br.Msg = "参数解析异常!"
  187. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  188. return
  189. }
  190. if req.ClassifyId <= 0 {
  191. br.Msg = "参数错误"
  192. return
  193. }
  194. br.Msg = "报告分类不允许删除"
  195. br.IsSendEmail = false
  196. return
  197. item, err := models.GetClassifyById(req.ClassifyId)
  198. if err != nil {
  199. br.Msg = "获取信息失败"
  200. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  201. return
  202. }
  203. if item == nil {
  204. br.Msg = "分类不存在"
  205. return
  206. }
  207. err = models.DeleteClassify(req.ClassifyId)
  208. if err != nil {
  209. br.Msg = "删除失败"
  210. br.ErrMsg = "删除失败,Err:" + err.Error()
  211. return
  212. }
  213. // 被删除是二级分类且关联电话会时, 同步FICC活动分类
  214. //if item.ParentId > 0 && item.RelateTel == 1 {
  215. // go func() {
  216. // _ = yb.SyncClassifyAndFiccActivityType()
  217. // }()
  218. //}
  219. br.Ret = 200
  220. br.Success = true
  221. br.Msg = "删除成功"
  222. }
  223. // @Title 修改分类接口
  224. // @Description 修改分类
  225. // @Param request body models.EditClassifyReq true "type json string"
  226. // @Success 200 Ret=200,修改成功
  227. // @router /edit [post]
  228. func (this *ClassifyController) Edit() {
  229. br := new(models.BaseResponse).Init()
  230. defer func() {
  231. this.Data["json"] = br
  232. this.ServeJSON()
  233. }()
  234. var req models.EditClassifyReq
  235. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  236. if err != nil {
  237. br.Msg = "参数解析异常!"
  238. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  239. return
  240. }
  241. if req.ClassifyId <= 0 {
  242. br.Msg = "参数错误"
  243. return
  244. }
  245. if req.ClassifyName == "" {
  246. br.Msg = "分类名称不可为空"
  247. return
  248. }
  249. // 修改分类
  250. err, errMsg, isSentEmail := services.EditReportClassify(req.ClassifyId, req.ClassifyName, req.ChartPermissionIdList)
  251. if err != nil {
  252. br.Msg = "修改失败"
  253. if errMsg != "" {
  254. br.Msg = errMsg
  255. }
  256. br.ErrMsg = "修改失败,Err:" + err.Error()
  257. br.IsSendEmail = isSentEmail
  258. return
  259. }
  260. br.Ret = 200
  261. br.Success = true
  262. br.Msg = "修改成功"
  263. }
  264. // @Title 获取父级分类接口
  265. // @Description 获取父级分类
  266. // @Success 200 {object} models.Classify
  267. // @router /parent [get]
  268. func (this *ClassifyController) ParentClassify() {
  269. br := new(models.BaseResponse).Init()
  270. defer func() {
  271. this.Data["json"] = br
  272. this.ServeJSON()
  273. }()
  274. items, err := models.ParentClassify()
  275. if err != nil {
  276. br.Msg = "获取失败"
  277. br.ErrMsg = "获取失败,Err:" + err.Error()
  278. return
  279. }
  280. classifyIds := make([]int, 0)
  281. for i := range items {
  282. classifyIds = append(classifyIds, items[i].Id)
  283. }
  284. classifyLen := len(classifyIds)
  285. if classifyLen == 0 {
  286. br.Ret = 200
  287. br.Success = true
  288. br.Msg = "获取成功"
  289. return
  290. }
  291. // 获取一级分类-子目录列表
  292. menuListMap := make(map[int][]*models.ClassifyMenu, 0)
  293. var menuCond string
  294. var menuPars []interface{}
  295. menuCond += ` AND classify_id IN (` + utils.GetOrmInReplace(classifyLen) + `)`
  296. menuPars = append(menuPars, classifyIds)
  297. parentMenus, e := models.GetClassifyMenuList(menuCond, menuPars)
  298. if e != nil {
  299. br.Msg = "获取失败"
  300. br.ErrMsg = "获取一级分类子目录列表失败"
  301. return
  302. }
  303. for i := range parentMenus {
  304. if menuListMap[parentMenus[i].ClassifyId] == nil {
  305. menuListMap[parentMenus[i].ClassifyId] = make([]*models.ClassifyMenu, 0)
  306. }
  307. menuListMap[parentMenus[i].ClassifyId] = append(menuListMap[parentMenus[i].ClassifyId], parentMenus[i])
  308. }
  309. resp := make([]*models.ClassifyItem, 0)
  310. for i := range items {
  311. resp = append(resp, &models.ClassifyItem{
  312. Classify: *items[i],
  313. ClassifyMenuList: menuListMap[items[i].Id],
  314. })
  315. }
  316. br.Data = resp
  317. br.Ret = 200
  318. br.Success = true
  319. br.Msg = "获取成功"
  320. }
  321. // @Title 根据id获取分类详情接口
  322. // @Description 根据id获取分类详情
  323. // @Param request body models.FindByIdClassifyReq true "type json string"
  324. // @Success 200 {object} models.Classify
  325. // @router /findById [get]
  326. func (this *ClassifyController) FindByIdClassify() {
  327. br := new(models.BaseResponse).Init()
  328. defer func() {
  329. this.Data["json"] = br
  330. this.ServeJSON()
  331. }()
  332. var req models.FindByIdClassifyReq
  333. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  334. if err != nil {
  335. br.Msg = "参数解析异常!"
  336. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  337. return
  338. }
  339. items, err := models.FindByIdClassify(req.ClassifyId)
  340. if err != nil {
  341. br.Msg = "获取失败"
  342. br.ErrMsg = "获取失败,Err:" + err.Error()
  343. return
  344. }
  345. br.Data = items
  346. br.Ret = 200
  347. br.Success = true
  348. br.Msg = "获取成功"
  349. }
  350. // @Title 获取分类列表
  351. // @Description 获取分类列表
  352. // @Param KeyWord query string true "检索关键词"
  353. // @Param CompanyType query string false "产品类型,枚举值:'ficc','权益';不传默认返回全部"
  354. // @Param HideDayWeek query int false "是否隐藏晨周报"
  355. // @Success 200 {object} models.Classify
  356. // @router /list [get]
  357. func (this *ClassifyController) ListClassify() {
  358. br := new(models.BaseResponse).Init()
  359. defer func() {
  360. this.Data["json"] = br
  361. this.ServeJSON()
  362. }()
  363. keyWord := this.GetString("KeyWord")
  364. companyType := this.GetString("CompanyType")
  365. hideDayWeek, _ := this.GetInt("HideDayWeek")
  366. reqEnabled, _ := this.GetInt("Enabled", -1)
  367. // 商家不隐藏晨周报
  368. if utils.BusinessCode != utils.BusinessCodeRelease {
  369. hideDayWeek = 0
  370. }
  371. enabled := -1
  372. if reqEnabled == 1 {
  373. enabled = reqEnabled
  374. }
  375. list, err := models.GetClassifyList(keyWord, companyType, hideDayWeek, enabled)
  376. if err != nil {
  377. br.Msg = "获取失败"
  378. br.ErrMsg = "获取失败,Err:" + err.Error()
  379. return
  380. }
  381. parentIds := make([]int, 0)
  382. for i := range list {
  383. parentIds = append(parentIds, list[i].Id)
  384. }
  385. parentIdLen := len(parentIds)
  386. if parentIdLen == 0 {
  387. resp := &models.ClassifyListResp{
  388. List: list,
  389. }
  390. br.Data = resp
  391. br.Ret = 200
  392. br.Success = true
  393. br.Msg = "获取成功"
  394. return
  395. }
  396. // 获取一级分类-子目录列表
  397. menuListMap := make(map[int][]*models.ClassifyMenu, 0)
  398. var menuCond string
  399. var menuPars []interface{}
  400. menuCond += ` AND classify_id IN (` + utils.GetOrmInReplace(parentIdLen) + `)`
  401. menuPars = append(menuPars, parentIds)
  402. parentMenus, e := models.GetClassifyMenuList(menuCond, menuPars)
  403. if e != nil {
  404. br.Msg = "获取失败"
  405. br.ErrMsg = "获取一级分类子目录列表失败"
  406. return
  407. }
  408. for i := range parentMenus {
  409. if menuListMap[parentMenus[i].ClassifyId] == nil {
  410. menuListMap[parentMenus[i].ClassifyId] = make([]*models.ClassifyMenu, 0)
  411. }
  412. menuListMap[parentMenus[i].ClassifyId] = append(menuListMap[parentMenus[i].ClassifyId], parentMenus[i])
  413. }
  414. // 获取子分类
  415. children, e := models.GetClassifyChildByParentIds(parentIds, keyWord, enabled)
  416. if e != nil {
  417. br.Msg = "获取失败"
  418. br.ErrMsg = "获取子分类失败"
  419. return
  420. }
  421. childrenIds := make([]int, 0)
  422. for i := range children {
  423. childrenIds = append(childrenIds, children[i].Id)
  424. }
  425. childrenIdsLen := len(childrenIds)
  426. // 获取二级分类-子目录关联
  427. relateMap := make(map[int]int, 0)
  428. if childrenIdsLen > 0 {
  429. var relateCond string
  430. var relatePars []interface{}
  431. relateCond += ` AND classify_id IN (` + utils.GetOrmInReplace(childrenIdsLen) + `)`
  432. relatePars = append(relatePars, childrenIds)
  433. relates, e := models.GetClassifyMenuRelationList(relateCond, relatePars)
  434. if e != nil {
  435. br.Msg = "获取失败"
  436. br.ErrMsg = "获取二级分类子目录关联失败, Err: " + e.Error()
  437. return
  438. }
  439. for i := range relates {
  440. relateMap[relates[i].ClassifyId] = relates[i].MenuId
  441. }
  442. }
  443. // 查询分类绑定的权限
  444. permissionList, _ := models.GetAllPermissionMapping()
  445. classifyPermissionMap := make(map[int][]int, 0)
  446. if len(permissionList) > 0 {
  447. for _, v := range permissionList {
  448. classifyPermissionMap[v.ClassifyId] = append(classifyPermissionMap[v.ClassifyId], v.ChartPermissionId)
  449. }
  450. }
  451. // 二级分类
  452. childrenMap := make(map[int][]*models.ClassifyItem, 0)
  453. for i := range children {
  454. if childrenMap[children[i].ParentId] == nil {
  455. childrenMap[children[i].ParentId] = make([]*models.ClassifyItem, 0)
  456. }
  457. tmp := &models.ClassifyItem{
  458. Classify: *children[i],
  459. ClassifyMenuId: relateMap[children[i].Id],
  460. }
  461. if permissionIds, ok := classifyPermissionMap[children[i].Id]; ok {
  462. tmp.ChartPermissionIdList = permissionIds
  463. }
  464. childrenMap[children[i].ParentId] = append(childrenMap[children[i].ParentId], tmp)
  465. }
  466. // 一级分类
  467. for i := range list {
  468. list[i].ClassifyMenuList = menuListMap[list[i].Id]
  469. list[i].Child = childrenMap[list[i].Id]
  470. }
  471. resp := new(models.ClassifyListResp)
  472. resp.List = list
  473. br.Data = resp
  474. br.Ret = 200
  475. br.Success = true
  476. br.Msg = "获取成功"
  477. }
  478. // ClassifyPermission
  479. // @Title 获取分类权限列表
  480. // @Description 获取分类权限列表
  481. // @Param ClassifyId query int true "分类id"
  482. // @Success 200 {object} []models.ChartPermissionSearchKeyWordMapping
  483. // @router /permission_list [get]
  484. func (this *ClassifyController) ClassifyPermission() {
  485. br := new(models.BaseResponse).Init()
  486. defer func() {
  487. this.Data["json"] = br
  488. this.ServeJSON()
  489. }()
  490. classifyId, _ := this.GetInt("ClassifyId")
  491. if classifyId <= 0 {
  492. br.Msg = "参数错误"
  493. return
  494. }
  495. //获取报告分类详情
  496. classifyInfo, err := models.GetClassifyById(classifyId)
  497. if err != nil {
  498. br.Msg = "获取分类信息失败"
  499. br.ErrMsg = "获取失败,Err:" + err.Error()
  500. return
  501. }
  502. //获取报告分类权限列表
  503. list, err := models.GetPermission(classifyInfo.Id)
  504. if err != nil {
  505. br.Msg = "获取分类信息失败"
  506. br.ErrMsg = "获取失败,Err:" + err.Error()
  507. return
  508. }
  509. br.Data = list
  510. br.Ret = 200
  511. br.Success = true
  512. br.Msg = "获取成功"
  513. }
  514. // EditClassifyPermission
  515. // @Title 编辑分类权限
  516. // @Description 编辑分类权限
  517. // @Param ClassifyId query int true "分类id"
  518. // @Success 200 {object} models.EditClassifyPermissionReq
  519. // @router /permission/edit [post]
  520. func (this *ClassifyController) EditClassifyPermission() {
  521. br := new(models.BaseResponse).Init()
  522. defer func() {
  523. this.Data["json"] = br
  524. this.ServeJSON()
  525. }()
  526. var req models.EditClassifyPermissionReq
  527. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  528. if err != nil {
  529. br.Msg = "参数解析异常!"
  530. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  531. return
  532. }
  533. if req.ClassifyId <= 0 {
  534. br.Msg = "参数错误"
  535. return
  536. }
  537. if len(req.ChartPermissionIdList) <= 0 {
  538. br.Msg = "请选择权限"
  539. return
  540. }
  541. //获取报告分类详情
  542. classifyInfo, err := models.GetClassifyById(req.ClassifyId)
  543. if err != nil {
  544. br.Msg = "获取分类信息失败"
  545. br.ErrMsg = "获取失败,Err:" + err.Error()
  546. return
  547. }
  548. //获取报告分类权限列表
  549. err = models.EditChartPermissionSearchKeyWordMappingMulti(classifyInfo.ClassifyName, req.ChartPermissionIdList, req.ClassifyId)
  550. if err != nil {
  551. br.Msg = "修改分类权限失败"
  552. br.ErrMsg = "修改分类权限失败,Err:" + err.Error()
  553. return
  554. }
  555. go func() {
  556. _ = services.EditClassifyChartPermissionSync(classifyInfo.ClassifyName, req.ClassifyId)
  557. }()
  558. // 是关联电话会二级分类修改了权限, 同步关联报告电话会的分类
  559. //if classifyInfo.ParentId > 0 && classifyInfo.RelateTel == 1 {
  560. // go func() {
  561. // _ = yb.SyncClassifyAndFiccActivityType()
  562. // }()
  563. //}
  564. br.Ret = 200
  565. br.Success = true
  566. br.Msg = "修改成功"
  567. }
  568. // @Title 含电话会分类列表
  569. // @Description 含电话会分类列表
  570. // @Success 200 {object} models.Classify
  571. // @router /tel_list [get]
  572. func (this *ClassifyController) TelListClassify() {
  573. br := new(models.BaseResponse).Init()
  574. defer func() {
  575. this.Data["json"] = br
  576. this.ServeJSON()
  577. }()
  578. resp := make([]*models.SimpleClassifyList, 0)
  579. var condition, orderRule string
  580. var pars []interface{}
  581. if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeSandbox {
  582. condition += ` AND classify_name <> '晨报' AND classify_name <> '周报' `
  583. }
  584. telList, e := models.GetClassifyByCondition(condition, orderRule, pars)
  585. if e != nil {
  586. return
  587. }
  588. firstList := make([]*models.SimpleClassifyList, 0)
  589. secondList := make([]*models.SimpleClassifyList, 0)
  590. secondMap := make(map[int][]*models.SimpleClassifyList, 0)
  591. for i := range telList {
  592. if telList[i].ParentId == 0 {
  593. firstList = append(firstList, telList[i])
  594. } else {
  595. secondList = append(secondList, telList[i])
  596. secondMap[telList[i].ParentId] = append(secondMap[telList[i].ParentId], telList[i])
  597. }
  598. }
  599. for i := range firstList {
  600. firstList[i].Child = secondMap[firstList[i].Id]
  601. }
  602. resp = firstList
  603. br.Data = resp
  604. br.Ret = 200
  605. br.Success = true
  606. br.Msg = "获取成功"
  607. }
  608. // Move
  609. // @Title 移动分类接口
  610. // @Description 移动分类
  611. // @Param request body models.ClassifyMoveReq true "type json string"
  612. // @Success 200 新增成功
  613. // @router /move [post]
  614. func (this *ClassifyController) Move() {
  615. br := new(models.BaseResponse).Init()
  616. defer func() {
  617. this.Data["json"] = br
  618. this.ServeJSON()
  619. }()
  620. var req models.ClassifyMoveReq
  621. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  622. if err != nil {
  623. br.Msg = "参数解析异常!"
  624. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  625. return
  626. }
  627. if req.ClassifyId <= 0 {
  628. br.Msg = "请选择分类"
  629. return
  630. }
  631. e, msg := services.MoveReportClassify(req)
  632. if e != nil {
  633. br.Msg = msg
  634. br.ErrMsg = "移动分类失败, Err: " + e.Error()
  635. return
  636. }
  637. br.Ret = 200
  638. br.Success = true
  639. br.Msg = "操作成功"
  640. }
  641. // SetEnabled
  642. // @Title 启用/禁用分类接口
  643. // @Description 启用/禁用分类
  644. // @Param request body models.ClassifyMoveReq true "type json string"
  645. // @Success 200 新增成功
  646. // @router /enabled/set [post]
  647. func (this *ClassifyController) SetEnabled() {
  648. br := new(models.BaseResponse).Init()
  649. defer func() {
  650. this.Data["json"] = br
  651. this.ServeJSON()
  652. }()
  653. var req models.ClassifySetEnabledReq
  654. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  655. if err != nil {
  656. br.Msg = "参数解析异常!"
  657. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  658. return
  659. }
  660. if req.ClassifyId <= 0 {
  661. br.Msg = "请选择分类"
  662. return
  663. }
  664. if req.Enabled != 0 && req.Enabled != 1 {
  665. br.Msg = "请选择正确的启用禁用状态"
  666. return
  667. }
  668. item, err := models.GetClassifyById(req.ClassifyId)
  669. if err != nil {
  670. if err.Error() == utils.ErrNoRow() {
  671. br.Msg = "分类不存在"
  672. return
  673. }
  674. br.Msg = "获取信息失败"
  675. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  676. return
  677. }
  678. if item == nil {
  679. br.Msg = "分类不存在"
  680. return
  681. }
  682. ob := new(models.Classify)
  683. //设置分类启用、禁用状态
  684. err = ob.SetEnabled(req.ClassifyId, req.Enabled)
  685. if err != nil {
  686. br.Msg = "操作失败"
  687. br.ErrMsg = "操作失败,Err:" + err.Error()
  688. return
  689. }
  690. br.Ret = 200
  691. br.Success = true
  692. br.Msg = "操作成功"
  693. }