鹤壁政务服务热线

UserController.java 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. package api.controller.system;
  2. import api.entity.database.system.*;
  3. import api.entity.input.system.CustomerInput;
  4. import api.entity.view.system.CustomerView;
  5. import api.entity.view.system.UserView;
  6. import api.service.system.*;
  7. import api.service.system.impl.UserPostServiceImpl;
  8. import api.util.annotation.Anonymous;
  9. import com.alibaba.fastjson2.JSON;
  10. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  11. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  12. import com.baomidou.mybatisplus.core.metadata.IPage;
  13. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  14. import api.controller.BaseController;
  15. import api.entity.input.PageInput;
  16. import api.model.AjaxResult;
  17. import api.util.annotation.Log;
  18. import api.util.enums.BusinessType;
  19. import api.util.helper.*;
  20. import io.swagger.annotations.Api;
  21. import io.swagger.annotations.ApiOperation;
  22. import lombok.var;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.data.redis.core.StringRedisTemplate;
  25. import org.springframework.web.bind.annotation.*;
  26. import org.springframework.web.multipart.MultipartFile;
  27. import java.util.*;
  28. import java.util.stream.Collectors;
  29. @Api(value = "用户信息表", tags = "用户信息表")
  30. @RestController
  31. @RequestMapping("/system/user")
  32. public class UserController extends BaseController {
  33. @Autowired
  34. public StringRedisTemplate stringRedisTemplate;
  35. @Autowired
  36. private IUserService userService;
  37. @Autowired
  38. private IDeptService deptService;
  39. @Autowired
  40. private IRoleService roleService;
  41. @Autowired
  42. private IUserPostService userPostService;
  43. @ApiOperation("列表")
  44. @Log(title = "查询用户信息表列表", businessType = BusinessType.QUERY)
  45. @GetMapping
  46. public AjaxResult getList(User input, PageInput pageInput) {
  47. LambdaQueryWrapper<User> qw = new LambdaQueryWrapper();
  48. qw.eq(input.getUserId() != null && input.getUserId() > 0, User::getUserId, input.getUserId());
  49. // qw.eq(input.getDeptId() != null && input.getDeptId() > 0, User::getDeptId, input.getDeptId());
  50. if (input.getDeptId() != null &&input.getDeptId()>0)
  51. {
  52. //查询下级部门所有人员
  53. qw.and(wq->{
  54. wq.inSql(User::getDeptId, "select dept_id from sys_dept where " +
  55. " ancestors REGEXP CONCAT((select ancestors from sys_dept where dept_id="+input.getDeptId()+"),',',"
  56. +input.getDeptId()+") ") ;
  57. wq.or().eq(User::getDeptId,input.getDeptId());
  58. });
  59. }
  60. qw.like(!StringHelper.isEmpty(input.getUserName()), User::getUserName, input.getUserName());
  61. qw.like(!StringHelper.isEmpty(input.getNickName()), User::getNickName, input.getNickName());
  62. qw.eq(!StringHelper.isEmpty(input.getSex()), User::getSex, input.getSex());
  63. qw.eq(User::getDeleteFlag, "0");
  64. qw.orderByDesc(User::getUserId);
  65. Page<User> page = GetPage(pageInput);
  66. if (page != null) {
  67. IPage<User> iPage = userService.selectUserDeptList(page, qw);
  68. List<UserView> userViewList = new ArrayList<>();
  69. for (User user : iPage.getRecords()) {
  70. UserView uv = JSON.parseObject(JSON.toJSONString(user), UserView.class);
  71. Role role = roleService.getEntity(user.getRoleId());//.selectRoleByUserId(user.getUserId());
  72. if (role != null) {
  73. uv.setRoleName(role.getRoleName());
  74. }
  75. userViewList.add(uv);
  76. }
  77. return Success("成功", userViewList, iPage.getTotal());
  78. } else {
  79. return Success("成功", userService.selectUserDeptList(qw));
  80. }
  81. }
  82. @ApiOperation("详情")
  83. @Log(title = "查询用户详情", businessType = BusinessType.QUERY)
  84. @GetMapping("/{id}")
  85. public AjaxResult getInfo(@PathVariable Long id) {
  86. User user = userService.selectUserById(id);
  87. if (user == null) {
  88. return Error("用户不存在");
  89. }
  90. return Success("成功", user);
  91. }
  92. @ApiOperation("新增")
  93. @Log(title = "新增用户", businessType = BusinessType.INSERT)
  94. @PostMapping
  95. public AjaxResult add(@RequestBody User user) {
  96. if (!userService.checkUserNameUnique(user)) {
  97. return Error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
  98. } else if (StringHelper.isNotEmpty(user.getTelephone()) && !userService.checkPhoneUnique(user)) {
  99. return Error("新增用户'" + user.getUserName() + "'失败,手机号码已存在或者手机号格式错误");
  100. }
  101. if (StringHelper.isEmpty(user.getPassword()))
  102. return Error("请输入密码");
  103. if (StringHelper.isEmpty(user.getUserName()))
  104. return Error("请输入姓名");
  105. if (StringHelper.isEmpty(user.getNickName()))
  106. return Error("请输入工号");
  107. user.setMobileShow(user.getMobile().substring(0,3)+"****"+user.getMobile().substring(7));
  108. user.setMobile(SecretHelper.AesEncrypt( user.getMobile()));
  109. user.setPassword(SecretHelper.MD5(user.getPassword()));
  110. user.setCreateBy(CurrentUser().getUserName());
  111. boolean result = userService.insert(user);
  112. if (result) {
  113. return Success("新增成功");
  114. } else {
  115. return Error("新增失败");
  116. }
  117. }
  118. @ApiOperation("编辑")
  119. @Log(title = "修改角色信息", businessType = BusinessType.UPDATE)
  120. @PutMapping
  121. public AjaxResult edit(@RequestBody User user) {
  122. userService.checkUserAllowed(user);
  123. if (!userService.checkUserNameUnique(user)) {
  124. return Error("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
  125. } else if (StringHelper.isNotEmpty(user.getTelephone()) && !userService.checkPhoneUnique(user)) {
  126. return Error("修改用户'" + user.getUserName() + "'失败,手机号码已存在或者手机号格式错误");
  127. }
  128. User use = userService.selectUserById(user.getUserId());
  129. if (use==null)
  130. return Error("用户不存在");
  131. user.setPassword(use.getPassword());
  132. user.setCreateBy(CurrentUser().getUserName());
  133. user.setCreateTime(new Date());
  134. Dept dept= deptService.getEntity( user.getDeptId());
  135. boolean result = userService.update(user);
  136. if (result) {
  137. return Success("修改成功");
  138. } else {
  139. return Error("修改失败");
  140. }
  141. }
  142. /**
  143. * 删除用户
  144. *
  145. * @param ids
  146. * @return
  147. */
  148. @ApiOperation("删除")
  149. @Log(title = "删除用户", businessType = BusinessType.DELETE)
  150. @DeleteMapping("/{ids}")
  151. public AjaxResult delete(@PathVariable Long[] ids) {
  152. LambdaUpdateWrapper<User> uw = new LambdaUpdateWrapper<>();
  153. uw.set(User::getDeleteFlag, "2").in(User::getUserId, ids);
  154. boolean result = userService.updateBatch(uw);
  155. if (result) {
  156. return Success("删除成功");
  157. } else {
  158. return Error("删除失败");
  159. }
  160. }
  161. /**
  162. * 重置密码
  163. */
  164. @ApiOperation("重置密码")
  165. @Log(title = "重置密码", businessType = BusinessType.OTHER)
  166. @PutMapping("/resetPwd")
  167. public AjaxResult resetPwd(@RequestBody User user) {
  168. //校验用户操作
  169. //校验用户权限
  170. // userService.checkUserAllowed(user);
  171. //userService.checkUserDataScope(user);
  172. LambdaQueryWrapper<User> qw = new LambdaQueryWrapper<>();
  173. qw.eq(User::getUserId, user.getUserId())
  174. .eq(User::getDeleteFlag, "0");
  175. User entity = userService.getEntity(qw);
  176. userService.checkUserAllowed(entity);
  177. // if (!FormatHelper.checkPassword(user.getPassword())) {
  178. // return Error("密码长度为8到20位,必须包含字母和数字,字母区分大小写!");
  179. // }
  180. //md5加密
  181. String password = SecretHelper.MD5(user.getPassword());
  182. entity.setPassword(password);
  183. if (userService.update(entity)) {
  184. return Success("修改成功!");
  185. }
  186. return Error("修改失败!");
  187. }
  188. /**
  189. * 修改密码
  190. */
  191. @ApiOperation("修改密码")
  192. @Log(title = "修改密码", businessType = BusinessType.OTHER)
  193. @PutMapping("/UpdatePwd")
  194. public AjaxResult UpdatePwd(String oldPwd ,String Pwd) {
  195. UserView currentUser=CurrentUser();
  196. if (!currentUser.getPassword().equals(SecretHelper.MD5(oldPwd)))
  197. {
  198. return Error("旧密码不正确");
  199. }
  200. var entity=userService.getEntity(currentUser.getUserId());
  201. String password = SecretHelper.MD5(Pwd);
  202. entity.setPassword(password);
  203. if (userService.update(entity)) {
  204. return Success("修改成功!");
  205. }
  206. return Error("修改失败!");
  207. }
  208. // /**
  209. // * 修改图像
  210. // */
  211. // @ApiOperation("修改图像")
  212. // @Log(title = "修改图像", businessType = BusinessType.OTHER)
  213. // @GetMapping("/avatar")
  214. // public AjaxResult avatar( String url) {
  215. // UserView currentUser=CurrentUser();
  216. // var entity=userService.getEntity(currentUser.getUserId());
  217. // entity.setAvatar(url);
  218. // if (userService.update(entity)) {
  219. // return Success("修改成功!");
  220. // }
  221. // return Error("修改失败!");
  222. // }
  223. /**
  224. * 修改状态
  225. *
  226. * @param user
  227. * @return
  228. */
  229. @ApiOperation("修改状态 禁用用户")
  230. @PutMapping("/changeStatus")
  231. public AjaxResult changeStatus(@RequestBody User user) {
  232. //校验用户操作
  233. //校验用户权限
  234. userService.checkUserAllowed(user);
  235. //userService.checkUserDataScope(user);
  236. LambdaQueryWrapper<User> qw = new LambdaQueryWrapper<>();
  237. qw.eq(User::getUserId, user.getUserId()).eq(User::getDeleteFlag, "0");
  238. User entity = userService.getEntity(qw);
  239. entity.setDeleteFlag(user.getDeleteFlag());
  240. if (entity == null) {
  241. return Error("用户不存在");
  242. }
  243. if (userService.update(entity)) {
  244. return Success("修改成功!");
  245. }
  246. return Error("修改失败!");
  247. }
  248. /**
  249. * 获取部门树列表
  250. */
  251. @GetMapping("/deptTree")
  252. public AjaxResult deptTree(Dept dept) {
  253. return Success("查询成功", deptService.selectDeptTreeList(dept));
  254. }
  255. @GetMapping("/deptUserTree")
  256. @Anonymous
  257. public AjaxResult deptUserTree(Dept dept) {
  258. return Success("查询成功", deptService.selectUserDeptTreeList(dept));
  259. }
  260. /**
  261. * 导出excel
  262. *
  263. */
  264. @ApiOperation("导出Excel")
  265. @Log(title = "导出excel", businessType = BusinessType.EXPORT)
  266. @PostMapping("/exportExcel")
  267. public void ExportExcel(User input) {
  268. LambdaQueryWrapper<User> qw = new LambdaQueryWrapper();
  269. qw.eq(input.getUserId() != null && input.getUserId() > 0, User::getUserId, input.getUserId());
  270. qw.eq(input.getDeptId() != null && input.getDeptId() > 0, User::getDeptId, input.getDeptId());
  271. qw.like(!StringHelper.isEmpty(input.getUserName()), User::getUserName, input.getUserName());
  272. qw.like(!StringHelper.isEmpty(input.getNickName()), User::getNickName, input.getNickName());
  273. qw.like(!StringHelper.isEmpty(input.getTelephone()), User::getTelephone, input.getTelephone());
  274. qw.like(!StringHelper.isEmpty(input.getSex()), User::getSex, input.getSex());
  275. qw.like(!StringHelper.isEmpty(input.getPassword()), User::getPassword, input.getPassword());
  276. qw.eq(User::getDeleteFlag, "0");
  277. qw.like(!StringHelper.isEmpty(input.getCreateBy()), User::getCreateBy, input.getCreateBy());
  278. qw.eq(input.getCreateTime() != null, User::getCreateTime, input.getCreateTime());
  279. qw.eq(input.getUpdateTime() != null, User::getUpdateTime, input.getUpdateTime());
  280. qw.like(!StringHelper.isEmpty(input.getRemark()), User::getRemark, input.getRemark());
  281. ExcelHelper<User> excel = new ExcelHelper<>(User.class);
  282. excel.exportExcel("xlsx", userService.getList(qw));
  283. }
  284. /**
  285. * excel导入
  286. *
  287. * @param file
  288. * @return
  289. * @throws Exception
  290. */
  291. @ApiOperation("导入Excel")
  292. @Log(title = "excel导入", businessType = BusinessType.IMPORT)
  293. @PostMapping("/importData")
  294. public AjaxResult importExcel(MultipartFile file, Boolean updateSupport) throws Exception {
  295. ExcelHelper<User> excel = new ExcelHelper<>(User.class);
  296. List<User> list = excel.importExcel(file.getInputStream());
  297. if (list == null) {
  298. return Error("导入失败");
  299. }
  300. String operName = CurrentUser().getUserName();
  301. Long dept_id = CurrentUser().getDeptId();
  302. String result = userService.importUser(list, updateSupport, operName, dept_id);
  303. if (result == null) {
  304. return Error("导入失败");
  305. }
  306. return Success("导入完成", result);
  307. }
  308. /**
  309. * 删除用户与角色直接的关联
  310. */
  311. @Log(title = "删除用户与角色直接的关联", businessType = BusinessType.DELETE)
  312. @DeleteMapping("/deleteUserRole/{userId}")
  313. public AjaxResult deleteUserRole(@PathVariable Long userId) {
  314. if (userService.deleteUserRoleByUserId(userId) > 0) {
  315. return Success("删除成功");
  316. } else {
  317. return Error("删除失败");
  318. }
  319. }
  320. /**
  321. * 批量在某角色下添加用户
  322. */
  323. @Log(title = "批量在某角色下添加用户", businessType = BusinessType.OTHER)
  324. @PostMapping("/addUsersByRoleId")
  325. public AjaxResult addUsersByRoleId(Long[] userIds, Long roleId) {
  326. userService.addUsersRole(userIds, roleId);
  327. return Success("成功");
  328. }
  329. /**
  330. * 根据roleId获取用户列表
  331. */
  332. @Log(title = "根据roleId获取用户列表", businessType = BusinessType.QUERY)
  333. @GetMapping("/getUserListByRoleId/{roleId}")
  334. public AjaxResult getUserListByRoleId(@PathVariable("roleId") Long roleId) {
  335. List<User> userList = userService.selectUserListByRoleId(roleId);
  336. if (userList != null) {
  337. return Success("成功", userList);
  338. }
  339. return Error("该角色暂无用户!");
  340. }
  341. /**
  342. * 分配角色
  343. * @param userId
  344. * @return
  345. */
  346. @Log(title = "分配角色", businessType = BusinessType.OTHER)
  347. @GetMapping("/authRole/{userId}")
  348. public AjaxResult authRole(@PathVariable("userId") Long userId) {
  349. Map<String, Object> map = new HashMap<>();
  350. User user = userService.getEntity(userId);
  351. LambdaQueryWrapper<Role> qw2 = new LambdaQueryWrapper<>();
  352. qw2.eq(Role::getRoleId, userId);
  353. List<Role> roles = roleService.selectRolesByUserId(userId);
  354. map.put("user", user);
  355. map.put("roles", user.isAdmin() ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
  356. return Success("成功", map);
  357. }
  358. /**
  359. * 用户授权角色
  360. */
  361. @Log(title = "用户授权角色,改成单选roleid传int", businessType = BusinessType.GRANT)
  362. @PutMapping("/authRole")
  363. public AjaxResult insertAuthRole(Long userId, Long roleId) {
  364. userService.checkUserDataScope(userService.getEntity(userId));
  365. // userService.insertUserAuth(userId, roleIds);
  366. Role role= roleService.getEntity(roleId);
  367. //给user表的roleid赋值
  368. LambdaUpdateWrapper<User> uw=new LambdaUpdateWrapper<>();
  369. uw.eq(User::getUserId,userId);
  370. uw.set(User::getRoleId,roleId).set(User::getRoleCode,role.getRoleCode());
  371. userService.updateBatch(uw);
  372. return Success("授权成功!");
  373. }
  374. @Log(title = "根据name获取用户部门的name,tel", businessType = BusinessType.QUERY)
  375. @GetMapping("/getnametelbyname")
  376. public AjaxResult getNameTelListByName(String name) {
  377. HashMap<String,String> hashMap=new HashMap<>();
  378. LambdaQueryWrapper<User> qw2 = new LambdaQueryWrapper<>();
  379. qw2.eq(User::getDeleteFlag, 0).like(User::getNickName, name);
  380. List<User> userList =userService.getList(qw2);
  381. for (User user:userList)
  382. {
  383. hashMap.put(user.getNickName(),user.getTelephone());
  384. }
  385. LambdaQueryWrapper<Dept> qw = new LambdaQueryWrapper<>();
  386. qw.eq(Dept::getDelFlag, 0).like(Dept::getDeptName, name);
  387. List<Dept> depts =deptService.getList(qw);
  388. for (Dept dept:depts)
  389. {
  390. hashMap.put(dept.getDeptName(),dept.getPhone());
  391. }
  392. return Success("成功",hashMap);
  393. }
  394. }