SysUserController.java 37 KB

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