From c93e76c57a98e35abbf62d2f514d9ba51efd3243 Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期一, 21 八月 2023 19:03:55 +0800 Subject: [PATCH] bug --- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java | 307 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 306 insertions(+), 1 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java index e972d6b..fd20568 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java @@ -1,14 +1,37 @@ package com.ruoyi.system.service.impl.staff; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.utils.uuid.IdUtils; +import com.ruoyi.common.redis.service.RedisService; +import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.system.api.constant.AppErrorConstant; +import com.ruoyi.system.api.constant.SecurityConstant; +import com.ruoyi.system.api.domain.dto.MerEditUserDto; +import com.ruoyi.system.api.domain.dto.MgtBaseGetDto; +import com.ruoyi.system.api.domain.dto.MgtShopStaffEditDto; +import com.ruoyi.system.api.domain.poji.sys.SysUser; +import com.ruoyi.system.api.service.RemoteShopService; +import com.ruoyi.system.domain.dto.MgtStaffEditDto; +import com.ruoyi.system.domain.dto.MgtStaffPageDto; +import com.ruoyi.system.domain.dto.MgtSysStaffImportDto; import com.ruoyi.system.domain.pojo.staff.SysStaff; import com.ruoyi.system.domain.vo.MgtDeptStaffListVo; +import com.ruoyi.system.domain.vo.MgtStaffPageVo; import com.ruoyi.system.mapper.staff.SysStaffMapper; import com.ruoyi.system.service.staff.SysStaffService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.system.service.sys.ISysUserService; +import com.ruoyi.system.util.QiYeUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Date; import java.util.List; +import java.util.concurrent.TimeUnit; /** * <p> @@ -24,6 +47,16 @@ @Resource private SysStaffMapper sysStaffMapper; + @Resource + private ISysUserService sysUserService; + + @Resource + private RedisService redisService; + + @Resource + private RemoteShopService remoteShopService; + + /** * @description 获取部门员工列表 * @author jqs @@ -35,4 +68,276 @@ public List<MgtDeptStaffListVo> listMgtDeptStaff(){ return sysStaffMapper.listMgtDeptStaff(); } + + /** + * @description 通过权限获取部门员工列表 + * @author jqs + * @date 2023/6/21 10:24 + * @param userId + * @return List<MgtDeptStaffListVo> + */ + @Override + public List<MgtDeptStaffListVo>listMgtDeptStaffByPermission(Long userId){ + SysUser sysUser = sysUserService.selectUserById(userId); + String dataScope = sysUser.getDataScope(); + List<MgtDeptStaffListVo> deptStaffListVoList; + if(dataScope!=null&&dataScope.equals("4")){ + deptStaffListVoList = sysStaffMapper.listMgtDeptStaffByDept(sysUser.getDeptId(),null); + }else if(dataScope!=null&&dataScope.equals("5")){ + deptStaffListVoList = sysStaffMapper.listMgtDeptStaffByDept(sysUser.getDeptId(),sysUser.getUserId()); + }else{ + deptStaffListVoList = sysStaffMapper.listMgtDeptStaff(); + } + return deptStaffListVoList; + } + + /** + * @description getBYUserId + * @param userId + * @return SysStaff + * @author jqs34 + * @date 2023/6/18 21:01 + */ + @Override + public SysStaff getByUserId(Long userId){ + LambdaQueryWrapper<SysStaff> queryWrapper = new LambdaQueryWrapper(); + queryWrapper.eq(SysStaff::getDelFlag,0); + queryWrapper.eq(SysStaff::getUserId,userId); + return this.getOne(queryWrapper, false); + } + + + /** + * @description mgtStaffEdit + * @param mgtStaffEditDto + * @return void + * @author jqs34 + * @date 2023/6/18 20:59 + */ + @Override + public void mgtStaffEdit(MgtStaffEditDto mgtStaffEditDto){ + SysStaff sysStaff; + SysUser sysUser; + LambdaQueryWrapper<SysStaff> queryWrapper = new LambdaQueryWrapper(); + queryWrapper.eq(SysStaff::getDelFlag,0); + queryWrapper.eq(SysStaff::getStaffMobile,mgtStaffEditDto.getStaffMobile()); + SysStaff sysStaffSame = this.getOne(queryWrapper, false); + if(StringUtils.isBlank(mgtStaffEditDto.getStaffAvatar())){ + mgtStaffEditDto.setStaffAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); + } + if(mgtStaffEditDto.getSysUserId()!=null){ + if(sysStaffSame!=null&&!sysStaffSame.getUserId().equals(mgtStaffEditDto.getSysUserId())){ + throw new ServiceException(AppErrorConstant.STAFF_MOBILE_DOUBLE); + } + sysStaff = this.getByUserId(mgtStaffEditDto.getSysUserId()); + sysUser = sysUserService.selectUserById(mgtStaffEditDto.getSysUserId()); + sysUser.setUserName(mgtStaffEditDto.getStaffMobile()); + sysUser.setPhonenumber(mgtStaffEditDto.getStaffMobile()); + sysUser.setNickName(mgtStaffEditDto.getStaffName()); + sysUser.setAvatar(mgtStaffEditDto.getStaffAvatar()); + sysUser.setEmail(mgtStaffEditDto.getStaffEmail()); + sysUserService.updateOnlyUser(sysUser); + }else{ + if(sysStaffSame!=null){ + throw new ServiceException(AppErrorConstant.STAFF_MOBILE_DOUBLE); + } + sysStaff = new SysStaff(); + String staffId = IdUtils.simpleUUID(); + sysStaff.setStaffId(staffId); + sysStaff.setDelFlag(0); + sysUser = new SysUser(); + sysUser.setDelFlag("0"); + sysUser.setUserType("00"); + sysUser.setUserName(mgtStaffEditDto.getStaffMobile()); + sysUser.setPhonenumber(mgtStaffEditDto.getStaffMobile()); + sysUser.setNickName(mgtStaffEditDto.getStaffName()); + sysUser.setAvatar(mgtStaffEditDto.getStaffAvatar()); + sysUser.setEmail(mgtStaffEditDto.getStaffEmail()); + String password = "123456"; + sysUser.setPassword(SecurityUtils.encryptPassword(password)); + sysUser.setDeptId(mgtStaffEditDto.getDeptId()); + sysUser = sysUserService.registerUser(sysUser); + sysStaff.setUserId(sysUser.getUserId()); + } + sysStaff.setStaffName(mgtStaffEditDto.getStaffName()); + sysStaff.setStaffMobile(mgtStaffEditDto.getStaffMobile()); + sysStaff.setStaffEmail(mgtStaffEditDto.getStaffEmail()); + sysStaff.setStaffPost(mgtStaffEditDto.getStaffPost()); + sysStaff.setStaffAvatar(mgtStaffEditDto.getStaffAvatar()); + sysStaff.setHeadFlag(mgtStaffEditDto.getHeadFlag()); + this.saveOrUpdate(sysStaff); + MgtShopStaffEditDto mgtShopStaffEditDto = new MgtShopStaffEditDto(); + mgtShopStaffEditDto.setUserId(sysStaff.getUserId()); + mgtShopStaffEditDto.setStaffName(sysStaff.getStaffName()); + mgtShopStaffEditDto.setStaffMobile(sysStaff.getStaffMobile()); + mgtShopStaffEditDto.setStaffAvatar(sysStaff.getStaffAvatar()); + remoteShopService.editMgtShopStaff(mgtShopStaffEditDto); + } + + /** + * @description mgtDeleteStaff + * @param mgtBaseGetDto + * @return void + * @author jqs34 + * @date 2023/6/18 22:00 + */ + @Override + public void mgtDeleteStaff(MgtBaseGetDto mgtBaseGetDto){ + Long userId = Long.valueOf(mgtBaseGetDto.getId()); + SysStaff sysStaff = this.getByUserId(userId); + sysStaff.setDelFlag(1); + sysStaff.setStaffMobile(sysStaff.getStaffMobile()+":已删除"); + this.saveOrUpdate(sysStaff); + sysUserService.deleteUserById(userId); + } + + /** + * @description + * @author jqs + * @date 2023/6/25 17:52 + * @param page + * @param mgtStaffPageDto + * @return List<MgtStaffPageVo> + */ + @Override + public List<MgtStaffPageVo> pageMgtStaff(Page page, MgtStaffPageDto mgtStaffPageDto){ + return sysStaffMapper.pageMgtStaff(page, mgtStaffPageDto); + } + + /** + * @description + * @author jqs + * @date 2023/7/14 9:52 + * @param mobile + * @return SysStaff + */ + @Override + public SysStaff getByMobile(String mobile){ + LambdaQueryWrapper<SysStaff> queryWrapper = new LambdaQueryWrapper(); + queryWrapper.eq(SysStaff::getDelFlag,0); + queryWrapper.eq(SysStaff::getStaffMobile,mobile); + return this.getOne(queryWrapper,false); + } + + + + + + /** + * @description 获取企业微信token + * @author jqs + * @date 2023/7/18 19:35 + * @param + * @return String + */ + private String getQYToken(){ + String accessToken = redisService.getCacheObject(SecurityConstant.QY_TOKEN); + if(StringUtils.isBlank(accessToken)){ + try { + accessToken = QiYeUtils.getAccessTokenByQY(); + JSONObject jsonAccessToken = JSONObject.parseObject(accessToken); + String errcode = jsonAccessToken.getString("errcode"); + String errmsg = jsonAccessToken.getString("errmsg"); + if(errcode.equals("0")){ + accessToken = jsonAccessToken.getString("access_token"); + Long expiresIn = jsonAccessToken.getLong("expires_in"); + expiresIn = expiresIn -100; + redisService.setCacheObject(SecurityConstant.QY_TOKEN,accessToken,expiresIn, TimeUnit.SECONDS); + }else{ + throw new ServiceException(errmsg); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } + return accessToken; + } + + + /** + * @description 编辑商户员工 + * @author jqs + * @date 2023/7/19 19:42 + * @param merEditUserDto + * @return void + */ + @Override + public void editSysStaffInfo(MerEditUserDto merEditUserDto){ + SysStaff sysStaff = this.getByUserId(merEditUserDto.getUserId()); + Integer editType = merEditUserDto.getEditType(); + switch (editType){ + case 1: + sysStaff.setStaffName(merEditUserDto.getEditValue()); + break; + case 2: + sysStaff.setStaffAvatar(merEditUserDto.getEditValue()); + break; + case 3: + break; + case 4: + break; + default: + break; + } + this.saveOrUpdate(sysStaff); + } + + /** + * @description 导入员工 + * @author jqs + * @date 2023/8/18 16:04 + * @param + * @return void + */ + @Override + public String importSysStaff(List<MgtSysStaffImportDto> staffImportDtoList){ + if (StringUtils.isNull(staffImportDtoList) || staffImportDtoList.size() == 0) { + throw new ServiceException("导入数据不能为空!"); + } + int successNum = 0; + int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + SysStaff sysStaff; + Date nowTime = new Date(); + for (MgtSysStaffImportDto entity : staffImportDtoList) { + try { + /*tagName = entity.getTagName(); + sysTagSame = null; + // 验证是否存在这个用户 + queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysTag::getDelFlag, 0) // 查询条件:delFlag=0 + .eq(SysTag::getTagType, tagType) // 查询条件:tagType=mgtTagEditDto的tagType属性 + .eq(SysTag::getTagName, tagName); // 查询条件:tagName=mgtTagEditDto的tagName属性 + // 执行查询,获取与查询条件匹配的SysTag对象 + sysTagSame = this.getOne(queryWrapper); + if (sysTagSame == null) { + sysTagNew = new SysTag(); + sysTagNew.setDelFlag(0); + sysTagNew.setTagType(tagType); + sysTagNew.setTagName(tagName); + sysTagNew.setCreateTime(nowTime); + sysTagNew.setSynFlag(0); + this.save(sysTagNew); + successNum++; + successMsg.append("<br/>" + successNum + "、标签 " + sysTagNew.getTagName() + " 导入成功"); + } else { + failureNum++; + failureMsg.append("<br/>" + failureNum + "、标签 " + sysTagSame.getTagName() + " 已存在"); + }*/ + } catch (Exception e) { + failureNum++; + String msg = "<br/>" + failureNum + "、标签 " + entity.getStaffName() + " 导入失败:"; + failureMsg.append(msg + e.getMessage()); + log.error(msg, e); + } + } + if (failureNum > 0) { + failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); + throw new ServiceException(failureMsg.toString()); + } else { + successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); + } + return successMsg.toString(); + } } -- Gitblit v1.7.1