en_permission.go 12 KB

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