| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623 |
- package com.ydtech.modules.admin.service.impl;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.ydtech.core.page.HttpResult;
- import com.ydtech.core.page.PageRequest;
- import com.ydtech.core.page.PageResult;
- import com.ydtech.exception.SystemException;
- import com.ydtech.modules.admin.dao.SysUserMapper;
- import com.ydtech.modules.admin.model.*;
- import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
- import com.ydtech.modules.admin.model.dto.SysUserDto;
- import com.ydtech.modules.admin.model.vo.SysUser2Vo;
- import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
- import com.ydtech.modules.admin.model.vo.SysUserInternalVO;
- import com.ydtech.modules.admin.model.vo.SysUserVO;
- import com.ydtech.modules.admin.service.*;
- import com.ydtech.modules.base.controller.BaseController;
- import com.ydtech.modules.base.model.dto.PageDto;
- import com.ydtech.modules.base.model.vo.PageVo;
- import com.ydtech.modules.esm.model.EsmUserImage;
- import com.ydtech.modules.esm.model.EsmUserReferrer;
- import com.ydtech.modules.esm.model.vo.EsmUserImageVo;
- import com.ydtech.modules.esm.service.EsmUserImageService;
- import com.ydtech.modules.esm.service.EsmUserReferrerService;
- import com.ydtech.security.utils.PasswordUtils;
- import com.ydtech.utils.StringUtils;
- import com.ydtech.utils.idgen.IdGenerate;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.math.BigDecimal;
- import java.time.LocalDate;
- import java.time.temporal.TemporalAdjusters;
- import java.util.*;
- import java.util.stream.Collectors;
- import java.util.stream.Stream;
- @Service
- public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
- @Autowired
- private SysMenuService sysMenuService;
- @Autowired
- private SysRoleMenuService sysRoleMenuService;
- @Autowired
- private SysDeptService sysDeptService;
- @Autowired
- private SysUserMapper sysUserMapper;
- @Autowired
- private SysUserRoleService sysUserRoleService;
- @Autowired
- private EsmUserReferrerService esmUserReferrerService;
- @Autowired
- private SysUserInfoService sysUserInfoService;
- @Autowired
- private EsmUserImageService esmUserImageService;
- @Override
- public IPage<SysUserBaseVO> findUserList(PageDto<SysUserDto> pageDto) {
- PageVo<SysUserBaseVO> pageVo = new PageVo();
- Page page = new Page(pageDto.getPageNum(), pageDto.getPageSize());
- pageVo.setPageNum(pageDto.getPageNum());
- pageVo.setPageSize(pageDto.getPageSize());
- SysUserDto sysUserVO = JSONObject.parseObject(JSONObject.toJSONString(pageDto.getDto()), SysUserDto.class);
- if (sysUserVO.getAgentFlag() == null) {
- throw new SystemException("必传标识未传递");
- }
- return sysUserMapper.findUserList(page, sysUserVO);
- }
- @Override
- public IPage<QuTeamNum> quTeamNum(QuTeamNumDto quTeamNumDto) {
- //判断必传标识是否为空
- if (quTeamNumDto.getTeamOrUserFlag() != null) {
- //判断是要查询用户还是团队
- if ("1".equals(quTeamNumDto.getTeamOrUserFlag())) {
- PageRequest pageRequest = new PageRequest();
- pageRequest.setPageNum(quTeamNumDto.getPageNo());
- pageRequest.setPageSize(quTeamNumDto.getPageSize());
- Page page = PageRequest.buildPageRequest(pageRequest);
- if (quTeamNumDto.getCreateTimeStart() == null && quTeamNumDto.getCreateTimeEnd() == null) {
- LocalDate date = LocalDate.now();
- LocalDate firstDay = date.with(TemporalAdjusters.firstDayOfMonth()); // 获取当前月的第一天
- LocalDate lastDay = date.with(TemporalAdjusters.lastDayOfMonth()); // 获取当前月的最后一天
- quTeamNumDto.setCreateTimeStart(firstDay);
- quTeamNumDto.setCreateTimeEnd(lastDay);
- }
- return sysUserMapper.quTeamNum(page, quTeamNumDto);
- } else if ("2".equals(quTeamNumDto.getTeamOrUserFlag())) {
- PageRequest pageRequest = new PageRequest();
- pageRequest.setPageNum(quTeamNumDto.getPageNo());
- pageRequest.setPageSize(quTeamNumDto.getPageSize());
- Page page = PageRequest.buildPageRequest(pageRequest);
- if (quTeamNumDto.getCreateTimeStart() == null && quTeamNumDto.getCreateTimeEnd() == null) {
- LocalDate date = LocalDate.now();
- LocalDate firstDay = date.with(TemporalAdjusters.firstDayOfMonth()); // 获取当前月的第一天
- LocalDate lastDay = date.with(TemporalAdjusters.lastDayOfMonth()); // 获取当前月的最后一天
- quTeamNumDto.setCreateTimeStart(firstDay);
- quTeamNumDto.setCreateTimeEnd(lastDay);
- }
- return sysUserMapper.quUserNum(page, quTeamNumDto);
- }
- throw new SystemException("参数错误");
- }
- throw new SystemException("必传参数未传");
- }
- @Override
- public SysUser findByUsername(String username) {
- SysUser sysUser = null;
- if (StringUtils.isNotEmpty(username)) {
- sysUser = getById(username);
- }
- return sysUser;
- }
- @Override
- public SysUser findByPhone(String phone) {
- SysUser sysUser = null;
- LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
- lqw.eq(StringUtils.isNotEmpty(phone), SysUser::getMobile, phone);
- List<SysUser> lst = list(lqw);
- if (lst.size() > 0) {
- sysUser = lst.get(0);
- }
- return sysUser;
- }
- @Override
- public Set<String> findPermissions(SysUser sysUser) {
- Set<String> perms = new HashSet<>();
- String sql = "";
- List<String> lsPerms = null;
- if (sysUser.getId().equalsIgnoreCase("admin")) {
- LambdaQueryWrapper<SysMenu> lqw = new LambdaQueryWrapper<>();
- lqw.isNotNull(SysMenu::getPerms);
- lqw.select(SysMenu::getPerms);
- lsPerms = sysMenuService.listObjs(lqw, id -> id.toString());
- } else {
- List<SysMenu> sysMenuList = sysRoleMenuService.gainMenuIds(sysUser.getId());
- lsPerms =
- sysMenuList.stream().filter(a -> StringUtils.isNotEmpty(a.getPerms())).map(SysMenu::getPerms).collect(Collectors.toList());
- }
- if (lsPerms != null && lsPerms.size() > 0) {
- for (String perm : lsPerms) {
- if (!StringUtils.isNullOrEmpty(perm)) {
- perms.add(perm);
- }
- }
- }
- return perms;
- }
- // @Override
- // public Set<String> findPermissions(SysUser sysUser) {
- // Set<String> perms = new HashSet<>();
- // String sql = "";
- // JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
- // List<String> lsPerms = null;
- //
- // if (sysUser.getId().equalsIgnoreCase("admin")) {
- // sql = "SELECT perms FROM sys_menu WHERE perms IS NOT NULL AND perms <> ''";
- //
- // lsPerms = jdbcTemplate.queryForList(sql, String.class);
- // } else {
- // sql = "SELECT perms FROM sys_menu sm WHERE sm.id IN ( " +
- // "SELECT menu_id FROM sys_role_menu srm, sys_user_role sur ,sys_user su " +
- // "WHERE srm.role_id=sur.role_id " +
- // "AND sur.user_id=su.id AND su.id=?) " +
- // "AND perms IS NOT NULL AND perms <> ''"
- // ;
- //
- // lsPerms = jdbcTemplate.queryForList(sql, String.class, sysUser.getId());
- // }
- //
- // if (lsPerms != null && lsPerms.size() > 0) {
- // for (String perm : lsPerms) {
- // if (!StringUtils.isNullOrEmpty(perm)) {
- // perms.add(perm);
- // }
- // }
- // }
- //
- // return perms;
- // }
- @Override
- public List<SysUserRole> findUserRoles(Long userId) {
- return null;
- }
- @Override
- public PageResult selectPagingCustom(int pageNumber, int pageSize, String name, String deptCode) {
- return null;
- }
- /**
- * 获取用户列表
- *
- * @param page 分页信息
- * @param sysUser 查询条件
- * @param containsSubDept 是否汉堡下级机构
- * @return
- */
- @Override
- public IPage<SysUser> selectUserPage(Page page, SysUser sysUser, String containsSubDept) {
- return baseMapper.selectUserPage(page, sysUser, containsSubDept);
- }
- @Override
- public void findSysUseresmUserInternalVORoles(PageResult pageResult) {
- }
- @Override
- public Integer deleteFlag(List<SysUser> lsSysUser) {
- List<String> ids = lsSysUser.stream().map(SysUser::getId).collect(Collectors.toList());
- LambdaUpdateWrapper<SysUser> lqw = new LambdaUpdateWrapper<>();
- lqw.set(SysUser::getStatus, "0");
- lqw.in(SysUser::getId, ids);
- return update(lqw) == true ? ids.size() : 0;
- }
- @Override
- public SysUser findById(String id) {
- if (!StringUtils.isNullOrEmpty(id)) {
- return getById(id);
- }
- return null;
- }
- @Override
- public SysUser findByUserId(String userId) {
- SysUser sysUser = null;
- if (!StringUtils.isNullOrEmpty(userId)) {
- sysUser = getById(userId);
- }
- return sysUser;
- }
- @Override
- public SysUserVO gainUserInternal(String userId) {
- return super.baseMapper.gainInternalUser(userId);
- }
- @Override
- public SysUserVO gainUserInternalByDeptId(String deptId) {
- return super.baseMapper.gainInternalUserByDeptId(deptId);
- }
- @Override
- public List<SysUserVO> findByReferrerId(String deptId) {
- return super.baseMapper.findByReferrerId(deptId);
- }
- @Override
- public PageVo gainUserPage(PageDto pageDto) {
- PageVo<SysUserBaseVO> pageVo = new PageVo();
- Page page = new Page(pageDto.getPageNum(), pageDto.getPageSize());
- pageVo.setPageNum(pageDto.getPageNum());
- pageVo.setPageSize(pageDto.getPageSize());
- SysUserDto sysUserVO = JSONObject.parseObject(JSONObject.toJSONString(pageDto.getDto()), SysUserDto.class);
- Page<SysUserBaseVO> sysUserBaseVOIPage = super.baseMapper.gainUserBaseInfo(page, sysUserVO);
- pageVo.setContent(sysUserBaseVOIPage.getRecords());
- pageVo.setTotalPages((int) sysUserBaseVOIPage.getPages());
- pageVo.setTotalSize((int) sysUserBaseVOIPage.getTotal());
- return pageVo;
- }
- @Override
- public String gainNextUserId(String deptId) {
- int noCount = 3;//顺序号是几位的
- String nextPK;
- QueryWrapper<SysUser> lq = new QueryWrapper<>();
- lq.select(" MAX(id) as id ");
- // lq.eq("dept_id", deptId);
- lq.likeRight("id", deptId);
- SysUser userMaxId = getOne(lq);
- String maxId = "";
- if (null != userMaxId) maxId = userMaxId.getId();
- if (StringUtils.isNullOrEmpty(maxId)) {
- nextPK = deptId + "001";
- } else {
- nextPK = IdGenerate.nextCode(maxId, noCount);
- }
- return nextPK;
- }
- @Override
- public SysUserInternalVO gainUserSynthesisInfo(String userId) {
- SysUserInternalVO vo = new SysUserInternalVO();
- SysUser sysUser = getById(userId);
- // EsmUserInternal sysUserInternal = esmUserInternalService.selectByPk(userId);
- String pDeptId = sysUser.getDeptId();
- if (pDeptId.indexOf("D") > 1) {
- pDeptId = sysUser.getDeptId().substring(0, pDeptId.indexOf("D"));
- }
- SysDept sysDept = sysDeptService.getById(pDeptId);
- vo.setSysUser(sysUser);
- vo.setSysDept(sysDept);
- // vo.setSysUserInternal(sysUserInternal);
- return vo;
- }
- @Override
- public String findMaxId(String deptId) {
- QueryWrapper<SysUser> qw = new QueryWrapper<>();
- qw.select("IFNULL(MAX(id),0) maxId");
- qw.eq("dept_id", deptId);
- Map<String, Object> m = getMap(qw);
- String maxId = m.get("maxId").toString();
- return maxId;
- }
- @Override
- public boolean check(String userId, Integer approvalStatus, String approvalOpinion) {
- SysUser user = getById(userId);
- // user.setApprovalStatus(approvalStatus);
- user.setApprovalOpinion(approvalOpinion);
- return updateById(user);
- }
- @Override
- public SysUserBaseVO selectUserById(String userId) {
- return sysUserMapper.selectUserById(userId);
- }
- @Override
- @Transactional
- public boolean saveUser(SysUser sysUser) {
- // 判断用户id是否存在
- if (StringUtils.isNullOrEmpty(sysUser.getId())) {
- sysUser.setId(gainNextUserId(sysUser.getDeptId()));
- sysUser.setMobile(sysUser.getMobile());
- }
- // 角色信息
- SysUserRole sur = new SysUserRole();
- sur.setUserId(sysUser.getId());
- sur.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
- // 删除角色
- sysUserRoleService.deleteByUserId(sysUser.getId());
- // 删除推荐人
- esmUserReferrerService.deldeleteByReferrerId(sysUser.getId());
- // 构建推荐人信息
- EsmUserReferrer eur = new EsmUserReferrer();
- eur.setId(sysUser.getId());
- eur.setReferrerId(sysUser.getReferrerId());//推荐人
- eur.setReferrerName(sysUser.getReferrerName());
- // 新增或跟新用户表
- save(sysUser);
- // 保存推荐人
- esmUserReferrerService.save(eur);
- // 保存角色
- sysUserRoleService.save(sur);
- return true;
- }
- @Override
- @Transactional
- public HttpResult saveUserInfo(SysUser2Vo sysUserVo) {
- SysUser sysUser = sysUserVo.getSysUser();
- // 手机号
- List<SysUser> mobileList = lambdaQuery().eq(SysUser::getMobile, sysUser.getMobile()).list();
- if (!mobileList.isEmpty()) {
- throw new SystemException("手机号已经注册请跟换手机号。");
- }
- // 身份证号
- List<SysUser> identityList = lambdaQuery().eq(SysUser::getIdentity, sysUser.getIdentity()).list();
- if (!identityList.isEmpty()) {
- throw new SystemException("身份证号已经注册请跟换身份证号。");
- }
- //处理密码
- if (StringUtils.isNotEmpty(sysUser.getPassword())) {
- String salt = PasswordUtils.getSalt();
- String pwd = PasswordUtils.encode(sysUser.getPassword(), salt);
- sysUser.setPassword(pwd);
- sysUser.setSalt(salt);
- } else {
- return HttpResult.error("密码不能为空");
- }
- if ("19".equals(sysUser.getRoleId())) {//19 出单员 校验机构和业务员机构是否一致
- return checkChuDanUser(sysUser);
- }
- String userId = gainNextUserId(sysUser.getDeptId());
- sysUser.setId(userId);
- save(sysUser);
- //角色配置
- SysUserRole userRole = new SysUserRole();
- userRole.setUserId(sysUser.getId());
- userRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
- sysUserRoleService.save(userRole);
- if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
- //推荐人
- esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
- }
- // EsmUserReferrer eur = new EsmUserReferrer();
- // eur.setId(sysUser.getId());
- // eur.setReferrerName(sysUser.getReferrerName());
- // eur.setReferrerId(sysUser.getReferrerId());
- // eur.setLevel(1);
- //
- // esmUserReferrerService.save(eur);
- SysUserInfo userInfo = sysUserVo.getSysUserInfo();
- if (userInfo != null) {
- userInfo.setId(sysUser.getId());
- }
- // userInfo.setId(sysUser.getId());
- sysUserInfoService.save(userInfo);
- List<EsmUserImageVo> esmUserImageVo = sysUserVo.getEsmUserImageVo();
- List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, userId)).collect(Collectors.toList());
- esmUserImageService.saveBatch(esmUserImages);
- return HttpResult.ok("新增成功");
- }
- /**
- * 新增修改出单员
- *
- * @param sysUser
- * @return
- */
- HttpResult checkChuDanUser(SysUser sysUser) {
- if (StringUtils.isEmpty(sysUser.getReferrerId())) {
- return HttpResult.error("业务员工号不能为空");
- }
- //归属业务员和出单员部门必须一致
- SysUser user = getById(sysUser.getReferrerId());
- if (user == null || !user.getDeptId().equals(sysUser.getDeptId())) {
- return HttpResult.error("出单员机构必须和归属业务员机构一致");
- }
- sysUser.setOperatorCode(sysUser.getReferrerId());
- if (StringUtils.isEmpty(sysUser.getId())) {
- String userId = gainNextUserId(sysUser.getDeptId());
- sysUser.setId(userId);
- save(sysUser);
- //角色配置
- SysUserRole userRole = new SysUserRole();
- userRole.setUserId(sysUser.getId());
- userRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
- sysUserRoleService.save(userRole);
- } else {
- updateById(sysUser);
- }
- return HttpResult.ok("操作成功");
- }
- @Override
- @Transactional
- public HttpResult updateUserInfo(String userId, SysUser2Vo sysUserVo) {
- SysUser sysUser = sysUserVo.getSysUser();
- //修改用户不能修改密码
- /*if (StringUtils.isNotEmpty(sysUser.getPassword())) {
- String salt = PasswordUtils.getSalt();
- String pwd = PasswordUtils.encode(sysUser.getPassword(), salt);
- sysUser.setPassword(pwd);
- sysUser.setSalt(salt);
- } else {
- return HttpResult.error("密码不能为空");
- }*/
- //删除状态必须有离司时间
- if (StringUtils.isNotEmpty(sysUser.getStatus().toString())) {
- if (sysUser.getStatus() == 0 && sysUser.getLogoutTime() == null && !sysUser.getRoleId().equals("19")) {
- return HttpResult.error("删除状态,离职时间必填");
- }
- } else {
- return HttpResult.error("状态不能为空");
- }
- SysUser sysUser_org = findByUserId(sysUser.getId());
- sysUser.setPassword(sysUser_org.getPassword());
- sysUser.setSalt(sysUser_org.getSalt());
- if ("19".equals(sysUser.getRoleId())) {//19 出单员 校验机构和业务员机构是否一致
- return checkChuDanUser(sysUser);
- }
- updateById(sysUser);
- //角色配置
- SysUserRole sysUserRole = sysUserRoleService.selectByUserId(userId);
- sysUserRole.setRoleId(StringUtils.toLong(sysUser.getRoleId()));
- sysUserRole.setLastUpdateBy(sysUser.getCreateBy());
- sysUserRole.setLastUpdateTime(new Date());
- sysUserRoleService.updateById(sysUserRole);
- if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
- //推荐人
- esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
- }
- // EsmUserReferrer referrer = esmUserReferrerService.getById(userId);
- // EsmUserReferrer eur = new EsmUserReferrer();
- // eur.setId(userId);
- // eur.setReferrerName(sysUser.getReferrerName());
- // eur.setReferrerId(sysUser.getReferrerId());
- // if (null != referrer) {
- // eur.setLevel(referrer.getLevel() + 1);
- // } else {
- // eur.setLevel(1);
- // }
- // esmUserReferrerService.updateById(eur);
- //用户详情信息
- SysUserInfo sysUserInfo = sysUserVo.getSysUserInfo();
- sysUserInfo.setId(userId);
- if (null == sysUserInfo.getRemark()) sysUserInfo.setRemark("");
- sysUserInfoService.saveOrUpdate(sysUserInfo);
- // 影像资料
- LambdaQueryWrapper<EsmUserImage> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(EsmUserImage::getUserId, userId);
- esmUserImageService.remove(wrapper);
- List<EsmUserImageVo> esmUserImageVo = sysUserVo.getEsmUserImageVo();
- List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, userId)).collect(Collectors.toList());
- esmUserImageService.saveBatch(esmUserImages);
- return HttpResult.ok("修改成功");
- }
- @Override
- public List<SysUser> getAllUsers(String userId) {
- LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
- lqw.eq(SysUser::getStatus, "1");
- lqw.eq(StringUtils.isNotEmpty(userId), SysUser::getId, userId);
- List<SysUser> lst = list(lqw);
- return lst;
- }
- @Override
- public List<SysUser> findAllAgentRoleUser(String userId, String roleId) {
- return super.baseMapper.findAllAgentRoleUser(userId, roleId);
- }
- @Override
- public int getDeptLevel(SysUser2Vo sysUser2Vo) {
- //获取机构层级
- SysUser sysUser = sysUser2Vo.getSysUser();
- String deptId = sysUser.getDeptId();
- int level = 0;
- //1 2 3 4 5级 M 6级 D
- if (deptId.length() > 8) {
- String substring = deptId.substring(8);
- return substring.length() / 3 + 4;
- } else {
- level = deptId.length() / 2;
- }
- return level;
- }
- }
|