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