sys_user.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. package api
  2. import (
  3. "gfast/app/system/model"
  4. "gfast/app/system/service"
  5. "github.com/gogf/gf/frame/g"
  6. "github.com/gogf/gf/net/ghttp"
  7. "github.com/gogf/gf/util/gconv"
  8. "github.com/gogf/gf/util/gvalid"
  9. )
  10. type user struct {
  11. SystemBase
  12. }
  13. var User = new(user)
  14. // UserList
  15. // @Summary 获取用户列表
  16. // @Description 获取用户列表
  17. // @Tags 用户管理
  18. // @Param req query model.SysUserSearchReq true "data"
  19. // @Success 0 {object} library.Response "{"code": 200, "data": [...]}"
  20. // @Router /system/auth/userList [get]
  21. // @Security
  22. func (c *user) UserList(r *ghttp.Request) {
  23. var req *model.SysUserSearchReq
  24. if err := r.Parse(&req); err != nil {
  25. c.FailJsonExit(r, err.(gvalid.Error).FirstString())
  26. }
  27. if err := service.SysUser.WriteDeptIdsOfSearchReq(req); err != nil {
  28. c.FailJsonExit(r, err.Error())
  29. }
  30. total, page, userList, err := service.SysUser.GetUserList(req)
  31. if err != nil {
  32. c.FailJsonExit(r, "获取用户列表数据失败")
  33. }
  34. users, err := service.SysUser.GetUsersRoleDept(userList)
  35. if err != nil {
  36. c.FailJsonExit(r, err.Error())
  37. }
  38. c.SusJsonExit(r, g.Map{
  39. "total": total,
  40. "currentPage": page,
  41. "userList": users,
  42. })
  43. }
  44. // Get 获取添加用户信息
  45. func (c *user) Get(r *ghttp.Request) {
  46. roleListEntities, err := service.SysRole.GetRoleList()
  47. if err != nil {
  48. g.Log().Error(err)
  49. c.FailJsonExit(r, "获取角色数据失败")
  50. }
  51. posts, err := service.SysUser.GetUsedPost()
  52. if err != nil {
  53. c.FailJsonExit(r, err.Error())
  54. }
  55. c.SusJsonExit(r, g.Map{
  56. "roleList": roleListEntities,
  57. "posts": posts,
  58. })
  59. }
  60. // AddUser 添加用户提交
  61. func (c *user) AddUser(r *ghttp.Request) {
  62. var req *model.AddUserReq
  63. if err := r.Parse(&req); err != nil {
  64. c.FailJsonExit(r, err.(gvalid.Error).FirstString())
  65. }
  66. err := service.SysUser.AddUser(req)
  67. if err != nil {
  68. c.FailJsonExit(r, err.Error())
  69. }
  70. c.SusJsonExit(r, "添加管理员成功")
  71. }
  72. // GetEditUser 获取编辑的用户
  73. func (c *user) GetEditUser(r *ghttp.Request) {
  74. id := r.GetUint64("id")
  75. res, err := service.SysUser.GetEditUser(id)
  76. if err != nil {
  77. c.FailJsonExit(r, err.Error())
  78. }
  79. c.SusJsonExit(r, res)
  80. }
  81. // EditUser 编辑用户提交
  82. func (c *user) EditUser(r *ghttp.Request) {
  83. var req *model.EditUserReq
  84. if err := r.Parse(&req); err != nil {
  85. c.FailJsonExit(r, err.(gvalid.Error).FirstString())
  86. }
  87. err := service.SysUser.EditUser(req)
  88. if err != nil {
  89. c.FailJsonExit(r, err.Error())
  90. }
  91. c.SusJsonExit(r, "修改管理员成功")
  92. }
  93. // GetInfo 获取登陆用户信息
  94. func (c *user) GetInfo(r *ghttp.Request) {
  95. userInfo := c.GetCurrentUser(r.Context())
  96. rolesList := make([]string, 0, 10)
  97. var permissions []string
  98. userId := userInfo.Id
  99. allRoles, err := service.SysRole.GetRoleList()
  100. if err != nil {
  101. c.FailJsonExit(r, err.Error())
  102. }
  103. roles, err := service.SysUser.GetAdminRole(userId, allRoles)
  104. if err != nil {
  105. c.FailJsonExit(r, err.Error())
  106. }
  107. name := make([]string, len(roles))
  108. roleIds := make([]uint, len(roles))
  109. for k, v := range roles {
  110. name[k] = v.Name
  111. roleIds[k] = v.Id
  112. }
  113. isSuperAdmin := false
  114. service.SysUser.NotCheckAuthAdminIds.Iterator(func(v interface{}) bool {
  115. if gconv.Uint64(v) == userId {
  116. isSuperAdmin = true
  117. return false
  118. }
  119. return true
  120. })
  121. if isSuperAdmin {
  122. permissions = []string{"*/*/*"}
  123. } else {
  124. permissions, err = service.SysUser.GetPermissions(roleIds)
  125. }
  126. rolesList = name
  127. c.SusJsonExit(r, g.Map{
  128. "user": userInfo,
  129. "roles": rolesList,
  130. "permissions": permissions,
  131. })
  132. }
  133. // GetRouters 获取用户菜单
  134. func (c *user) GetRouters(r *ghttp.Request) {
  135. //获取用户信息
  136. userInfo := c.GetCurrentUser(r.Context())
  137. //是否超管
  138. isSuperAdmin := false
  139. userId := userInfo.Id
  140. //获取无需验证权限的用户id
  141. service.SysUser.NotCheckAuthAdminIds.Iterator(func(v interface{}) bool {
  142. if gconv.Uint64(v) == userId {
  143. isSuperAdmin = true
  144. return false
  145. }
  146. return true
  147. })
  148. //获取用户角色信息
  149. allRoles, err := service.SysRole.GetRoleList()
  150. if err != nil {
  151. c.FailJsonExit(r, err.Error())
  152. }
  153. roles, e := service.SysUser.GetAdminRole(userId, allRoles)
  154. if e != nil {
  155. c.FailJsonExit(r, e.Error())
  156. }
  157. name := make([]string, len(roles))
  158. roleIds := make([]uint, len(roles))
  159. for k, v := range roles {
  160. name[k] = v.Name
  161. roleIds[k] = v.Id
  162. }
  163. var menuList []service.UserMenus
  164. //获取菜单信息
  165. if isSuperAdmin {
  166. //超管获取所有菜单
  167. menuList, err = service.SysUser.GetAllMenus()
  168. } else {
  169. menuList, err = service.SysUser.GetAdminMenusByRoleIds(roleIds)
  170. }
  171. if err != nil {
  172. c.FailJsonExit(r, e.Error())
  173. }
  174. if menuList == nil {
  175. menuList = make([]service.UserMenus, 0)
  176. }
  177. adminMenus := make([]service.UserMenus, 0, len(menuList))
  178. //过滤非后台模块的菜单
  179. for _, v := range menuList {
  180. if v.ModuleType == "sys_admin" {
  181. adminMenus = append(adminMenus, v)
  182. }
  183. }
  184. c.SusJsonExit(r, adminMenus)
  185. }
  186. func (c *user) ResetUserPwd(r *ghttp.Request) {
  187. var req *model.SysUserResetPwdReq
  188. //获取参数
  189. if err := r.Parse(&req); err != nil {
  190. c.FailJsonExit(r, err.(gvalid.Error).FirstString())
  191. }
  192. if err := service.SysUser.ResetUserPwd(req); err != nil {
  193. c.FailJsonExit(r, err.Error())
  194. } else {
  195. c.SusJsonExit(r, "用户密码重置成功")
  196. }
  197. }
  198. func (c *user) ChangeUserStatus(r *ghttp.Request) {
  199. var req *model.SysUserStatusReq
  200. //获取参数
  201. if err := r.Parse(&req); err != nil {
  202. c.FailJsonExit(r, err.(gvalid.Error).FirstString())
  203. }
  204. if err := service.SysUser.ChangeUserStatus(req); err != nil {
  205. c.FailJsonExit(r, err.Error())
  206. } else {
  207. c.SusJsonExit(r, "用户状态设置成功")
  208. }
  209. }
  210. func (c *user) DeleteUser(r *ghttp.Request) {
  211. ids := r.GetInts("ids")
  212. if len(ids) > 0 {
  213. err := service.SysUser.DeleteUser(r.GetCtx(), ids)
  214. if err != nil {
  215. g.Log().Error(err)
  216. c.FailJsonExit(r, "删除失败")
  217. }
  218. } else {
  219. c.FailJsonExit(r, "删除失败,参数错误")
  220. }
  221. c.SusJsonExit(r, "删除成功")
  222. }