sys_user.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  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} ../model/internal.Sysuser "{"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. //总条数
  40. "total": total,
  41. //当前页
  42. "currentPage": page,
  43. //用户数据
  44. "userList": users,
  45. })
  46. }
  47. // Get 获取添加用户信息
  48. func (c *user) Get(r *ghttp.Request) {
  49. roleListEntities, err := service.SysRole.GetRoleList()
  50. if err != nil {
  51. g.Log().Error(err)
  52. c.FailJsonExit(r, "获取角色数据失败")
  53. }
  54. posts, err := service.SysUser.GetUsedPost()
  55. if err != nil {
  56. c.FailJsonExit(r, err.Error())
  57. }
  58. c.SusJsonExit(r, g.Map{
  59. "roleList": roleListEntities,
  60. "posts": posts,
  61. })
  62. }
  63. // AddUser 添加用户提交
  64. func (c *user) AddUser(r *ghttp.Request) {
  65. var req *model.AddUserReq
  66. if err := r.Parse(&req); err != nil {
  67. c.FailJsonExit(r, err.(gvalid.Error).FirstString())
  68. }
  69. err := service.SysUser.AddUser(req)
  70. if err != nil {
  71. c.FailJsonExit(r, err.Error())
  72. }
  73. c.SusJsonExit(r, "添加管理员成功")
  74. }
  75. // GetEditUser 获取编辑的用户
  76. func (c *user) GetEditUser(r *ghttp.Request) {
  77. id := r.GetUint64("id")
  78. res, err := service.SysUser.GetEditUser(id)
  79. if err != nil {
  80. c.FailJsonExit(r, err.Error())
  81. }
  82. c.SusJsonExit(r, res)
  83. }
  84. // EditUser 编辑用户提交
  85. func (c *user) EditUser(r *ghttp.Request) {
  86. var req *model.EditUserReq
  87. if err := r.Parse(&req); err != nil {
  88. c.FailJsonExit(r, err.(gvalid.Error).FirstString())
  89. }
  90. err := service.SysUser.EditUser(req)
  91. if err != nil {
  92. c.FailJsonExit(r, err.Error())
  93. }
  94. c.SusJsonExit(r, "修改管理员成功")
  95. }
  96. // GetInfo 获取登陆用户信息
  97. func (c *user) GetInfo(r *ghttp.Request) {
  98. userInfo := c.GetCurrentUser(r.Context())
  99. rolesList := make([]string, 0, 10)
  100. var permissions []string
  101. userId := userInfo.Id
  102. allRoles, err := service.SysRole.GetRoleList()
  103. if err != nil {
  104. c.FailJsonExit(r, err.Error())
  105. }
  106. roles, err := service.SysUser.GetAdminRole(userId, allRoles)
  107. if err != nil {
  108. c.FailJsonExit(r, err.Error())
  109. }
  110. name := make([]string, len(roles))
  111. roleIds := make([]uint, len(roles))
  112. for k, v := range roles {
  113. name[k] = v.Name
  114. roleIds[k] = v.Id
  115. }
  116. isSuperAdmin := false
  117. service.SysUser.NotCheckAuthAdminIds.Iterator(func(v interface{}) bool {
  118. if gconv.Uint64(v) == userId {
  119. isSuperAdmin = true
  120. return false
  121. }
  122. return true
  123. })
  124. if isSuperAdmin {
  125. permissions = []string{"*/*/*"}
  126. } else {
  127. permissions, err = service.SysUser.GetPermissions(roleIds)
  128. }
  129. rolesList = name
  130. c.SusJsonExit(r, g.Map{
  131. "user": userInfo,
  132. "roles": rolesList,
  133. "permissions": permissions,
  134. })
  135. }
  136. // GetRouters 获取用户菜单
  137. func (c *user) GetRouters(r *ghttp.Request) {
  138. //获取用户信息
  139. userInfo := c.GetCurrentUser(r.Context())
  140. //是否超管
  141. isSuperAdmin := false
  142. userId := userInfo.Id
  143. //获取无需验证权限的用户id
  144. service.SysUser.NotCheckAuthAdminIds.Iterator(func(v interface{}) bool {
  145. if gconv.Uint64(v) == userId {
  146. isSuperAdmin = true
  147. return false
  148. }
  149. return true
  150. })
  151. //获取用户角色信息
  152. allRoles, err := service.SysRole.GetRoleList()
  153. if err != nil {
  154. c.FailJsonExit(r, err.Error())
  155. }
  156. roles, e := service.SysUser.GetAdminRole(userId, allRoles)
  157. if e != nil {
  158. c.FailJsonExit(r, e.Error())
  159. }
  160. name := make([]string, len(roles))
  161. roleIds := make([]uint, len(roles))
  162. for k, v := range roles {
  163. name[k] = v.Name
  164. roleIds[k] = v.Id
  165. }
  166. var menuList []service.UserMenus
  167. //获取菜单信息
  168. if isSuperAdmin {
  169. //超管获取所有菜单
  170. menuList, err = service.SysUser.GetAllMenus()
  171. } else {
  172. menuList, err = service.SysUser.GetAdminMenusByRoleIds(roleIds)
  173. }
  174. if err != nil {
  175. c.FailJsonExit(r, e.Error())
  176. }
  177. if menuList == nil {
  178. menuList = make([]service.UserMenus, 0)
  179. }
  180. adminMenus := make([]service.UserMenus, 0, len(menuList))
  181. //过滤非后台模块的菜单
  182. for _, v := range menuList {
  183. if v.ModuleType == "sys_admin" {
  184. adminMenus = append(adminMenus, v)
  185. }
  186. }
  187. c.SusJsonExit(r, adminMenus)
  188. }
  189. func (c *user) ResetUserPwd(r *ghttp.Request) {
  190. var req *model.SysUserResetPwdReq
  191. //获取参数
  192. if err := r.Parse(&req); err != nil {
  193. c.FailJsonExit(r, err.(gvalid.Error).FirstString())
  194. }
  195. if err := service.SysUser.ResetUserPwd(req); err != nil {
  196. c.FailJsonExit(r, err.Error())
  197. } else {
  198. c.SusJsonExit(r, "用户密码重置成功")
  199. }
  200. }
  201. func (c *user) ChangeUserStatus(r *ghttp.Request) {
  202. var req *model.SysUserStatusReq
  203. //获取参数
  204. if err := r.Parse(&req); err != nil {
  205. c.FailJsonExit(r, err.(gvalid.Error).FirstString())
  206. }
  207. if err := service.SysUser.ChangeUserStatus(req); err != nil {
  208. c.FailJsonExit(r, err.Error())
  209. } else {
  210. c.SusJsonExit(r, "用户状态设置成功")
  211. }
  212. }
  213. func (c *user) DeleteUser(r *ghttp.Request) {
  214. ids := r.GetInts("ids")
  215. if len(ids) > 0 {
  216. err := service.SysUser.DeleteUser(r.GetCtx(), ids)
  217. if err != nil {
  218. g.Log().Error(err)
  219. c.FailJsonExit(r, "删除失败")
  220. }
  221. } else {
  222. c.FailJsonExit(r, "删除失败,参数错误")
  223. }
  224. c.SusJsonExit(r, "删除成功")
  225. }