SysUserController.java 31 KB

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