sys_team.go 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/models"
  5. "eta/eta_api/models/system"
  6. "eta/eta_api/services"
  7. "eta/eta_api/utils"
  8. "strings"
  9. "time"
  10. )
  11. // 部门组
  12. type SysTeamController struct {
  13. BaseAuthController
  14. }
  15. // @Title 新增分组
  16. // @Description 新增分组接口
  17. // @Param request body system.SysTeamAddReq true "type json string"
  18. // @Success 200 新增成功
  19. // @router /team/add [post]
  20. func (this *SysTeamController) Add() {
  21. br := new(models.BaseResponse).Init()
  22. defer func() {
  23. this.Data["json"] = br
  24. this.ServeJSON()
  25. }()
  26. var req system.SysTeamAddReq
  27. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  28. if err != nil {
  29. br.Msg = "参数解析异常!"
  30. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  31. return
  32. }
  33. if req.GroupId <= 0 {
  34. br.Msg = "请选择部门"
  35. br.ErrMsg = "大组ID不可为空"
  36. return
  37. }
  38. //构建部门的分组树
  39. teamList, err := system.GetChildSysGroupByGroupId(req.GroupId)
  40. teamNameArr := strings.Split(req.TeamName, ",")
  41. if err != nil {
  42. br.Msg = "获取数据失败,获取当前分组的team列表失败"
  43. br.ErrMsg = "获取当前部门的分组列表失败,Err:" + err.Error()
  44. return
  45. }
  46. //现有的分组名称
  47. existTeamMap := make(map[string]bool, len(teamList))
  48. for _, v := range teamList {
  49. existTeamMap[v.GroupName] = false
  50. }
  51. //传入的分组名称
  52. reqTeamMap := make(map[string]int, len(teamNameArr))
  53. for _, v := range teamNameArr {
  54. reqTeamMap[v] = 1
  55. }
  56. //新增分组名称
  57. newTeamMap := make(map[string]int)
  58. groupIds := make([]int, 0)
  59. if len(reqTeamMap) > 0 {
  60. for k, _ := range reqTeamMap {
  61. if _, ok := existTeamMap[k]; !ok {
  62. newTeamMap[k] = 1
  63. groupIds = append(groupIds, 0)
  64. } else {
  65. existTeamMap[k] = true
  66. }
  67. }
  68. }
  69. var deleteIds []int
  70. var addGroup bool
  71. //if req.TeamName == "" {
  72. // br.Msg = "分组名称不能为空"
  73. // return
  74. //}
  75. //删除所有team即可
  76. if req.TeamName == "" {
  77. addGroup = false
  78. for _, node := range teamList {
  79. //teamId
  80. deleteIds = append(deleteIds, node.GroupId)
  81. }
  82. } else {
  83. addGroup = true
  84. for k, v := range existTeamMap {
  85. if !v {
  86. for _, node := range teamList {
  87. if node.GroupName == k {
  88. //分组Id
  89. deleteIds = append(deleteIds, node.GroupId)
  90. }
  91. }
  92. }
  93. }
  94. }
  95. if addGroup {
  96. for k, _ := range newTeamMap {
  97. item := new(system.SysGroup)
  98. item.GroupName = k
  99. item.DepartmentId = req.DepartmentId
  100. item.ParentId = req.GroupId
  101. item.CreateTime = time.Now()
  102. groupId, e := system.AddSysGroup(item)
  103. if e != nil {
  104. br.Msg = "新增失败"
  105. br.ErrMsg = "新增失败,Err:" + e.Error()
  106. return
  107. }
  108. // 同步分组缓存
  109. if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeSandbox {
  110. var syncData system.SyncGroupData
  111. syncData.Source = utils.SOURCE_ETA_FLAG
  112. syncData.GroupId = int(groupId)
  113. _ = utils.Rc.LPush(utils.CACHE_SYNC_GROUP, syncData)
  114. }
  115. }
  116. }
  117. if len(deleteIds)>0 {
  118. err =services.DeleteSysGroupByIds(deleteIds)
  119. if err != nil {
  120. br.Msg = "删除失败"
  121. br.ErrMsg = "删除失败,Err:" + err.Error()
  122. return
  123. }
  124. // 同步分组缓存
  125. if utils.BusinessCode == utils.BusinessCodeRelease {
  126. for _, groupId := range deleteIds {
  127. var syncData system.SyncGroupData
  128. syncData.Source = utils.SOURCE_ETA_FLAG
  129. syncData.GroupId = groupId
  130. _ = utils.Rc.LPush(utils.CACHE_SYNC_GROUP, syncData)
  131. }
  132. }
  133. }
  134. br.Ret = 200
  135. br.Success = true
  136. br.Msg = "保存成功"
  137. }
  138. // @Title 修改分组
  139. // @Description 修改分组接口
  140. // @Param request body system.SysTeamEditReq true "type json string"
  141. // @Success 200 修改成功
  142. // @router /team/edit [post]
  143. func (this *SysTeamController) Edit() {
  144. br := new(models.BaseResponse).Init()
  145. defer func() {
  146. this.Data["json"] = br
  147. this.ServeJSON()
  148. }()
  149. var req system.SysTeamEditReq
  150. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  151. if err != nil {
  152. br.Msg = "参数解析异常!"
  153. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  154. return
  155. }
  156. if req.TeamId <= 0 {
  157. br.Msg = "参数错误"
  158. br.ErrMsg = "参数错误,GroupId 小于等于0 "
  159. return
  160. }
  161. if req.TeamName == "" {
  162. br.Msg = "分组名称不能为空"
  163. return
  164. }
  165. item, err := system.GetSysTeamByName(req.TeamName)
  166. if err != nil && !utils.IsErrNoRow(err) {
  167. br.Msg = "获取数据失败"
  168. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  169. return
  170. }
  171. if item != nil {
  172. if item.GroupId != req.TeamId && item.GroupId > 0 {
  173. br.Msg = "名称已存在,请重新输入"
  174. return
  175. }
  176. }
  177. err = system.ModifySysTeam(req.TeamName, req.TeamId)
  178. if err != nil {
  179. br.Msg = "修改失败"
  180. br.ErrMsg = "修改失败,Err:" + err.Error()
  181. return
  182. }
  183. // 同步分组缓存
  184. if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeSandbox {
  185. var syncData system.SyncGroupData
  186. syncData.Source = utils.SOURCE_ETA_FLAG
  187. syncData.GroupId = item.GroupId
  188. _ = utils.Rc.LPush(utils.CACHE_SYNC_GROUP, syncData)
  189. }
  190. br.Ret = 200
  191. br.Success = true
  192. br.Msg = "修改成功"
  193. }
  194. // @Title 删除分组
  195. // @Description 删除分组接口
  196. // @Param request body system.SysTeamDeleteReq true "type json string"
  197. // @Success 200 删除成功
  198. // @router /team/delete [post]
  199. func (this *SysTeamController) Delete() {
  200. br := new(models.BaseResponse).Init()
  201. defer func() {
  202. this.Data["json"] = br
  203. this.ServeJSON()
  204. }()
  205. var req system.SysTeamDeleteReq
  206. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  207. if err != nil {
  208. br.Msg = "参数解析异常!"
  209. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  210. return
  211. }
  212. if req.TeamId <= 0 {
  213. br.Msg = "参数错误"
  214. br.ErrMsg = "参数错误,GroupId 小于等于0 "
  215. return
  216. }
  217. err = system.DeleteSysGroup(req.TeamId)
  218. if err != nil {
  219. br.Msg = "删除失败"
  220. br.ErrMsg = "删除失败,Err:" + err.Error()
  221. return
  222. }
  223. err = system.ClearSysUserTeam(req.TeamId)
  224. if err != nil {
  225. br.Msg = "删除失败"
  226. br.ErrMsg = "删除失败,情况分组失败,Err:" + err.Error()
  227. return
  228. }
  229. // 同步分组缓存
  230. if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeSandbox {
  231. var syncData system.SyncGroupData
  232. syncData.Source = utils.SOURCE_ETA_FLAG
  233. syncData.GroupId = req.TeamId
  234. _ = utils.Rc.LPush(utils.CACHE_SYNC_GROUP, syncData)
  235. }
  236. br.Ret = 200
  237. br.Success = true
  238. br.Msg = "删除成功"
  239. }