sys_group.go 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  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 SysGroupController struct {
  13. BaseAuthController
  14. }
  15. // @Title 新增分组
  16. // @Description 新增分组接口
  17. // @Param request body system.SysGroupAddReq true "type json string"
  18. // @Success 200 新增成功
  19. // @router /group/add [post]
  20. func (this *SysGroupController) Add() {
  21. //br := new(models.BaseResponse).Init()
  22. //defer func() {
  23. // this.Data["json"] = br
  24. // this.ServeJSON()
  25. //}()
  26. //var req system.SysGroupAddReq
  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.DepartmentId <= 0 {
  34. // br.Msg = "请选择部门"
  35. // br.ErrMsg = "部门ID不可为空"
  36. // return
  37. //}
  38. //if req.GroupName == "" {
  39. // br.Msg = "分组名称不能为空"
  40. // return
  41. //}
  42. //groupNameArr := strings.Split(req.GroupName, ",")
  43. //for _, v := range groupNameArr {
  44. // count, err := system.GetSysGroupCount(req.DepartmentId, 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.CreateTime = time.Now()
  55. // _, e := system.AddSysGroup(item)
  56. // if e != nil {
  57. // br.Msg = "新增失败"
  58. // br.ErrMsg = "新增失败,Err:" + e.Error()
  59. // return
  60. // }
  61. // }
  62. //}
  63. //br.Ret = 200
  64. //br.Success = true
  65. //br.Msg = "新增成功"
  66. br := new(models.BaseResponse).Init()
  67. defer func() {
  68. this.Data["json"] = br
  69. this.ServeJSON()
  70. }()
  71. var req system.SysGroupAddReq
  72. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  73. if err != nil {
  74. br.Msg = "参数解析异常!"
  75. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  76. return
  77. }
  78. if req.DepartmentId <= 0 {
  79. br.Msg = "请选择部门"
  80. br.ErrMsg = "部门ID不可为空"
  81. return
  82. }
  83. //构建部门的分组树
  84. groupList, err := system.GetSysGroupByDepartmentId(req.DepartmentId)
  85. if err != nil {
  86. br.Msg = "获取数据失败,获取当前部门的分组列表失败"
  87. br.ErrMsg = "获取当前部门的分组列表失败,Err:" + err.Error()
  88. return
  89. }
  90. //获取传入部门下的分组名称,分组名称为唯一标识,不会重复
  91. groupNameArr := strings.Split(req.GroupName, ",")
  92. root := new(services.GroupNode)
  93. services.BuildGroupTree(groupList, 0, 2, root)
  94. //现有的分组名称
  95. existGroupMap := make(map[string]bool, len(root.Child))
  96. for _, v := range root.Child {
  97. existGroupMap[v.GroupName] = false
  98. }
  99. //传入的分组名称
  100. reqGroupMap := make(map[string]int, len(groupNameArr))
  101. for _, v := range groupNameArr {
  102. reqGroupMap[v] = 1
  103. }
  104. //新增分组名称
  105. newGroupMap := make(map[string]int)
  106. groupIds := make([]int, 0)
  107. if len(reqGroupMap) > 0 {
  108. for k, _ := range reqGroupMap {
  109. if _, ok := existGroupMap[k]; !ok {
  110. newGroupMap[k] = 1
  111. groupIds = append(groupIds, 0)
  112. } else {
  113. existGroupMap[k] = true
  114. }
  115. }
  116. }
  117. var deleteIds []int
  118. var addGroup bool
  119. //删除所有分组即可
  120. if req.GroupName == "" {
  121. addGroup = false
  122. for _, node := range root.Child {
  123. //分组Id
  124. deleteIds = append(deleteIds, node.GroupId)
  125. //teamId
  126. for _, subNode := range node.Child {
  127. deleteIds = append(deleteIds, subNode.GroupId)
  128. }
  129. }
  130. } else {
  131. addGroup = true
  132. for k, v := range existGroupMap {
  133. if !v {
  134. for _, node := range root.Child {
  135. if node.GroupName == k {
  136. //分组Id
  137. deleteIds = append(deleteIds, node.GroupId)
  138. //teamId
  139. for _, subNode := range node.Child {
  140. deleteIds = append(deleteIds, subNode.GroupId)
  141. }
  142. }
  143. }
  144. }
  145. }
  146. }
  147. if addGroup {
  148. //新增分组
  149. for k, _ := range newGroupMap {
  150. item := new(system.SysGroup)
  151. item.GroupName = k
  152. item.DepartmentId = req.DepartmentId
  153. item.CreateTime = time.Now()
  154. _, e := system.AddSysGroup(item)
  155. if e != nil {
  156. br.Msg = "新增失败"
  157. br.ErrMsg = "新增失败,Err:" + e.Error()
  158. return
  159. }
  160. }
  161. }
  162. if len(deleteIds) > 0 {
  163. err = services.DeleteSysGroupByIds(deleteIds)
  164. if err != nil {
  165. br.Msg = "删除失败"
  166. br.ErrMsg = "删除失败,Err:" + err.Error()
  167. return
  168. }
  169. }
  170. br.Ret = 200
  171. br.Success = true
  172. br.Msg = "保存成功"
  173. }
  174. // @Title 修改分组
  175. // @Description 修改分组接口
  176. // @Param request body system.SysGroupEditReq true "type json string"
  177. // @Success 200 修改成功
  178. // @router /group/edit [post]
  179. func (this *SysGroupController) Edit() {
  180. br := new(models.BaseResponse).Init()
  181. defer func() {
  182. this.Data["json"] = br
  183. this.ServeJSON()
  184. }()
  185. var req system.SysGroupEditReq
  186. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  187. if err != nil {
  188. br.Msg = "参数解析异常!"
  189. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  190. return
  191. }
  192. if req.GroupId <= 0 {
  193. br.Msg = "参数错误"
  194. br.ErrMsg = "参数错误,GroupId 小于等于0 "
  195. return
  196. }
  197. if req.GroupName == "" {
  198. br.Msg = "分组名称不能为空"
  199. return
  200. }
  201. item, err := system.GetSysGroupByName(req.GroupName)
  202. if err != nil && !utils.IsErrNoRow(err) {
  203. br.Msg = "获取数据失败"
  204. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  205. return
  206. }
  207. if item != nil && item.GroupId > 0 {
  208. if item.GroupId != req.GroupId {
  209. br.Msg = "名称已存在,请重新输入"
  210. return
  211. }
  212. }
  213. err = system.ModifySysGroup(req.GroupName, req.GroupId)
  214. if err != nil {
  215. br.Msg = "修改失败"
  216. br.ErrMsg = "修改失败,Err:" + err.Error()
  217. return
  218. }
  219. br.Ret = 200
  220. br.Success = true
  221. br.Msg = "修改成功"
  222. }
  223. // @Title 删除分组
  224. // @Description 删除分组接口
  225. // @Param request body system.SysGroupDeleteReq true "type json string"
  226. // @Success 200 删除成功
  227. // @router /group/delete [post]
  228. func (this *SysGroupController) Delete() {
  229. br := new(models.BaseResponse).Init()
  230. defer func() {
  231. this.Data["json"] = br
  232. this.ServeJSON()
  233. }()
  234. var req system.SysGroupDeleteReq
  235. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  236. if err != nil {
  237. br.Msg = "参数解析异常!"
  238. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  239. return
  240. }
  241. if req.GroupId <= 0 {
  242. br.Msg = "参数错误"
  243. br.ErrMsg = "参数错误,GroupId 小于等于0 "
  244. return
  245. }
  246. err = system.DeleteSysGroup(req.GroupId)
  247. if err != nil {
  248. br.Msg = "删除失败"
  249. br.ErrMsg = "删除失败,Err:" + err.Error()
  250. return
  251. }
  252. err = system.ClearSysUserGroup(req.GroupId)
  253. if err != nil {
  254. br.Msg = "删除失败"
  255. br.ErrMsg = "删除失败,情况分组失败,Err:" + err.Error()
  256. return
  257. }
  258. br.Ret = 200
  259. br.Success = true
  260. br.Msg = "删除成功"
  261. }
  262. // SetSort
  263. // @Title 分组排序
  264. // @Description 分组排序
  265. // @Param request body system.SysGroupEditReq true "type json string"
  266. // @Success 200 修改成功
  267. // @router /group/set_sort [post]
  268. func (this *SysGroupController) SetSort() {
  269. br := new(models.BaseResponse).Init()
  270. defer func() {
  271. if br.ErrMsg == "" {
  272. br.IsSendEmail = false
  273. }
  274. this.Data["json"] = br
  275. this.ServeJSON()
  276. }()
  277. var req system.SysGroupSortReq
  278. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  279. if err != nil {
  280. br.Msg = "参数解析异常!"
  281. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  282. return
  283. }
  284. // 部门排序
  285. if len(req.DepartmentIds) > 0 {
  286. updateArr := make([]*system.DepartmentSort, 0)
  287. for k, d := range req.DepartmentIds {
  288. updateArr = append(updateArr, &system.DepartmentSort{
  289. DepartmentId: d,
  290. Sort: k + 1,
  291. })
  292. }
  293. if e := system.MultiUpdateDepartmentSort(updateArr); e != nil {
  294. br.Msg = "操作失败"
  295. br.ErrMsg = "批量更新部门排序失败, Err: " + e.Error()
  296. return
  297. }
  298. }
  299. // 分组排序/小组排序
  300. if len(req.GroupIds) > 0 || len(req.TeamIds) > 0 {
  301. updateArr := make([]*system.GroupSort, 0)
  302. if len(req.GroupIds) > 0 {
  303. for k, g := range req.GroupIds {
  304. updateArr = append(updateArr, &system.GroupSort{
  305. GroupId: g,
  306. Sort: k + 1,
  307. })
  308. }
  309. }
  310. if len(req.TeamIds) > 0 {
  311. for k, t := range req.TeamIds {
  312. updateArr = append(updateArr, &system.GroupSort{
  313. GroupId: t,
  314. Sort: k + 1,
  315. })
  316. }
  317. }
  318. if len(updateArr) > 0 {
  319. if e := system.MultiUpdateGroupSort(updateArr); e != nil {
  320. br.Msg = "操作失败"
  321. br.ErrMsg = "批量更新分组排序失败, Err: " + e.Error()
  322. return
  323. }
  324. }
  325. }
  326. br.Ret = 200
  327. br.Success = true
  328. br.Msg = "操作成功"
  329. }