en_permission.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494
  1. package english_report
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/controllers"
  5. "eta/eta_api/models"
  6. "eta/eta_api/services"
  7. "eta/eta_api/utils"
  8. "fmt"
  9. "strings"
  10. "time"
  11. )
  12. // EnPermissionController 英文权限
  13. type EnPermissionController struct {
  14. controllers.BaseAuthController
  15. }
  16. // Add
  17. // @Title 新增品种权限
  18. // @Description 新增品种权限
  19. // @Param request body models.EnPermissionAddReq true "type json string"
  20. // @Success 200 Ret=200 操作成功
  21. // @router /add [post]
  22. func (this *EnPermissionController) Add() {
  23. br := new(models.BaseResponse).Init()
  24. defer func() {
  25. if br.ErrMsg == "" {
  26. br.IsSendEmail = false
  27. }
  28. this.Data["json"] = br
  29. this.ServeJSON()
  30. }()
  31. sysUser := this.SysUser
  32. if sysUser == nil {
  33. br.Msg = "请登录"
  34. br.ErrMsg = "请登录,SysUser Is Empty"
  35. br.Ret = 408
  36. return
  37. }
  38. var req models.EnPermissionAddReq
  39. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  40. br.Msg = "参数解析异常!"
  41. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  42. return
  43. }
  44. req.PermissionName = strings.TrimSpace(req.PermissionName)
  45. if req.PermissionName == "" {
  46. br.Msg = "请输入品种名称"
  47. return
  48. }
  49. if req.Enabled != 1 && req.Enabled != 0 {
  50. br.Msg = "请设置正确的状态"
  51. return
  52. }
  53. // 重名校验
  54. existOB := new(models.EnPermission)
  55. existCond := fmt.Sprintf(` AND %s = ? AND %s = ?`, models.EnPermissionColumns.EnPermissionName, models.EnPermissionColumns.ParentId)
  56. existPars := make([]interface{}, 0)
  57. existPars = append(existPars, req.PermissionName, req.ParentId)
  58. exist, e := existOB.GetItemByCondition(existCond, existPars)
  59. if e != nil && e.Error() != utils.ErrNoRow() {
  60. br.Msg = "操作失败"
  61. br.ErrMsg = "获取重名品种权限失败, Err: " + e.Error()
  62. return
  63. }
  64. if exist != nil && exist.EnPermissionId > 0 {
  65. br.Msg = "品种名称已存在"
  66. return
  67. }
  68. // 获取最大的排序值
  69. item := new(models.EnPermission)
  70. maxSort, e := item.GetMaxSort()
  71. if e != nil {
  72. br.Msg = "操作失败"
  73. br.ErrMsg = "查询品种排序失败, Err: " + e.Error()
  74. return
  75. }
  76. // 新增
  77. item.EnPermissionName = req.PermissionName
  78. item.ParentId = req.ParentId
  79. item.Sort = maxSort + 1
  80. item.Enabled = req.Enabled
  81. item.CreateTime = time.Now().Local()
  82. item.ModifyTime = time.Now().Local()
  83. if e = item.Create(); e != nil {
  84. br.Msg = "操作失败"
  85. br.ErrMsg = "新增品种权限失败, Err: " + e.Error()
  86. return
  87. }
  88. br.Ret = 200
  89. br.Success = true
  90. br.Msg = "操作成功"
  91. br.Data = item.EnPermissionId
  92. }
  93. // Edit
  94. // @Title 编辑品种权限
  95. // @Description 编辑品种权限
  96. // @Param request body models.EnPermissionAddReq true "type json string"
  97. // @Success 200 Ret=200 操作成功
  98. // @router /edit [post]
  99. func (this *EnPermissionController) Edit() {
  100. br := new(models.BaseResponse).Init()
  101. defer func() {
  102. if br.ErrMsg == "" {
  103. br.IsSendEmail = false
  104. }
  105. this.Data["json"] = br
  106. this.ServeJSON()
  107. }()
  108. sysUser := this.SysUser
  109. if sysUser == nil {
  110. br.Msg = "请登录"
  111. br.ErrMsg = "请登录,SysUser Is Empty"
  112. br.Ret = 408
  113. return
  114. }
  115. var req models.EnPermissionEditReq
  116. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  117. br.Msg = "参数解析异常!"
  118. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  119. return
  120. }
  121. if req.PermissionId <= 0 {
  122. br.Msg = "参数有误"
  123. return
  124. }
  125. req.PermissionName = strings.TrimSpace(req.PermissionName)
  126. if req.PermissionName == "" {
  127. br.Msg = "请输入品种名称"
  128. return
  129. }
  130. // 重名校验
  131. ob := new(models.EnPermission)
  132. existCond := fmt.Sprintf(` AND %s = ? AND %s = ? AND %s <> ?`, models.EnPermissionColumns.EnPermissionName, models.EnPermissionColumns.ParentId, models.EnPermissionColumns.EnPermissionId)
  133. existPars := make([]interface{}, 0)
  134. existPars = append(existPars, req.PermissionName, req.ParentId, req.PermissionId)
  135. exist, e := ob.GetItemByCondition(existCond, existPars)
  136. if e != nil && e.Error() != utils.ErrNoRow() {
  137. br.Msg = "操作失败"
  138. br.ErrMsg = "获取重名品种权限失败, Err: " + e.Error()
  139. return
  140. }
  141. if exist != nil && exist.EnPermissionId > 0 {
  142. br.Msg = "品种名称已存在"
  143. return
  144. }
  145. item, e := ob.GetItemById(req.PermissionId)
  146. if e != nil {
  147. if e.Error() == utils.ErrNoRow() {
  148. br.Msg = "品种不存在, 请刷新页面"
  149. return
  150. }
  151. br.Msg = "操作失败"
  152. br.ErrMsg = "获取品种权限失败, Err: " + e.Error()
  153. return
  154. }
  155. originPid := item.ParentId
  156. item.EnPermissionName = req.PermissionName
  157. item.ParentId = req.ParentId
  158. item.Enabled = req.Enabled
  159. item.ModifyTime = time.Now().Local()
  160. if e = item.Update([]string{"EnPermissionName", "ParentId", "Enabled", "ModifyTime"}); e != nil {
  161. br.Msg = "操作失败"
  162. br.ErrMsg = "更新品种权限失败, Err: " + e.Error()
  163. return
  164. }
  165. // 若二级分类转为一级分类, 则清空对应客户、分类权限
  166. if originPid > 0 && req.ParentId == 0 {
  167. if e = models.ClearEnPermissionsByPermissionId(item.EnPermissionId); e != nil {
  168. br.Msg = "操作失败"
  169. br.ErrMsg = "清空英文分类权限失败, Err: " + e.Error()
  170. return
  171. }
  172. }
  173. // 如果是一级品种被启用,则所有二级设置成启用, 如果一级品种被禁用,则所有二级设置成禁用
  174. if req.ParentId == 0 {
  175. if e = item.SetEnabled(item.EnPermissionId, req.Enabled); e != nil {
  176. br.Msg = "操作失败"
  177. br.ErrMsg = "更新英文分类权限失败, Err: " + e.Error()
  178. return
  179. }
  180. }
  181. br.Ret = 200
  182. br.Success = true
  183. br.Msg = "操作成功"
  184. br.Data = item.EnPermissionId
  185. }
  186. // ParentList
  187. // @Title 父级品种列表
  188. // @Description 父级品种列表
  189. // @Success 200 Ret=200 操作成功
  190. // @router /parent/list [get]
  191. func (this *EnPermissionController) ParentList() {
  192. br := new(models.BaseResponse).Init()
  193. defer func() {
  194. if br.ErrMsg == "" {
  195. br.IsSendEmail = false
  196. }
  197. this.Data["json"] = br
  198. this.ServeJSON()
  199. }()
  200. sysUser := this.SysUser
  201. if sysUser == nil {
  202. br.Msg = "请登录"
  203. br.ErrMsg = "请登录,SysUser Is Empty"
  204. br.Ret = 408
  205. return
  206. }
  207. cond := fmt.Sprintf(` AND %s = ?`, models.EnPermissionColumns.ParentId)
  208. pars := make([]interface{}, 0)
  209. pars = append(pars, 0)
  210. ob := new(models.EnPermission)
  211. list, e := ob.GetItemsByCondition(cond, pars, []string{}, "sort ASC, create_time ASC")
  212. if e != nil {
  213. br.Msg = "获取失败"
  214. br.ErrMsg = "获取父级品种列表失败, Err: " + e.Error()
  215. return
  216. }
  217. resp := make([]*models.EnPermissionItem, 0)
  218. for _, v := range list {
  219. t := new(models.EnPermissionItem)
  220. t.PermissionId = v.EnPermissionId
  221. t.PermissionName = v.EnPermissionName
  222. t.CnPermissionName = v.CnPermissionName
  223. t.ParentId = v.ParentId
  224. t.Sort = v.Sort
  225. t.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
  226. t.Child = make([]*models.EnPermissionItem, 0)
  227. resp = append(resp, t)
  228. }
  229. br.Ret = 200
  230. br.Success = true
  231. br.Msg = "获取成功"
  232. br.Data = resp
  233. }
  234. // List
  235. // @Title 品种列表
  236. // @Description 品种列表
  237. // @Param Keyword query string false "关键词"
  238. // @Param ReportId query int false "报告ID-用于邮件推送时过滤掉无权限的品种"
  239. // @Param VideoId query int false "路演视频ID-用于邮件推送时过滤掉无权限的品种"
  240. // @Success 200 Ret=200 操作成功
  241. // @router /list [get]
  242. func (this *EnPermissionController) List() {
  243. br := new(models.BaseResponse).Init()
  244. defer func() {
  245. if br.ErrMsg == "" {
  246. br.IsSendEmail = false
  247. }
  248. this.Data["json"] = br
  249. this.ServeJSON()
  250. }()
  251. sysUser := this.SysUser
  252. if sysUser == nil {
  253. br.Msg = "请登录"
  254. br.ErrMsg = "请登录,SysUser Is Empty"
  255. br.Ret = 408
  256. return
  257. }
  258. keyword := this.GetString("Keyword", "")
  259. keyword = strings.TrimSpace(keyword)
  260. enabled, _ := this.GetInt("Enabled", -1)
  261. // 禁用指定报告、指定路演无权限的品种
  262. reportId, _ := this.GetInt("ReportId", 0)
  263. videoId, _ := this.GetInt("VideoId", 0)
  264. limitIds := make([]int, 0)
  265. if reportId > 0 {
  266. ps, e := models.GetEnPermissionIdsByEnglishReportId(reportId)
  267. if e != nil {
  268. br.Msg = "获取失败"
  269. br.ErrMsg = "获取报告权限品种失败, Err: " + e.Error()
  270. return
  271. }
  272. limitIds = ps
  273. }
  274. if videoId > 0 {
  275. ps, e := models.GetEnPermissionIdsByEnglishVideoId(videoId)
  276. if e != nil {
  277. br.Msg = "获取失败"
  278. br.ErrMsg = "获取视频权限品种失败, Err: " + e.Error()
  279. return
  280. }
  281. limitIds = ps
  282. }
  283. cond := ``
  284. pars := make([]interface{}, 0)
  285. if keyword != "" {
  286. k := fmt.Sprint("%", keyword, "%")
  287. cond += fmt.Sprintf(` AND %s LIKE ?`, models.EnPermissionColumns.EnPermissionName)
  288. pars = append(pars, k)
  289. }
  290. list, e := models.GetEnPermissionUnionList(cond, pars)
  291. if e != nil {
  292. br.Msg = "获取失败"
  293. br.ErrMsg = "获取品种Union列表失败, Err: " + e.Error()
  294. return
  295. }
  296. // 品种树
  297. resp := make([]*models.EnPermissionItem, 0)
  298. childMap := make(map[int][]*models.EnPermissionItem)
  299. for _, v := range list {
  300. t := new(models.EnPermissionItem)
  301. t.PermissionId = v.EnPermissionId
  302. t.PermissionName = v.EnPermissionName
  303. t.CnPermissionName = v.CnPermissionName
  304. t.Enabled = v.Enabled
  305. t.ParentId = v.ParentId
  306. t.Sort = v.Sort
  307. t.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
  308. t.Child = make([]*models.EnPermissionItem, 0)
  309. if v.ParentId == 0 {
  310. resp = append(resp, t)
  311. continue
  312. }
  313. if v.ParentId > 0 {
  314. if v.Enabled == 0 && enabled == 1 {
  315. continue
  316. }
  317. if childMap[v.ParentId] == nil {
  318. childMap[v.ParentId] = make([]*models.EnPermissionItem, 0)
  319. }
  320. // 无权限则隐藏
  321. if (reportId > 0 || videoId > 0) && !utils.InArrayByInt(limitIds, t.PermissionId) {
  322. continue
  323. }
  324. childMap[v.ParentId] = append(childMap[v.ParentId], t)
  325. }
  326. }
  327. for _, r := range resp {
  328. r.Child = childMap[r.PermissionId]
  329. }
  330. // todo 过滤禁用品种的一级分类,如果一级分类没有二级分类
  331. br.Ret = 200
  332. br.Success = true
  333. br.Msg = "获取成功"
  334. br.Data = resp
  335. }
  336. // Remove
  337. // @Title 删除品种权限
  338. // @Description 删除品种权限
  339. // @Param request body models.EnPermissionRemoveReq true "type json string"
  340. // @Success 200 Ret=200 操作成功
  341. // @router /remove [post]
  342. func (this *EnPermissionController) Remove() {
  343. br := new(models.BaseResponse).Init()
  344. defer func() {
  345. if br.ErrMsg == "" {
  346. br.IsSendEmail = false
  347. }
  348. this.Data["json"] = br
  349. this.ServeJSON()
  350. }()
  351. sysUser := this.SysUser
  352. if sysUser == nil {
  353. br.Msg = "请登录"
  354. br.ErrMsg = "请登录,SysUser Is Empty"
  355. br.Ret = 408
  356. return
  357. }
  358. var req models.EnPermissionRemoveReq
  359. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  360. br.Msg = "参数解析异常!"
  361. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  362. return
  363. }
  364. if req.PermissionId <= 0 {
  365. br.Msg = "参数有误"
  366. return
  367. }
  368. ob := new(models.EnPermission)
  369. item, e := ob.GetItemById(req.PermissionId)
  370. if e != nil {
  371. if e.Error() == utils.ErrNoRow() {
  372. br.Msg = "品种不存在, 请刷新页面"
  373. return
  374. }
  375. br.Msg = "操作失败"
  376. br.ErrMsg = "获取品种权限失败, Err: " + e.Error()
  377. return
  378. }
  379. // 校验是否有子品种
  380. childCond := fmt.Sprintf(` AND %s = ?`, models.EnPermissionColumns.ParentId)
  381. childPars := make([]interface{}, 0)
  382. childPars = append(childPars, req.PermissionId)
  383. num, e := ob.GetCountByCondition(childCond, childPars)
  384. if e != nil {
  385. br.Msg = "操作失败"
  386. br.ErrMsg = "获取品种子权限数量失败, Err: " + e.Error()
  387. return
  388. }
  389. if num > 0 {
  390. br.Msg = "请先删除该品种下关联品种"
  391. return
  392. }
  393. // 校验是否关联客户
  394. {
  395. cond := fmt.Sprintf(` AND %s = ?`, models.EnCompanyPermissionColumns.EnPermissionId)
  396. pars := make([]interface{}, 0)
  397. pars = append(pars, item.EnPermissionId)
  398. ob := new(models.EnCompanyPermission)
  399. num, e := ob.GetCountByCondition(cond, pars)
  400. if e != nil {
  401. br.Msg = "操作失败"
  402. br.ErrMsg = "获取品种关联客户数量失败, Err: " + e.Error()
  403. return
  404. }
  405. if num > 0 {
  406. br.Msg = "该品种有关联客户, 不允许删除"
  407. return
  408. }
  409. }
  410. // 删除品种
  411. if e = item.Del(); e != nil {
  412. br.Msg = "操作失败"
  413. br.ErrMsg = "删除品种失败, Err: " + e.Error()
  414. return
  415. }
  416. br.Ret = 200
  417. br.Success = true
  418. br.Msg = "操作成功"
  419. }
  420. // Move
  421. // @Title 移动品种权限
  422. // @Description 移动品种权限
  423. // @Param request body models.EnPermissionMoveReq true "type json string"
  424. // @Success 200 Ret=200 操作成功
  425. // @router /move [post]
  426. func (this *EnPermissionController) Move() {
  427. br := new(models.BaseResponse).Init()
  428. defer func() {
  429. if br.ErrMsg == "" {
  430. br.IsSendEmail = false
  431. }
  432. this.Data["json"] = br
  433. this.ServeJSON()
  434. }()
  435. sysUser := this.SysUser
  436. if sysUser == nil {
  437. br.Msg = "请登录"
  438. br.ErrMsg = "请登录,SysUser Is Empty"
  439. br.Ret = 408
  440. return
  441. }
  442. var req models.EnPermissionMoveReq
  443. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  444. br.Msg = "参数解析异常!"
  445. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  446. return
  447. }
  448. if req.PermissionId <= 0 {
  449. br.Msg = "参数有误"
  450. return
  451. }
  452. e, msg := services.MoveEnPermission(req)
  453. if e != nil {
  454. br.Msg = msg
  455. br.ErrMsg = "移动品种失败, Err: " + e.Error()
  456. return
  457. }
  458. br.Ret = 200
  459. br.Success = true
  460. br.Msg = "操作成功"
  461. }