SysUserServiceImpl.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694
  1. package com.ydtech.modules.admin.service.impl;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  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.constants.RoleConstants;
  15. import com.ydtech.modules.admin.dao.SysUserMapper;
  16. import com.ydtech.modules.admin.model.*;
  17. import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
  18. import com.ydtech.modules.admin.model.dto.SysUserDto;
  19. import com.ydtech.modules.admin.model.vo.SysUser2Vo;
  20. import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
  21. import com.ydtech.modules.admin.model.vo.SysUserInternalVO;
  22. import com.ydtech.modules.admin.model.vo.SysUserVO;
  23. import com.ydtech.modules.admin.service.*;
  24. import com.ydtech.modules.base.controller.BaseController;
  25. import com.ydtech.modules.base.model.dto.PageDto;
  26. import com.ydtech.modules.base.model.vo.PageVo;
  27. import com.ydtech.modules.esm.model.EsmInsAttributionTemplate;
  28. import com.ydtech.modules.esm.model.EsmUserImage;
  29. import com.ydtech.modules.esm.model.EsmUserReferrer;
  30. import com.ydtech.modules.esm.model.vo.EsmUserImageVo;
  31. import com.ydtech.modules.esm.service.EsmUserImageService;
  32. import com.ydtech.modules.esm.service.EsmUserReferrerService;
  33. import com.ydtech.modules.ins.model.InsOrdersExcel;
  34. import com.ydtech.security.utils.PasswordUtils;
  35. import com.ydtech.utils.StringUtils;
  36. import com.ydtech.utils.idgen.IdGenerate;
  37. import org.springframework.beans.factory.annotation.Autowired;
  38. import org.springframework.stereotype.Service;
  39. import org.springframework.transaction.annotation.Transactional;
  40. import java.math.BigDecimal;
  41. import java.time.LocalDate;
  42. import java.time.temporal.TemporalAdjusters;
  43. import java.util.*;
  44. import java.util.stream.Collectors;
  45. import java.util.stream.Stream;
  46. @Service
  47. public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
  48. @Autowired
  49. private SysMenuService sysMenuService;
  50. @Autowired
  51. private SysRoleMenuService sysRoleMenuService;
  52. @Autowired
  53. private SysDeptService sysDeptService;
  54. @Autowired
  55. private SysUserMapper sysUserMapper;
  56. @Autowired
  57. private SysUserRoleService sysUserRoleService;
  58. @Autowired
  59. private EsmUserReferrerService esmUserReferrerService;
  60. @Autowired
  61. private SysUserInfoService sysUserInfoService;
  62. @Autowired
  63. private EsmUserImageService esmUserImageService;
  64. @Override
  65. public IPage<SysUserBaseVO> findUserList(PageDto<SysUserDto> pageDto) {
  66. PageVo<SysUserBaseVO> pageVo = new PageVo();
  67. Page page = new Page(pageDto.getPageNum(), pageDto.getPageSize());
  68. pageVo.setPageNum(pageDto.getPageNum());
  69. pageVo.setPageSize(pageDto.getPageSize());
  70. SysUserDto sysUserVO = JSONObject.parseObject(JSONObject.toJSONString(pageDto.getDto()), SysUserDto.class);
  71. if (sysUserVO.getAgentFlag() == null) {
  72. throw new SystemException("必传标识未传递");
  73. }
  74. return sysUserMapper.findUserList(page, sysUserVO);
  75. }
  76. @Override
  77. public IPage<QuTeamNum> quTeamNum(QuTeamNumDto quTeamNumDto) {
  78. //判断必传标识是否为空
  79. if (quTeamNumDto.getTeamOrUserFlag() == null) {
  80. throw new SystemException("必传参数未传");
  81. }
  82. //判断是要查询用户还是团队
  83. if ("1".equals(quTeamNumDto.getTeamOrUserFlag())) {
  84. List<QuTeamNum> dept = sysUserMapper.getDept(quTeamNumDto);
  85. return getQuTeamNumIPage(quTeamNumDto, dept);
  86. } else if ("2".equals(quTeamNumDto.getTeamOrUserFlag())) {
  87. List<QuTeamNum> dept = sysUserMapper.getUser(quTeamNumDto);
  88. return getQuTeamNumIPage(quTeamNumDto, dept);
  89. }
  90. throw new SystemException("参数错误");
  91. }
  92. private IPage<QuTeamNum> getQuTeamNumIPage(QuTeamNumDto quTeamNumDto, List<QuTeamNum> dept) {
  93. Map<String, List<QuTeamNum>> collect = new HashMap<>();
  94. int flag;
  95. if (quTeamNumDto.getTeamOrUserFlag().equals("1")) {
  96. collect = dept.stream()
  97. .collect(Collectors.groupingBy(QuTeamNum::getDeptId));
  98. flag = 1;
  99. } else if ("2".equals(quTeamNumDto.getTeamOrUserFlag())) {
  100. collect = dept.stream()
  101. .collect(Collectors.groupingBy(QuTeamNum::getUserId));
  102. flag = 2;
  103. } else {
  104. flag = 0;
  105. }
  106. List<QuTeamNum> quTeamNums = new ArrayList<>();
  107. collect.forEach((k, v) -> {
  108. QuTeamNum teamNum = new QuTeamNum();
  109. teamNum.setHasInsuredNum("0");
  110. teamNum.setSubmitNum("0");
  111. teamNum.setSyPremiumSum("0");
  112. teamNum.setJqPremiumSum("0");
  113. teamNum.setTaxaMountSum("0");
  114. teamNum.setTotalSumpremium("0");
  115. teamNum.setQuoteNum("0");
  116. if (!v.isEmpty()) {
  117. v.forEach(quTeamNum -> {
  118. if (quTeamNum.getOrderStatus() != null) {
  119. if (quTeamNum.getOrderStatus().equals("3")) {
  120. if (quTeamNum.getJqPremiumSum() == null) {
  121. quTeamNum.setJqPremiumSum("0");
  122. }
  123. if (quTeamNum.getSyPremiumSum() == null) {
  124. quTeamNum.setSyPremiumSum("0");
  125. }
  126. //添加总额
  127. teamNum.setTotalSumpremium(String.valueOf(new BigDecimal(teamNum.getTotalSumpremium())
  128. .add(new BigDecimal(quTeamNum.getSyPremiumSum())).add(new BigDecimal(quTeamNum.getJqPremiumSum()))));
  129. teamNum.setSyPremiumSum(String.valueOf(new BigDecimal(teamNum.getSyPremiumSum()).add(new BigDecimal(quTeamNum.getSyPremiumSum()))));
  130. teamNum.setJqPremiumSum(String.valueOf(new BigDecimal(teamNum.getJqPremiumSum()).add(new BigDecimal(quTeamNum.getJqPremiumSum()))));
  131. teamNum.setQuoteNum(String.valueOf(new BigDecimal(teamNum.getQuoteNum()).add(new BigDecimal(quTeamNum.getCount()))));
  132. teamNum.setHasInsuredNum(String.valueOf(new BigDecimal(teamNum.getHasInsuredNum()).add(new BigDecimal(quTeamNum.getCount()))));
  133. }
  134. if (quTeamNum.getOrderStatus().equals("2")) {
  135. teamNum.setSubmitNum(String.valueOf(new BigDecimal(teamNum.getSubmitNum()).add(new BigDecimal(quTeamNum.getCount()))));
  136. teamNum.setQuoteNum(String.valueOf(new BigDecimal(teamNum.getQuoteNum()).add(new BigDecimal(quTeamNum.getCount()))));
  137. }
  138. if (quTeamNum.getOrderStatus().equals("1")) {
  139. teamNum.setQuoteNum(String.valueOf(new BigDecimal(teamNum.getQuoteNum()).add(new BigDecimal(quTeamNum.getCount()))));
  140. }
  141. }
  142. });
  143. }
  144. if (flag == 1) {
  145. teamNum.setDeptId(v.get(0).getDeptId());
  146. teamNum.setDeptName(v.get(0).getDeptName());
  147. } else if (flag == 2) {
  148. teamNum.setUserId(v.get(0).getUserId());
  149. teamNum.setUserName(v.get(0).getUserName());
  150. }
  151. quTeamNums.add(teamNum);
  152. });
  153. List<QuTeamNum> collect1 = quTeamNums.stream().skip((quTeamNumDto.getPageNo() - 1) * quTeamNumDto.getPageSize()).limit(quTeamNumDto.getPageSize()).
  154. collect(Collectors.toList());
  155. IPage<QuTeamNum> page = new Page<>(quTeamNumDto.getPageNo(), quTeamNumDto.getPageSize());
  156. page.setRecords(collect1);
  157. page.setTotal(quTeamNums.size());
  158. return page;
  159. }
  160. @Override
  161. public SysUser findByUsername(String username) {
  162. SysUser sysUser = null;
  163. if (StringUtils.isNotEmpty(username)) {
  164. sysUser = getById(username);
  165. }
  166. return sysUser;
  167. }
  168. @Override
  169. public SysUser findByPhone(String phone) {
  170. SysUser sysUser = null;
  171. LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
  172. lqw.eq(StringUtils.isNotEmpty(phone), SysUser::getMobile, phone);
  173. List<SysUser> lst = list(lqw);
  174. if (lst.size() > 0) {
  175. sysUser = lst.get(0);
  176. }
  177. return sysUser;
  178. }
  179. @Override
  180. public Set<String> findPermissions(SysUser sysUser) {
  181. Set<String> perms = new HashSet<>();
  182. String sql = "";
  183. List<String> lsPerms = null;
  184. if (sysUser.getId().equalsIgnoreCase("admin")) {
  185. LambdaQueryWrapper<SysMenu> lqw = new LambdaQueryWrapper<>();
  186. lqw.isNotNull(SysMenu::getPerms);
  187. lqw.select(SysMenu::getPerms);
  188. lsPerms = sysMenuService.listObjs(lqw, id -> id.toString());
  189. } else {
  190. List<SysMenu> sysMenuList = sysRoleMenuService.gainMenuIds(sysUser.getId());
  191. lsPerms =
  192. sysMenuList.stream().filter(a -> StringUtils.isNotEmpty(a.getPerms())).map(SysMenu::getPerms).collect(Collectors.toList());
  193. }
  194. if (lsPerms != null && lsPerms.size() > 0) {
  195. for (String perm : lsPerms) {
  196. if (!StringUtils.isNullOrEmpty(perm)) {
  197. perms.add(perm);
  198. }
  199. }
  200. }
  201. return perms;
  202. }
  203. // @Override
  204. // public Set<String> findPermissions(SysUser sysUser) {
  205. // Set<String> perms = new HashSet<>();
  206. // String sql = "";
  207. // JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
  208. // List<String> lsPerms = null;
  209. //
  210. // if (sysUser.getId().equalsIgnoreCase("admin")) {
  211. // sql = "SELECT perms FROM sys_menu WHERE perms IS NOT NULL AND perms <> ''";
  212. //
  213. // lsPerms = jdbcTemplate.queryForList(sql, String.class);
  214. // } else {
  215. // sql = "SELECT perms FROM sys_menu sm WHERE sm.id IN ( " +
  216. // "SELECT menu_id FROM sys_role_menu srm, sys_user_role sur ,sys_user su " +
  217. // "WHERE srm.role_id=sur.role_id " +
  218. // "AND sur.user_id=su.id AND su.id=?) " +
  219. // "AND perms IS NOT NULL AND perms <> ''"
  220. // ;
  221. //
  222. // lsPerms = jdbcTemplate.queryForList(sql, String.class, sysUser.getId());
  223. // }
  224. //
  225. // if (lsPerms != null && lsPerms.size() > 0) {
  226. // for (String perm : lsPerms) {
  227. // if (!StringUtils.isNullOrEmpty(perm)) {
  228. // perms.add(perm);
  229. // }
  230. // }
  231. // }
  232. //
  233. // return perms;
  234. // }
  235. @Override
  236. public List<SysUserRole> findUserRoles(Long userId) {
  237. return null;
  238. }
  239. @Override
  240. public PageResult selectPagingCustom(int pageNumber, int pageSize, String name, String deptCode) {
  241. return null;
  242. }
  243. /**
  244. * 获取用户列表
  245. *
  246. * @param page 分页信息
  247. * @param sysUser 查询条件
  248. * @param containsSubDept 是否汉堡下级机构
  249. * @return
  250. */
  251. @Override
  252. public IPage<SysUser> selectUserPage(Page page, SysUser sysUser, String containsSubDept) {
  253. return baseMapper.selectUserPage(page, sysUser, containsSubDept);
  254. }
  255. @Override
  256. public void findSysUseresmUserInternalVORoles(PageResult pageResult) {
  257. }
  258. @Override
  259. public Integer deleteFlag(List<SysUser> lsSysUser) {
  260. List<String> ids = lsSysUser.stream().map(SysUser::getId).collect(Collectors.toList());
  261. LambdaUpdateWrapper<SysUser> lqw = new LambdaUpdateWrapper<>();
  262. lqw.set(SysUser::getStatus, "0");
  263. lqw.in(SysUser::getId, ids);
  264. return update(lqw) == true ? ids.size() : 0;
  265. }
  266. @Override
  267. public SysUser findById(String id) {
  268. if (!StringUtils.isNullOrEmpty(id)) {
  269. return getById(id);
  270. }
  271. return null;
  272. }
  273. @Override
  274. public SysUser findByUserId(String userId) {
  275. SysUser sysUser = null;
  276. if (!StringUtils.isNullOrEmpty(userId)) {
  277. sysUser = getById(userId);
  278. }
  279. return sysUser;
  280. }
  281. @Override
  282. public SysUserVO gainUserInternal(String userId) {
  283. return super.baseMapper.gainInternalUser(userId);
  284. }
  285. @Override
  286. public SysUserVO gainUserInternalByDeptId(String deptId) {
  287. return super.baseMapper.gainInternalUserByDeptId(deptId);
  288. }
  289. @Override
  290. public List<SysUserVO> findByReferrerId(String deptId) {
  291. return super.baseMapper.findByReferrerId(deptId);
  292. }
  293. @Override
  294. public PageVo gainUserPage(PageDto pageDto) {
  295. PageVo<SysUserBaseVO> pageVo = new PageVo();
  296. Page page = new Page(pageDto.getPageNum(), pageDto.getPageSize());
  297. pageVo.setPageNum(pageDto.getPageNum());
  298. pageVo.setPageSize(pageDto.getPageSize());
  299. SysUserDto sysUserVO = JSONObject.parseObject(JSONObject.toJSONString(pageDto.getDto()), SysUserDto.class);
  300. Page<SysUserBaseVO> sysUserBaseVOIPage = super.baseMapper.gainUserBaseInfo(page, sysUserVO);
  301. pageVo.setContent(sysUserBaseVOIPage.getRecords());
  302. pageVo.setTotalPages((int) sysUserBaseVOIPage.getPages());
  303. pageVo.setTotalSize((int) sysUserBaseVOIPage.getTotal());
  304. return pageVo;
  305. }
  306. @Override
  307. public String gainNextUserId(String deptId) {
  308. int noCount = 3;//顺序号是几位的
  309. String nextPK;
  310. QueryWrapper<SysUser> lq = new QueryWrapper<>();
  311. lq.select(" MAX(id) as id ");
  312. // lq.eq("dept_id", deptId);
  313. lq.likeRight("id", deptId);
  314. SysUser userMaxId = getOne(lq);
  315. String maxId = "";
  316. if (null != userMaxId) maxId = userMaxId.getId();
  317. if (StringUtils.isNullOrEmpty(maxId)) {
  318. nextPK = deptId + "001";
  319. } else {
  320. nextPK = IdGenerate.nextCode(maxId, noCount);
  321. }
  322. return nextPK;
  323. }
  324. @Override
  325. public SysUserInternalVO gainUserSynthesisInfo(String userId) {
  326. SysUserInternalVO vo = new SysUserInternalVO();
  327. SysUser sysUser = getById(userId);
  328. // EsmUserInternal sysUserInternal = esmUserInternalService.selectByPk(userId);
  329. String pDeptId = sysUser.getDeptId();
  330. if (pDeptId.indexOf("D") > 1) {
  331. pDeptId = sysUser.getDeptId().substring(0, pDeptId.indexOf("D"));
  332. }
  333. SysDept sysDept = sysDeptService.getById(pDeptId);
  334. vo.setSysUser(sysUser);
  335. vo.setSysDept(sysDept);
  336. // vo.setSysUserInternal(sysUserInternal);
  337. return vo;
  338. }
  339. @Override
  340. public String findMaxId(String deptId) {
  341. QueryWrapper<SysUser> qw = new QueryWrapper<>();
  342. qw.select("IFNULL(MAX(id),0) maxId");
  343. qw.eq("dept_id", deptId);
  344. Map<String, Object> m = getMap(qw);
  345. String maxId = m.get("maxId").toString();
  346. return maxId;
  347. }
  348. @Override
  349. public boolean check(String userId, Integer approvalStatus, String approvalOpinion) {
  350. SysUser user = getById(userId);
  351. // user.setApprovalStatus(approvalStatus);
  352. user.setApprovalOpinion(approvalOpinion);
  353. return updateById(user);
  354. }
  355. @Override
  356. public SysUserBaseVO selectUserById(String userId) {
  357. return sysUserMapper.selectUserById(userId);
  358. }
  359. @Override
  360. @Transactional
  361. public boolean saveUser(SysUser sysUser) {
  362. // 判断用户id是否存在
  363. if (StringUtils.isNullOrEmpty(sysUser.getId())) {
  364. sysUser.setId(gainNextUserId(sysUser.getDeptId()));
  365. sysUser.setMobile(sysUser.getMobile());
  366. }
  367. // 角色信息
  368. SysUserRole sur = new SysUserRole();
  369. sur.setUserId(sysUser.getId());
  370. sur.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
  371. // 删除角色
  372. sysUserRoleService.deleteByUserId(sysUser.getId());
  373. // 删除推荐人
  374. esmUserReferrerService.deldeleteByReferrerId(sysUser.getId());
  375. // 构建推荐人信息
  376. EsmUserReferrer eur = new EsmUserReferrer();
  377. eur.setId(sysUser.getId());
  378. eur.setReferrerId(sysUser.getReferrerId());//推荐人
  379. eur.setReferrerName(sysUser.getReferrerName());
  380. // 新增或跟新用户表
  381. save(sysUser);
  382. // 保存推荐人
  383. esmUserReferrerService.save(eur);
  384. // 保存角色
  385. sysUserRoleService.save(sur);
  386. return true;
  387. }
  388. @Override
  389. @Transactional
  390. public HttpResult saveUserInfo(SysUser2Vo sysUserVo) {
  391. SysUser sysUser = sysUserVo.getSysUser();
  392. // 手机号
  393. List<SysUser> mobileList = lambdaQuery().eq(SysUser::getMobile, sysUser.getMobile()).list();
  394. if (!mobileList.isEmpty()) {
  395. throw new SystemException("手机号已经注册请跟换手机号。");
  396. }
  397. // 身份证号
  398. List<SysUser> identityList = lambdaQuery().eq(SysUser::getIdentity, sysUser.getIdentity()).list();
  399. if (!identityList.isEmpty()) {
  400. throw new SystemException("身份证号已经注册请跟换身份证号。");
  401. }
  402. //处理密码
  403. if (StringUtils.isNotEmpty(sysUser.getPassword())) {
  404. String salt = PasswordUtils.getSalt();
  405. String pwd = PasswordUtils.encode(sysUser.getPassword(), salt);
  406. sysUser.setPassword(pwd);
  407. sysUser.setSalt(salt);
  408. } else {
  409. return HttpResult.error("密码不能为空");
  410. }
  411. if ("19".equals(sysUser.getRoleId())) {//19 出单员 校验机构和业务员机构是否一致
  412. return checkChuDanUser(sysUser);
  413. }
  414. String userId = gainNextUserId(sysUser.getDeptId());
  415. if (RoleConstants.R22.getCode().equals(sysUser.getRoleId())) {//22 后线人员
  416. if (!SysConstants.isAdministration(userId)) {
  417. throw new SystemException("后线人员只能公司部门中");
  418. }
  419. }
  420. sysUser.setId(userId);
  421. save(sysUser);
  422. //角色配置
  423. SysUserRole userRole = new SysUserRole();
  424. userRole.setUserId(sysUser.getId());
  425. userRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
  426. sysUserRoleService.save(userRole);
  427. if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
  428. //推荐人
  429. esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
  430. } else if ("20".equals(sysUser.getRoleId()) || "21".equals(sysUser.getRoleId())) {
  431. //如果是 团队长或代码人 并且没有推荐人 则默认推荐人为自己
  432. esmUserReferrerService.addReferrer(sysUser.getId(), userId);
  433. }
  434. // EsmUserReferrer eur = new EsmUserReferrer();
  435. // eur.setId(sysUser.getId());
  436. // eur.setReferrerName(sysUser.getReferrerName());
  437. // eur.setReferrerId(sysUser.getReferrerId());
  438. // eur.setLevel(1);
  439. //
  440. // esmUserReferrerService.save(eur);
  441. SysUserInfo userInfo = sysUserVo.getSysUserInfo();
  442. if (userInfo != null) {
  443. userInfo.setId(sysUser.getId());
  444. }
  445. // userInfo.setId(sysUser.getId());
  446. sysUserInfoService.save(userInfo);
  447. List<EsmUserImageVo> esmUserImageVo = sysUserVo.getEsmUserImageVo();
  448. List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, userId)).collect(Collectors.toList());
  449. esmUserImageService.saveBatch(esmUserImages);
  450. return HttpResult.ok("新增成功");
  451. }
  452. /**
  453. * 新增修改出单员
  454. *
  455. * @param sysUser
  456. * @return
  457. */
  458. HttpResult checkChuDanUser(SysUser sysUser) {
  459. if (StringUtils.isEmpty(sysUser.getReferrerId())) {
  460. return HttpResult.error("业务员工号不能为空");
  461. }
  462. //归属业务员和出单员部门必须一致
  463. SysUser user = getById(sysUser.getReferrerId());
  464. if (user == null || !user.getDeptId().equals(sysUser.getDeptId())) {
  465. return HttpResult.error("出单员机构必须和归属业务员机构一致");
  466. }
  467. sysUser.setOperatorCode(sysUser.getReferrerId());
  468. if (StringUtils.isEmpty(sysUser.getId())) {
  469. String userId = gainNextUserId(sysUser.getDeptId());
  470. sysUser.setId(userId);
  471. save(sysUser);
  472. //角色配置
  473. SysUserRole userRole = new SysUserRole();
  474. userRole.setUserId(sysUser.getId());
  475. userRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
  476. sysUserRoleService.save(userRole);
  477. } else {
  478. updateById(sysUser);
  479. }
  480. return HttpResult.ok("操作成功");
  481. }
  482. @Override
  483. @Transactional
  484. public HttpResult updateUserInfo(String userId, SysUser2Vo sysUserVo) {
  485. SysUser sysUser = sysUserVo.getSysUser();
  486. //修改用户不能修改密码
  487. if (StringUtils.isNotEmpty(sysUser.getPassword())) {
  488. String salt = PasswordUtils.getSalt();
  489. String pwd = PasswordUtils.encode(sysUser.getPassword(), salt);
  490. sysUser.setPassword(pwd);
  491. sysUser.setSalt(salt);
  492. } else {
  493. return HttpResult.error("密码不能为空");
  494. }
  495. //删除状态必须有离司时间
  496. if (StringUtils.isNotEmpty(sysUser.getStatus().toString())) {
  497. if (sysUser.getStatus() == 0 && sysUser.getLogoutTime() == null && !sysUser.getRoleId().equals("19")) {
  498. return HttpResult.error("删除状态,离职时间必填");
  499. }
  500. } else {
  501. return HttpResult.error("状态不能为空");
  502. }
  503. SysUser sysUser_org = findByUserId(sysUser.getId());
  504. sysUser.setPassword(sysUser_org.getPassword());
  505. sysUser.setSalt(sysUser_org.getSalt());
  506. if ("19".equals(sysUser.getRoleId())) {//19 出单员 校验机构和业务员机构是否一致
  507. return checkChuDanUser(sysUser);
  508. }
  509. updateById(sysUser);
  510. //角色配置
  511. SysUserRole sysUserRole = sysUserRoleService.selectByUserId(userId);
  512. sysUserRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
  513. sysUserRole.setLastUpdateBy(sysUser.getCreateBy());
  514. sysUserRole.setLastUpdateTime(new Date());
  515. sysUserRoleService.updateById(sysUserRole);
  516. if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
  517. //推荐人
  518. esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
  519. }
  520. //用户详情信息
  521. SysUserInfo sysUserInfo = sysUserVo.getSysUserInfo();
  522. sysUserInfo.setId(userId);
  523. if (null == sysUserInfo.getRemark()) sysUserInfo.setRemark("");
  524. sysUserInfoService.saveOrUpdate(sysUserInfo);
  525. // 影像资料
  526. LambdaQueryWrapper<EsmUserImage> wrapper = new LambdaQueryWrapper<>();
  527. wrapper.eq(EsmUserImage::getUserId, userId);
  528. esmUserImageService.remove(wrapper);
  529. List<EsmUserImageVo> esmUserImageVo = sysUserVo.getEsmUserImageVo();
  530. List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, userId)).collect(Collectors.toList());
  531. esmUserImageService.saveBatch(esmUserImages);
  532. return HttpResult.ok("修改成功");
  533. }
  534. @Override
  535. public List<SysUser> getAllUsers(String userId) {
  536. LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
  537. lqw.eq(SysUser::getStatus, "1");
  538. lqw.eq(StringUtils.isNotEmpty(userId), SysUser::getId, userId);
  539. List<SysUser> lst = list(lqw);
  540. return lst;
  541. }
  542. @Override
  543. public List<SysUser> findAllAgentRoleUser(String userId, String roleId) {
  544. return super.baseMapper.findAllAgentRoleUser(userId, roleId);
  545. }
  546. @Override
  547. public int getDeptLevel(SysUser2Vo sysUser2Vo) {
  548. //获取机构层级
  549. SysUser sysUser = sysUser2Vo.getSysUser();
  550. String deptId = sysUser.getDeptId();
  551. int level = 0;
  552. //1 2 3 4 5级 M 6级 D
  553. if (deptId.length() > 8) {
  554. String substring = deptId.substring(8);
  555. return substring.length() / 3 + 4;
  556. } else {
  557. level = deptId.length() / 2;
  558. }
  559. return level;
  560. }
  561. /**
  562. * 根据机构代码,查询所有人员
  563. * @param deptId
  564. * @return
  565. */
  566. @Override
  567. public List<SysUser> findUserList(String deptId) {
  568. LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
  569. lqw.eq(SysUser::getStatus, "1");
  570. lqw.eq(SysUser::getDeptId,deptId);
  571. List<SysUser> lst = list(lqw);
  572. return lst;
  573. }
  574. }