SysUserController.java 29 KB

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