sys_team.go 6.3 KB

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