english_classify.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803
  1. package english_report
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/controllers"
  5. "eta/eta_api/models"
  6. "eta/eta_api/models/report_approve"
  7. "eta/eta_api/services"
  8. "eta/eta_api/utils"
  9. "fmt"
  10. "github.com/rdlucklib/rdluck_tools/paging"
  11. "sort"
  12. "time"
  13. )
  14. // EnglishClassifyController 英文分类
  15. type EnglishClassifyController struct {
  16. controllers.BaseAuthController
  17. }
  18. // ListClassify
  19. // @Title 获取分类列表
  20. // @Description 获取分类列表
  21. // @Param PageSize query int true "每页数据条数"
  22. // @Param CurrentIndex query int true "当前页页码,从1开始"
  23. // @Param KeyWord query string true "检索关键词"
  24. // @Param CompanyType query string false "产品类型,枚举值:'ficc','权益';不传默认返回全部"
  25. // @Success 200 {object} models.EnglishClassifyListResp
  26. // @router /classify/list [get]
  27. func (this *EnglishReportController) ListClassify() {
  28. br := new(models.BaseResponse).Init()
  29. defer func() {
  30. this.Data["json"] = br
  31. this.ServeJSON()
  32. }()
  33. pageSize, _ := this.GetInt("PageSize")
  34. currentIndex, _ := this.GetInt("CurrentIndex")
  35. keyWord := this.GetString("KeyWord")
  36. var startSize int
  37. if pageSize <= 0 {
  38. pageSize = utils.PageSize20
  39. }
  40. if currentIndex <= 0 {
  41. currentIndex = 1
  42. }
  43. startSize = utils.StartIndex(currentIndex, pageSize)
  44. page := paging.GetPaging(currentIndex, pageSize, 0)
  45. resp := new(models.EnglishClassifyListResp)
  46. // 处理一级分类分页的情况
  47. rootList, err := models.GetEnglishClassifyRootId(startSize, pageSize, keyWord)
  48. if err != nil {
  49. br.Msg = "获取失败"
  50. br.ErrMsg = "获取失败,Err:" + err.Error()
  51. return
  52. }
  53. var ids []int
  54. var rootIds []int
  55. rootMap := make(map[int]struct{}, 0)
  56. for _, v := range rootList {
  57. rootIds = append(rootIds, v.Id)
  58. rootMap[v.Id] = struct{}{}
  59. }
  60. total, err := models.GetEnglishClassifyListCount(keyWord)
  61. if err != nil {
  62. br.Msg = "获取失败"
  63. br.ErrMsg = "获取失败,Err:" + err.Error()
  64. return
  65. }
  66. if total == 0 {
  67. resp.List = make([]*models.EnglishClassifyList, 0)
  68. resp.Paging = page
  69. br.Data = resp
  70. br.Ret = 200
  71. br.Success = true
  72. br.Msg = "获取成功"
  73. return
  74. }
  75. page = paging.GetPaging(currentIndex, pageSize, total)
  76. //获取相关的分类ID
  77. idList, err := models.GetEnglishClassifyListByRootId(rootIds, keyWord)
  78. if err != nil {
  79. br.Msg = "获取失败"
  80. br.ErrMsg = "获取失败,Err:" + err.Error()
  81. return
  82. }
  83. secondListMap := make(map[int][]*models.EnglishClassifyList)
  84. thirdListMap := make(map[int][]*models.EnglishClassifyList)
  85. var thirdIds []int
  86. var sortChildList models.RSChildClassifyList
  87. // 三级分类-品种权限
  88. permissionMap := make(map[int][]int)
  89. if len(idList) > 0 {
  90. childIdMap := make(map[int]struct{}, 0)
  91. for _, v := range idList {
  92. if _, ok := childIdMap[v.ParentId]; !ok {
  93. ids = append(ids, v.ParentId)
  94. childIdMap[v.ParentId] = struct{}{}
  95. }
  96. if _, ok := childIdMap[v.Id]; !ok {
  97. ids = append(ids, v.Id)
  98. childIdMap[v.Id] = struct{}{}
  99. }
  100. }
  101. tmpList, err := models.GetEnglishClassifyChildByIds(ids)
  102. if err != nil {
  103. br.Msg = "获取二级分类失败"
  104. br.ErrMsg = "获取二级分类失败,Err:" + err.Error()
  105. return
  106. }
  107. for _, v := range tmpList {
  108. if _, ok := rootMap[v.ParentId]; !ok {
  109. thirdIds = append(thirdIds, v.Id)
  110. }
  111. }
  112. {
  113. classifyIds := thirdIds
  114. if len(classifyIds) > 0 {
  115. cond := fmt.Sprintf(` AND %s IN (%s)`, models.EnClassifyPermissionColumns.EnClassifyId, utils.GetOrmInReplace(len(classifyIds)))
  116. pars := make([]interface{}, 0)
  117. pars = append(pars, classifyIds)
  118. ob := new(models.EnClassifyPermission)
  119. items, e := ob.GetItemsByCondition(cond, pars, []string{}, "")
  120. if e != nil {
  121. br.Msg = "获取失败"
  122. br.ErrMsg = "获取客户权限列表失败, Err: " + e.Error()
  123. return
  124. }
  125. for _, v := range items {
  126. if permissionMap[v.EnClassifyId] == nil {
  127. permissionMap[v.EnClassifyId] = make([]int, 0)
  128. }
  129. permissionMap[v.EnClassifyId] = append(permissionMap[v.EnClassifyId], v.EnPermissionId)
  130. }
  131. }
  132. }
  133. // 处理三级分类
  134. for _, v := range tmpList {
  135. if _, ok := rootMap[v.ParentId]; !ok {
  136. if p, ok1 := permissionMap[v.Id]; ok1 {
  137. v.EnPermissions = p
  138. }
  139. thirdListMap[v.ParentId] = append(thirdListMap[v.ParentId], v)
  140. }
  141. }
  142. //处理二级分类
  143. for _, v := range tmpList {
  144. if _, ok := rootMap[v.ParentId]; ok {
  145. if child, ok1 := thirdListMap[v.Id]; ok1 {
  146. sortChildList = child
  147. sort.Sort(sortChildList)
  148. v.Child = sortChildList
  149. }
  150. secondListMap[v.ParentId] = append(secondListMap[v.ParentId], v)
  151. }
  152. }
  153. }
  154. //处理一级分类
  155. var sortList models.RSClassifyList
  156. for _, v := range rootList {
  157. if child, ok := secondListMap[v.Id]; ok {
  158. sortChildList = child
  159. sort.Sort(sortChildList)
  160. v.Child = sortChildList
  161. }
  162. sortList = append(sortList, v)
  163. }
  164. sort.Sort(sortList)
  165. resp.List = sortList
  166. resp.Paging = page
  167. br.Data = resp
  168. br.Ret = 200
  169. br.Success = true
  170. br.Msg = "获取成功"
  171. }
  172. // @Title 新增分类
  173. // @Description 新增分类接口
  174. // @Param ClassifyName int true "分类名称"
  175. // @Param ParentId query int true "父级Id 添加父级时为0"
  176. // @Param Sort query string false "排序"
  177. // @Success 200 新增成功
  178. // @router /classify/add [post]
  179. func (this *EnglishReportController) AddClassify() {
  180. br := new(models.BaseResponse).Init()
  181. defer func() {
  182. this.Data["json"] = br
  183. this.ServeJSON()
  184. }()
  185. //classifyName := this.GetString("ClassifyName")
  186. //parentId, _ := this.GetInt("ParentId")
  187. var req models.EnClassifyAddReq
  188. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  189. if err != nil {
  190. br.Msg = "参数解析异常!"
  191. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  192. return
  193. }
  194. classifyName := req.ClassifyName
  195. parentId := req.ParentId
  196. ob := new(models.EnglishClassify)
  197. // 查新父级分类是否存在
  198. rootId := 0
  199. if parentId > 0 {
  200. parentClassify, err := models.GetEnglishReportClassifyById(parentId)
  201. if err != nil {
  202. if err.Error() == utils.ErrNoRow() {
  203. br.Msg = "上级分类不存在"
  204. return
  205. }
  206. br.Msg = "查询上级分类信息失败"
  207. br.ErrMsg = "查询上级分类信息失败,Err:" + err.Error()
  208. return
  209. }
  210. if parentClassify.RootId == 0 {
  211. rootId = parentClassify.Id
  212. } else {
  213. rootId = parentClassify.RootId
  214. }
  215. }
  216. maxSort, e := ob.GetMaxSort()
  217. if e != nil {
  218. br.Msg = "操作失败"
  219. br.ErrMsg = "查询品种排序失败, Err: " + e.Error()
  220. return
  221. }
  222. nowTime := time.Now().Local()
  223. item := &models.EnglishClassify{
  224. ClassifyName: classifyName,
  225. Sort: maxSort + 1,
  226. ParentId: parentId,
  227. RootId: rootId,
  228. CreateTime: nowTime,
  229. ModifyTime: nowTime,
  230. IsShow: 1,
  231. }
  232. counts, err := models.GetEnglishClassifyCountsByName(classifyName, parentId)
  233. if err != nil {
  234. br.Msg = "查询失败"
  235. br.ErrMsg = "查询失败,Err:" + err.Error()
  236. return
  237. }
  238. if counts > 0 {
  239. br.Msg = "该名称已存在"
  240. br.ErrMsg = "该名称已存在!"
  241. return
  242. }
  243. var newId int64
  244. newId, err = models.AddEnglishClassify(item)
  245. if err != nil {
  246. br.Msg = "保存失败"
  247. br.ErrMsg = "保存失败,Err:" + err.Error()
  248. return
  249. }
  250. item.Id = int(newId)
  251. if parentId == 0 { //一级目录的rootId等于自己本身
  252. item.RootId = int(newId)
  253. err = item.UpdateEnglishClassify([]string{"RootId"})
  254. if err != nil {
  255. br.Msg = "保存失败"
  256. br.ErrMsg = "保存失败,Err:" + err.Error()
  257. return
  258. }
  259. }
  260. if item.ParentId != item.RootId && item.ParentId > 0 { //三级分类才能绑定品种权限
  261. permissions := make([]*models.EnClassifyPermission, 0)
  262. for _, p := range req.EnPermissions {
  263. v := new(models.EnClassifyPermission)
  264. v.EnPermissionId = p
  265. v.EnClassifyId = item.Id
  266. v.CreateTime = nowTime
  267. permissions = append(permissions, v)
  268. }
  269. if e = models.CreateEnClassifyPermissions(permissions); e != nil {
  270. br.Msg = "保存失败"
  271. br.ErrMsg = "更新分类品种权限失败, Err: " + e.Error()
  272. return
  273. }
  274. }
  275. br.Ret = 200
  276. br.Success = true
  277. br.Msg = "新增成功"
  278. }
  279. // EditClassify
  280. // @Title 编辑分类
  281. // @Description 编辑分类接口
  282. // @Param ClassifyId int true "分类Id"
  283. // @Param ClassifyName string true "分类名称"
  284. // @Param ParentId query int true "父级Id 添加父级时为0"
  285. // @Param Sort query string false "排序"
  286. // @Success 200 保存成功
  287. // @router /classify/edit [post]
  288. func (this *EnglishReportController) EditClassify() {
  289. br := new(models.BaseResponse).Init()
  290. defer func() {
  291. this.Data["json"] = br
  292. this.ServeJSON()
  293. }()
  294. var req models.EnClassifyEditReq
  295. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  296. if err != nil {
  297. br.Msg = "参数解析异常!"
  298. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  299. return
  300. }
  301. classifyId := req.ClassifyId
  302. classifyName := req.ClassifyName
  303. parentId := req.ParentId
  304. //ob := new(models.EnglishClassify)
  305. if parentId == classifyId {
  306. br.Msg = "上级分类不能选择自己"
  307. return
  308. }
  309. if classifyId <= 0 {
  310. br.Msg = "参数错误"
  311. return
  312. }
  313. if classifyName == "" {
  314. br.Msg = "分类名称不可为空"
  315. return
  316. }
  317. oldItem, err := models.GetEnglishReportClassifyById(classifyId)
  318. if err != nil {
  319. if err.Error() == utils.ErrNoRow() {
  320. br.Msg = "当前分类不存在"
  321. return
  322. }
  323. br.Msg = "获取信息失败"
  324. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  325. return
  326. }
  327. if oldItem.ParentId == 0 && parentId > 0 {
  328. // 一级分类变更为二级分类,禁止
  329. br.Msg = "一级分类不允许更改为二级分类或三级分类"
  330. return
  331. }
  332. var parent *models.EnglishClassify
  333. rootId := 0
  334. if parentId > 0 {
  335. parent, err = models.GetEnglishReportClassifyById(parentId)
  336. if err != nil {
  337. if err.Error() == utils.ErrNoRow() {
  338. br.Msg = "上级分类不存在"
  339. return
  340. }
  341. br.Msg = "获取信息失败"
  342. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  343. return
  344. }
  345. //二级分类不允许改成三级分类
  346. if oldItem.ParentId > 0 && oldItem.ParentId == oldItem.RootId {
  347. if parent.ParentId > 0 {
  348. //即将改为为三级分类
  349. br.Msg = "二级分类不允许更改为三级分类"
  350. return
  351. }
  352. }
  353. if parent.RootId == 0 {
  354. rootId = parent.Id
  355. } else {
  356. rootId = parent.RootId
  357. }
  358. }
  359. //判断是否已存在同个名称的分类
  360. existItem, e := models.GetEnglishClassifyByClassifyNameParentId(classifyName, parentId)
  361. if e != nil {
  362. if e.Error() != utils.ErrNoRow() {
  363. br.Msg = "查询已存在的分类出错"
  364. br.ErrMsg = "查询已存在的分类出错, Err:" + e.Error()
  365. return
  366. }
  367. }
  368. if e == nil && existItem.Id != oldItem.Id {
  369. br.Msg = "分类名称:" + classifyName + "已存在"
  370. return
  371. }
  372. if parentId == 0 { //一级分类的顶级分类为自己的ID
  373. rootId = oldItem.Id
  374. }
  375. /*maxSort, e := ob.GetMaxSortByParentId(parentId)
  376. if e != nil {
  377. br.Msg = "操作失败"
  378. br.ErrMsg = "查询品种排序失败, Err: " + e.Error()
  379. return
  380. }*/
  381. nowTime := time.Now().Local()
  382. item := &models.EnglishClassify{
  383. Id: oldItem.Id,
  384. ClassifyName: classifyName,
  385. // Sort: maxSort + 1,
  386. ParentId: parentId,
  387. RootId: rootId,
  388. ModifyTime: nowTime,
  389. IsShow: 1,
  390. }
  391. {
  392. // 更新研报里的分类名称
  393. err = services.UpdateEnglishReportClassifyId(oldItem, item, classifyId)
  394. if err != nil {
  395. br.Msg = err.Error()
  396. return
  397. }
  398. //更新相关联的路演视频里的分类名称
  399. err = services.UpdateEnglishVideoClassifyId(oldItem, item, classifyId)
  400. if err != nil {
  401. br.Msg = err.Error()
  402. return
  403. }
  404. }
  405. err = models.ModifyEnglishClassify(item)
  406. if err != nil {
  407. br.Msg = "保存失败"
  408. br.ErrMsg = "保存失败,Err:" + err.Error()
  409. return
  410. }
  411. // 更新权限
  412. if item.ParentId != item.RootId && item.ParentId > 0 { //三级分类才能编辑品种
  413. permissions := make([]*models.EnClassifyPermission, 0)
  414. for _, p := range req.EnPermissions {
  415. v := new(models.EnClassifyPermission)
  416. v.EnPermissionId = p
  417. v.EnClassifyId = req.ClassifyId
  418. v.CreateTime = nowTime
  419. permissions = append(permissions, v)
  420. }
  421. if e = models.ClearAndCreateEnClassifyPermissions(req.ClassifyId, permissions); e != nil {
  422. br.Msg = "保存失败"
  423. br.ErrMsg = "更新分类品种权限失败, Err: " + e.Error()
  424. return
  425. }
  426. }
  427. err = models.UpdateEnglishReportClassifyByFirstSecondClassifyId(classifyId, parentId)
  428. if err != nil {
  429. br.Msg = "保存失败"
  430. br.ErrMsg = "保存失败,Err:" + err.Error()
  431. return
  432. }
  433. err = models.UpdateEnglishVideoClassifyByFirstSecondClassifyId(classifyId, parentId)
  434. if err != nil {
  435. br.Msg = "保存失败"
  436. br.ErrMsg = "保存失败,Err:" + err.Error()
  437. return
  438. }
  439. br.Ret = 200
  440. br.Success = true
  441. br.Msg = "保存成功"
  442. }
  443. // @Title 删除分类列表
  444. // @Description 删除分类列表
  445. // @Param ClassifyId int true "分类名称"
  446. // @Param ParentId query int true "父级Id"
  447. // @Success 200 保存成功
  448. // @router /classify/delete [get]
  449. func (this *EnglishReportController) DelClassify() {
  450. br := new(models.BaseResponse).Init()
  451. defer func() {
  452. this.Data["json"] = br
  453. this.ServeJSON()
  454. }()
  455. classifyId, _ := this.GetInt("ClassifyId")
  456. //parentId, _ := this.GetInt("ParentId")
  457. classifyInfo, err := models.GetEnglishReportClassifyById(classifyId)
  458. if err != nil {
  459. if err.Error() == utils.ErrNoRow() {
  460. br.Msg = "当前分类不存在"
  461. br.ErrMsg = "当前分类不存在"
  462. return
  463. }
  464. br.Msg = "获取分类信息失败"
  465. br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
  466. return
  467. }
  468. count, err := models.GetEnglishClassifyChildCounts(classifyId)
  469. if err != nil && err.Error() != utils.ErrNoRow() {
  470. br.Msg = "获取信息失败"
  471. br.ErrMsg = "获取失败,Err:" + err.Error()
  472. return
  473. }
  474. if count > 0 {
  475. br.Msg = "请先删除该分类下关联分类"
  476. br.Ret = 403
  477. return
  478. }
  479. reportCount, e := models.GetEnglishReportCounts(classifyId, classifyInfo.ParentId)
  480. if e != nil && e.Error() != utils.ErrNoRow() {
  481. br.Msg = "获取信息失败"
  482. br.ErrMsg = "获取失败,Err:" + e.Error()
  483. return
  484. }
  485. if reportCount > 0 {
  486. br.Msg = "该分类有关联报告,不允许删除"
  487. br.Ret = 403
  488. return
  489. }
  490. videoCount, e := models.GetEnglishVideoCounts(classifyId, classifyInfo.ParentId)
  491. if e != nil && e.Error() != utils.ErrNoRow() {
  492. br.Msg = "获取信息失败"
  493. br.ErrMsg = "获取失败,Err:" + e.Error()
  494. return
  495. }
  496. if videoCount > 0 {
  497. br.Msg = "该分类有关联的路演视频,不允许删除"
  498. br.Ret = 403
  499. return
  500. }
  501. // 查询该分类是否关联了审批流
  502. flowOb := new(report_approve.ReportApproveFlow)
  503. flowCond := fmt.Sprintf(` AND %s = ? AND (%s = ? Or %s = ?)`, report_approve.ReportApproveFlowCols.ReportType, report_approve.ReportApproveFlowCols.ClassifyFirstId, report_approve.ReportApproveFlowCols.ClassifySecondId)
  504. flowPars := make([]interface{}, 0)
  505. flowPars = append(flowPars, report_approve.FlowReportTypeEnglish, classifyId, classifyId)
  506. flowCount, e := flowOb.GetCountByCondition(flowCond, flowPars)
  507. if e != nil {
  508. br.Msg = "检测失败"
  509. br.ErrMsg = "获取关联审批流失败, Err: " + e.Error()
  510. return
  511. }
  512. if flowCount > 0 {
  513. br.Msg = "该分类关联审批流,不允许删除"
  514. br.Ret = 403
  515. return
  516. }
  517. if err = models.DeleteEnglishClassify(classifyId); err != nil {
  518. br.Msg = "删除失败"
  519. br.ErrMsg = "删除报告失败, Err: " + err.Error()
  520. return
  521. }
  522. br.Ret = 200
  523. br.Success = true
  524. br.Msg = "删除成功"
  525. }
  526. // @Title 获取一级分类列表
  527. // @Description 获取一级分类列表
  528. // @Param PageSize query int true "每页数据条数"
  529. // @Param CurrentIndex query int true "当前页页码,从1开始"
  530. // @Param CompanyType query string false "产品类型,枚举值:'ficc','权益';不传默认返回全部"
  531. // @Success 200 {object} models.EnglishClassifyListResp
  532. // @router /classify/first/list [get]
  533. func (this *EnglishReportController) FistListClassify() {
  534. br := new(models.BaseResponse).Init()
  535. defer func() {
  536. this.Data["json"] = br
  537. this.ServeJSON()
  538. }()
  539. pageSize, _ := this.GetInt("PageSize")
  540. currentIndex, _ := this.GetInt("CurrentIndex")
  541. var startSize int
  542. if pageSize <= 0 {
  543. pageSize = utils.PageSize20
  544. }
  545. if currentIndex <= 0 {
  546. currentIndex = 1
  547. }
  548. startSize = utils.StartIndex(currentIndex, pageSize)
  549. rootList, err := models.GetEnglishFirstClassifyList(startSize, pageSize)
  550. if err != nil {
  551. br.Msg = "获取失败"
  552. br.ErrMsg = "获取失败,Err:" + err.Error()
  553. return
  554. }
  555. total, err := models.GetEnglishFirstClassifyListCount()
  556. if err != nil {
  557. br.Msg = "获取失败"
  558. br.ErrMsg = "获取失败,Err:" + err.Error()
  559. return
  560. }
  561. page := paging.GetPaging(currentIndex, pageSize, total)
  562. resp := new(models.EnglishClassifyListResp)
  563. if total == 0 {
  564. resp.List = make([]*models.EnglishClassifyList, 0)
  565. resp.Paging = page
  566. br.Data = resp
  567. br.Ret = 200
  568. br.Success = true
  569. br.Msg = "获取成功"
  570. return
  571. }
  572. rootMap := make(map[int]struct{}, 0)
  573. var rootIds []int
  574. for _, v := range rootList {
  575. rootMap[v.Id] = struct{}{}
  576. rootIds = append(rootIds, v.Id)
  577. }
  578. tmpList, err := models.GetEnglishSecondClassifyList(rootIds)
  579. if err != nil {
  580. br.Msg = "获取失败"
  581. br.ErrMsg = "获取失败,Err:" + err.Error()
  582. return
  583. }
  584. secondListMap := make(map[int][]*models.EnglishClassifyList)
  585. //处理二级分类
  586. for _, v := range tmpList {
  587. if _, ok := rootMap[v.ParentId]; ok {
  588. secondListMap[v.ParentId] = append(secondListMap[v.ParentId], v)
  589. }
  590. }
  591. //处理一级分类
  592. var sortList models.RSClassifyList
  593. var sortChildList models.RSChildClassifyList
  594. for _, v := range rootList {
  595. if child, ok := secondListMap[v.Id]; ok {
  596. sortChildList = child
  597. sort.Sort(sortChildList)
  598. v.Child = sortChildList
  599. }
  600. sortList = append(sortList, v)
  601. }
  602. sort.Sort(sortList)
  603. resp.List = sortList
  604. resp.Paging = page
  605. br.Data = resp
  606. br.Ret = 200
  607. br.Success = true
  608. br.Msg = "获取成功"
  609. }
  610. // PermissionEdit
  611. // @Title 编辑品种权限
  612. // @Description 编辑品种权限
  613. // @Param request body models.EnPermissionAddReq true "type json string"
  614. // @Success 200 Ret=200 操作成功
  615. // @router /permission/edit [post]
  616. func (this *EnglishClassifyController) PermissionEdit() {
  617. br := new(models.BaseResponse).Init()
  618. defer func() {
  619. if br.ErrMsg == "" {
  620. br.IsSendEmail = false
  621. }
  622. this.Data["json"] = br
  623. this.ServeJSON()
  624. }()
  625. sysUser := this.SysUser
  626. if sysUser == nil {
  627. br.Msg = "请登录"
  628. br.ErrMsg = "请登录,SysUser Is Empty"
  629. br.Ret = 408
  630. return
  631. }
  632. var req models.EnClassifyPermissionEditReq
  633. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  634. br.Msg = "参数解析异常!"
  635. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  636. return
  637. }
  638. if req.ClassifyId <= 0 {
  639. br.Msg = "参数有误"
  640. return
  641. }
  642. // 更新品种权限
  643. nowTime := time.Now().Local()
  644. permissions := make([]*models.EnClassifyPermission, 0)
  645. for _, p := range req.EnPermissions {
  646. v := new(models.EnClassifyPermission)
  647. v.EnPermissionId = p
  648. v.EnClassifyId = req.ClassifyId
  649. v.CreateTime = nowTime
  650. permissions = append(permissions, v)
  651. }
  652. if e := models.ClearAndCreateEnClassifyPermissions(req.ClassifyId, permissions); e != nil {
  653. br.Msg = "保存失败"
  654. br.ErrMsg = "更新分类品种权限失败, Err: " + e.Error()
  655. return
  656. }
  657. br.Ret = 200
  658. br.Success = true
  659. br.Msg = "操作成功"
  660. }
  661. // MoveClassify
  662. // @Title 移动分类接口
  663. // @Description 移动分类
  664. // @Param request body models.EnglishClassifyMoveReq true "type json string"
  665. // @Success 200 新增成功
  666. // @router /classify/move [post]
  667. func (this *EnglishReportController) MoveClassify() {
  668. br := new(models.BaseResponse).Init()
  669. defer func() {
  670. this.Data["json"] = br
  671. this.ServeJSON()
  672. }()
  673. var req models.EnglishClassifyMoveReq
  674. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  675. if err != nil {
  676. br.Msg = "参数解析异常!"
  677. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  678. return
  679. }
  680. if req.ClassifyId <= 0 {
  681. br.Msg = "请选择分类"
  682. return
  683. }
  684. e, msg := services.MoveEnglishReportClassify(req)
  685. if e != nil {
  686. br.Msg = msg
  687. br.ErrMsg = "移动分类失败, Err: " + e.Error()
  688. return
  689. }
  690. br.Ret = 200
  691. br.Success = true
  692. br.Msg = "操作成功"
  693. }
  694. // SetEnabled
  695. // @Title 启用/禁用分类接口
  696. // @Description 启用/禁用分类
  697. // @Param request body models.ClassifyMoveReq true "type json string"
  698. // @Success 200 新增成功
  699. // @router /classify/enabled/set [post]
  700. func (this *EnglishReportController) SetEnabled() {
  701. br := new(models.BaseResponse).Init()
  702. defer func() {
  703. this.Data["json"] = br
  704. this.ServeJSON()
  705. }()
  706. var req models.EnglishClassifySetEnabledReq
  707. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  708. if err != nil {
  709. br.Msg = "参数解析异常!"
  710. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  711. return
  712. }
  713. if req.ClassifyId <= 0 {
  714. br.Msg = "请选择分类"
  715. return
  716. }
  717. if req.Enabled != 0 && req.Enabled != 1 {
  718. br.Msg = "请选择正确的启用禁用状态"
  719. return
  720. }
  721. item, err := models.GetEnglishReportClassifyById(req.ClassifyId)
  722. if err != nil {
  723. if err.Error() == utils.ErrNoRow() {
  724. br.Msg = "分类不存在"
  725. return
  726. }
  727. br.Msg = "获取信息失败"
  728. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  729. return
  730. }
  731. if item == nil {
  732. br.Msg = "分类不存在"
  733. return
  734. }
  735. ob := new(models.EnglishClassify)
  736. //设置分类启用、禁用状态
  737. err = ob.SetEnabled(req.ClassifyId, req.Enabled)
  738. if err != nil {
  739. br.Msg = "操作失败"
  740. br.ErrMsg = "操作失败,Err:" + err.Error()
  741. return
  742. }
  743. br.Ret = 200
  744. br.Success = true
  745. br.Msg = "操作成功"
  746. }