sys_user.go 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  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. // UsersGet 获取用户信息列表
  94. func (c *user) UsersGet(r *ghttp.Request) {
  95. ids := r.GetInts("ids")
  96. res, err := service.SysUser.GetUsers(ids)
  97. if err != nil {
  98. c.FailJsonExit(r, err.Error())
  99. }
  100. c.SusJsonExit(r, res)
  101. }
  102. // GetInfo 获取登陆用户信息
  103. func (c *user) GetInfo(r *ghttp.Request) {
  104. userInfo := c.GetCurrentUser(r.Context())
  105. rolesList := make([]string, 0, 10)
  106. var permissions []string
  107. userId := userInfo.Id
  108. allRoles, err := service.SysRole.GetRoleList()
  109. if err != nil {
  110. c.FailJsonExit(r, err.Error())
  111. }
  112. roles, err := service.SysUser.GetAdminRole(userId, allRoles)
  113. if err != nil {
  114. c.FailJsonExit(r, err.Error())
  115. }
  116. name := make([]string, len(roles))
  117. roleIds := make([]uint, len(roles))
  118. for k, v := range roles {
  119. name[k] = v.Name
  120. roleIds[k] = v.Id
  121. }
  122. isSuperAdmin := false
  123. service.SysUser.NotCheckAuthAdminIds.Iterator(func(v interface{}) bool {
  124. if gconv.Uint64(v) == userId {
  125. isSuperAdmin = true
  126. return false
  127. }
  128. return true
  129. })
  130. if isSuperAdmin {
  131. permissions = []string{"*/*/*"}
  132. } else {
  133. permissions, err = service.SysUser.GetPermissions(roleIds)
  134. }
  135. rolesList = name
  136. c.SusJsonExit(r, g.Map{
  137. "user": userInfo,
  138. "roles": rolesList,
  139. "permissions": permissions,
  140. })
  141. }
  142. // GetRouters 获取用户菜单
  143. func (c *user) GetRouters(r *ghttp.Request) {
  144. //获取用户信息
  145. userInfo := c.GetCurrentUser(r.Context())
  146. //是否超管
  147. isSuperAdmin := false
  148. userId := userInfo.Id
  149. //获取无需验证权限的用户id
  150. service.SysUser.NotCheckAuthAdminIds.Iterator(func(v interface{}) bool {
  151. if gconv.Uint64(v) == userId {
  152. isSuperAdmin = true
  153. return false
  154. }
  155. return true
  156. })
  157. //获取用户角色信息
  158. allRoles, err := service.SysRole.GetRoleList()
  159. if err != nil {
  160. c.FailJsonExit(r, err.Error())
  161. }
  162. roles, e := service.SysUser.GetAdminRole(userId, allRoles)
  163. if e != nil {
  164. c.FailJsonExit(r, e.Error())
  165. }
  166. name := make([]string, len(roles))
  167. roleIds := make([]uint, len(roles))
  168. for k, v := range roles {
  169. name[k] = v.Name
  170. roleIds[k] = v.Id
  171. }
  172. var menuList []service.UserMenus
  173. //获取菜单信息
  174. if isSuperAdmin {
  175. //超管获取所有菜单
  176. menuList, err = service.SysUser.GetAllMenus()
  177. } else {
  178. menuList, err = service.SysUser.GetAdminMenusByRoleIds(roleIds)
  179. }
  180. if err != nil {
  181. c.FailJsonExit(r, e.Error())
  182. }
  183. if menuList == nil {
  184. menuList = make([]service.UserMenus, 0)
  185. }
  186. adminMenus := make([]service.UserMenus, 0, len(menuList))
  187. //过滤非后台模块的菜单
  188. for _, v := range menuList {
  189. if v.ModuleType == "sys_admin" {
  190. adminMenus = append(adminMenus, v)
  191. }
  192. }
  193. c.SusJsonExit(r, adminMenus)
  194. }
  195. func (c *user) ResetUserPwd(r *ghttp.Request) {
  196. var req *model.SysUserResetPwdReq
  197. //获取参数
  198. if err := r.Parse(&req); err != nil {
  199. c.FailJsonExit(r, err.(gvalid.Error).FirstString())
  200. }
  201. if err := service.SysUser.ResetUserPwd(req); err != nil {
  202. c.FailJsonExit(r, err.Error())
  203. } else {
  204. c.SusJsonExit(r, "用户密码重置成功")
  205. }
  206. }
  207. func (c *user) ChangeUserStatus(r *ghttp.Request) {
  208. var req *model.SysUserStatusReq
  209. //获取参数
  210. if err := r.Parse(&req); err != nil {
  211. c.FailJsonExit(r, err.(gvalid.Error).FirstString())
  212. }
  213. if err := service.SysUser.ChangeUserStatus(req); err != nil {
  214. c.FailJsonExit(r, err.Error())
  215. } else {
  216. c.SusJsonExit(r, "用户状态设置成功")
  217. }
  218. }
  219. func (c *user) DeleteUser(r *ghttp.Request) {
  220. ids := r.GetInts("ids")
  221. if len(ids) > 0 {
  222. err := service.SysUser.DeleteUser(r.GetCtx(), ids)
  223. if err != nil {
  224. g.Log().Error(err)
  225. c.FailJsonExit(r, "删除失败")
  226. }
  227. } else {
  228. c.FailJsonExit(r, "删除失败,参数错误")
  229. }
  230. c.SusJsonExit(r, "删除成功")
  231. }