SysUserController.java 54 KB

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