english_classify.go 20 KB

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