SysUserController.java 10KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. package com.example.civilizedcity.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.example.civilizedcity.common.BaseController;
  6. import com.example.civilizedcity.common.Constants;
  7. import com.example.civilizedcity.common.ResponseBean;
  8. import java.time.LocalDateTime;
  9. import java.util.HashMap;
  10. import java.util.List;
  11. import java.util.Map;
  12. import com.example.civilizedcity.common.StringUtils;
  13. import com.example.civilizedcity.entity.SysResource;
  14. import com.example.civilizedcity.entity.SysRole;
  15. import com.example.civilizedcity.service.*;
  16. import com.example.civilizedcity.vo.ChangePassword;
  17. import io.swagger.annotations.Api;
  18. import io.swagger.annotations.ApiOperation;
  19. import io.swagger.annotations.ApiParam;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.web.bind.annotation.*;
  22. import com.example.civilizedcity.entity.SysUser;
  23. /**
  24. * 用户表;(sys_user)表控制层
  25. *
  26. * @author : http://njyunzhi.com
  27. * @date : 2022-12-12
  28. */
  29. @Api(tags = "用户表对象功能接口")
  30. @RestController
  31. @RequestMapping("/")
  32. public class SysUserController extends BaseController {
  33. @Autowired
  34. SysRoleService sysRoleService;
  35. @Autowired
  36. SysResourceService sysResourceService;
  37. @Autowired
  38. SysUserDutyService sysUserDutyService;
  39. @Autowired
  40. SysLoginService sysLoginService;
  41. @Autowired
  42. SysOrgService sysOrgService;
  43. /**
  44. * 通过ID查询单条数据
  45. *
  46. * @param userId 主键
  47. * @return 实例对象
  48. */
  49. @ApiOperation("通过ID查询单条数据")
  50. @GetMapping("/sysUser/{id}")
  51. public ResponseBean queryById(@ApiParam("对象ID") @PathVariable String id) throws Exception {
  52. SysUser sysUser = sysUserService.getById(id);
  53. if (null == sysUser || sysUser.getStatus() == Constants.STATUS_DELETE) {
  54. return ResponseBean.error("用户不存在");
  55. }
  56. return ResponseBean.success(getPermissions(sysUser));
  57. }
  58. /**
  59. * 查询当前人员
  60. *
  61. * @param
  62. * @return 实例对象
  63. */
  64. @ApiOperation("查询当前人员")
  65. @GetMapping("/sysUser/current")
  66. public ResponseBean current() throws Exception {
  67. SysUser sysUser = currentUser();
  68. return ResponseBean.success(getPermissions(sysUser));
  69. }
  70. private SysUser getPermissions(SysUser sysUser) {
  71. List<SysRole> rolesList = sysRoleService.getByUser(sysUser.getUserId());
  72. List<SysResource> resourcesList = sysResourceService.getByUser(sysUser.getUserId());
  73. List<String> dutyList = sysUserDutyService.getListByUser(sysUser.getUserId());
  74. sysUser.setRolesList(rolesList);
  75. sysUser.setResourcesList(resourcesList);
  76. sysUser.setDutyList(dutyList);
  77. sysUser.setOrg(sysOrgService.getById(sysUser.getOrgId()));
  78. return sysUser;
  79. }
  80. /**
  81. * 分页查询
  82. *
  83. * @param pageNum 当前页码
  84. * @param pageSize 每页条数
  85. * @return 查询结果
  86. */
  87. @ApiOperation("分页查询")
  88. @GetMapping("/sysUser")
  89. public ResponseBean list(@ApiParam("页码") @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
  90. @ApiParam("单页数据量") @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
  91. @ApiParam("姓名") @RequestParam(value = "name", required = false) String name,
  92. @ApiParam("机构") @RequestParam(value = "orgId", required = false) String orgId,
  93. @ApiParam("手机号") @RequestParam(value = "phone", required = false) String phone) throws Exception {
  94. IPage<SysUser> pg = new Page<>(pageNum, pageSize);
  95. QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
  96. queryWrapper.like(!StringUtils.isEmpty(name), "name", name);
  97. queryWrapper.eq(!StringUtils.isEmpty(orgId), "org_id", orgId);
  98. queryWrapper.like(!StringUtils.isEmpty(phone), "phone", phone);
  99. queryWrapper.eq("is_user", 1);
  100. queryWrapper.gt("status", Constants.STATUS_DELETE);
  101. queryWrapper.ne("user_id", Constants.ROOT_ID);
  102. queryWrapper.orderByDesc("create_date");
  103. IPage<SysUser> result = sysUserService.page(pg, queryWrapper);
  104. return ResponseBean.success(result);
  105. }
  106. /**
  107. * 小程序端分页查询
  108. *
  109. * @param pageNum 当前页码
  110. * @param pageSize 每页条数
  111. * @return 查询结果
  112. */
  113. @ApiOperation("小程序端分页查询")
  114. @GetMapping("/ma/sysUser")
  115. public ResponseBean maList(@ApiParam("页码") @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
  116. @ApiParam("单页数据量") @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) throws Exception {
  117. IPage<SysUser> pg = new Page<>(pageNum, pageSize);
  118. QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
  119. queryWrapper.eq("org_id", currentUser().getOrgId());
  120. queryWrapper.eq("is_from_wx", 1);
  121. queryWrapper.gt("status", Constants.STATUS_DELETE);
  122. queryWrapper.orderByDesc("create_date");
  123. IPage<SysUser> result = sysUserService.page(pg, queryWrapper);
  124. List<SysUser> list = result.getRecords();
  125. if (null != list || list.size() > 0) {
  126. for (SysUser sysUser : list) {
  127. sysUser.setDutyList(sysUserDutyService.getListByUser(sysUser.getUserId()));
  128. }
  129. }
  130. return ResponseBean.success(result);
  131. }
  132. /**
  133. * 新增数据
  134. *
  135. * @param sysUser 实例对象
  136. * @return 实例对象
  137. */
  138. @ApiOperation("新增数据")
  139. @PostMapping("/sysUser")
  140. public ResponseBean add(@ApiParam("对象实体") @RequestBody SysUser sysUser) throws Exception {
  141. if (null == sysUser.getOrgId()) {
  142. sysUser.setOrgId(currentUser().getOrgId());
  143. }
  144. sysUserService.mergeData(sysUser);
  145. return ResponseBean.success(sysUser);
  146. }
  147. /**
  148. * 小程序端新增数据
  149. *
  150. * @param sysUser 实例对象
  151. * @return 实例对象
  152. */
  153. @ApiOperation("小程序端新增数据")
  154. @PostMapping("/ma/sysUser")
  155. public ResponseBean addMa(@ApiParam("对象实体") @RequestBody SysUser sysUser) throws Exception {
  156. if (StringUtils.isEmpty(sysUser.getPhone())) {
  157. return ResponseBean.error("请填写手机号");
  158. }
  159. if (StringUtils.isEmpty(sysUser.getName())) {
  160. return ResponseBean.error("请填写名称");
  161. }
  162. SysUser user = currentUser();
  163. SysUser origin = sysUserService.getByPhone(sysUser.getPhone(), user.getOrgId());
  164. if (null != origin) {
  165. if (StringUtils.isNotEmpty(sysUser.getUserId()) && !sysUser.getUserId().equals(origin.getUserId())) {
  166. return ResponseBean.error("当前人员已存在");
  167. }
  168. sysUser.setUserId(origin.getUserId());
  169. if (null != sysUser.getStatus() && Constants.STATUS_DELETE == sysUser.getStatus()) {
  170. // 如果这个人被删除了, 则重置为正常状态
  171. sysUser.setStatus(Constants.STATUS_NORMAL);
  172. }
  173. }
  174. sysUserService.createMaUser(sysUser, user);
  175. return ResponseBean.success(sysUser);
  176. }
  177. /**
  178. * 更新数据
  179. *
  180. * @param id 实例ID
  181. * @return 实例对象
  182. */
  183. @ApiOperation("更新数据")
  184. @PutMapping("/sysUser/{id}/status")
  185. public ResponseBean edit(@ApiParam("对象ID") @PathVariable String id,
  186. @ApiParam("页码") @RequestParam(value = "status") Integer status) throws Exception {
  187. SysUser sysUser = sysUserService.getById(id);
  188. sysUser.setStatus(status);
  189. sysUserService.updateById(sysUser);
  190. return ResponseBean.success(sysUser);
  191. }
  192. // /**
  193. // * 更新数据
  194. // *
  195. // * @param sysUser 实例对象
  196. // * @return 实例对象
  197. // */
  198. // @ApiOperation("更新数据")
  199. // @PutMapping("/sysUser/{id}")
  200. // public ResponseBean edit(@ApiParam("对象实体") @RequestBody SysUser sysUser,
  201. // @ApiParam("对象ID") @PathVariable String id ) throws Exception {
  202. // sysUserService.updateById(sysUser);
  203. // return ResponseBean.success(sysUser);
  204. // }
  205. @PutMapping("/ma/sysUser/change-password")
  206. @ApiOperation(value="小程序端修改密码", notes = "修改密码", httpMethod = "PUT", response = ResponseBean.class)
  207. public ResponseBean changePassword(@ApiParam("修改密码参数") @RequestBody ChangePassword param) throws Exception {
  208. if (StringUtils.isEmpty(param.getOriginPassword()) || StringUtils.isEmpty(param.getNewPassword())) {
  209. return ResponseBean.error("原始密码或新密码不能为空", ResponseBean.ERROR_ILLEGAL_PARAMS);
  210. }
  211. SysUser user = currentUser();
  212. boolean isOk = sysUserService.changePassword(user, param);
  213. if (!isOk) {
  214. ResponseBean.error("修改失败, 请重试", ResponseBean.ERROR_UNAVAILABLE);
  215. }
  216. return ResponseBean.success("密码修改成功");
  217. }
  218. /**
  219. * 通过主键删除数据
  220. *
  221. * @param userId 主键
  222. * @return 是否成功
  223. */
  224. @ApiOperation("通过主键删除数据")
  225. @DeleteMapping("/sysUser/{id}")
  226. public ResponseBean deleteById(@ApiParam("对象ID") @PathVariable String id) {
  227. sysUserService.removeLogicById(id);
  228. return ResponseBean.success("success");
  229. }
  230. /**
  231. * 小程序端通过主键删除数据
  232. *
  233. * @param userId 主键
  234. * @return 是否成功
  235. */
  236. @ApiOperation("小程序端通过主键删除数据")
  237. @DeleteMapping("/ma/sysUser/{id}")
  238. public ResponseBean deleteMaById(@ApiParam("对象ID") @PathVariable String id) throws Exception {
  239. SysUser user = sysUserService.getById(id);
  240. if (null == user || Constants.STATUS_DELETE == user.getStatus()) {
  241. return ResponseBean.error("人员不存在");
  242. }
  243. SysUser sysUser = currentUser();
  244. if (!sysUser.getOrgId().equals(user.getOrgId())) {
  245. return ResponseBean.error("暂无权限");
  246. }
  247. // 删除登录信息
  248. sysLoginService.removeByUser(sysUser.getUserId());
  249. sysUserService.removeLogicById(id);
  250. return ResponseBean.success("success");
  251. }
  252. }