en_permission.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488
  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. // 禁用指定报告、指定路演无权限的品种
  261. reportId, _ := this.GetInt("ReportId", 0)
  262. videoId, _ := this.GetInt("VideoId", 0)
  263. limitIds := make([]int, 0)
  264. if reportId > 0 {
  265. ps, e := models.GetEnPermissionIdsByEnglishReportId(reportId)
  266. if e != nil {
  267. br.Msg = "获取失败"
  268. br.ErrMsg = "获取报告权限品种失败, Err: " + e.Error()
  269. return
  270. }
  271. limitIds = ps
  272. }
  273. if videoId > 0 {
  274. ps, e := models.GetEnPermissionIdsByEnglishVideoId(videoId)
  275. if e != nil {
  276. br.Msg = "获取失败"
  277. br.ErrMsg = "获取视频权限品种失败, Err: " + e.Error()
  278. return
  279. }
  280. limitIds = ps
  281. }
  282. cond := ``
  283. pars := make([]interface{}, 0)
  284. if keyword != "" {
  285. k := fmt.Sprint("%", keyword, "%")
  286. cond += fmt.Sprintf(` AND %s LIKE ?`, models.EnPermissionColumns.EnPermissionName)
  287. pars = append(pars, k)
  288. }
  289. list, e := models.GetEnPermissionUnionList(cond, pars)
  290. if e != nil {
  291. br.Msg = "获取失败"
  292. br.ErrMsg = "获取品种Union列表失败, Err: " + e.Error()
  293. return
  294. }
  295. // 品种树
  296. resp := make([]*models.EnPermissionItem, 0)
  297. childMap := make(map[int][]*models.EnPermissionItem)
  298. for _, v := range list {
  299. t := new(models.EnPermissionItem)
  300. t.PermissionId = v.EnPermissionId
  301. t.PermissionName = v.EnPermissionName
  302. t.CnPermissionName = v.CnPermissionName
  303. t.Enabled = v.Enabled
  304. t.ParentId = v.ParentId
  305. t.Sort = v.Sort
  306. t.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
  307. t.Child = make([]*models.EnPermissionItem, 0)
  308. if v.ParentId == 0 {
  309. resp = append(resp, t)
  310. continue
  311. }
  312. if v.ParentId > 0 {
  313. if childMap[v.ParentId] == nil {
  314. childMap[v.ParentId] = make([]*models.EnPermissionItem, 0)
  315. }
  316. // 无权限则隐藏
  317. if (reportId > 0 || videoId > 0) && !utils.InArrayByInt(limitIds, t.PermissionId) {
  318. continue
  319. }
  320. childMap[v.ParentId] = append(childMap[v.ParentId], t)
  321. }
  322. }
  323. for _, r := range resp {
  324. r.Child = childMap[r.PermissionId]
  325. }
  326. br.Ret = 200
  327. br.Success = true
  328. br.Msg = "获取成功"
  329. br.Data = resp
  330. }
  331. // Remove
  332. // @Title 删除品种权限
  333. // @Description 删除品种权限
  334. // @Param request body models.EnPermissionRemoveReq true "type json string"
  335. // @Success 200 Ret=200 操作成功
  336. // @router /remove [post]
  337. func (this *EnPermissionController) Remove() {
  338. br := new(models.BaseResponse).Init()
  339. defer func() {
  340. if br.ErrMsg == "" {
  341. br.IsSendEmail = false
  342. }
  343. this.Data["json"] = br
  344. this.ServeJSON()
  345. }()
  346. sysUser := this.SysUser
  347. if sysUser == nil {
  348. br.Msg = "请登录"
  349. br.ErrMsg = "请登录,SysUser Is Empty"
  350. br.Ret = 408
  351. return
  352. }
  353. var req models.EnPermissionRemoveReq
  354. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  355. br.Msg = "参数解析异常!"
  356. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  357. return
  358. }
  359. if req.PermissionId <= 0 {
  360. br.Msg = "参数有误"
  361. return
  362. }
  363. ob := new(models.EnPermission)
  364. item, e := ob.GetItemById(req.PermissionId)
  365. if e != nil {
  366. if e.Error() == utils.ErrNoRow() {
  367. br.Msg = "品种不存在, 请刷新页面"
  368. return
  369. }
  370. br.Msg = "操作失败"
  371. br.ErrMsg = "获取品种权限失败, Err: " + e.Error()
  372. return
  373. }
  374. // 校验是否有子品种
  375. childCond := fmt.Sprintf(` AND %s = ?`, models.EnPermissionColumns.ParentId)
  376. childPars := make([]interface{}, 0)
  377. childPars = append(childPars, req.PermissionId)
  378. num, e := ob.GetCountByCondition(childCond, childPars)
  379. if e != nil {
  380. br.Msg = "操作失败"
  381. br.ErrMsg = "获取品种子权限数量失败, Err: " + e.Error()
  382. return
  383. }
  384. if num > 0 {
  385. br.Msg = "请先删除该品种下关联品种"
  386. return
  387. }
  388. // 校验是否关联客户
  389. {
  390. cond := fmt.Sprintf(` AND %s = ?`, models.EnCompanyPermissionColumns.EnPermissionId)
  391. pars := make([]interface{}, 0)
  392. pars = append(pars, item.EnPermissionId)
  393. ob := new(models.EnCompanyPermission)
  394. num, e := ob.GetCountByCondition(cond, pars)
  395. if e != nil {
  396. br.Msg = "操作失败"
  397. br.ErrMsg = "获取品种关联客户数量失败, Err: " + e.Error()
  398. return
  399. }
  400. if num > 0 {
  401. br.Msg = "该品种有关联客户, 不允许删除"
  402. return
  403. }
  404. }
  405. // 删除品种
  406. if e = item.Del(); e != nil {
  407. br.Msg = "操作失败"
  408. br.ErrMsg = "删除品种失败, Err: " + e.Error()
  409. return
  410. }
  411. br.Ret = 200
  412. br.Success = true
  413. br.Msg = "操作成功"
  414. }
  415. // Move
  416. // @Title 移动品种权限
  417. // @Description 移动品种权限
  418. // @Param request body models.EnPermissionMoveReq true "type json string"
  419. // @Success 200 Ret=200 操作成功
  420. // @router /move [post]
  421. func (this *EnPermissionController) Move() {
  422. br := new(models.BaseResponse).Init()
  423. defer func() {
  424. if br.ErrMsg == "" {
  425. br.IsSendEmail = false
  426. }
  427. this.Data["json"] = br
  428. this.ServeJSON()
  429. }()
  430. sysUser := this.SysUser
  431. if sysUser == nil {
  432. br.Msg = "请登录"
  433. br.ErrMsg = "请登录,SysUser Is Empty"
  434. br.Ret = 408
  435. return
  436. }
  437. var req models.EnPermissionMoveReq
  438. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  439. br.Msg = "参数解析异常!"
  440. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  441. return
  442. }
  443. if req.PermissionId <= 0 {
  444. br.Msg = "参数有误"
  445. return
  446. }
  447. e, msg := services.MoveEnPermission(req)
  448. if e != nil {
  449. br.Msg = msg
  450. br.ErrMsg = "移动品种失败, Err: " + e.Error()
  451. return
  452. }
  453. br.Ret = 200
  454. br.Success = true
  455. br.Msg = "操作成功"
  456. }