SysUserController.java 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323
  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. Integer type = sysUser.getType();
  523. Integer level = sysUser.getLevel();
  524. if (type != 0) {
  525. if (level == null || level != 1) {
  526. sysUserService.sendMsgPantner(sysUser.getMobile());
  527. }
  528. }
  529. } else if (Objects.equals(sysUser.getStatus(), UserWorkStatus.UWS_4.getCode())) {
  530. sysUser.setStatus(UserWorkStatus.UWS_5.getCode());
  531. } else if (Objects.equals(sysUser.getStatus(), UserWorkStatus.UWS_6.getCode())) {
  532. sysUser.setStatus(UserWorkStatus.UWS_7.getCode());
  533. }
  534. SysUserTrack sysUserTrack = new SysUserTrack(sysUser);
  535. sysUserTrack.setApproveMess(reason);
  536. sysUserTrackService.save(sysUserTrack);
  537. return HttpResult.ok(sysUserService.updateById(sysUser));
  538. }
  539. @Autowired
  540. private SysUserBankCardService sysUserBankCardService;
  541. @ApiOperation(value = "(重构)获取用户")
  542. @ApiImplicitParams({
  543. @ApiImplicitParam(name = "userId", required = true, value = "用户ID")
  544. })
  545. @GetMapping(value = "/{userId}")
  546. public HttpResult findUserById(@PathVariable String userId) {
  547. SysUserInfoQuery sysUserVo = new SysUserInfoQuery();
  548. // 查询用户
  549. SysUser sysUser = sysUserService.getById(userId);
  550. // 查询角色
  551. SysUserRole sysUserRole = sysUserRoleService.selectByUserId(userId);
  552. // SysUserRole sysUserRole = sysUserRoleService.getById(userId);
  553. if (!ObjectUtils.isEmpty(sysUserRole)) {
  554. sysUser.setRoleId(StringUtils.toString(sysUserRole.getRoleId()));
  555. }
  556. //查询 机构的上级
  557. SysDept sysDept = sysDeptService.getById(sysUser.getDeptId());
  558. sysUser.setPdeptId(sysDept.getParentId());
  559. if ("19".equals(sysUser.getRoleId())) {
  560. SysUser operator = sysUserService.getById(sysUser.getOperatorCode());
  561. sysUser.setReferrerId(operator != null ? operator.getId() : "");
  562. sysUser.setReferrerName(operator != null ? operator.getName() : "");
  563. sysUserVo.setSysUser(sysUser);
  564. List<EsmUserImageQueryVo> esmUserImageQueryVo = esmUserImageService.getEsmUserImageQueryVo(userId);
  565. sysUserVo.setEsmUserImageVo(esmUserImageQueryVo);
  566. sysUserVo.setSysUserInfo(sysUserInfoService.getById(userId));
  567. SpringUtil.getBean(RecordUserUtils.class).addRecord(userId, BaseController.getUserName());
  568. return HttpResult.ok(sysUserVo);
  569. }
  570. // 查询推荐人
  571. EsmUserReferrer referrer = esmUserReferrerService.getById(userId);
  572. if (ObjectUtils.isEmpty(referrer)) {
  573. sysUser.setReferrerId(null);
  574. sysUser.setReferrerName(null);
  575. } else {
  576. sysUser.setReferrerId(referrer.getReferrerId());
  577. sysUser.setReferrerName(referrer.getReferrerName());
  578. }
  579. //查询详情信息
  580. SysUserInfo userInfo = sysUserInfoService.getById(userId);
  581. String addr = Optional.ofNullable(userInfo).map(SysUserInfo::getLiveAddress).orElse(null);
  582. if (StringUtils.isNotEmpty(addr)) {
  583. userInfo.setLiveAddressString(addr.split(","));
  584. }
  585. //查询用户绑定的银行卡信息
  586. SysUserBankCard queryBank = new SysUserBankCard();
  587. queryBank.setUserId(userId);
  588. queryBank.setAuditStatus("1");
  589. HttpResult<List<SysUserBankCard>> userBankList = sysUserBankCardService.getUserBankListByQueryParam(queryBank);
  590. if (!Objects.isNull(userInfo)) {
  591. if (userBankList.getData().isEmpty()) {
  592. userInfo.setBankName(null);
  593. userInfo.setAccountno(null);
  594. } else {
  595. userInfo.setBankName(userBankList.getData().get(0).getBankAccount());
  596. userInfo.setAccountno(userBankList.getData().get(0).getBankNumber());
  597. }
  598. }
  599. List<EsmUserImageQueryVo> esmUserImageQueryVo = esmUserImageService.getEsmUserImageQueryVo(userId);
  600. sysUserVo.setSysUser(sysUser);
  601. sysUserVo.setSysUserInfo(userInfo);
  602. sysUserVo.setEsmUserImageVo(esmUserImageQueryVo);
  603. //初始化添加人员修改记录
  604. SpringUtil.getBean(RecordUserUtils.class).addRecord(userId, null);
  605. return HttpResult.ok(sysUserVo);
  606. }
  607. @ApiOperation(value = "(new)获取登录用户")
  608. @GetMapping(value = "/loginUser")
  609. public HttpResult loginUser() {
  610. SysUser sysUser = sysUserService.getById(getUserId());
  611. SysRole sysRole = sysUserRoleService.gainRoleByUserId(sysUser.getId());
  612. if (null != sysRole) {
  613. sysUser.setRoleId(StringUtils.toString(sysRole.getId()));
  614. sysUser.setRoleName(sysRole.getName());
  615. }
  616. if (StringUtils.isNotEmpty(sysUser.getDeptId())) {
  617. SysDept sysDept = sysDeptService.getById(sysUser.getDeptId());
  618. sysUser.setDeptName(sysDept.getName());
  619. sysUser.setIsHasAddUser(sysDept.getManagementSource() != null ? 1 : 0);
  620. sysUser.setManagementSource(sysDept.getManagementSource());
  621. }
  622. EsmUserReferrer eur = esmUserReferrerService.getById(sysUser.getId());
  623. if (null != eur) {
  624. sysUser.setReferrerId(eur.getReferrerId());
  625. sysUser.setReferrerName(eur.getReferrerName());
  626. }
  627. InsUploadFiles insUploadFiles = insUploadFilesService.getById(sysUser.getHeadSculpture());
  628. if (null != insUploadFiles) {
  629. sysUser.setHeadSculpture(insUploadFiles.getUrl());
  630. }
  631. return HttpResult.ok(sysUser);
  632. }
  633. @ApiOperation(value = "获取可选业务员列表")
  634. @GetMapping(value = "/getAllUsers")
  635. public HttpResult getAllUsers(@RequestParam(required = false) String userId) {
  636. List<SysUser> userList = sysUserService.findAllAgentRoleUser(userId, "20");
  637. return HttpResult.ok(userList);
  638. }
  639. @ApiOperation(value = "(new)是否绑定微信")
  640. @GetMapping(value = "/isBindWechat")
  641. public HttpResult<Object> isBindWechat() {
  642. SysUser sysUser = sysUserService.getById(getUserId());
  643. String openid = sysUser.getOpenid();
  644. AssertionUtils.isStringEmpty(openid, "未绑定微信");
  645. return HttpResult.ok();
  646. }
  647. /**
  648. * 个代注册、出单员注册
  649. *
  650. * @author: lig
  651. * @date: 2023年07月03日 0003
  652. */
  653. @ApiOperation(value = "(new)个代/出单员注册")
  654. @PostMapping(value = "/agentRegist")
  655. @Transactional
  656. public HttpResult agentRegist(@RequestBody AgentUserDto dto) {
  657. int noCount = 3;//顺序号是几位的
  658. List<SysUser> list = sysUserService.lambdaQuery().eq(SysUser::getMobile, dto.getMobile()).list();
  659. if (!list.isEmpty()) {
  660. throw new SystemException("手机号已经被注册请重新跟换手机号。如有疑问请联系管理人员。");
  661. }
  662. if (StringUtils.isNullOrEmpty(dto.getFlag())) {
  663. return HttpResult.error("个代、出单员标识不能为空");
  664. }
  665. if (StringUtils.isNullOrEmpty(dto.getMobile()) || StringUtils.isNullOrEmpty(dto.getMobileMsg())) {
  666. return HttpResult.error("手机号、验证码不能为空");
  667. }
  668. if (StringUtils.isNullOrEmpty(dto.getName())) {
  669. return HttpResult.error("姓名不能为空");
  670. }
  671. if (StringUtils.isNullOrEmpty(dto.getPassword())) {
  672. return HttpResult.error("密码不能为空");
  673. }
  674. if (StringUtils.isNullOrEmpty(dto.getReferrerId())) {
  675. return HttpResult.error("推荐人不能为空");
  676. }
  677. String captcha_redis = (String) redisTemplate.opsForValue().get(PHONE_VERIFICATION_CODE_KEY + dto.getMobile());
  678. redisTemplate.delete(PHONE_VERIFICATION_CODE_KEY + dto.getMobile());
  679. if (captcha_redis == null) {
  680. return HttpResult.error("验证码已失效");
  681. }
  682. if (!dto.getMobileMsg().equals(captcha_redis)) {
  683. return HttpResult.error("验证码错误");
  684. }
  685. String recommenderid = dto.getReferrerId();
  686. SysUser recommender = sysUserService.getById(recommenderid);
  687. if (recommender == null) {
  688. return HttpResult.error("推荐人信息不存在");
  689. }
  690. SysUser reUser = sysUserService.getByUserId(recommenderid);
  691. //个代
  692. UnionPayResponse response = new UnionPayResponse();
  693. if ("2".equals(reUser.getManagementSource())) {
  694. if (StringUtils.isNullOrEmpty(dto.getIdentity())) {
  695. return HttpResult.error("机构来源为个代的证件号不能为空");
  696. }
  697. UnionPayRequest request = new UnionPayRequest();
  698. request.setName(dto.getName());
  699. request.setPhoneNo(dto.getMobile());
  700. request.setCertNo(dto.getIdentity());
  701. response = unionPayRequestApiComponent.threeFactorVerifyRequest(request);
  702. if (response != null && !"00".equals(response.getRespCode())) {
  703. return HttpResult.error("认证信息不一致:" + response.getDetailRespMsg());
  704. }
  705. }
  706. //只有团队长和代理人才能邀请 by gws
  707. SysUserRole recommenderRole = sysUserRoleService.selectByUserId(recommenderid);
  708. if (!"20".equals(recommenderRole.getRoleId().toString()) && !"21".equals(recommenderRole.getRoleId().toString())) {
  709. return HttpResult.error("只有团队长和代理人才能推荐");
  710. }
  711. SysUser sysUser = sysUserService.findByPhone(dto.getMobile());
  712. if (sysUser != null) {
  713. return HttpResult.error("手机号已存在");
  714. } else {
  715. sysUser = new SysUser();
  716. }
  717. String nextPK;
  718. //根据机构号获取userid最大值,不需要加人员类型判断 从sys_user获取
  719. String maxId = sysUserService.findMaxId(recommender.getDeptId());
  720. if (StringUtils.isNullOrEmpty(maxId)) {
  721. nextPK = recommender.getDeptId() + "001";
  722. } else {
  723. nextPK = IdGenerate.nextCode(maxId, noCount);
  724. }
  725. sysUser.setName(dto.getName());
  726. sysUser.setMobile(dto.getMobile());
  727. sysUser.setDeptId(recommender.getDeptId());
  728. //密码加密
  729. String salt = PasswordUtils.getSalt();
  730. String password = PasswordUtils.encode(dto.getPassword(), salt);
  731. sysUser.setPassword(password);
  732. sysUser.setSalt(salt);
  733. sysUser.setStatus("2".equals(dto.getFlag()) ? 2 : 1);//1:正常 2:审批中
  734. sysUser.setId(nextPK);
  735. sysUser.setCreateBy("admin");
  736. if ("1".equals(dto.getFlag())) {
  737. sysUser.setOperatorCode(recommenderid);
  738. }
  739. sysUser.setIdentity(dto.getIdentity());
  740. sysUser.setFactorVerify(response != null && "00".equals(response.getRespCode()) ? 1 : 0);
  741. //角色配置
  742. SysUserRole userRole = new SysUserRole();
  743. userRole.setUserId(nextPK);
  744. userRole.setRoleId(dto.getFlag().equals("2") ? 20L : 19L);
  745. // 出单员获取渠道负责人的领导人插入
  746. if (19 == userRole.getRoleId()) {
  747. SysUser leaderUser = sysUserService.getByRoleIdAndDeptId("21", sysUser.getDeptId());
  748. sysUser.setLeaderId(leaderUser.getLeaderId());
  749. sysUser.setLeaderName(leaderUser.getLeaderName());
  750. }
  751. sysUserService.save(sysUser);
  752. sysUserRoleService.save(userRole);
  753. //添加增员服务消息
  754. //添加订单消息
  755. messageSecretaryService.addMessage(MessageTypeConstants.M_6, dto.getReferrerId(),
  756. dto.getMobile() + "(" + dto.getName() + ")" + "进行注册,请立即审核.");
  757. if ("2".equals(dto.getFlag())) {
  758. esmUserReferrerService.addReferrer(dto.getReferrerId(), nextPK);
  759. }
  760. return HttpResult.ok("保存成功", sysUser.getId());
  761. }
  762. @GetMapping(value = "/findUserInfo/{userId}")
  763. @ApiOperation(value = "获取用户信息")
  764. @ApiImplicitParams({
  765. @ApiImplicitParam(name = "userId", value = "用户信息", required = true, dataType = "String")
  766. })
  767. //@SaCheckPermission("sys:menu:add")
  768. public HttpResult findUserInfo(@PathVariable String userId) {
  769. return HttpResult.ok(sysUserInfoService.getById(userId));
  770. }
  771. @ApiOperation(value = "保存用户基本详情信息")
  772. @PostMapping(value = "/saveUserInfo")
  773. public HttpResult saveUserInfo(@RequestBody SysUser2Vo sysUserVo) {
  774. //by gws 21 团队长 20 代理人 必须归属团队
  775. // 22 后线人员 必须归属部门
  776. SysUser sysUser = sysUserVo.getSysUser();
  777. if (StringUtils.isNullOrEmpty(sysUser)) {
  778. return HttpResult.error("用户信息不能为空");
  779. }
  780. if (StringUtils.isNullOrEmpty(sysUser.getDeptId())) {
  781. return HttpResult.error("机构ID不能为空");
  782. }
  783. if (StringUtils.isNullOrEmpty(sysUser.getRoleId())) {
  784. throw new SystemException("角色id不能为空");
  785. }
  786. //获取机构层级
  787. int deptLevel = sysUserService.getDeptLevel(sysUserVo);
  788. if (!StringUtils.isNullOrEmpty(sysUser.getRoleId())) {
  789. if (RoleConstants.R21.getCode().equals(sysUser.getRoleId())
  790. || RoleConstants.R20.getCode().equals(sysUser.getRoleId())
  791. || RoleConstants.R19.getCode().equals(sysUser.getRoleId())) {//19 出单员 21 团队长 20 代理人
  792. if (deptLevel != 6) {
  793. throw new SystemException("团队长、代理人、出单员只能归属团队中");
  794. }
  795. //如果为团队长,判断是否已经存在团队长,存在不允许添加 add by hxl 2024-05-07 ============begin
  796. if (RoleConstants.R21.getCode().equals(sysUser.getRoleId())) {
  797. int count = sysUserService.getCountByDeptAndRoleId(sysUser);
  798. if (count > 0) {
  799. throw new SystemException("该机构已存在团队长,不允许再添加!!");
  800. }
  801. }
  802. // =========================add by hxl end ====================
  803. } else if (RoleConstants.R18.getCode().equals(sysUser.getRoleId())) { // 42 门店长
  804. if (deptLevel != 5) {
  805. throw new SystemException("机构管理员只能归属机构中");
  806. }
  807. } else if (RoleConstants.R17.getCode().equals(sysUser.getRoleId())) {
  808. if (deptLevel != 4) {
  809. throw new SystemException("部长只能归属于4级");
  810. }
  811. }
  812. }
  813. return sysUserService.saveUserInfo(sysUserVo);
  814. }
  815. @ApiOperation(value = "保存合伙人、管理员用户基本详情信息")
  816. @PostMapping(value = "/saveUserInfoByPartner")
  817. public HttpResult saveUserInfoByPartner(@RequestBody SysUser2Vo sysUserVo) {
  818. log.info("添加合伙人入参:{}", sysUserVo);
  819. //by gws 21 团队长 20 代理人 必须归属团队
  820. // 22 后线人员 必须归属部门
  821. SysUser sysUser = sysUserVo.getSysUser();
  822. if (sysUserVo.getIsPartner() != null && sysUserVo.getIsPartner().equals("1")) {
  823. SysUserInfo sysUserInfo = new SysUserInfo();
  824. SysUser sysUser1 = sysUserService.getById(sysUserVo.getSysUser().getReferrerId());
  825. sysUser.setDeptId(sysUser1.getDeptId());
  826. sysUser.setStatus(2); //直接默认为入司待审核
  827. LocalDate birthday = LocalDate.parse(sysUser.getIdentity().substring(6, 10) + "-" + sysUser.getIdentity().substring(10, 12) + "-" + sysUser.getIdentity().substring(12, 14));
  828. sysUserInfo.setBirthday(birthday);
  829. sysUserVo.setSysUserInfo(sysUserInfo);
  830. }
  831. if (StringUtils.isNullOrEmpty(sysUser)) {
  832. return HttpResult.error("用户信息不能为空");
  833. }
  834. if (StringUtils.isNullOrEmpty(sysUser.getDeptId())) {
  835. return HttpResult.error("机构ID不能为空");
  836. }
  837. if (StringUtils.isNullOrEmpty(sysUser.getRoleId())) {
  838. throw new SystemException("角色id不能为空");
  839. }
  840. //获取机构层级
  841. int deptLevel = sysUserService.getDeptLevel(sysUserVo);
  842. if (!StringUtils.isNullOrEmpty(sysUser.getRoleId())) {
  843. if (RoleConstants.R21.getCode().equals(sysUser.getRoleId())
  844. || RoleConstants.R20.getCode().equals(sysUser.getRoleId())
  845. || RoleConstants.R19.getCode().equals(sysUser.getRoleId())) {//19 出单员 21 团队长 20 代理人
  846. if (deptLevel != 6) {
  847. throw new SystemException("团队长、代理人、出单员只能归属团队中");
  848. }
  849. //如果为团队长,判断是否已经存在团队长,存在不允许添加 add by hxl 2024-05-07 ============begin
  850. if (RoleConstants.R21.getCode().equals(sysUser.getRoleId())) {
  851. int count = sysUserService.getCountByDeptAndRoleId(sysUser);
  852. if (count > 0) {
  853. throw new SystemException("该机构已存在团队长,不允许再添加!!");
  854. }
  855. }
  856. // =========================add by hxl end ====================
  857. } else if (RoleConstants.R18.getCode().equals(sysUser.getRoleId())) { // 42 门店长
  858. if (deptLevel != 5) {
  859. throw new SystemException("机构管理员只能归属机构中");
  860. }
  861. } else if (RoleConstants.R17.getCode().equals(sysUser.getRoleId())) {
  862. if (deptLevel != 4) {
  863. throw new SystemException("部长只能归属于4级");
  864. }
  865. }
  866. }
  867. return sysUserService.saveUserInfoByPartner(sysUserVo);
  868. }
  869. @ApiOperation(value = "保存团队长用户基本详情信息")
  870. @PostMapping(value = "/saveTeamLeader")
  871. public HttpResult saveTeamLeader(@RequestBody SysUser2Vo sysUserVo) {
  872. return sysUserService.saveUserInfo1(sysUserVo);
  873. }
  874. @ApiOperation(value = "修改用户详情信息")
  875. @PostMapping(value = "/updateUserInfo/{userId}")
  876. @ApiImplicitParams({
  877. @ApiImplicitParam(name = "userId", value = "用户信息", required = true, dataType = "String")
  878. })
  879. @Transactional
  880. public HttpResult updateUserInfo(@PathVariable String userId, @RequestBody SysUser2Vo sysUserVo) {
  881. return sysUserService.updateUserInfo(userId, sysUserVo);
  882. }
  883. @ApiOperation(value = "修改用户详情信息")
  884. @PostMapping(value = "/updateUserInfo1/{userId}")
  885. @ApiImplicitParams({
  886. @ApiImplicitParam(name = "userId", value = "用户信息", required = true, dataType = "String")
  887. })
  888. @Transactional
  889. public HttpResult updateUserInfo1(@PathVariable String userId, @RequestBody SysUser2Vo sysUserVo) {
  890. return sysUserService.updateUserInfo1(userId, sysUserVo);
  891. }
  892. @ApiOperation(value = "获取推荐人分页信息")
  893. @PostMapping(value = "/referrerFindPage")
  894. public HttpResult<PageVo<SysReferrerVo>> referrerFindPage(@RequestBody PageDto<SysReferrerVo> pageDto) {
  895. return esmUserReferrerService.gainReferrerPage(pageDto);
  896. }
  897. @PostMapping(value = "/realNameAuth")
  898. @ApiOperation(value = "实名认证", notes = "参数1:姓名" +
  899. "</br>参数2:身份证号")
  900. public HttpResult realNameAuth(@RequestBody BaseDto dto) {
  901. SysUser sysUser = sysUserService.getById(getUserId());
  902. sysUser.setName(dto.getParam1());
  903. sysUser.setIdentity(dto.getParam2());
  904. // sysUser.setStatus(1);
  905. return HttpResult.ok(sysUserService.updateById(sysUser));
  906. }
  907. @PostMapping("/modifyingTheAvatar")
  908. @ApiOperation(value = "修改头像")
  909. public HttpResult modifyingTheAvatar(@RequestSingleParam("imagesId") String imagesId) {
  910. SysUser sysUser = sysUserService.getById(getUserId());
  911. sysUser.setHeadSculpture(imagesId);
  912. sysUserService.updateById(sysUser);
  913. return HttpResult.ok();
  914. }
  915. @ApiOperation(value = "根据传入机构,查询所有人员")
  916. @GetMapping(value = "/findUserList")
  917. public HttpResult findUserList(String deptId) {
  918. return HttpResult.ok(sysUserService.findUserList(deptId));
  919. }
  920. @ApiOperation(value = "获取树结构")
  921. @GetMapping(value = "/findTree")
  922. public HttpResult<List<SysUser>> findTree() {
  923. List<SysUser> list = sysUserService.findTree();
  924. return HttpResult.ok(list);
  925. }
  926. /**
  927. * 获取当前用户的下级所有人员
  928. *
  929. * @return
  930. */
  931. @ApiOperation(value = "获取当前用户的下级所有人员")
  932. @GetMapping(value = "/findNextTree")
  933. public HttpResult<List<SysUser>> findNextTree() {
  934. List<SysUser> list = sysUserService.findNextTree();
  935. return HttpResult.ok(list);
  936. }
  937. /**
  938. * 获取当前用户的所有代理人
  939. *
  940. * @return
  941. */
  942. @ApiOperation(value = "获取代理人树形")
  943. @GetMapping(value = "/findNextAgentTree")
  944. public HttpResult<List<SysUser>> findNextAgentTree(String pid) {
  945. List<SysUser> list = sysUserService.findNextAgentTree(pid);
  946. return HttpResult.ok(list);
  947. }
  948. @ApiOperation(value = "渠道区域业绩管理")
  949. @PostMapping(value = "/quUserNum")
  950. public HttpResult quUserNum(@RequestBody QuUserNumDto quUserNumDto) {
  951. return HttpResult.ok("", sysUserService.quUserNum(quUserNumDto));
  952. }
  953. @ApiOperation(value = "渠道区域业绩地区管理详情")
  954. @PostMapping(value = "/quUserNumDetail")
  955. public HttpResult quUserNumDetail(@RequestBody QuUserNumDto quUserNumDto) {
  956. return HttpResult.ok("", sysUserService.getQuUserByCompany(quUserNumDto));
  957. }
  958. @ApiOperation(value = "个代区域业绩管理")
  959. @PostMapping(value = "quAgentAreaAdmin")
  960. public HttpResult quAgentAreaAdmin(@RequestBody QuUserNumDto quUserNumDto) {
  961. return HttpResult.ok("", sysUserService.quAgentAreaAdmin(quUserNumDto));
  962. }
  963. @ApiOperation(value = "个代区域业绩地区管理详情")
  964. @PostMapping(value = "/quAgentAreaAdminDetail")
  965. public HttpResult quAgentAreaAdminDetail(@RequestBody QuUserNumDto quUserNumDto) {
  966. return HttpResult.ok("", sysUserService.quAgentAreaAdminDetail(quUserNumDto));
  967. }
  968. /**
  969. * @version
  970. * @author: hxl
  971. * @Date: 2024/4/16 16:16
  972. * @Description: 获取待客录入可选业务员列表 通过工号、姓名、手机号、身份证号
  973. */
  974. @ApiOperation(value = "获取待客录入可选业务员列表 通过工号、姓名、手机号、身份证号")
  975. @PostMapping(value = "/getAllUsersByHospitality")
  976. public HttpResult getAllUsersByHospitality(@RequestBody SysUserVOExt sysUserVOExt) {
  977. try {
  978. List<SysUserBaseVO> userList = sysUserService.getAllUsersByHospitality(sysUserVOExt);
  979. return HttpResult.ok(userList);
  980. } catch (Exception e) {
  981. return HttpResult.error("查询失败" + e.getMessage());
  982. }
  983. }
  984. /**
  985. * @version
  986. * @author: hxl
  987. * @Date: 2024/4/18 16:12
  988. * @Description: 查询客服人员列表数据
  989. */
  990. @ApiOperation(value = "获取客服人员列表数据")
  991. @PostMapping(value = "/getCustomerUsers")
  992. public HttpResult getCustomerUsers() {
  993. try {
  994. List<SysUserBaseVO> userList = sysUserService.getCustomerUsers();
  995. return HttpResult.ok(userList);
  996. } catch (Exception e) {
  997. return HttpResult.error("查询失败" + e.getMessage());
  998. }
  999. }
  1000. /**
  1001. * @version
  1002. * @author: whp
  1003. * @Date: 2024/10/12 16:12
  1004. * @Description: 机构人员树
  1005. */
  1006. @ApiOperation(value = "获取机构人员树")
  1007. @PostMapping(value = "/getTreeDeptUser")
  1008. public HttpResult getTreeDeptUser() {
  1009. try {
  1010. List<SysDeptTreeVo> userList = sysUserService.getTreeDeptUser();
  1011. return HttpResult.ok(userList);
  1012. } catch (Exception e) {
  1013. return HttpResult.error("查询失败" + e.getMessage());
  1014. }
  1015. }
  1016. /**
  1017. * @version
  1018. * @author: whp
  1019. * @Date: 2024/10/12 16:12
  1020. * @Description: 机构人员树
  1021. */
  1022. @ApiOperation(value = "获取机构人员树")
  1023. @GetMapping(value = "/getTreeUser")
  1024. public HttpResult getTreeUser() {
  1025. try {
  1026. List<SysUser> userList = sysUserService.getTreeUser();
  1027. return HttpResult.ok(userList);
  1028. } catch (Exception e) {
  1029. return HttpResult.error("查询失败" + e.getMessage());
  1030. }
  1031. }
  1032. /**
  1033. * @version
  1034. * @author: hxl
  1035. * @Date: 2024/7/11 16:04
  1036. * @Description: 查询的所有的后线人员
  1037. */
  1038. @ApiOperation(value = "后线用户查询不分页(编辑时查询领导人)")
  1039. @GetMapping(value = "/findHxUserList")
  1040. public HttpResult findHxUserList() {
  1041. return HttpResult.ok(sysUserService.findHxUserList());
  1042. }
  1043. @ApiOperation(value = "离职申请")
  1044. @PostMapping("/departApply")
  1045. public HttpResult departApply(@RequestBody SysUser2Vo sysUserVO) {
  1046. return sysUserService.departApply(sysUserVO) ? HttpResult.ok("离职申请提交成功") : HttpResult.error("离职申请提交失败");
  1047. }
  1048. @ApiOperation(value = "离职恢复")
  1049. @GetMapping("/separationReinstatement/{userId}")
  1050. public HttpResult separationReinstatement(@PathVariable String userId) {
  1051. sysUserService.separationReinstatement(userId);
  1052. return HttpResult.ok("恢复成功");
  1053. }
  1054. /**
  1055. * @version
  1056. * @author: hxl
  1057. * @Date: 2024/4/18 16:12
  1058. * @Description: 查询修改记录
  1059. */
  1060. @ApiOperation(value = "查询修改记录")
  1061. @GetMapping(value = "/getUserModificationRecords")
  1062. public HttpResult getUserModificationRecords(@RequestParam("userId") String userId) throws IllegalAccessException {
  1063. List<SysUserRecord> userList = SpringUtil.getBean(SysUserRecordMapper.class).queryByUserId(userId);
  1064. if (CollectionUtils.isEmpty(userList)) {
  1065. return HttpResult.ok(new ArrayList[0]);
  1066. }
  1067. SysUserInfoQuery sysUserVo = new SysUserInfoQuery();
  1068. // 查询用户
  1069. SysUser sysUser = sysUserService.getById(userId);
  1070. // 查询角色
  1071. SysUserRole sysUserRole = sysUserRoleService.selectByUserId(userId);
  1072. // SysUserRole sysUserRole = sysUserRoleService.getById(userId);
  1073. if (!ObjectUtils.isEmpty(sysUserRole)) {
  1074. sysUser.setRoleId(StringUtils.toString(sysUserRole.getRoleId()));
  1075. }
  1076. //查询 机构的上级
  1077. SysDept sysDept = sysDeptService.getById(sysUser.getDeptId());
  1078. sysUser.setPdeptId(sysDept.getParentId());
  1079. if ("19".equals(sysUser.getRoleId())) {
  1080. SysUser operator = sysUserService.getById(sysUser.getOperatorCode());
  1081. sysUser.setReferrerId(operator != null ? operator.getId() : "");
  1082. sysUser.setReferrerName(operator != null ? operator.getName() : "");
  1083. sysUserVo.setSysUser(sysUser);
  1084. sysUserVo.setSysUserInfo(sysUserInfoService.getById(userId));
  1085. List<EsmUserImageQueryVo> esmUserImageQueryVo = esmUserImageService.getEsmUserImageQueryVo(userId);
  1086. sysUserVo.setEsmUserImageVo(esmUserImageQueryVo);
  1087. return HttpResult.ok(DifferentPropertyUtils.ModificationRecordData(sysUserVo, userList));
  1088. }
  1089. // 查询推荐人
  1090. EsmUserReferrer referrer = esmUserReferrerService.getById(userId);
  1091. if (ObjectUtils.isEmpty(referrer)) {
  1092. sysUser.setReferrerId(null);
  1093. sysUser.setReferrerName(null);
  1094. } else {
  1095. sysUser.setReferrerId(referrer.getReferrerId());
  1096. sysUser.setReferrerName(referrer.getReferrerName());
  1097. }
  1098. //查询详情信息
  1099. SysUserInfo userInfo = sysUserInfoService.getById(userId);
  1100. if (StringUtils.isNotEmpty(userInfo.getLiveAddress())) {
  1101. userInfo.setLiveAddressString(userInfo.getLiveAddress().split(","));
  1102. }
  1103. //查询用户绑定的银行卡信息
  1104. SysUserBankCard queryBank = new SysUserBankCard();
  1105. queryBank.setUserId(userId);
  1106. queryBank.setAuditStatus("1");
  1107. HttpResult<List<SysUserBankCard>> userBankList = sysUserBankCardService.getUserBankListByQueryParam(queryBank);
  1108. if (!Objects.isNull(userInfo)) {
  1109. if (userBankList.getData().isEmpty()) {
  1110. userInfo.setBankName(null);
  1111. userInfo.setAccountno(null);
  1112. } else {
  1113. userInfo.setBankName(userBankList.getData().get(0).getBankAccount());
  1114. userInfo.setAccountno(userBankList.getData().get(0).getBankNumber());
  1115. }
  1116. }
  1117. List<EsmUserImageQueryVo> esmUserImageQueryVo = esmUserImageService.getEsmUserImageQueryVo(userId);
  1118. sysUserVo.setSysUser(sysUser);
  1119. sysUserVo.setSysUserInfo(userInfo);
  1120. sysUserVo.setEsmUserImageVo(esmUserImageQueryVo);
  1121. return HttpResult.ok(DifferentPropertyUtils.ModificationRecordData(sysUserVo, userList));
  1122. }
  1123. /**
  1124. * 代理人和渠道添加批量设置管理人
  1125. */
  1126. @PostMapping("updateManagementPersonnel")
  1127. public HttpResult updateManagementPersonnel(@RequestBody UpdateManagementDto managementDto) {
  1128. return sysUserService.updateManagementPersonnel(managementDto);
  1129. }
  1130. /**
  1131. * 代理人和渠道取消管理人
  1132. */
  1133. @PostMapping("cancelManagementPersonnel")
  1134. public HttpResult cancelManagementPersonnel(@RequestBody UpdateManagementDto managementDto) {
  1135. return sysUserService.cancelManagementPersonnel(managementDto);
  1136. }
  1137. /**
  1138. * @version
  1139. * @author: hxl
  1140. * @Date: 2024/7/11 16:04
  1141. * @Description: 查询的所有的后线人员
  1142. */
  1143. @ApiOperation(value = "后线用户查询不分页(管理人设置)")
  1144. @PostMapping(value = "/selectHxUserList")
  1145. public HttpResult selectHxUserList(@RequestBody SysUserDto sysUserDto) {
  1146. return HttpResult.ok(sysUserService.selectHxUserList(sysUserDto));
  1147. }
  1148. /**
  1149. * 代理人和渠道用户查询
  1150. */
  1151. @PostMapping("selectForAgentsAndChannelsPage")
  1152. public HttpResult selectForAgentsAndChannelsPage(@RequestBody PageDto<SysUserDto> pageDto) {
  1153. return HttpResult.ok(sysUserService.selectForAgentsAndChannelsPage(pageDto));
  1154. }
  1155. /**
  1156. * @version
  1157. * @author: hxl
  1158. * @Date: 2024/9/24 17:37
  1159. * @Description: 电销管理人数据列表
  1160. */
  1161. @ApiOperation(value = "电销管理人数据列表")
  1162. @GetMapping(value = "/findDxUserList")
  1163. public HttpResult findDxUserList() {
  1164. return HttpResult.ok(sysUserService.findDxUserList());
  1165. }
  1166. }