SysUserController.java 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326
  1. package com.ydtech.modules.admin.controller;
  2. import cn.dev33.satoken.stp.StpUtil;
  3. import cn.hutool.extra.spring.SpringUtil;
  4. import com.baomidou.mybatisplus.core.conditions.Wrapper;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  7. import com.baomidou.mybatisplus.core.metadata.IPage;
  8. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  9. import com.ydtech.aop.request.RequestSingleParam;
  10. import com.ydtech.constants.SysConstants;
  11. import com.ydtech.core.page.HttpResult;
  12. import com.ydtech.core.page.PageRequest;
  13. import com.ydtech.core.page.PageResult;
  14. import com.ydtech.exception.SystemException;
  15. import com.ydtech.modules.admin.components.UnionPayRequestApiComponent;
  16. import com.ydtech.modules.admin.components.request.UnionPayRequest;
  17. import com.ydtech.modules.admin.components.response.UnionPayResponse;
  18. import com.ydtech.modules.admin.constants.RoleConstants;
  19. import com.ydtech.modules.admin.constants.UserWorkStatus;
  20. import com.ydtech.modules.admin.dao.SysAgencyLeaderMapper;
  21. import com.ydtech.modules.admin.dao.SysPartnerMapper;
  22. import com.ydtech.modules.admin.dao.SysUserMapper;
  23. import com.ydtech.modules.admin.dao.SysUserRecordMapper;
  24. import com.ydtech.modules.admin.model.*;
  25. import com.ydtech.modules.admin.model.dto.*;
  26. import com.ydtech.modules.admin.model.po.SysUserBankCard;
  27. import com.ydtech.modules.admin.model.po.SysUserIsDial;
  28. import com.ydtech.modules.admin.model.po.SysUserTreeShowLevel;
  29. import com.ydtech.modules.admin.model.vo.*;
  30. import com.ydtech.modules.admin.service.*;
  31. import com.ydtech.modules.admin.utils.DifferentPropertyUtils;
  32. import com.ydtech.modules.admin.utils.RecordUserUtils;
  33. import com.ydtech.modules.base.controller.BaseController;
  34. import com.ydtech.modules.base.model.dto.BaseDto;
  35. import com.ydtech.modules.base.model.dto.PageDto;
  36. import com.ydtech.modules.base.model.vo.PageVo;
  37. import com.ydtech.modules.esm.model.EsmUserReferrer;
  38. import com.ydtech.modules.esm.model.vo.EsmUserImageQueryVo;
  39. import com.ydtech.modules.esm.service.EsmUserImageService;
  40. import com.ydtech.modules.esm.service.EsmUserReferrerService;
  41. import com.ydtech.modules.message.constants.MessageTypeConstants;
  42. import com.ydtech.modules.message.service.MessageSecretaryService;
  43. import com.ydtech.modules.order.entity.po.InsUploadFiles;
  44. import com.ydtech.modules.order.service.InsUploadFilesService;
  45. import com.ydtech.modules.protocol.utils.AssertionUtils;
  46. import com.ydtech.security.utils.PasswordUtils;
  47. import com.ydtech.utils.StringUtils;
  48. import com.ydtech.utils.idgen.IdGenerate;
  49. import io.swagger.annotations.Api;
  50. import io.swagger.annotations.ApiImplicitParam;
  51. import io.swagger.annotations.ApiImplicitParams;
  52. import io.swagger.annotations.ApiOperation;
  53. import io.swagger.models.auth.In;
  54. import jodd.util.StringUtil;
  55. import lombok.RequiredArgsConstructor;
  56. import lombok.extern.slf4j.Slf4j;
  57. import org.springframework.beans.factory.annotation.Autowired;
  58. import org.springframework.data.redis.core.StringRedisTemplate;
  59. import org.springframework.transaction.annotation.Transactional;
  60. import org.springframework.util.CollectionUtils;
  61. import org.springframework.util.ObjectUtils;
  62. import org.springframework.web.bind.annotation.*;
  63. import javax.annotation.Resource;
  64. import javax.validation.Valid;
  65. import java.time.LocalDate;
  66. import java.util.*;
  67. import static com.ydtech.constants.RedisConstant.PHONE_VERIFICATION_CODE_KEY;
  68. /**
  69. * 用户控制器
  70. *
  71. * @author Yasepix
  72. * @date Oct 29, 2018
  73. */
  74. @RestController
  75. @Api(tags = "用户控制器")
  76. @RequestMapping("user")
  77. @RequiredArgsConstructor
  78. @Slf4j
  79. public class SysUserController extends BaseController {
  80. private final SysUserService sysUserService;
  81. private final SysUserRoleService sysUserRoleService;
  82. private final SysDeptService sysDeptService;
  83. private final SysUserInfoService sysUserInfoService;
  84. private final SysUserTreeShowLevelService sysUserTreeShowLevelService;
  85. private final EsmUserReferrerService esmUserReferrerService;
  86. private final SysRoleService sysRoleService;
  87. private final EsmUserImageService esmUserImageService;
  88. private final StringRedisTemplate redisTemplate;
  89. private final InsUploadFilesService insUploadFilesService;
  90. private final SysUserIsDialService sysUserIsDialService;
  91. private final MessageSecretaryService messageSecretaryService;
  92. private final SysUserTrackService sysUserTrackService;
  93. private final UnionPayRequestApiComponent unionPayRequestApiComponent;
  94. // @PreAuthorize("hasAuthority('sys:user:delete')")
  95. @ApiOperation(value = "逻辑删除")
  96. @PostMapping(value = "/deleteFlag")
  97. public HttpResult deleteFlag(@RequestBody List<SysUser> records) {
  98. for (SysUser record : records) {
  99. SysUser sysUser = sysUserService.getById(record.getId());
  100. if (sysUser != null && SysConstants.ADMIN.equalsIgnoreCase(sysUser.getName())) {
  101. return HttpResult.error("超级管理员不允许删除!");
  102. }
  103. }
  104. return HttpResult.ok(sysUserService.deleteFlag(records));
  105. }
  106. // @PreAuthorize("hasAuthority('sys:user:view')")
  107. @GetMapping(value = "/findByName")
  108. public HttpResult findByUserName(@RequestParam String name) {
  109. return HttpResult.ok(sysUserService.getById(name));
  110. }
  111. // @PreAuthorize("hasAuthority('sys:user:view')")
  112. @GetMapping(value = "/findPermissions")
  113. public HttpResult findPermissions(@RequestParam String name) {
  114. SysUser sysUser = new SysUser();
  115. sysUser.setId(name);
  116. return HttpResult.ok(sysUserService.findPermissions(sysUser));
  117. }
  118. // @PreAuthorize("hasAuthority('sys:user:view')")
  119. @GetMapping(value = "/findUserRoles")
  120. public HttpResult findUserRoles(@RequestParam Long userId) {
  121. return HttpResult.ok(sysUserService.findUserRoles(userId));
  122. }
  123. /**
  124. * 用户角色分页查询
  125. *
  126. * @param pageRequest
  127. * @return
  128. */
  129. @PostMapping(value = "/queryPage")
  130. public HttpResult queryPage(@RequestBody PageRequest pageRequest) {
  131. String deptid = pageRequest.getColumnFilterValue(pageRequest, "deptid");
  132. String name = pageRequest.getColumnFilterValue(pageRequest, "name");
  133. String containsSubDept = pageRequest.getColumnFilterValue(pageRequest, "containsSubDept");
  134. String mobile = pageRequest.getColumnFilterValue(pageRequest, "mobile");
  135. String roleId = pageRequest.getColumnFilterValue(pageRequest, "roleId");
  136. String deptName = pageRequest.getColumnFilterValue(pageRequest, "deptName");
  137. SysUser sysUser = new SysUser();
  138. sysUser.setDeptId(deptid);
  139. sysUser.setName(name);
  140. sysUser.setMobile(mobile);
  141. sysUser.setRoleId(roleId);
  142. sysUser.setDeptName(deptName);
  143. Page page = PageRequest.buildPageRequest(pageRequest);
  144. IPage<SysUser> pResult = sysUserService.selectUserPage(page, sysUser, containsSubDept);
  145. //传入查询条件
  146. PageResult pageResult = PageResult.buildPageResult(pResult);
  147. return HttpResult.ok(pageResult);
  148. }
  149. /**
  150. * 保存用户角色信息
  151. *
  152. * @param sysUserRoleVo 用户角色信息对象,包括用户ID、角色ID、展示级别、是否允许拨号、拨号用户名和密码
  153. * @return 返回操作结果,成功返回ok
  154. */
  155. @PostMapping(value = "/saveUserRole")
  156. @Transactional
  157. @ApiOperation(value = "保存用户角色信息")
  158. public HttpResult saveUserRole(@RequestBody SysUserRoleVo sysUserRoleVo) {
  159. String userId = sysUserRoleVo.getUserId();
  160. String roleId = sysUserRoleVo.getRoleId();
  161. String showLevel = sysUserRoleVo.getShowLevel();
  162. String isDial = sysUserRoleVo.getIsDial();
  163. String dialUserName = sysUserRoleVo.getDialUserName();
  164. String dialPassWord = sysUserRoleVo.getDialPassWord();
  165. //添加用户角色
  166. SysUserRole userRole = new SysUserRole();
  167. sysUserRoleService.deleteByUserId(userId);
  168. String userName = getUserName();
  169. userRole = new SysUserRole();
  170. userRole.setUserId(userId);
  171. userRole.setRoleId(Long.parseLong(roleId));
  172. userRole.setCreateBy(userName);
  173. userRole.setCreateTime(new Date());
  174. sysUserRoleService.save(userRole);
  175. //添加树权限
  176. sysUserTreeShowLevelService.remove(new LambdaQueryWrapper<SysUserTreeShowLevel>().eq(SysUserTreeShowLevel::getUserId, userId));
  177. SysUserTreeShowLevel sysUserTreeShowLevel = new SysUserTreeShowLevel();
  178. sysUserTreeShowLevel.setUserId(userId);
  179. sysUserTreeShowLevel.setShowLevel(showLevel);
  180. sysUserTreeShowLevel.setCreateName(userName);
  181. sysUserTreeShowLevel.setCreateTime(new Date());
  182. sysUserTreeShowLevelService.save(sysUserTreeShowLevel);
  183. //添加拨号权限
  184. sysUserIsDialService.remove(new LambdaQueryWrapper<SysUserIsDial>().eq(SysUserIsDial::getUserId, userId));
  185. SysUserIsDial sysUserIsDial = new SysUserIsDial();
  186. sysUserIsDial.setUserId(userId);
  187. sysUserIsDial.setDialUserName(dialUserName);
  188. sysUserIsDial.setDialPassWord(dialPassWord);
  189. sysUserIsDial.setIsDial(isDial);
  190. sysUserIsDial.setCreateName(userName);
  191. sysUserIsDial.setCreateTime(new Date());
  192. sysUserIsDialService.save(sysUserIsDial);
  193. return HttpResult.ok();
  194. }
  195. @PostMapping(value = "/deleteUserRole")
  196. @ApiOperation(value = "删除用户角色信息")
  197. public HttpResult deleteUserRole(@RequestBody SysUserRoleVo sysUserRoleVo) {
  198. if (StringUtil.isBlank(sysUserRoleVo.getUserId())) {
  199. return HttpResult.error("用户ID不能空");
  200. }
  201. if (sysUserRoleService.deleteByUserId(sysUserRoleVo.getUserId())) {
  202. return HttpResult.ok();
  203. } else {
  204. return HttpResult.error();
  205. }
  206. }
  207. @PostMapping(value = "/roleAddUser")
  208. @ApiOperation(value = "角色成员新增")
  209. public HttpResult roleAddUser(@RequestBody @Valid SysRoleAddUserVo sysRoleAddUserVo) {
  210. return sysUserRoleService.roleAddUser(sysRoleAddUserVo, getUserName());
  211. }
  212. @ApiOperation(value = "获取用户综合信息")
  213. @PostMapping(value = "/gainUserSynthesisInfo/{userId}")
  214. public HttpResult gainUserSynthesisInfo(@PathVariable String userId) {
  215. return HttpResult.ok(sysUserService.gainUserSynthesisInfo(userId));
  216. }
  217. /**
  218. * Used
  219. *
  220. * @author: lig
  221. * @date: 2023年05月10日 0010
  222. */
  223. // @PreAuthorize("hasAuthority('sys:user:view')")
  224. @PostMapping(value = "/findPageUsed")
  225. @Deprecated
  226. public HttpResult findPageUsed(@RequestBody PageRequest pageRequest) {
  227. int pageNum = pageRequest.getPageNum();
  228. int pageSize = pageRequest.getPageSize();
  229. String name = pageRequest.getColumnFilterValue(pageRequest, "name");
  230. //需要处理传入的部门
  231. PageResult pageResult = sysUserService.selectPagingCustom(pageNum, pageSize, name, "");
  232. sysUserService.findSysUseresmUserInternalVORoles(pageResult);
  233. return HttpResult.ok(pageResult);
  234. }
  235. /**
  236. * 密码修改
  237. *
  238. * @param id
  239. * @param password
  240. * @return
  241. */
  242. @PostMapping(value = "/updatePwd")
  243. public HttpResult updatePwd(@RequestParam String id, @RequestParam String password, @RequestParam String oldPassword) {
  244. if (StringUtils.isEmpty(id) || StringUtils.isEmpty(password)) {
  245. return HttpResult.error("ID和密码不能为空");
  246. }
  247. SysUser sysUser = sysUserService.getById(id);
  248. if (sysUser == null) {
  249. return HttpResult.error("ID不存在");
  250. }
  251. if (password.equals(oldPassword)) {
  252. return HttpResult.error("新密码不能与旧密码相同");
  253. }
  254. if (!PasswordUtils.matches(sysUser.getSalt(), oldPassword, sysUser.getPassword())) {
  255. return HttpResult.error("旧密码输入不正确");
  256. }
  257. //密码加密
  258. String pwd = PasswordUtils.encode(password, sysUser.getSalt());
  259. sysUser.setPassword(pwd);
  260. sysUserService.updateById(sysUser);
  261. StpUtil.logout();
  262. return HttpResult.ok("修改成功,请重新登录");
  263. }
  264. /**
  265. * 合伙人密码修改
  266. *
  267. * @param id
  268. * @param password
  269. * @param oldPassword
  270. * @return
  271. */
  272. @PostMapping(value = "/updatePartnerPwd")
  273. @ApiOperation(value = "合伙人密码修改")
  274. public HttpResult updatePartnerPwd(@RequestParam String id, @RequestParam String password, @RequestParam String oldPassword) {
  275. log.info("修改密码参数:userId:{}, 新密码:{},旧密码:{}",id,password,oldPassword);
  276. if (StringUtils.isEmpty(id) || StringUtils.isEmpty(password)) {
  277. return HttpResult.error("ID和密码不能为空");
  278. }
  279. SysUser sysUser = sysUserService.getById(id);
  280. if (sysUser == null) {
  281. return HttpResult.error("ID不存在");
  282. }
  283. if (password.equals(oldPassword)) {
  284. return HttpResult.error("新密码不能与旧密码相同");
  285. }
  286. if (!PasswordUtils.matches(sysUser.getSalt(), oldPassword, sysUser.getPassword())) {
  287. return HttpResult.error("旧密码输入不正确");
  288. }
  289. //密码加密
  290. String pwd = PasswordUtils.encode(password, sysUser.getSalt());
  291. sysUser.setPassword(pwd);
  292. sysUserService.updateById(sysUser);
  293. StpUtil.logout();
  294. return HttpResult.ok("修改成功,请重新登录");
  295. }
  296. /**
  297. * 手机号更新
  298. *
  299. * @param id
  300. * @param mobile
  301. * @return
  302. */
  303. @PostMapping(value = "/updateMobile")
  304. public HttpResult updateMobile(@RequestParam String id, @RequestParam String mobile) {
  305. if (StringUtils.isEmpty(id) || StringUtils.isEmpty(mobile)) {
  306. return HttpResult.error("ID和手机号不能为空");
  307. }
  308. SysUser sysUser = sysUserService.getById(id);
  309. if (sysUser == null) {
  310. return HttpResult.error("ID不存在");
  311. }
  312. LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
  313. lqw.ne(SysUser::getId, id);
  314. lqw.eq(SysUser::getMobile, mobile);
  315. List<SysUser> users = sysUserService.list(lqw);
  316. if (users != null && !users.isEmpty()) {
  317. return HttpResult.error("手机号已存在");
  318. }
  319. sysUser.setMobile(mobile);
  320. sysUserService.updateById(sysUser);
  321. return HttpResult.ok("修改成功");
  322. }
  323. /**
  324. * 合伙人手机号更新
  325. *
  326. * @param id
  327. * @param mobile
  328. * @return
  329. */
  330. @PostMapping(value = "/updatePartnerMobile")
  331. @ApiOperation(value = "合伙人手机号更新")
  332. public HttpResult updatePartnerMobile(@RequestParam String id, @RequestParam String mobile) {
  333. log.info("手机号参数:userId:{}, 新手机号:{}",id,mobile);
  334. if (StringUtils.isEmpty(id) || StringUtils.isEmpty(mobile)) {
  335. return HttpResult.error("ID和手机号不能为空");
  336. }
  337. SysUser sysUser = sysUserService.getById(id);
  338. if (sysUser == null) {
  339. return HttpResult.error("ID不存在");
  340. }
  341. if (sysUser.getMobile().equals(mobile)) {
  342. return HttpResult.error("新手机号不能与已绑定手机号相同");
  343. }
  344. LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
  345. lqw.ne(SysUser::getId, id);
  346. lqw.eq(SysUser::getMobile, mobile);
  347. List<SysUser> users = sysUserService.list(lqw);
  348. if (!CollectionUtils.isEmpty(users)) {
  349. return HttpResult.error("手机号已存在");
  350. }
  351. sysUser.setMobile(mobile);
  352. sysUserService.updateById(sysUser);
  353. return HttpResult.ok("修改成功");
  354. }
  355. /**
  356. * 根据工号查询推荐人信息
  357. *
  358. * @param id
  359. * @return
  360. */
  361. @GetMapping(value = "/findById")
  362. public HttpResult findByUserId(@RequestParam String id) {
  363. SysUserVO sysUserVO = sysUserService.gainUserInternal(id);
  364. if (sysUserVO != null) {
  365. return HttpResult.ok(sysUserVO);
  366. }
  367. throw new SystemException("没有推荐人");
  368. }
  369. /**
  370. * 根据部门ID查询该部门的团队长信息
  371. *
  372. * @param deptId
  373. * @return
  374. */
  375. @GetMapping(value = "/selectByDeptId")
  376. public HttpResult selectByDeptId(String deptId) {
  377. return HttpResult.ok(sysUserService.gainUserInternalByDeptId(deptId));
  378. }
  379. /**
  380. * 根据部门id查询该部门的推荐人信息
  381. */
  382. @GetMapping("/selectfindByreferrerId")
  383. public HttpResult findByReferrerId(@Valid String deptId) {
  384. return HttpResult.ok(sysUserService.findByReferrerId(deptId));
  385. }
  386. /**
  387. * 根据部门id查询后线人员的所有人信息
  388. */
  389. @ApiOperation(value = "获取后线人员信息")
  390. @GetMapping("/findBackListByDeptId")
  391. public HttpResult findBackListByDeptId(String deptId) {
  392. return HttpResult.ok(sysUserService.findBackListByDeptId(deptId));
  393. }
  394. /**
  395. * 根据部门id查询该部门的所有人信息
  396. */
  397. @PostMapping("/findListByDeptId")
  398. public HttpResult findListByDeptId(@RequestBody SysUser sysUser) {
  399. return HttpResult.ok(sysUserService.findListByDeptId(sysUser));
  400. }
  401. /**
  402. * @author: lig
  403. * @date: 2023年06月30日 0030
  404. */
  405. @ApiOperation(value = "(重构)保存或更新")
  406. @PostMapping(value = "/saveOrUpdate")
  407. @Transactional
  408. public HttpResult saveOrUpdate(@RequestBody SysUser sysUser) {
  409. if (StringUtils.isNullOrEmpty(sysUser.getMobile())) {
  410. return HttpResult.error("手机不能为空");
  411. }
  412. if (StringUtils.isNullOrEmpty(sysUser.getDeptId())) {
  413. return HttpResult.error("机构ID不能为空");
  414. }
  415. //处理密码
  416. if (StringUtils.isNotEmpty(sysUser.getPassword())) {
  417. String salt = PasswordUtils.getSalt();
  418. String pwd = PasswordUtils.encode(sysUser.getPassword(), salt);
  419. sysUser.setPassword(pwd);
  420. sysUser.setSalt(salt);
  421. }
  422. sysUserService.saveUser(sysUser);
  423. return HttpResult.ok(sysUser);
  424. }
  425. @ApiOperation(value = "(重构)逻辑删除")
  426. @PostMapping(value = "/logicDeleteBatch")
  427. public HttpResult logicDeleteBatch(@RequestBody List<String> userIds) {
  428. if (null != userIds && !userIds.isEmpty()) {
  429. LambdaUpdateWrapper<SysUser> luw = new LambdaUpdateWrapper<>();
  430. luw.set(SysUser::getStatus, "0");
  431. luw.in(SysUser::getId, userIds);
  432. sysUserService.update(luw);
  433. return HttpResult.ok();
  434. }
  435. return HttpResult.error("请正确选择参数");
  436. }
  437. @ApiOperation(value = "(重构)用户查询分页")
  438. @PostMapping(value = "/findPage")
  439. public HttpResult<PageVo<SysUserBaseVO>> findPage(@RequestBody PageDto<SysUserDto> pageDto) {
  440. //获取用户角色
  441. SysUser user = getUser();
  442. //如果查询后线人员
  443. // if (RoleConstants.R22.getCode().equals(pageDto.getDto().getRoleId())) {
  444. // if (RoleConstants.R17.getCode().equals(user.getRoleId())) {
  445. // pageDto.getDto().setRoleId("18,22");
  446. // } else if (RoleConstants.R18.getCode().equals(user.getRoleId())) {
  447. // pageDto.getDto().setRoleId("22");
  448. // }
  449. // }
  450. if (RoleConstants.R22.getCode().equals(pageDto.getDto().getRoleId())) {
  451. pageDto.getDto().setRoleId("17,18,22,23,24,25,28,29,30,31,32,38");
  452. }
  453. //设置登录用户的部门
  454. if ("".equals(pageDto.getDto().getDeptId()) || null == pageDto.getDto().getDeptId()) {
  455. pageDto.getDto().setDeptId(user.getDeptId());
  456. }
  457. return HttpResult.ok(sysUserService.gainUserPage(pageDto));
  458. }
  459. @ApiOperation(value = "渠道、个代、电销 的用户查询分页")
  460. @PostMapping(value = "/findUserList")
  461. public HttpResult findUserList(@RequestBody PageDto<SysUserDto> pageDto) {
  462. if (pageDto.getDto().getDeptId() == null) {
  463. pageDto.getDto().setDeptId(BaseController.getDeptId());
  464. }
  465. return HttpResult.ok(sysUserService.findUserList(pageDto));
  466. }
  467. @ApiOperation(value = "后线用户查询分页")
  468. @PostMapping(value = "/findBackUserList")
  469. public HttpResult findBackUserList(@RequestBody SysUserDto sysUserDto) {
  470. if (sysUserDto.getDeptId() == null) {
  471. sysUserDto.setDeptId(BaseController.getDeptId());
  472. }
  473. return HttpResult.ok(sysUserService.findBackUserList(sysUserDto));
  474. }
  475. @ApiOperation(value = "后线用户查询不分页(编辑时查询领导人)")
  476. @PostMapping(value = "/findBackUserList1")
  477. public HttpResult findBackUserList1(@RequestBody SysUserDto sysUserDto) {
  478. if (sysUserDto.getDeptId() == null) {
  479. sysUserDto.setDeptId(BaseController.getDeptId());
  480. }
  481. return HttpResult.ok(sysUserService.findBackUserList1(sysUserDto));
  482. }
  483. @ApiOperation(value = "渠道数据统计")
  484. @PostMapping(value = "/quTeamNum")
  485. public HttpResult quTeamNum(@RequestBody QuTeamNumDto quTeamNumDto) {
  486. return HttpResult.ok("", sysUserService.quTeamNum(quTeamNumDto));
  487. }
  488. @ApiOperation(value = "渠道数据统计详情")
  489. @PostMapping(value = "/quTeamNumDetail")
  490. public HttpResult quTeamNumDetail(@RequestBody QuTeamNumDto quTeamNumDto) {
  491. return HttpResult.ok("", sysUserService.getQuTeamByCompany(quTeamNumDto));
  492. }
  493. @ApiOperation(value = "(重构)审批通过")
  494. @ApiImplicitParams({
  495. @ApiImplicitParam(name = "userId", value = "用户ID")
  496. })
  497. @GetMapping(value = "/approvalPass")
  498. public HttpResult approvalPass(@RequestParam String userId) {
  499. SysUser sysUser = sysUserService.getById(userId);
  500. if (Objects.equals(sysUser.getStatus(), UserWorkStatus.UWS_2.getCode())) {
  501. sysUser.setStatus(UserWorkStatus.UWS_1.getCode());
  502. sysUserService.addInfo(sysUser);
  503. } else if (Objects.equals(sysUser.getStatus(), UserWorkStatus.UWS_4.getCode())) {
  504. sysUser.setStatus(UserWorkStatus.UWS_0.getCode());
  505. } else if (Objects.equals(sysUser.getStatus(), UserWorkStatus.UWS_6.getCode())) {
  506. sysUser.setStatus(UserWorkStatus.UWS_1.getCode());
  507. }
  508. SysUserTrack sysUserTrack = new SysUserTrack(sysUser);
  509. sysUserTrackService.save(sysUserTrack);
  510. return HttpResult.ok("审批成功",sysUserService.updateById(sysUser));
  511. }
  512. @ApiOperation(value = "(重构)审批不通过")
  513. @ApiImplicitParams({
  514. @ApiImplicitParam(name = "userId", value = "用户ID"),
  515. @ApiImplicitParam(name = "reason", value = "原因")
  516. })
  517. @GetMapping(value = "/approvalNotPass")
  518. public HttpResult<Boolean> approvalNotPass(@RequestParam String userId, @RequestParam String reason) {
  519. SysUser sysUser = sysUserService.getById(userId);
  520. if (Objects.equals(sysUser.getStatus(), UserWorkStatus.UWS_2.getCode())) {
  521. sysUser.setStatus(UserWorkStatus.UWS_3.getCode());
  522. } else if (Objects.equals(sysUser.getStatus(), UserWorkStatus.UWS_4.getCode())) {
  523. sysUser.setStatus(UserWorkStatus.UWS_5.getCode());
  524. } else if (Objects.equals(sysUser.getStatus(), UserWorkStatus.UWS_6.getCode())) {
  525. sysUser.setStatus(UserWorkStatus.UWS_7.getCode());
  526. }
  527. SysUserTrack sysUserTrack = new SysUserTrack(sysUser);
  528. sysUserTrack.setApproveMess(reason);
  529. sysUserTrackService.save(sysUserTrack);
  530. Integer type = sysUser.getType();
  531. Integer level = sysUser.getLevel();
  532. if (type != 0) {
  533. if (level == null || level != 1) {
  534. //合伙人、负责人、团队长只有在入司驳回发信息
  535. if (Objects.equals(sysUser.getStatus(), UserWorkStatus.UWS_3.getCode())) {
  536. sysUserService.sendMsgPantner(sysUser.getMobile());
  537. }
  538. }
  539. }
  540. return HttpResult.ok(sysUserService.updateById(sysUser));
  541. }
  542. @Autowired
  543. private SysUserBankCardService sysUserBankCardService;
  544. @ApiOperation(value = "(重构)获取用户")
  545. @ApiImplicitParams({
  546. @ApiImplicitParam(name = "userId", required = true, value = "用户ID")
  547. })
  548. @GetMapping(value = "/{userId}")
  549. public HttpResult findUserById(@PathVariable String userId) {
  550. SysUserInfoQuery sysUserVo = new SysUserInfoQuery();
  551. // 查询用户
  552. SysUser sysUser = sysUserService.getById(userId);
  553. // 查询角色
  554. SysUserRole sysUserRole = sysUserRoleService.selectByUserId(userId);
  555. // SysUserRole sysUserRole = sysUserRoleService.getById(userId);
  556. if (!ObjectUtils.isEmpty(sysUserRole)) {
  557. sysUser.setRoleId(StringUtils.toString(sysUserRole.getRoleId()));
  558. }
  559. //查询 机构的上级
  560. SysDept sysDept = sysDeptService.getById(sysUser.getDeptId());
  561. sysUser.setPdeptId(sysDept.getParentId());
  562. if ("19".equals(sysUser.getRoleId())) {
  563. SysUser operator = sysUserService.getById(sysUser.getOperatorCode());
  564. sysUser.setReferrerId(operator != null ? operator.getId() : "");
  565. sysUser.setReferrerName(operator != null ? operator.getName() : "");
  566. sysUserVo.setSysUser(sysUser);
  567. List<EsmUserImageQueryVo> esmUserImageQueryVo = esmUserImageService.getEsmUserImageQueryVo(userId);
  568. sysUserVo.setEsmUserImageVo(esmUserImageQueryVo);
  569. sysUserVo.setSysUserInfo(sysUserInfoService.getById(userId));
  570. SpringUtil.getBean(RecordUserUtils.class).addRecord(userId, BaseController.getUserName());
  571. return HttpResult.ok(sysUserVo);
  572. }
  573. // 查询推荐人
  574. EsmUserReferrer referrer = esmUserReferrerService.getById(userId);
  575. if (ObjectUtils.isEmpty(referrer)) {
  576. sysUser.setReferrerId(null);
  577. sysUser.setReferrerName(null);
  578. } else {
  579. sysUser.setReferrerId(referrer.getReferrerId());
  580. sysUser.setReferrerName(referrer.getReferrerName());
  581. }
  582. //查询详情信息
  583. SysUserInfo userInfo = sysUserInfoService.getById(userId);
  584. String addr = Optional.ofNullable(userInfo).map(SysUserInfo::getLiveAddress).orElse(null);
  585. if (StringUtils.isNotEmpty(addr)) {
  586. userInfo.setLiveAddressString(addr.split(","));
  587. }
  588. //查询用户绑定的银行卡信息
  589. SysUserBankCard queryBank = new SysUserBankCard();
  590. queryBank.setUserId(userId);
  591. queryBank.setAuditStatus("1");
  592. HttpResult<List<SysUserBankCard>> userBankList = sysUserBankCardService.getUserBankListByQueryParam(queryBank);
  593. if (!Objects.isNull(userInfo)) {
  594. if (userBankList.getData().isEmpty()) {
  595. userInfo.setBankName(null);
  596. userInfo.setAccountno(null);
  597. } else {
  598. userInfo.setBankName(userBankList.getData().get(0).getBankAccount());
  599. userInfo.setAccountno(userBankList.getData().get(0).getBankNumber());
  600. }
  601. }
  602. List<EsmUserImageQueryVo> esmUserImageQueryVo = esmUserImageService.getEsmUserImageQueryVo(userId);
  603. sysUserVo.setSysUser(sysUser);
  604. sysUserVo.setSysUserInfo(userInfo);
  605. sysUserVo.setEsmUserImageVo(esmUserImageQueryVo);
  606. //初始化添加人员修改记录
  607. SpringUtil.getBean(RecordUserUtils.class).addRecord(userId, null);
  608. return HttpResult.ok(sysUserVo);
  609. }
  610. @ApiOperation(value = "(new)获取登录用户")
  611. @GetMapping(value = "/loginUser")
  612. public HttpResult loginUser() {
  613. SysUser sysUser = sysUserService.getById(getUserId());
  614. SysRole sysRole = sysUserRoleService.gainRoleByUserId(sysUser.getId());
  615. if (null != sysRole) {
  616. sysUser.setRoleId(StringUtils.toString(sysRole.getId()));
  617. sysUser.setRoleName(sysRole.getName());
  618. }
  619. if (StringUtils.isNotEmpty(sysUser.getDeptId())) {
  620. SysDept sysDept = sysDeptService.getById(sysUser.getDeptId());
  621. sysUser.setDeptName(sysDept.getName());
  622. sysUser.setIsHasAddUser(sysDept.getManagementSource() != null ? 1 : 0);
  623. sysUser.setManagementSource(sysDept.getManagementSource());
  624. }
  625. EsmUserReferrer eur = esmUserReferrerService.getById(sysUser.getId());
  626. if (null != eur) {
  627. sysUser.setReferrerId(eur.getReferrerId());
  628. sysUser.setReferrerName(eur.getReferrerName());
  629. }
  630. InsUploadFiles insUploadFiles = insUploadFilesService.getById(sysUser.getHeadSculpture());
  631. if (null != insUploadFiles) {
  632. sysUser.setHeadSculpture(insUploadFiles.getUrl());
  633. }
  634. return HttpResult.ok(sysUser);
  635. }
  636. @ApiOperation(value = "获取可选业务员列表")
  637. @GetMapping(value = "/getAllUsers")
  638. public HttpResult getAllUsers(@RequestParam(required = false) String userId) {
  639. List<SysUser> userList = sysUserService.findAllAgentRoleUser(userId, "20");
  640. return HttpResult.ok(userList);
  641. }
  642. @ApiOperation(value = "(new)是否绑定微信")
  643. @GetMapping(value = "/isBindWechat")
  644. public HttpResult<Object> isBindWechat() {
  645. SysUser sysUser = sysUserService.getById(getUserId());
  646. String openid = sysUser.getOpenid();
  647. AssertionUtils.isStringEmpty(openid, "未绑定微信");
  648. return HttpResult.ok();
  649. }
  650. /**
  651. * 个代注册、出单员注册
  652. *
  653. * @author: lig
  654. * @date: 2023年07月03日 0003
  655. */
  656. @ApiOperation(value = "(new)个代/出单员注册")
  657. @PostMapping(value = "/agentRegist")
  658. @Transactional
  659. public HttpResult agentRegist(@RequestBody AgentUserDto dto) {
  660. int noCount = 3;//顺序号是几位的
  661. List<SysUser> list = sysUserService.lambdaQuery().eq(SysUser::getMobile, dto.getMobile()).list();
  662. if (!list.isEmpty()) {
  663. throw new SystemException("手机号已经被注册请重新跟换手机号。如有疑问请联系管理人员。");
  664. }
  665. if (StringUtils.isNullOrEmpty(dto.getFlag())) {
  666. return HttpResult.error("个代、出单员标识不能为空");
  667. }
  668. if (StringUtils.isNullOrEmpty(dto.getMobile()) || StringUtils.isNullOrEmpty(dto.getMobileMsg())) {
  669. return HttpResult.error("手机号、验证码不能为空");
  670. }
  671. if (StringUtils.isNullOrEmpty(dto.getName())) {
  672. return HttpResult.error("姓名不能为空");
  673. }
  674. if (StringUtils.isNullOrEmpty(dto.getPassword())) {
  675. return HttpResult.error("密码不能为空");
  676. }
  677. if (StringUtils.isNullOrEmpty(dto.getReferrerId())) {
  678. return HttpResult.error("推荐人不能为空");
  679. }
  680. String captcha_redis = (String) redisTemplate.opsForValue().get(PHONE_VERIFICATION_CODE_KEY + dto.getMobile());
  681. redisTemplate.delete(PHONE_VERIFICATION_CODE_KEY + dto.getMobile());
  682. if (captcha_redis == null) {
  683. return HttpResult.error("验证码已失效");
  684. }
  685. if (!dto.getMobileMsg().equals(captcha_redis)) {
  686. return HttpResult.error("验证码错误");
  687. }
  688. String recommenderid = dto.getReferrerId();
  689. SysUser recommender = sysUserService.getById(recommenderid);
  690. if (recommender == null) {
  691. return HttpResult.error("推荐人信息不存在");
  692. }
  693. SysUser reUser = sysUserService.getByUserId(recommenderid);
  694. //个代
  695. UnionPayResponse response = new UnionPayResponse();
  696. if ("2".equals(reUser.getManagementSource())) {
  697. if (StringUtils.isNullOrEmpty(dto.getIdentity())) {
  698. return HttpResult.error("机构来源为个代的证件号不能为空");
  699. }
  700. UnionPayRequest request = new UnionPayRequest();
  701. request.setName(dto.getName());
  702. request.setPhoneNo(dto.getMobile());
  703. request.setCertNo(dto.getIdentity());
  704. response = unionPayRequestApiComponent.threeFactorVerifyRequest(request);
  705. if (response != null && !"00".equals(response.getRespCode())) {
  706. return HttpResult.error("认证信息不一致:" + response.getDetailRespMsg());
  707. }
  708. }
  709. //只有团队长和代理人才能邀请 by gws
  710. SysUserRole recommenderRole = sysUserRoleService.selectByUserId(recommenderid);
  711. if (!"20".equals(recommenderRole.getRoleId().toString()) && !"21".equals(recommenderRole.getRoleId().toString())) {
  712. return HttpResult.error("只有团队长和代理人才能推荐");
  713. }
  714. SysUser sysUser = sysUserService.findByPhone(dto.getMobile());
  715. if (sysUser != null) {
  716. return HttpResult.error("手机号已存在");
  717. } else {
  718. sysUser = new SysUser();
  719. }
  720. String nextPK;
  721. //根据机构号获取userid最大值,不需要加人员类型判断 从sys_user获取
  722. String maxId = sysUserService.findMaxId(recommender.getDeptId());
  723. if (StringUtils.isNullOrEmpty(maxId)) {
  724. nextPK = recommender.getDeptId() + "001";
  725. } else {
  726. nextPK = IdGenerate.nextCode(maxId, noCount);
  727. }
  728. sysUser.setName(dto.getName());
  729. sysUser.setMobile(dto.getMobile());
  730. sysUser.setDeptId(recommender.getDeptId());
  731. //密码加密
  732. String salt = PasswordUtils.getSalt();
  733. String password = PasswordUtils.encode(dto.getPassword(), salt);
  734. sysUser.setPassword(password);
  735. sysUser.setSalt(salt);
  736. sysUser.setStatus("2".equals(dto.getFlag()) ? 2 : 1);//1:正常 2:审批中
  737. sysUser.setId(nextPK);
  738. sysUser.setCreateBy("admin");
  739. if ("1".equals(dto.getFlag())) {
  740. sysUser.setOperatorCode(recommenderid);
  741. }
  742. sysUser.setIdentity(dto.getIdentity());
  743. sysUser.setFactorVerify(response != null && "00".equals(response.getRespCode()) ? 1 : 0);
  744. //角色配置
  745. SysUserRole userRole = new SysUserRole();
  746. userRole.setUserId(nextPK);
  747. userRole.setRoleId(dto.getFlag().equals("2") ? 20L : 19L);
  748. // 出单员获取渠道负责人的领导人插入
  749. if (19 == userRole.getRoleId()) {
  750. SysUser leaderUser = sysUserService.getByRoleIdAndDeptId("21", sysUser.getDeptId());
  751. sysUser.setLeaderId(leaderUser.getLeaderId());
  752. sysUser.setLeaderName(leaderUser.getLeaderName());
  753. }
  754. sysUserService.save(sysUser);
  755. sysUserRoleService.save(userRole);
  756. //添加增员服务消息
  757. //添加订单消息
  758. messageSecretaryService.addMessage(MessageTypeConstants.M_6, dto.getReferrerId(),
  759. dto.getMobile() + "(" + dto.getName() + ")" + "进行注册,请立即审核.");
  760. if ("2".equals(dto.getFlag())) {
  761. esmUserReferrerService.addReferrer(dto.getReferrerId(), nextPK);
  762. }
  763. return HttpResult.ok("保存成功", sysUser.getId());
  764. }
  765. @GetMapping(value = "/findUserInfo/{userId}")
  766. @ApiOperation(value = "获取用户信息")
  767. @ApiImplicitParams({
  768. @ApiImplicitParam(name = "userId", value = "用户信息", required = true, dataType = "String")
  769. })
  770. //@SaCheckPermission("sys:menu:add")
  771. public HttpResult findUserInfo(@PathVariable String userId) {
  772. return HttpResult.ok(sysUserInfoService.getById(userId));
  773. }
  774. @ApiOperation(value = "保存用户基本详情信息")
  775. @PostMapping(value = "/saveUserInfo")
  776. public HttpResult saveUserInfo(@RequestBody SysUser2Vo sysUserVo) {
  777. //by gws 21 团队长 20 代理人 必须归属团队
  778. // 22 后线人员 必须归属部门
  779. SysUser sysUser = sysUserVo.getSysUser();
  780. if (StringUtils.isNullOrEmpty(sysUser)) {
  781. return HttpResult.error("用户信息不能为空");
  782. }
  783. if (StringUtils.isNullOrEmpty(sysUser.getDeptId())) {
  784. return HttpResult.error("机构ID不能为空");
  785. }
  786. if (StringUtils.isNullOrEmpty(sysUser.getRoleId())) {
  787. throw new SystemException("角色id不能为空");
  788. }
  789. //获取机构层级
  790. int deptLevel = sysUserService.getDeptLevel(sysUserVo);
  791. if (!StringUtils.isNullOrEmpty(sysUser.getRoleId())) {
  792. if (RoleConstants.R21.getCode().equals(sysUser.getRoleId())
  793. || RoleConstants.R20.getCode().equals(sysUser.getRoleId())
  794. || RoleConstants.R19.getCode().equals(sysUser.getRoleId())) {//19 出单员 21 团队长 20 代理人
  795. if (deptLevel != 6) {
  796. throw new SystemException("团队长、代理人、出单员只能归属团队中");
  797. }
  798. //如果为团队长,判断是否已经存在团队长,存在不允许添加 add by hxl 2024-05-07 ============begin
  799. if (RoleConstants.R21.getCode().equals(sysUser.getRoleId())) {
  800. int count = sysUserService.getCountByDeptAndRoleId(sysUser);
  801. if (count > 0) {
  802. throw new SystemException("该机构已存在团队长,不允许再添加!!");
  803. }
  804. }
  805. // =========================add by hxl end ====================
  806. } else if (RoleConstants.R18.getCode().equals(sysUser.getRoleId())) { // 42 门店长
  807. if (deptLevel != 5) {
  808. throw new SystemException("机构管理员只能归属机构中");
  809. }
  810. } else if (RoleConstants.R17.getCode().equals(sysUser.getRoleId())) {
  811. if (deptLevel != 4) {
  812. throw new SystemException("部长只能归属于4级");
  813. }
  814. }
  815. }
  816. return sysUserService.saveUserInfo(sysUserVo);
  817. }
  818. @ApiOperation(value = "保存合伙人、管理员用户基本详情信息")
  819. @PostMapping(value = "/saveUserInfoByPartner")
  820. public HttpResult saveUserInfoByPartner(@RequestBody SysUser2Vo sysUserVo) {
  821. log.info("添加合伙人入参:{}", sysUserVo);
  822. //by gws 21 团队长 20 代理人 必须归属团队
  823. // 22 后线人员 必须归属部门
  824. SysUser sysUser = sysUserVo.getSysUser();
  825. if (sysUserVo.getIsPartner() != null && sysUserVo.getIsPartner().equals("1")) {
  826. SysUserInfo sysUserInfo = new SysUserInfo();
  827. SysUser sysUser1 = sysUserService.getById(sysUserVo.getSysUser().getReferrerId());
  828. sysUser.setDeptId(sysUser1.getDeptId());
  829. sysUser.setStatus(2); //直接默认为入司待审核
  830. LocalDate birthday = LocalDate.parse(sysUser.getIdentity().substring(6, 10) + "-" + sysUser.getIdentity().substring(10, 12) + "-" + sysUser.getIdentity().substring(12, 14));
  831. sysUserInfo.setBirthday(birthday);
  832. sysUserVo.setSysUserInfo(sysUserInfo);
  833. }
  834. if (StringUtils.isNullOrEmpty(sysUser)) {
  835. return HttpResult.error("用户信息不能为空");
  836. }
  837. if (StringUtils.isNullOrEmpty(sysUser.getDeptId())) {
  838. return HttpResult.error("机构ID不能为空");
  839. }
  840. if (StringUtils.isNullOrEmpty(sysUser.getRoleId())) {
  841. throw new SystemException("角色id不能为空");
  842. }
  843. //获取机构层级
  844. int deptLevel = sysUserService.getDeptLevel(sysUserVo);
  845. if (!StringUtils.isNullOrEmpty(sysUser.getRoleId())) {
  846. if (RoleConstants.R21.getCode().equals(sysUser.getRoleId())
  847. || RoleConstants.R20.getCode().equals(sysUser.getRoleId())
  848. || RoleConstants.R19.getCode().equals(sysUser.getRoleId())) {//19 出单员 21 团队长 20 代理人
  849. if (deptLevel != 6) {
  850. throw new SystemException("团队长、代理人、出单员只能归属团队中");
  851. }
  852. //如果为团队长,判断是否已经存在团队长,存在不允许添加 add by hxl 2024-05-07 ============begin
  853. if (RoleConstants.R21.getCode().equals(sysUser.getRoleId())) {
  854. int count = sysUserService.getCountByDeptAndRoleId(sysUser);
  855. if (count > 0) {
  856. throw new SystemException("该机构已存在团队长,不允许再添加!!");
  857. }
  858. }
  859. // =========================add by hxl end ====================
  860. } else if (RoleConstants.R18.getCode().equals(sysUser.getRoleId())) { // 42 门店长
  861. if (deptLevel != 5) {
  862. throw new SystemException("机构管理员只能归属机构中");
  863. }
  864. } else if (RoleConstants.R17.getCode().equals(sysUser.getRoleId())) {
  865. if (deptLevel != 4) {
  866. throw new SystemException("部长只能归属于4级");
  867. }
  868. }
  869. }
  870. return sysUserService.saveUserInfoByPartner(sysUserVo);
  871. }
  872. @ApiOperation(value = "保存团队长用户基本详情信息")
  873. @PostMapping(value = "/saveTeamLeader")
  874. public HttpResult saveTeamLeader(@RequestBody SysUser2Vo sysUserVo) {
  875. return sysUserService.saveUserInfo1(sysUserVo);
  876. }
  877. @ApiOperation(value = "修改用户详情信息")
  878. @PostMapping(value = "/updateUserInfo/{userId}")
  879. @ApiImplicitParams({
  880. @ApiImplicitParam(name = "userId", value = "用户信息", required = true, dataType = "String")
  881. })
  882. @Transactional
  883. public HttpResult updateUserInfo(@PathVariable String userId, @RequestBody SysUser2Vo sysUserVo) {
  884. return sysUserService.updateUserInfo(userId, sysUserVo);
  885. }
  886. @ApiOperation(value = "修改用户详情信息")
  887. @PostMapping(value = "/updateUserInfo1/{userId}")
  888. @ApiImplicitParams({
  889. @ApiImplicitParam(name = "userId", value = "用户信息", required = true, dataType = "String")
  890. })
  891. @Transactional
  892. public HttpResult updateUserInfo1(@PathVariable String userId, @RequestBody SysUser2Vo sysUserVo) {
  893. return sysUserService.updateUserInfo1(userId, sysUserVo);
  894. }
  895. @ApiOperation(value = "获取推荐人分页信息")
  896. @PostMapping(value = "/referrerFindPage")
  897. public HttpResult<PageVo<SysReferrerVo>> referrerFindPage(@RequestBody PageDto<SysReferrerVo> pageDto) {
  898. return esmUserReferrerService.gainReferrerPage(pageDto);
  899. }
  900. @PostMapping(value = "/realNameAuth")
  901. @ApiOperation(value = "实名认证", notes = "参数1:姓名" +
  902. "</br>参数2:身份证号")
  903. public HttpResult realNameAuth(@RequestBody BaseDto dto) {
  904. SysUser sysUser = sysUserService.getById(getUserId());
  905. sysUser.setName(dto.getParam1());
  906. sysUser.setIdentity(dto.getParam2());
  907. // sysUser.setStatus(1);
  908. return HttpResult.ok(sysUserService.updateById(sysUser));
  909. }
  910. @PostMapping("/modifyingTheAvatar")
  911. @ApiOperation(value = "修改头像")
  912. public HttpResult modifyingTheAvatar(@RequestSingleParam("imagesId") String imagesId) {
  913. SysUser sysUser = sysUserService.getById(getUserId());
  914. sysUser.setHeadSculpture(imagesId);
  915. sysUserService.updateById(sysUser);
  916. return HttpResult.ok();
  917. }
  918. @ApiOperation(value = "根据传入机构,查询所有人员")
  919. @GetMapping(value = "/findUserList")
  920. public HttpResult findUserList(String deptId) {
  921. return HttpResult.ok(sysUserService.findUserList(deptId));
  922. }
  923. @ApiOperation(value = "获取树结构")
  924. @GetMapping(value = "/findTree")
  925. public HttpResult<List<SysUser>> findTree() {
  926. List<SysUser> list = sysUserService.findTree();
  927. return HttpResult.ok(list);
  928. }
  929. /**
  930. * 获取当前用户的下级所有人员
  931. *
  932. * @return
  933. */
  934. @ApiOperation(value = "获取当前用户的下级所有人员")
  935. @GetMapping(value = "/findNextTree")
  936. public HttpResult<List<SysUser>> findNextTree() {
  937. List<SysUser> list = sysUserService.findNextTree();
  938. return HttpResult.ok(list);
  939. }
  940. /**
  941. * 获取当前用户的所有代理人
  942. *
  943. * @return
  944. */
  945. @ApiOperation(value = "获取代理人树形")
  946. @GetMapping(value = "/findNextAgentTree")
  947. public HttpResult<List<SysUser>> findNextAgentTree(String pid) {
  948. List<SysUser> list = sysUserService.findNextAgentTree(pid);
  949. return HttpResult.ok(list);
  950. }
  951. @ApiOperation(value = "渠道区域业绩管理")
  952. @PostMapping(value = "/quUserNum")
  953. public HttpResult quUserNum(@RequestBody QuUserNumDto quUserNumDto) {
  954. return HttpResult.ok("", sysUserService.quUserNum(quUserNumDto));
  955. }
  956. @ApiOperation(value = "渠道区域业绩地区管理详情")
  957. @PostMapping(value = "/quUserNumDetail")
  958. public HttpResult quUserNumDetail(@RequestBody QuUserNumDto quUserNumDto) {
  959. return HttpResult.ok("", sysUserService.getQuUserByCompany(quUserNumDto));
  960. }
  961. @ApiOperation(value = "个代区域业绩管理")
  962. @PostMapping(value = "quAgentAreaAdmin")
  963. public HttpResult quAgentAreaAdmin(@RequestBody QuUserNumDto quUserNumDto) {
  964. return HttpResult.ok("", sysUserService.quAgentAreaAdmin(quUserNumDto));
  965. }
  966. @ApiOperation(value = "个代区域业绩地区管理详情")
  967. @PostMapping(value = "/quAgentAreaAdminDetail")
  968. public HttpResult quAgentAreaAdminDetail(@RequestBody QuUserNumDto quUserNumDto) {
  969. return HttpResult.ok("", sysUserService.quAgentAreaAdminDetail(quUserNumDto));
  970. }
  971. /**
  972. * @version
  973. * @author: hxl
  974. * @Date: 2024/4/16 16:16
  975. * @Description: 获取待客录入可选业务员列表 通过工号、姓名、手机号、身份证号
  976. */
  977. @ApiOperation(value = "获取待客录入可选业务员列表 通过工号、姓名、手机号、身份证号")
  978. @PostMapping(value = "/getAllUsersByHospitality")
  979. public HttpResult getAllUsersByHospitality(@RequestBody SysUserVOExt sysUserVOExt) {
  980. try {
  981. List<SysUserBaseVO> userList = sysUserService.getAllUsersByHospitality(sysUserVOExt);
  982. return HttpResult.ok(userList);
  983. } catch (Exception e) {
  984. return HttpResult.error("查询失败" + e.getMessage());
  985. }
  986. }
  987. /**
  988. * @version
  989. * @author: hxl
  990. * @Date: 2024/4/18 16:12
  991. * @Description: 查询客服人员列表数据
  992. */
  993. @ApiOperation(value = "获取客服人员列表数据")
  994. @PostMapping(value = "/getCustomerUsers")
  995. public HttpResult getCustomerUsers() {
  996. try {
  997. List<SysUserBaseVO> userList = sysUserService.getCustomerUsers();
  998. return HttpResult.ok(userList);
  999. } catch (Exception e) {
  1000. return HttpResult.error("查询失败" + e.getMessage());
  1001. }
  1002. }
  1003. /**
  1004. * @version
  1005. * @author: whp
  1006. * @Date: 2024/10/12 16:12
  1007. * @Description: 机构人员树
  1008. */
  1009. @ApiOperation(value = "获取机构人员树")
  1010. @PostMapping(value = "/getTreeDeptUser")
  1011. public HttpResult getTreeDeptUser() {
  1012. try {
  1013. List<SysDeptTreeVo> userList = sysUserService.getTreeDeptUser();
  1014. return HttpResult.ok(userList);
  1015. } catch (Exception e) {
  1016. return HttpResult.error("查询失败" + e.getMessage());
  1017. }
  1018. }
  1019. /**
  1020. * @version
  1021. * @author: whp
  1022. * @Date: 2024/10/12 16:12
  1023. * @Description: 机构人员树
  1024. */
  1025. @ApiOperation(value = "获取机构人员树")
  1026. @GetMapping(value = "/getTreeUser")
  1027. public HttpResult getTreeUser() {
  1028. try {
  1029. List<SysUser> userList = sysUserService.getTreeUser();
  1030. return HttpResult.ok(userList);
  1031. } catch (Exception e) {
  1032. return HttpResult.error("查询失败" + e.getMessage());
  1033. }
  1034. }
  1035. /**
  1036. * @version
  1037. * @author: hxl
  1038. * @Date: 2024/7/11 16:04
  1039. * @Description: 查询的所有的后线人员
  1040. */
  1041. @ApiOperation(value = "后线用户查询不分页(编辑时查询领导人)")
  1042. @GetMapping(value = "/findHxUserList")
  1043. public HttpResult findHxUserList() {
  1044. return HttpResult.ok(sysUserService.findHxUserList());
  1045. }
  1046. @ApiOperation(value = "离职申请")
  1047. @PostMapping("/departApply")
  1048. public HttpResult departApply(@RequestBody SysUser2Vo sysUserVO) {
  1049. return sysUserService.departApply(sysUserVO) ? HttpResult.ok("离职申请提交成功") : HttpResult.error("离职申请提交失败");
  1050. }
  1051. @ApiOperation(value = "离职恢复")
  1052. @GetMapping("/separationReinstatement/{userId}")
  1053. public HttpResult separationReinstatement(@PathVariable String userId) {
  1054. sysUserService.separationReinstatement(userId);
  1055. return HttpResult.ok("恢复成功");
  1056. }
  1057. /**
  1058. * @version
  1059. * @author: hxl
  1060. * @Date: 2024/4/18 16:12
  1061. * @Description: 查询修改记录
  1062. */
  1063. @ApiOperation(value = "查询修改记录")
  1064. @GetMapping(value = "/getUserModificationRecords")
  1065. public HttpResult getUserModificationRecords(@RequestParam("userId") String userId) throws IllegalAccessException {
  1066. List<SysUserRecord> userList = SpringUtil.getBean(SysUserRecordMapper.class).queryByUserId(userId);
  1067. if (CollectionUtils.isEmpty(userList)) {
  1068. return HttpResult.ok(new ArrayList[0]);
  1069. }
  1070. SysUserInfoQuery sysUserVo = new SysUserInfoQuery();
  1071. // 查询用户
  1072. SysUser sysUser = sysUserService.getById(userId);
  1073. // 查询角色
  1074. SysUserRole sysUserRole = sysUserRoleService.selectByUserId(userId);
  1075. // SysUserRole sysUserRole = sysUserRoleService.getById(userId);
  1076. if (!ObjectUtils.isEmpty(sysUserRole)) {
  1077. sysUser.setRoleId(StringUtils.toString(sysUserRole.getRoleId()));
  1078. }
  1079. //查询 机构的上级
  1080. SysDept sysDept = sysDeptService.getById(sysUser.getDeptId());
  1081. sysUser.setPdeptId(sysDept.getParentId());
  1082. if ("19".equals(sysUser.getRoleId())) {
  1083. SysUser operator = sysUserService.getById(sysUser.getOperatorCode());
  1084. sysUser.setReferrerId(operator != null ? operator.getId() : "");
  1085. sysUser.setReferrerName(operator != null ? operator.getName() : "");
  1086. sysUserVo.setSysUser(sysUser);
  1087. sysUserVo.setSysUserInfo(sysUserInfoService.getById(userId));
  1088. List<EsmUserImageQueryVo> esmUserImageQueryVo = esmUserImageService.getEsmUserImageQueryVo(userId);
  1089. sysUserVo.setEsmUserImageVo(esmUserImageQueryVo);
  1090. return HttpResult.ok(DifferentPropertyUtils.ModificationRecordData(sysUserVo, userList));
  1091. }
  1092. // 查询推荐人
  1093. EsmUserReferrer referrer = esmUserReferrerService.getById(userId);
  1094. if (ObjectUtils.isEmpty(referrer)) {
  1095. sysUser.setReferrerId(null);
  1096. sysUser.setReferrerName(null);
  1097. } else {
  1098. sysUser.setReferrerId(referrer.getReferrerId());
  1099. sysUser.setReferrerName(referrer.getReferrerName());
  1100. }
  1101. //查询详情信息
  1102. SysUserInfo userInfo = sysUserInfoService.getById(userId);
  1103. if (StringUtils.isNotEmpty(userInfo.getLiveAddress())) {
  1104. userInfo.setLiveAddressString(userInfo.getLiveAddress().split(","));
  1105. }
  1106. //查询用户绑定的银行卡信息
  1107. SysUserBankCard queryBank = new SysUserBankCard();
  1108. queryBank.setUserId(userId);
  1109. queryBank.setAuditStatus("1");
  1110. HttpResult<List<SysUserBankCard>> userBankList = sysUserBankCardService.getUserBankListByQueryParam(queryBank);
  1111. if (!Objects.isNull(userInfo)) {
  1112. if (userBankList.getData().isEmpty()) {
  1113. userInfo.setBankName(null);
  1114. userInfo.setAccountno(null);
  1115. } else {
  1116. userInfo.setBankName(userBankList.getData().get(0).getBankAccount());
  1117. userInfo.setAccountno(userBankList.getData().get(0).getBankNumber());
  1118. }
  1119. }
  1120. List<EsmUserImageQueryVo> esmUserImageQueryVo = esmUserImageService.getEsmUserImageQueryVo(userId);
  1121. sysUserVo.setSysUser(sysUser);
  1122. sysUserVo.setSysUserInfo(userInfo);
  1123. sysUserVo.setEsmUserImageVo(esmUserImageQueryVo);
  1124. return HttpResult.ok(DifferentPropertyUtils.ModificationRecordData(sysUserVo, userList));
  1125. }
  1126. /**
  1127. * 代理人和渠道添加批量设置管理人
  1128. */
  1129. @PostMapping("updateManagementPersonnel")
  1130. public HttpResult updateManagementPersonnel(@RequestBody UpdateManagementDto managementDto) {
  1131. return sysUserService.updateManagementPersonnel(managementDto);
  1132. }
  1133. /**
  1134. * 代理人和渠道取消管理人
  1135. */
  1136. @PostMapping("cancelManagementPersonnel")
  1137. public HttpResult cancelManagementPersonnel(@RequestBody UpdateManagementDto managementDto) {
  1138. return sysUserService.cancelManagementPersonnel(managementDto);
  1139. }
  1140. /**
  1141. * @version
  1142. * @author: hxl
  1143. * @Date: 2024/7/11 16:04
  1144. * @Description: 查询的所有的后线人员
  1145. */
  1146. @ApiOperation(value = "后线用户查询不分页(管理人设置)")
  1147. @PostMapping(value = "/selectHxUserList")
  1148. public HttpResult selectHxUserList(@RequestBody SysUserDto sysUserDto) {
  1149. return HttpResult.ok(sysUserService.selectHxUserList(sysUserDto));
  1150. }
  1151. /**
  1152. * 代理人和渠道用户查询
  1153. */
  1154. @PostMapping("selectForAgentsAndChannelsPage")
  1155. public HttpResult selectForAgentsAndChannelsPage(@RequestBody PageDto<SysUserDto> pageDto) {
  1156. return HttpResult.ok(sysUserService.selectForAgentsAndChannelsPage(pageDto));
  1157. }
  1158. /**
  1159. * @version
  1160. * @author: hxl
  1161. * @Date: 2024/9/24 17:37
  1162. * @Description: 电销管理人数据列表
  1163. */
  1164. @ApiOperation(value = "电销管理人数据列表")
  1165. @GetMapping(value = "/findDxUserList")
  1166. public HttpResult findDxUserList() {
  1167. return HttpResult.ok(sysUserService.findDxUserList());
  1168. }
  1169. }