user.go 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512
  1. package handler
  2. import (
  3. "context"
  4. "dashoo.cn/common_definition/admin/user_def"
  5. "dashoo.cn/opms_libary/micro_srv"
  6. "github.com/gogf/gf/errors/gerror"
  7. "github.com/gogf/gf/util/gvalid"
  8. "dashoo.cn/micro/app/model"
  9. "dashoo.cn/micro/app/service"
  10. "dashoo.cn/common_definition/comm_def"
  11. "github.com/gogf/gf/frame/g"
  12. )
  13. type UserHandler struct{}
  14. // GetList 获取用户列表
  15. func (h *UserHandler) GetList(ctx context.Context, req *model.SysUserSearchReq, rsp *comm_def.CommonMsg) error {
  16. userService, err := service.NewUserService(ctx)
  17. if err != nil {
  18. g.Log().Error(err)
  19. return err
  20. }
  21. total, list, err := userService.GetUserList(req)
  22. //_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
  23. if err != nil {
  24. return err
  25. }
  26. rsp.Data = g.Map{"list": list, "total": total}
  27. return nil
  28. }
  29. // Create 添加用户
  30. func (h *UserHandler) Create(ctx context.Context, req *model.AddUserReq, rsp *comm_def.CommonMsg) error {
  31. // 参数校验
  32. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  33. return err
  34. }
  35. //req.RoleIds = utils.IntArrayToIdsString(req.RoleArray)
  36. //req.PostIds = utils.IntArrayToIdsString(req.PostArray)
  37. userService, err := service.NewUserService(ctx)
  38. if err != nil {
  39. g.Log().Error(err)
  40. return err
  41. }
  42. //userinfo, err := micro_srv.GetUserInfo(ctx)
  43. //if err != nil {
  44. // return err
  45. //}
  46. err = userService.CreateUser(req)
  47. //_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
  48. if err != nil {
  49. return err
  50. }
  51. return nil
  52. }
  53. // UpdateById 更新用户
  54. func (h *UserHandler) UpdateById(ctx context.Context, req *model.EditUserReq, rsp *comm_def.CommonMsg) error {
  55. // 参数校验
  56. if req.Id == 0 {
  57. return NoParamsErr
  58. }
  59. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  60. return err
  61. }
  62. //req.RoleIds = utils.IntArrayToIdsString(req.RoleArray)
  63. //req.PostIds = utils.IntArrayToIdsString(req.PostArray)
  64. userService, err := service.NewUserService(ctx)
  65. if err != nil {
  66. g.Log().Error(err)
  67. return err
  68. }
  69. // 获取用户信息
  70. //userInfo, err := micro_srv.GetUserInfo(ctx)
  71. //if err != nil {
  72. // return err
  73. //}
  74. err = userService.UpdateUser(req)
  75. //_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
  76. if err != nil {
  77. return err
  78. }
  79. return nil
  80. }
  81. // GetUserInfo 获取用户实体信息
  82. func (e *UserHandler) GetUserInfo(ctx context.Context, req *comm_def.IdReq, rsp *comm_def.CommonMsg) error {
  83. userService, err := service.NewUserService(ctx)
  84. if err != nil {
  85. return gerror.New("系统异常,请重新尝试")
  86. }
  87. // 从上下文中获取用户
  88. userId := userService.GetCxtUserId()
  89. if req.Id != 0 {
  90. userId = int(req.Id)
  91. }
  92. data, err := userService.GetUserInfoById(userId)
  93. if err != nil {
  94. return err
  95. }
  96. // 获取用户权限 角色
  97. userRoles, err := userService.GetUserRoleIds(userId)
  98. //_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
  99. if err != nil {
  100. return err
  101. }
  102. roleService, _ := service.NewRoleService(ctx)
  103. permissions, err := roleService.GetRolesMenuPermissions(userRoles)
  104. // _, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
  105. if err != nil {
  106. return err
  107. }
  108. userPosts, err := userService.GetUserPostIds(userId)
  109. //_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
  110. if err != nil {
  111. return err
  112. }
  113. userGroups, err := userService.GetUserGroupIds(userId)
  114. //_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
  115. if err != nil {
  116. return err
  117. }
  118. rsp.Data = g.Map{
  119. "entity": data,
  120. "permissions": permissions,
  121. "roleIds": userRoles,
  122. "postIds": userPosts,
  123. "groupIds": userGroups,
  124. }
  125. return nil
  126. }
  127. //// GetEntityByUuId 根据UUID获取用户实体信息
  128. //func (e *UserHandler) GetEntityByUuId(ctx context.Context, req *user_def.UuIdReq, rsp *comm_def.CommonMsg) error {
  129. // // 参数校验
  130. // if req.Uuid == "" {
  131. // return NoParamsErr
  132. // }
  133. // userService, err := service.NewUserService(ctx)
  134. // if err != nil {
  135. // return gerror.New("系统异常,请重新尝试")
  136. // }
  137. // data, err := userService.GetEntityByUuId(req.Uuid)
  138. // _, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
  139. // if err != nil {
  140. // return err
  141. // }
  142. // rsp.Data = data
  143. // return nil
  144. //}
  145. // DeleteByIds 删除 支持批量删除
  146. func (h *UserHandler) DeleteByIds(ctx context.Context, req *comm_def.IdsReq, rsp *comm_def.CommonMsg) error {
  147. // 参数校验
  148. if len(req.Ids) == 0 {
  149. return NoParamsErr
  150. }
  151. userService, err := service.NewUserService(ctx)
  152. if err != nil {
  153. g.Log().Error(err)
  154. return gerror.New("系统异常,请重新尝试")
  155. }
  156. err = userService.DeleteUserByIds(ctx, req.Ids)
  157. //_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
  158. if err != nil {
  159. return err
  160. }
  161. return nil
  162. }
  163. // ResetPassword 密码重置(管理员进行操作)
  164. func (e *UserHandler) ResetPassword(ctx context.Context, req *model.SysUserResetPwdReq, rsp *comm_def.CommonMsg) error {
  165. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  166. return err
  167. }
  168. // todo:校验用户是否有修改权限
  169. userService, err := service.NewUserService(ctx)
  170. if err != nil {
  171. return gerror.New("系统异常,请重新尝试")
  172. }
  173. err = userService.ResetUserPwd(req)
  174. //_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
  175. if err != nil {
  176. return err
  177. }
  178. return nil
  179. }
  180. // SetStatus 设置用户状态
  181. func (e *UserHandler) SetStatus(ctx context.Context, req *model.SysUserStatusReq, rsp *comm_def.CommonMsg) error {
  182. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  183. return err
  184. }
  185. userService, err := service.NewUserService(ctx)
  186. if err != nil {
  187. return gerror.New("系统异常,请重新尝试")
  188. }
  189. err = userService.ChangeUserStatus(req)
  190. //_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
  191. if err != nil {
  192. return err
  193. }
  194. return nil
  195. }
  196. // GetUserByDept 获取部门下所属用户
  197. func (e *UserHandler) GetUserByDept(ctx context.Context, req *user_def.DeptIdReq, rsp *comm_def.CommonMsg) error {
  198. // 参数校验
  199. if req.DeptId == 0 {
  200. return NoParamsErr
  201. }
  202. userService, err := service.NewUserService(ctx)
  203. if err != nil {
  204. return gerror.New("系统异常,请重新尝试")
  205. }
  206. list, err := userService.GetUserByDept(req.DeptId)
  207. //_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
  208. if err != nil {
  209. return err
  210. }
  211. rsp.Data = list
  212. return nil
  213. }
  214. // GetUserByRole 获取角色关联用户
  215. func (e *UserHandler) GetUserByRole(ctx context.Context, req *model.SysUserRoleReq, rsp *comm_def.CommonMsg) error {
  216. // 参数校验
  217. if req.RoleId == 0 {
  218. return NoParamsErr
  219. }
  220. userService, err := service.NewUserService(ctx)
  221. if err != nil {
  222. return gerror.New("系统异常,请重新尝试")
  223. }
  224. list, err := userService.GetUserByRole(req.RoleId)
  225. //_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
  226. if err != nil {
  227. return err
  228. }
  229. rsp.Data = list
  230. return nil
  231. }
  232. //// GetIdByUuid 根据uuid 获取用户id
  233. //func (e *UserHandler) GetIdByUuid(ctx context.Context, req *user_def.UuIdReq, rsp *comm_def.CommonMsg) error {
  234. // // 获取租户码
  235. // tenant, err := micro_srv.GetTenant(ctx)
  236. // if err != nil {
  237. // return err
  238. // }
  239. // g.Log().Info("Received UserHandler.GetIdByUuid request @ " + tenant)
  240. // // 参数校验
  241. // if req.Uuid == "" {
  242. // return NoParamsErr
  243. // }
  244. // service, err := user.NewService(tenant)
  245. // if err != nil {
  246. // g.Log().Error(err)
  247. // return gerror.New("系统异常,请重新尝试")
  248. // }
  249. //
  250. // userId, err := service.GetIdByUuid(req.Uuid)
  251. // _, err, code, msg := myerrors.CheckError(err)
  252. // if err != nil {
  253. // return err
  254. // }
  255. // rsp.Code = code
  256. // rsp.Msg = msg
  257. // rsp.Data = userId
  258. // return nil
  259. //}
  260. //
  261. //// GetDictList 获取用户列表字典项(返回字典数据形式,一般用来绑定用户的下拉列表)
  262. //func (e *UserHandler) GetDictList(ctx context.Context, req *user_def.DictSelectReq, rsp *comm_def.CommonMsg) error {
  263. // // 获取租户码
  264. // tenant, err := micro_srv.GetTenant(ctx)
  265. // if err != nil {
  266. // return err
  267. // }
  268. // g.Log().Info("Received UserHandler.GetDictList request @ " + tenant)
  269. //
  270. // service, err := user.NewService(tenant)
  271. // if flag, err, _, _ := myerrors.CheckError(err); flag {
  272. // return err
  273. // }
  274. //
  275. // list, err := service.GetDict(req)
  276. // _, err, code, msg := myerrors.CheckError(err)
  277. // if err != nil {
  278. // return err
  279. // }
  280. // rsp.Code = code
  281. // rsp.Msg = msg
  282. // rsp.Data = list
  283. // return nil
  284. //}
  285. //
  286. //// GetUsersDictByDepartment 获取当前部门下用户信息列表(返回字典数据形式,一般用来绑定用户的下拉列表)
  287. //func (e *UserHandler) GetUsersDictByDepartment(ctx context.Context, req *user_def.DeptIdReq,
  288. // rsp *comm_def.CommonMsg) error {
  289. // // 获取租户码
  290. // tenant, err := micro_srv.GetTenant(ctx)
  291. // if err != nil {
  292. // return err
  293. // }
  294. // g.Log().Info("Received UserHandler.GetUsersDictByDepartment request @ " + tenant)
  295. // service, err := user.NewService(tenant)
  296. // if err != nil {
  297. // g.Log().Error(err)
  298. // return gerror.New("系统异常,请重新尝试")
  299. // }
  300. // list, err := service.GetUsersDictByDepartment(req.DeptId)
  301. // _, err, code, msg := myerrors.CheckError(err)
  302. // if err != nil {
  303. // return err
  304. // }
  305. // rsp.Code = code
  306. // rsp.Msg = msg
  307. // rsp.Data = list
  308. // return nil
  309. //}
  310. //
  311. //// GetProfile 获取用户信息
  312. //func (e *UserHandler) GetProfile(ctx context.Context, numParams interface{}, rsp *comm_def.CommonMsg) error {
  313. // // 获取租户码
  314. // tenant, err := micro_srv.GetTenant(ctx)
  315. // if err != nil {
  316. // return err
  317. // }
  318. // g.Log().Info("Received UserHandler.GetProfile request @ " + tenant)
  319. //
  320. // service, err := user.NewService(tenant)
  321. // if flag, err, _, _ := myerrors.CheckError(err); flag {
  322. // return err
  323. // }
  324. // userInfo, err := micro_srv.GetUserInfo(ctx)
  325. // if err != nil {
  326. // return err
  327. // }
  328. // profile, err := service.GetProfile(int64(userInfo.Id))
  329. // _, err, code, msg := myerrors.CheckError(err)
  330. // if err != nil {
  331. // return err
  332. // }
  333. // rsp.Code = code
  334. // rsp.Msg = msg
  335. // rsp.Data = profile
  336. // return nil
  337. //}
  338. //
  339. //// UpdateProfile 更新Profile
  340. //func (e *UserHandler) UpdateProfile(ctx context.Context, req *user_def.EditProfileEntity, rsp *comm_def.CommonMsg) error {
  341. // // 获取租户码
  342. // tenant, err := micro_srv.GetTenant(ctx)
  343. // if err != nil {
  344. // return err
  345. // }
  346. // g.Log().Info("Received UserHandler.UpdateProfile request @ " + tenant)
  347. // if req.Id == 0 {
  348. // return NoParamsErr
  349. // }
  350. // validErr := gvalid.CheckStruct(ctx, req, nil)
  351. // if validErr != nil {
  352. // return validErr.Current()
  353. // }
  354. // service, err := user.NewService(tenant)
  355. // if flag, err, _, _ := myerrors.CheckError(err); flag {
  356. // return err
  357. // }
  358. // userInfo, err := micro_srv.GetUserInfo(ctx)
  359. // if err != nil {
  360. // return err
  361. // }
  362. // err = service.UpdateProfile(&userInfo, req)
  363. // _, err, code, msg := myerrors.CheckError(err)
  364. // if err != nil {
  365. // return err
  366. // }
  367. // rsp.Code = code
  368. // rsp.Msg = msg
  369. // return nil
  370. //}
  371. //
  372. //// SetAvatar 设置用户头像
  373. //func (e *UserHandler) SetAvatar(ctx context.Context, req *user_def.AvatarReq, rsp *comm_def.CommonMsg) error {
  374. // // 获取租户码
  375. // tenant, err := micro_srv.GetTenant(ctx)
  376. // if err != nil {
  377. // return err
  378. // }
  379. // g.Log().Info("Received UserHandler.SetAvatar request @ " + tenant)
  380. // if req.FileUrl == "" {
  381. // return NoParamsErr
  382. // }
  383. // service, err := user.NewService(tenant)
  384. // if err != nil {
  385. // g.Log().Error(err)
  386. // return gerror.New("系统异常,请重新尝试")
  387. // }
  388. // userInfo, err := micro_srv.GetUserInfo(ctx)
  389. // if err != nil {
  390. // return err
  391. // }
  392. // err = service.SetAvatar(&userInfo, req.FileUrl)
  393. // _, err, code, msg := myerrors.CheckError(err)
  394. // if err != nil {
  395. // return err
  396. // }
  397. // rsp.Code = code
  398. // rsp.Msg = msg
  399. // return nil
  400. //}
  401. // ChangePassword 用户修改密码
  402. func (e *UserHandler) ChangePassword(ctx context.Context, req *user_def.PWDReq, rsp *comm_def.CommonMsg) error {
  403. gvalidErr := gvalid.CheckStruct(ctx, req, nil)
  404. if gvalidErr != nil {
  405. return gvalidErr.Current()
  406. }
  407. userService, err := service.NewUserService(ctx)
  408. if err != nil {
  409. return gerror.New("系统异常,请重新尝试")
  410. }
  411. userInfo, err := micro_srv.GetUserInfo(ctx)
  412. if err != nil {
  413. return err
  414. }
  415. err = userService.ProfileUpdatePwd(&model.ProfileUpdatePwdReq{
  416. UserId: userInfo.Id,
  417. OldPassword: req.OldPassword,
  418. NewPassword: req.NewPassword,
  419. })
  420. //_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
  421. return err
  422. }
  423. //// GetUserByUserName 根据用户名获取用户信息
  424. //func (e *UserHandler) GetUserByUserName(ctx context.Context, req *user_def.UserNameReq, rsp *comm_def.CommonMsg) error {
  425. // // 获取租户码
  426. // tenant, err := micro_srv.GetTenant(ctx)
  427. // if err != nil {
  428. // return err
  429. // }
  430. // g.Log().Info("Received UserHandler.GetUserByUserName request @ " + tenant)
  431. // if req.UserName == "" {
  432. //
  433. // }
  434. // service, err := user.NewService(tenant)
  435. // if err != nil {
  436. // g.Log().Error(err)
  437. // return gerror.New("系统异常,请重新尝试")
  438. // }
  439. //
  440. // userEntity, err := service.GetUserByUserName(req.UserName)
  441. // _, err, code, msg := myerrors.CheckError(err)
  442. // rsp.Code = code
  443. // rsp.Msg = msg
  444. // rsp.Data = userEntity
  445. // return nil
  446. //}
  447. //
  448. //func (e *UserHandler) SendResetPasswordEmail(ctx context.Context, req *user_def.UserNameReq, rsp *comm_def.CommonMsg) error {
  449. // tenant, err := micro_srv.GetTenant(ctx)
  450. // if err != nil {
  451. // return err
  452. // }
  453. // service, err := user.NewService(tenant)
  454. // if err != nil {
  455. // g.Log().Error(err)
  456. // return gerror.New("系统异常,请重新尝试")
  457. // }
  458. // email, expired, err := service.SendResetPasswordEmail(req)
  459. // _, err, code, msg := myerrors.CheckError(err)
  460. // rsp.Code = code
  461. // rsp.Msg = msg
  462. // if err == nil {
  463. // rsp.Data = map[string]interface{}{
  464. // "email": email,
  465. // "expired": expired,
  466. // }
  467. // }
  468. // return nil
  469. //}
  470. //
  471. //func (e *UserHandler) ResetPasswordFromEmail(ctx context.Context, req *user.ResetPasswordFromEmailReq, rsp *comm_def.CommonMsg) error {
  472. // tenant, err := micro_srv.GetTenant(ctx)
  473. // if err != nil {
  474. // return err
  475. // }
  476. // service, err := user.NewService(tenant)
  477. // if err != nil {
  478. // g.Log().Error(err)
  479. // return gerror.New("系统异常,请重新尝试")
  480. // }
  481. // err = service.ResetPasswordFromEmail(ctx, req)
  482. // _, err, code, msg := myerrors.CheckError(err)
  483. // rsp.Code = code
  484. // rsp.Msg = msg
  485. // return nil
  486. //}