sys_user.go 5.5 KB

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