From 79f8fc87c9c9e4866a477dfe4485eedda5976209 Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期二, 18 七月 2023 19:41:20 +0800 Subject: [PATCH] bug和企业微信同步 --- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java | 101 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 94 insertions(+), 7 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 c82f9cc..cb00e90 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,10 +1,16 @@ 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.MgtBaseGetDto; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.domain.dto.MgtStaffEditDto; @@ -15,10 +21,12 @@ import com.ruoyi.system.mapper.staff.SysStaffMapper; import com.ruoyi.system.service.staff.SysStaffService; 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.List; +import java.util.concurrent.TimeUnit; /** * <p> @@ -36,6 +44,10 @@ @Resource private ISysUserService sysUserService; + + @Resource + private RedisService redisService; + /** * @description 获取部门员工列表 @@ -58,12 +70,12 @@ */ @Override public List<MgtDeptStaffListVo>listMgtDeptStaffByPermission(Long userId){ - SysUser sysUser = sysUserService.getById(userId); + SysUser sysUser = sysUserService.selectUserById(userId); String dataScope = sysUser.getDataScope(); List<MgtDeptStaffListVo> deptStaffListVoList; - if(dataScope.equals("4")){ + if(dataScope!=null&&dataScope.equals("4")){ deptStaffListVoList = sysStaffMapper.listMgtDeptStaffByDept(sysUser.getDeptId(),null); - }else if(dataScope.equals("5")){ + }else if(dataScope!=null&&dataScope.equals("5")){ deptStaffListVoList = sysStaffMapper.listMgtDeptStaffByDept(sysUser.getDeptId(),sysUser.getUserId()); }else{ deptStaffListVoList = sysStaffMapper.listMgtDeptStaff(); @@ -98,16 +110,29 @@ public void mgtStaffEdit(MgtStaffEditDto mgtStaffEditDto){ SysStaff sysStaff; SysUser sysUser; - if(mgtStaffEditDto.getUserId()!=null){ - sysStaff = this.getByUserId(mgtStaffEditDto.getUserId()); - sysUser = sysUserService.getById(mgtStaffEditDto.getUserId()); + 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.saveOrUpdate(sysUser); + sysUserService.updateOnlyUser(sysUser); }else{ + if(sysStaffSame!=null){ + throw new ServiceException(AppErrorConstant.STAFF_MOBILE_DOUBLE); + } sysStaff = new SysStaff(); String staffId = IdUtils.simpleUUID(); sysStaff.setStaffId(staffId); @@ -147,6 +172,7 @@ Long userId = Long.valueOf(mgtBaseGetDto.getId()); SysStaff sysStaff = this.getByUserId(userId); sysStaff.setDelFlag(1); + sysStaff.setStaffMobile(sysStaff.getStaffMobile()+":已删除"); this.saveOrUpdate(sysStaff); sysUserService.deleteUserById(mgtBaseGetDto.getUserId()); } @@ -163,4 +189,65 @@ 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 同步组织架构 + * @author jqs + * @date 2023/7/18 19:06 + * @param + * @return void + */ + @Override + public void synchronizeOrganizationalStructure(){ + String accessToken = getQYToken(); + + + } + + + /** + * @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; + } } -- Gitblit v1.7.1