SysUserController.java 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762
  1. package com.ydtech.modules.admin.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.ydtech.aop.request.RequestSingleParam;
  7. import com.ydtech.constants.SysConstants;
  8. import com.ydtech.core.page.HttpResult;
  9. import com.ydtech.core.page.PageRequest;
  10. import com.ydtech.core.page.PageResult;
  11. import com.ydtech.exception.SystemException;
  12. import com.ydtech.modules.admin.constants.RoleConstants;
  13. import com.ydtech.modules.admin.model.*;
  14. import com.ydtech.modules.admin.model.dto.AgentUserDto;
  15. import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
  16. import com.ydtech.modules.admin.model.dto.QuUserNumDto;
  17. import com.ydtech.modules.admin.model.dto.SysUserDto;
  18. import com.ydtech.modules.admin.model.vo.*;
  19. import com.ydtech.modules.admin.service.*;
  20. import com.ydtech.modules.base.controller.BaseController;
  21. import com.ydtech.modules.base.model.dto.BaseDto;
  22. import com.ydtech.modules.base.model.dto.PageDto;
  23. import com.ydtech.modules.base.model.vo.PageVo;
  24. import com.ydtech.modules.esm.model.EsmUserReferrer;
  25. import com.ydtech.modules.esm.model.vo.EsmUserImageQueryVo;
  26. import com.ydtech.modules.esm.service.EsmUserImageService;
  27. import com.ydtech.modules.esm.service.EsmUserReferrerService;
  28. import com.ydtech.modules.order.entity.po.InsUploadFiles;
  29. import com.ydtech.modules.order.service.InsUploadFilesService;
  30. import com.ydtech.modules.protocol.utils.AssertionUtils;
  31. import com.ydtech.security.utils.PasswordUtils;
  32. import com.ydtech.utils.StringUtils;
  33. import com.ydtech.utils.idgen.IdGenerate;
  34. import io.swagger.annotations.Api;
  35. import io.swagger.annotations.ApiImplicitParam;
  36. import io.swagger.annotations.ApiImplicitParams;
  37. import io.swagger.annotations.ApiOperation;
  38. import lombok.RequiredArgsConstructor;
  39. import org.springframework.data.redis.core.StringRedisTemplate;
  40. import org.springframework.transaction.annotation.Transactional;
  41. import org.springframework.util.ObjectUtils;
  42. import org.springframework.web.bind.annotation.*;
  43. import javax.validation.Valid;
  44. import java.util.Date;
  45. import java.util.List;
  46. import static com.ydtech.constants.RedisConstant.PHONE_VERIFICATION_CODE_KEY;
  47. /**
  48. * 用户控制器
  49. *
  50. * @author Yasepix
  51. * @date Oct 29, 2018
  52. */
  53. @RestController
  54. @Api(tags = "用户控制器")
  55. @RequestMapping("user")
  56. @RequiredArgsConstructor
  57. public class SysUserController extends BaseController {
  58. private final SysUserService sysUserService;
  59. private final SysUserRoleService sysUserRoleService;
  60. private final SysDeptService sysDeptService;
  61. private final SysUserInfoService sysUserInfoService;
  62. private final EsmUserReferrerService esmUserReferrerService;
  63. private final SysRoleService sysRoleService;
  64. private final EsmUserImageService esmUserImageService;
  65. private final StringRedisTemplate redisTemplate;
  66. private final InsUploadFilesService insUploadFilesService;
  67. // @PreAuthorize("hasAuthority('sys:user:delete')")
  68. @ApiOperation(value = "逻辑删除")
  69. @PostMapping(value = "/deleteFlag")
  70. public HttpResult deleteFlag(@RequestBody List<SysUser> records) {
  71. for (SysUser record : records) {
  72. SysUser sysUser = sysUserService.getById(record.getId());
  73. if (sysUser != null && SysConstants.ADMIN.equalsIgnoreCase(sysUser.getName())) {
  74. return HttpResult.error("超级管理员不允许删除!");
  75. }
  76. }
  77. return HttpResult.ok(sysUserService.deleteFlag(records));
  78. }
  79. // @PreAuthorize("hasAuthority('sys:user:view')")
  80. @GetMapping(value = "/findByName")
  81. public HttpResult findByUserName(@RequestParam String name) {
  82. return HttpResult.ok(sysUserService.getById(name));
  83. }
  84. // @PreAuthorize("hasAuthority('sys:user:view')")
  85. @GetMapping(value = "/findPermissions")
  86. public HttpResult findPermissions(@RequestParam String name) {
  87. SysUser sysUser = new SysUser();
  88. sysUser.setId(name);
  89. return HttpResult.ok(sysUserService.findPermissions(sysUser));
  90. }
  91. // @PreAuthorize("hasAuthority('sys:user:view')")
  92. @GetMapping(value = "/findUserRoles")
  93. public HttpResult findUserRoles(@RequestParam Long userId) {
  94. return HttpResult.ok(sysUserService.findUserRoles(userId));
  95. }
  96. /**
  97. * 用户角色分页查询
  98. *
  99. * @param pageRequest
  100. * @return
  101. */
  102. @PostMapping(value = "/queryPage")
  103. public HttpResult queryPage(@RequestBody PageRequest pageRequest) {
  104. String deptid = pageRequest.getColumnFilterValue(pageRequest, "deptid");
  105. String name = pageRequest.getColumnFilterValue(pageRequest, "name");
  106. String containsSubDept = pageRequest.getColumnFilterValue(pageRequest, "containsSubDept");
  107. String mobile = pageRequest.getColumnFilterValue(pageRequest, "mobile");
  108. SysUser sysUser = new SysUser();
  109. sysUser.setDeptId(deptid);
  110. sysUser.setName(name);
  111. sysUser.setMobile(mobile);
  112. Page page = PageRequest.buildPageRequest(pageRequest);
  113. IPage<SysUser> pResult = sysUserService.selectUserPage(page, sysUser, containsSubDept);
  114. //传入查询条件
  115. PageResult pageResult = PageResult.buildPageResult(pResult);
  116. return HttpResult.ok(pageResult);
  117. }
  118. /**
  119. * 配置用户角色
  120. *
  121. * @param userId
  122. * @param roleId
  123. * @return
  124. */
  125. @PostMapping(value = "/saveUserRole")
  126. @Transactional
  127. public HttpResult saveUserRole(@RequestParam String userId, @RequestParam String roleId) {
  128. SysUserRole userRole = new SysUserRole();
  129. sysUserRoleService.deleteByUserId(userId);
  130. userRole = new SysUserRole();
  131. userRole.setUserId(userId);
  132. userRole.setRoleId(Long.parseLong(roleId));
  133. userRole.setCreateBy(getUserName());
  134. userRole.setCreateTime(new Date());
  135. sysUserRoleService.save(userRole);
  136. return HttpResult.ok();
  137. }
  138. @ApiOperation(value = "获取用户综合信息")
  139. @PostMapping(value = "/gainUserSynthesisInfo/{userId}")
  140. public HttpResult gainUserSynthesisInfo(@PathVariable String userId) {
  141. return HttpResult.ok(sysUserService.gainUserSynthesisInfo(userId));
  142. }
  143. /**
  144. * Used
  145. *
  146. * @author: lig
  147. * @date: 2023年05月10日 0010
  148. */
  149. // @PreAuthorize("hasAuthority('sys:user:view')")
  150. @PostMapping(value = "/findPageUsed")
  151. @Deprecated
  152. public HttpResult findPageUsed(@RequestBody PageRequest pageRequest) {
  153. int pageNum = pageRequest.getPageNum();
  154. int pageSize = pageRequest.getPageSize();
  155. String name = pageRequest.getColumnFilterValue(pageRequest, "name");
  156. //需要处理传入的部门
  157. PageResult pageResult = sysUserService.selectPagingCustom(pageNum, pageSize, name, "");
  158. sysUserService.findSysUseresmUserInternalVORoles(pageResult);
  159. return HttpResult.ok(pageResult);
  160. }
  161. /**
  162. * 密码修改
  163. *
  164. * @param id
  165. * @param password
  166. * @return
  167. */
  168. @PostMapping(value = "/updatePwd")
  169. public HttpResult updatePwd(@RequestParam String id, @RequestParam String password) {
  170. if (StringUtils.isEmpty(id) || StringUtils.isEmpty(password)) {
  171. return HttpResult.error("ID和密码不能为空");
  172. }
  173. SysUser sysUser = sysUserService.getById(id);
  174. if (sysUser == null) {
  175. return HttpResult.error("ID不存在");
  176. }
  177. //密码加密
  178. String pwd = PasswordUtils.encode(password, sysUser.getSalt());
  179. sysUser.setPassword(pwd);
  180. sysUserService.updateById(sysUser);
  181. return HttpResult.ok("修改成功");
  182. }
  183. /**
  184. * 手机号更新
  185. *
  186. * @param id
  187. * @param mobile
  188. * @return
  189. */
  190. @PostMapping(value = "/updateMobile")
  191. public HttpResult updateMobile(@RequestParam String id, @RequestParam String mobile) {
  192. if (StringUtils.isEmpty(id) || StringUtils.isEmpty(mobile)) {
  193. return HttpResult.error("ID和手机号不能为空");
  194. }
  195. SysUser sysUser = sysUserService.getById(id);
  196. if (sysUser == null) {
  197. return HttpResult.error("ID不存在");
  198. }
  199. LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
  200. lqw.ne(SysUser::getId, id);
  201. lqw.eq(SysUser::getMobile, mobile);
  202. List<SysUser> users = sysUserService.list(lqw);
  203. if (users != null && !users.isEmpty()) {
  204. return HttpResult.error("手机号已存在");
  205. }
  206. sysUser.setMobile(mobile);
  207. sysUserService.updateById(sysUser);
  208. return HttpResult.ok("修改成功");
  209. }
  210. /**
  211. * 根据工号查询推荐人信息
  212. *
  213. * @param id
  214. * @return
  215. */
  216. @GetMapping(value = "/findById")
  217. public HttpResult findByUserId(@RequestParam String id) {
  218. SysUserVO sysUserVO = sysUserService.gainUserInternal(id);
  219. if (sysUserVO != null) {
  220. return HttpResult.ok(sysUserVO);
  221. }
  222. throw new SystemException("没有推荐人");
  223. }
  224. /**
  225. * 根据部门ID查询该部门的团队长信息
  226. *
  227. * @param deptId
  228. * @return
  229. */
  230. @GetMapping(value = "/selectByDeptId")
  231. public HttpResult selectByDeptId(String deptId) {
  232. return HttpResult.ok(sysUserService.gainUserInternalByDeptId(deptId));
  233. }
  234. /**
  235. * 根据部门id查询该部门的推荐人信息
  236. */
  237. @GetMapping("/selectfindByreferrerId")
  238. public HttpResult findByReferrerId(@Valid String deptId) {
  239. return HttpResult.ok(sysUserService.findByReferrerId(deptId));
  240. }
  241. /**
  242. * 根据部门id查询后线人员的所有人信息
  243. */
  244. @ApiOperation(value = "获取后线人员信息")
  245. @GetMapping("/findBackListByDeptId")
  246. public HttpResult findBackListByDeptId(String deptId) {
  247. return HttpResult.ok(sysUserService.findBackListByDeptId(deptId));
  248. }
  249. /**
  250. * 根据部门id查询该部门的所有人信息
  251. */
  252. @PostMapping("/findListByDeptId")
  253. public HttpResult findListByDeptId(@RequestBody SysUser sysUser) {
  254. return HttpResult.ok(sysUserService.findListByDeptId(sysUser));
  255. }
  256. /**
  257. * @author: lig
  258. * @date: 2023年06月30日 0030
  259. */
  260. @ApiOperation(value = "(重构)保存或更新")
  261. @PostMapping(value = "/saveOrUpdate")
  262. @Transactional
  263. public HttpResult saveOrUpdate(@RequestBody SysUser sysUser) {
  264. if (StringUtils.isNullOrEmpty(sysUser.getMobile())) {
  265. return HttpResult.error("手机不能为空");
  266. }
  267. if (StringUtils.isNullOrEmpty(sysUser.getDeptId())) {
  268. return HttpResult.error("机构ID不能为空");
  269. }
  270. //处理密码
  271. if (StringUtils.isNotEmpty(sysUser.getPassword())) {
  272. String salt = PasswordUtils.getSalt();
  273. String pwd = PasswordUtils.encode(sysUser.getPassword(), salt);
  274. sysUser.setPassword(pwd);
  275. sysUser.setSalt(salt);
  276. }
  277. sysUserService.saveUser(sysUser);
  278. return HttpResult.ok(sysUser);
  279. }
  280. @ApiOperation(value = "(重构)逻辑删除")
  281. @PostMapping(value = "/logicDeleteBatch")
  282. public HttpResult logicDeleteBatch(@RequestBody List<String> userIds) {
  283. if (null != userIds && !userIds.isEmpty()) {
  284. LambdaUpdateWrapper<SysUser> luw = new LambdaUpdateWrapper<>();
  285. luw.set(SysUser::getStatus, "0");
  286. luw.in(SysUser::getId, userIds);
  287. sysUserService.update(luw);
  288. return HttpResult.ok();
  289. }
  290. return HttpResult.error("请正确选择参数");
  291. }
  292. @ApiOperation(value = "(重构)用户查询分页")
  293. @PostMapping(value = "/findPage")
  294. public HttpResult<PageVo<SysUserBaseVO>> findPage(@RequestBody PageDto<SysUserDto> pageDto) {
  295. //获取用户角色
  296. SysUser user = getUser();
  297. //如果查询后线人员
  298. // if (RoleConstants.R22.getCode().equals(pageDto.getDto().getRoleId())) {
  299. // if (RoleConstants.R17.getCode().equals(user.getRoleId())) {
  300. // pageDto.getDto().setRoleId("18,22");
  301. // } else if (RoleConstants.R18.getCode().equals(user.getRoleId())) {
  302. // pageDto.getDto().setRoleId("22");
  303. // }
  304. // }
  305. if (RoleConstants.R22.getCode().equals(pageDto.getDto().getRoleId())) {
  306. pageDto.getDto().setRoleId("17,18,22,23,24,25,28,29,30,31,32,38");
  307. }
  308. //设置登录用户的部门
  309. if ("".equals(pageDto.getDto().getDeptId()) || null == pageDto.getDto().getDeptId()) {
  310. pageDto.getDto().setDeptId(user.getDeptId());
  311. }
  312. return HttpResult.ok(sysUserService.gainUserPage(pageDto));
  313. }
  314. @ApiOperation(value = "渠道和个代的用户查询分页")
  315. @PostMapping(value = "/findUserList")
  316. public HttpResult findUserList(@RequestBody PageDto<SysUserDto> pageDto) {
  317. if (pageDto.getDto().getDeptId() == null) {
  318. BaseController baseController = new BaseController();
  319. pageDto.getDto().setDeptId(baseController.getDeptId());
  320. }
  321. return HttpResult.ok(sysUserService.findUserList(pageDto));
  322. }
  323. @ApiOperation(value = "后线用户查询分页")
  324. @PostMapping(value = "/findBackUserList")
  325. public HttpResult findBackUserList(@RequestBody PageDto<SysUserDto> pageDto) {
  326. if (pageDto.getDto().getDeptId() == null) {
  327. BaseController baseController = new BaseController();
  328. pageDto.getDto().setDeptId(baseController.getDeptId());
  329. }
  330. return HttpResult.ok(sysUserService.findBackUserList(pageDto));
  331. }
  332. @ApiOperation(value = "渠道数据统计")
  333. @PostMapping(value = "/quTeamNum")
  334. public HttpResult quTeamNum(@RequestBody QuTeamNumDto quTeamNumDto) {
  335. return HttpResult.ok("", sysUserService.quTeamNum(quTeamNumDto));
  336. }
  337. @ApiOperation(value = "渠道数据统计详情")
  338. @PostMapping(value = "/quTeamNumDetail")
  339. public HttpResult quTeamNumDetail(@RequestBody QuTeamNumDto quTeamNumDto) {
  340. return HttpResult.ok("", sysUserService.getQuTeamByCompany(quTeamNumDto));
  341. }
  342. @ApiOperation(value = "(重构)审批通过")
  343. @ApiImplicitParams({
  344. @ApiImplicitParam(name = "userId", value = "用户ID")
  345. })
  346. @GetMapping(value = "/approvalPass")
  347. public HttpResult approvalPass(@RequestParam String userId) {
  348. SysUser sysUser = sysUserService.getById(userId);
  349. sysUser.setStatus(1);
  350. return HttpResult.ok(sysUserService.updateById(sysUser));
  351. }
  352. @ApiOperation(value = "(重构)审批不通过")
  353. @ApiImplicitParams({
  354. @ApiImplicitParam(name = "userId", value = "用户ID"),
  355. @ApiImplicitParam(name = "reason", value = "原因")
  356. })
  357. @GetMapping(value = "/approvalNotPass")
  358. public HttpResult<Boolean> approvalNotPass(@RequestParam String userId, @RequestParam String reason) {
  359. SysUser sysUser = sysUserService.getById(userId);
  360. sysUser.setStatus(3);
  361. sysUser.setApprovalOpinion(reason);
  362. return HttpResult.ok(sysUserService.updateById(sysUser));
  363. }
  364. @ApiOperation(value = "(重构)获取用户")
  365. @ApiImplicitParams({
  366. @ApiImplicitParam(name = "userId", required = true, value = "用户ID")
  367. })
  368. @GetMapping(value = "/{userId}")
  369. public HttpResult findUserById(@PathVariable String userId) {
  370. SysUserInfoQuery sysUserVo = new SysUserInfoQuery();
  371. // 查询用户
  372. SysUser sysUser = sysUserService.getById(userId);
  373. // 查询角色
  374. SysUserRole sysUserRole = sysUserRoleService.selectByUserId(userId);
  375. // SysUserRole sysUserRole = sysUserRoleService.getById(userId);
  376. if (!ObjectUtils.isEmpty(sysUserRole)) {
  377. sysUser.setRoleId(StringUtils.toString(sysUserRole.getRoleId()));
  378. }
  379. if ("19".equals(sysUser.getRoleId())) {
  380. SysUser operator = sysUserService.getById(sysUser.getOperatorCode());
  381. sysUser.setReferrerId(operator != null ? operator.getId() : "");
  382. sysUser.setReferrerName(operator != null ? operator.getName() : "");
  383. sysUserVo.setSysUser(sysUser);
  384. return HttpResult.ok(sysUserVo);
  385. }
  386. // 查询推荐人
  387. EsmUserReferrer referrer = esmUserReferrerService.getById(userId);
  388. if (ObjectUtils.isEmpty(referrer)) {
  389. sysUser.setReferrerId(null);
  390. sysUser.setReferrerName(null);
  391. } else {
  392. sysUser.setReferrerId(referrer.getReferrerId());
  393. sysUser.setReferrerName(referrer.getReferrerName());
  394. }
  395. //查询详情信息
  396. SysUserInfo userInfo = sysUserInfoService.getById(userId);
  397. List<EsmUserImageQueryVo> esmUserImageQueryVo = esmUserImageService.getEsmUserImageQueryVo(userId);
  398. sysUserVo.setSysUser(sysUser);
  399. sysUserVo.setSysUserInfo(userInfo);
  400. sysUserVo.setEsmUserImageVo(esmUserImageQueryVo);
  401. return HttpResult.ok(sysUserVo);
  402. }
  403. @ApiOperation(value = "(new)获取登录用户")
  404. @GetMapping(value = "/loginUser")
  405. public HttpResult loginUser() {
  406. SysUser sysUser = sysUserService.getById(getUserId());
  407. SysRole sysRole = sysUserRoleService.gainRoleByUserId(sysUser.getId());
  408. if (null != sysRole) {
  409. sysUser.setRoleId(StringUtils.toString(sysRole.getId()));
  410. sysUser.setRoleName(sysRole.getName());
  411. }
  412. if (StringUtils.isNotEmpty(sysUser.getDeptId())) {
  413. SysDept sysDept = sysDeptService.getById(sysUser.getDeptId());
  414. sysUser.setDeptName(sysDept.getName());
  415. sysUser.setIsHasAddUser(sysDept.getManagementSource() != null ? 1 : 0);
  416. sysUser.setManagementSource(sysDept.getManagementSource());
  417. }
  418. EsmUserReferrer eur = esmUserReferrerService.getById(sysUser.getId());
  419. if (null != eur) {
  420. sysUser.setReferrerId(eur.getReferrerId());
  421. sysUser.setReferrerName(eur.getReferrerName());
  422. }
  423. InsUploadFiles insUploadFiles = insUploadFilesService.getById(sysUser.getHeadSculpture());
  424. if (null != insUploadFiles) {
  425. sysUser.setHeadSculpture(insUploadFiles.getUrl());
  426. }
  427. return HttpResult.ok(sysUser);
  428. }
  429. @ApiOperation(value = "获取可选业务员列表")
  430. @GetMapping(value = "/getAllUsers")
  431. public HttpResult getAllUsers(@RequestParam(required = false) String userId) {
  432. List<SysUser> userList = sysUserService.findAllAgentRoleUser(userId, "20");
  433. return HttpResult.ok(userList);
  434. }
  435. @ApiOperation(value = "(new)是否绑定微信")
  436. @GetMapping(value = "/isBindWechat")
  437. public HttpResult<Object> isBindWechat() {
  438. SysUser sysUser = sysUserService.getById(getUserId());
  439. String openid = sysUser.getOpenid();
  440. AssertionUtils.isStringEmpty(openid, "未绑定微信");
  441. return HttpResult.ok();
  442. }
  443. /**
  444. * 个代注册、出单员注册
  445. *
  446. * @author: lig
  447. * @date: 2023年07月03日 0003
  448. */
  449. @ApiOperation(value = "(new)个代/出单员注册")
  450. @PostMapping(value = "/agentRegist")
  451. @Transactional
  452. public HttpResult agentRegist(@RequestBody AgentUserDto dto) {
  453. int noCount = 3;//顺序号是几位的
  454. List<SysUser> list = sysUserService.lambdaQuery().eq(SysUser::getMobile, dto.getMobile()).list();
  455. if (!list.isEmpty()) {
  456. throw new SystemException("手机号已经被注册请重新跟换手机号。如有疑问请联系管理人员。");
  457. }
  458. if (StringUtils.isNullOrEmpty(dto.getFlag())) {
  459. return HttpResult.error("个代、出单员标识不能为空");
  460. }
  461. if (StringUtils.isNullOrEmpty(dto.getMobile()) || StringUtils.isNullOrEmpty(dto.getMobileMsg())) {
  462. return HttpResult.error("手机号、验证码不能为空");
  463. }
  464. if (StringUtils.isNullOrEmpty(dto.getName())) {
  465. return HttpResult.error("姓名不能为空");
  466. }
  467. if (StringUtils.isNullOrEmpty(dto.getPassword())) {
  468. return HttpResult.error("密码不能为空");
  469. }
  470. if (StringUtils.isNullOrEmpty(dto.getReferrerId())) {
  471. return HttpResult.error("推荐人不能为空");
  472. }
  473. String captcha_redis = (String) redisTemplate.opsForValue().get(PHONE_VERIFICATION_CODE_KEY + dto.getMobile());
  474. redisTemplate.delete(PHONE_VERIFICATION_CODE_KEY + dto.getMobile());
  475. if (captcha_redis == null) {
  476. return HttpResult.error("验证码已失效");
  477. }
  478. if (!dto.getMobileMsg().equals(captcha_redis)) {
  479. return HttpResult.error("验证码错误");
  480. }
  481. String recommenderid = dto.getReferrerId();
  482. SysUser recommender = sysUserService.getById(recommenderid);
  483. if (recommender == null) {
  484. return HttpResult.error("推荐人信息不存在");
  485. }
  486. //只有团队长和代理人才能邀请 by gws
  487. SysUserRole recommenderRole = sysUserRoleService.selectByUserId(recommenderid);
  488. if (!"20".equals(recommenderRole.getRoleId().toString()) && !"21".equals(recommenderRole.getRoleId().toString())) {
  489. return HttpResult.error("只有团队长和代理人才能推荐");
  490. }
  491. SysUser sysUser = sysUserService.findByPhone(dto.getMobile());
  492. if (sysUser != null) {
  493. return HttpResult.error("手机号已存在");
  494. } else {
  495. sysUser = new SysUser();
  496. }
  497. String nextPK;
  498. //根据机构号获取userid最大值,不需要加人员类型判断 从sys_user获取
  499. String maxId = sysUserService.findMaxId(recommender.getDeptId());
  500. if (StringUtils.isNullOrEmpty(maxId)) {
  501. nextPK = recommender.getDeptId() + "001";
  502. } else {
  503. nextPK = IdGenerate.nextCode(maxId, noCount);
  504. }
  505. sysUser.setName(dto.getName());
  506. sysUser.setMobile(dto.getMobile());
  507. sysUser.setDeptId(recommender.getDeptId());
  508. //密码加密
  509. String salt = PasswordUtils.getSalt();
  510. String password = PasswordUtils.encode(dto.getPassword(), salt);
  511. sysUser.setPassword(password);
  512. sysUser.setSalt(salt);
  513. sysUser.setStatus(dto.getFlag().equals("1") ? 2 : 1);//1:正常 2:审批中
  514. sysUser.setId(nextPK);
  515. sysUser.setCreateBy("admin");
  516. if (dto.getFlag().equals("2")) {
  517. sysUser.setOperatorCode(recommenderid);
  518. }
  519. sysUserService.save(sysUser);
  520. //角色配置
  521. SysUserRole userRole = new SysUserRole();
  522. userRole.setUserId(nextPK);
  523. userRole.setRoleId(dto.getFlag().equals("1") ? 20L : 19L);
  524. sysUserRoleService.save(userRole);
  525. if (dto.getFlag().equals("1")) {
  526. esmUserReferrerService.addReferrer(dto.getReferrerId(), nextPK);
  527. }
  528. return HttpResult.ok("保存成功", sysUser.getId());
  529. }
  530. @GetMapping(value = "/findUserInfo/{userId}")
  531. @ApiOperation(value = "获取用户信息")
  532. @ApiImplicitParams({
  533. @ApiImplicitParam(name = "userId", value = "用户信息", required = true, dataType = "String")
  534. })
  535. //@SaCheckPermission("sys:menu:add")
  536. public HttpResult findUserInfo(@PathVariable String userId) {
  537. return HttpResult.ok(sysUserInfoService.getById(userId));
  538. }
  539. @ApiOperation(value = "保存用户基本详情信息")
  540. @PostMapping(value = "/saveUserInfo")
  541. public HttpResult saveUserInfo(@RequestBody SysUser2Vo sysUserVo) {
  542. //by gws 21 团队长 20 代理人 必须归属团队
  543. // 22 后线人员 必须归属部门
  544. SysUser sysUser = sysUserVo.getSysUser();
  545. if (StringUtils.isNullOrEmpty(sysUser)) {
  546. return HttpResult.error("用户信息不能为空");
  547. }
  548. if (StringUtils.isNullOrEmpty(sysUser.getDeptId())) {
  549. return HttpResult.error("机构ID不能为空");
  550. }
  551. if (StringUtils.isNullOrEmpty(sysUser.getRoleId())) {
  552. throw new SystemException("角色id不能为空");
  553. }
  554. //获取机构层级
  555. int deptLevel = sysUserService.getDeptLevel(sysUserVo);
  556. if (!StringUtils.isNullOrEmpty(sysUser.getRoleId())) {
  557. if (RoleConstants.R21.getCode().equals(sysUser.getRoleId())
  558. || RoleConstants.R20.getCode().equals(sysUser.getRoleId())
  559. || RoleConstants.R19.getCode().equals(sysUser.getRoleId())) {//19 出单员 21 团队长 20 代理人
  560. if (deptLevel != 6) {
  561. throw new SystemException("团队长、代理人、出单员只能归属团队中");
  562. }
  563. } else if (RoleConstants.R18.getCode().equals(sysUser.getRoleId())) { // 42 门店长
  564. if (deptLevel != 5) {
  565. throw new SystemException("机构管理员只能归属机构中");
  566. }
  567. } else if (RoleConstants.R17.getCode().equals(sysUser.getRoleId())) {
  568. if (deptLevel != 4) {
  569. throw new SystemException("部长只能归属于4级");
  570. }
  571. }
  572. }
  573. return sysUserService.saveUserInfo(sysUserVo);
  574. }
  575. @ApiOperation(value = "修改用户详情信息")
  576. @PostMapping(value = "/updateUserInfo/{userId}")
  577. @ApiImplicitParams({
  578. @ApiImplicitParam(name = "userId", value = "用户信息", required = true, dataType = "String")
  579. })
  580. @Transactional
  581. public HttpResult updateUserInfo(@PathVariable String userId, @RequestBody SysUser2Vo sysUserVo) {
  582. return sysUserService.updateUserInfo(userId, sysUserVo);
  583. }
  584. @ApiOperation(value = "获取推荐人分页信息")
  585. @PostMapping(value = "/referrerFindPage")
  586. public HttpResult<PageVo<SysReferrerVo>> referrerFindPage(@RequestBody PageDto<SysReferrerVo> pageDto) {
  587. return esmUserReferrerService.gainReferrerPage(pageDto);
  588. }
  589. @PostMapping(value = "/realNameAuth")
  590. @ApiOperation(value = "实名认证", notes = "参数1:姓名" +
  591. "</br>参数2:身份证号")
  592. public HttpResult realNameAuth(@RequestBody BaseDto dto) {
  593. SysUser sysUser = sysUserService.getById(getUserId());
  594. sysUser.setName(dto.getParam1());
  595. sysUser.setIdentity(dto.getParam2());
  596. // sysUser.setStatus(1);
  597. return HttpResult.ok(sysUserService.updateById(sysUser));
  598. }
  599. @PostMapping("/modifyingTheAvatar")
  600. @ApiOperation(value = "修改头像")
  601. public HttpResult modifyingTheAvatar(@RequestSingleParam("imagesId") String imagesId) {
  602. SysUser sysUser = sysUserService.getById(getUserId());
  603. sysUser.setHeadSculpture(imagesId);
  604. sysUserService.updateById(sysUser);
  605. return HttpResult.ok();
  606. }
  607. @ApiOperation(value = "根据传入机构,查询所有人员")
  608. @GetMapping(value = "/findUserList")
  609. public HttpResult findUserList(String deptId) {
  610. return HttpResult.ok(sysUserService.findUserList(deptId));
  611. }
  612. @ApiOperation(value = "获取树结构")
  613. @GetMapping(value = "/findTree")
  614. public HttpResult<List<SysUser>> findTree() {
  615. List<SysUser> list = sysUserService.findTree();
  616. return HttpResult.ok(list);
  617. }
  618. @ApiOperation(value = "区域数据管理")
  619. @PostMapping(value = "/quUserNum")
  620. public HttpResult quUserNum(@RequestBody QuUserNumDto quUserNumDto) {
  621. return HttpResult.ok("", sysUserService.quUserNum(quUserNumDto));
  622. }
  623. @ApiOperation(value = "区域数据管理详情")
  624. @PostMapping(value = "/quUserNumDetail")
  625. public HttpResult quUserNumDetail(@RequestBody QuUserNumDto quUserNumDto) {
  626. return HttpResult.ok("", sysUserService.getQuUserByCompany(quUserNumDto));
  627. }
  628. /**
  629. * @version
  630. * @author: hxl
  631. * @Date: 2024/4/16 16:16
  632. * @Description: 获取待客录入可选业务员列表 通过工号、姓名、手机号、身份证号
  633. */
  634. @ApiOperation(value = "获取待客录入可选业务员列表 通过工号、姓名、手机号、身份证号")
  635. @PostMapping(value = "/getAllUsersByHospitality")
  636. public HttpResult getAllUsersByHospitality(@RequestBody SysUserVOExt sysUserVOExt) {
  637. try{
  638. List<SysUserBaseVO> userList = sysUserService.getAllUsersByHospitality(sysUserVOExt);
  639. return HttpResult.ok(userList);
  640. }catch (Exception e){
  641. return HttpResult.error("查询失败"+e.getMessage());
  642. }
  643. }
  644. /**
  645. * @version
  646. * @author: hxl
  647. * @Date: 2024/4/18 16:12
  648. * @Description: 查询客服人员列表数据
  649. */
  650. @ApiOperation(value = "获取客服人员列表数据")
  651. @PostMapping(value = "/getCustomerUsers")
  652. public HttpResult getCustomerUsers() {
  653. try{
  654. List<SysUserBaseVO> userList = sysUserService.getCustomerUsers();
  655. return HttpResult.ok(userList);
  656. }catch (Exception e){
  657. return HttpResult.error("查询失败"+e.getMessage());
  658. }
  659. }
  660. }