From d6a0c57043e8cc20694a3c678bf8e3a8f28f6499 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 29 五月 2025 11:20:14 +0800
Subject: [PATCH] 新增加用户端接口
---
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java | 256 ++++++++++++++++++++++++++++++++++++--------------
1 files changed, 182 insertions(+), 74 deletions(-)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java
index 1665be2..ca76233 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java
@@ -1,24 +1,17 @@
package com.ruoyi.system.service.impl.staff;
import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.system.api.domain.poji.sys.SysDept;
-import com.ruoyi.system.api.domain.vo.MgtUserTaskMsgVo;
-import com.ruoyi.system.api.service.RemoteShopService;
-import com.ruoyi.system.domain.pojo.staff.SysStaff;
-import com.ruoyi.system.service.staff.SysStaffService;
+import com.ruoyi.system.domain.dto.MgtWxCPStaffDto;
import com.ruoyi.system.service.staff.SysWxCpService;
-import com.ruoyi.system.service.sys.ISysDeptService;
import lombok.extern.log4j.Log4j2;
import me.chanjar.weixin.common.error.WxErrorException;
-import me.chanjar.weixin.cp.api.WxCpDepartmentService;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.bean.WxCpDepart;
-import me.chanjar.weixin.cp.bean.message.WxCpMessage;
-import me.chanjar.weixin.cp.bean.message.WxCpMessageSendResult;
+import me.chanjar.weixin.cp.bean.WxCpUser;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-import java.util.List;
/**
* @ClassName WxCpServiceImpl
@@ -32,16 +25,14 @@
public class SysWxCpServiceImpl implements SysWxCpService {
@Resource
+ @Qualifier("wxService")
private WxCpService wxCpService;
@Resource
- private RemoteShopService remoteShopService;
+ @Qualifier("adWxService")
+ private WxCpService adWxCpService;
- @Resource
- private ISysDeptService sysDeptService;
- @Resource
- private SysStaffService sysStaffService;
/**
* @description
* @author jqs
@@ -60,82 +51,199 @@
return accessToken;
}
+
+
+
+
/**
- * @description 同步部门
+ * @description 更新企业微信部门
* @author jqs
- * @date 2023/8/17 15:42
- * @param
+ * @date 2023/9/4 15:19
+ * @param wxDeptId
+ * @param deptName
* @return void
*/
@Override
- public void syncDepartment(){
- WxCpDepartmentService wxCpDepartmentService = wxCpService.getDepartmentService();
+ public void updateWxCpDept(Long wxDeptId,String deptName){
+ WxCpDepart group = new WxCpDepart();
+ group.setId(wxDeptId);
+ group.setName(deptName);
try {
- //从企业微信拉去部门名单
- List<WxCpDepart> wxCpDepartList = wxCpDepartmentService.list(null);
- if(wxCpDepartList!=null&&wxCpDepartList.size()>0){
- for(WxCpDepart wxCpDepart : wxCpDepartList){
- if(wxCpDepart.getParentId().compareTo(24L)<0){
- //获取系统内对应部门
- SysDept sysDept = sysDeptService.getByWxDeptId(wxCpDepart.getId());
- //判断是否有该部门,没有则新建
- if(sysDept!=null){
- //判断是否有变化
- if(!sysDept.getDeptName().equals(wxCpDepart.getName())||sysDept.getOrderNum()!=wxCpDepart.getOrder().intValue()){
- sysDept.setDeptName(wxCpDepart.getName());
- sysDept.setOrderNum(wxCpDepart.getOrder().intValue());
- sysDept.setUpdateBy("企业微信同步");
- sysDeptService.updateDept(sysDept);
- log.info("企业微信同步更新部门:"+wxCpDepart.getName());
- }
- }else{
- sysDept = new SysDept();
- sysDept.setDelFlag("0");
- sysDept.setStatus("0");
- sysDept.setParentId(100L);
- sysDept.setOrderNum(wxCpDepart.getOrder().intValue());
- sysDept.setCreateBy("企业微信同步");
- sysDept.setDeptName(wxCpDepart.getName());
- sysDept.setWxDeptId(wxCpDepart.getId());
- sysDeptService.insertDept(sysDept);
- log.info("企业微信同步新增部门:"+wxCpDepart.getName());
- }
- }
- }
- }
+ adWxCpService.getDepartmentService().update(group);
} catch (WxErrorException e) {
throw new RuntimeException(e);
}
}
/**
- * @description 企业微信消息推送
+ * @description 创建企业微信部门
* @author jqs
- * @date 2023/8/29 11:05
+ * @date 2023/9/4 15:19
+ * @param parentId
+ * @param deptName
* @return void
*/
@Override
- public void sendTaskMessage(){
- List<MgtUserTaskMsgVo> userTaskMsgVoList = remoteShopService.getTaskMsgList().getData();
- WxCpMessage message;
- SysStaff sysStaff;
- if(userTaskMsgVoList!=null&&!userTaskMsgVoList.isEmpty()){
- for(MgtUserTaskMsgVo mgtUserTaskMsgVo : userTaskMsgVoList){
- sysStaff = sysStaffService.getByUserId(mgtUserTaskMsgVo.getUserId());
- if(sysStaff!=null&& StringUtils.isNotBlank(sysStaff.getWxUserId())){
- message = new WxCpMessage();
- message.setAgentId(1000024);
- message.setToUser(sysStaff.getWxUserId());
- message.setMsgType("text");
- message.setContent(mgtUserTaskMsgVo.getTaskTitle()+"今日需要任务跟进,请注意!");
- try {
- WxCpMessageSendResult result = wxCpService.getMessageService().send(message);
- System.out.println(result);
- } catch (WxErrorException e) {
- throw new RuntimeException(e);
- }
- }
+ public Long addWxCpDept(Long parentId,String deptName){
+ WxCpDepart depart = new WxCpDepart();
+ depart.setParentId(parentId);
+ depart.setName(deptName);
+ Long departId = null;
+ try {
+ departId = adWxCpService.getDepartmentService().create(depart);
+ } catch (WxErrorException e) {
+ throw new RuntimeException(e);
+ }
+ return departId;
+ }
+
+ /**
+ * @description 删除企业微信部门
+ * @author jqs
+ * @date 2023/9/4 15:19
+ * @param wxDeptId
+ * @return void
+ */
+ @Override
+ public void deleteWxCpDept(Long wxDeptId){
+ try {
+ adWxCpService.getDepartmentService().delete(wxDeptId);
+ } catch (WxErrorException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * @description 通过手机号获取wxUserId
+ * @author jqs
+ * @date 2023/9/4 15:44
+ * @param mobile
+ * @return String
+ */
+ private String getWxUserIdByMobile(String mobile){
+ String wxUserId = null;
+ try {
+ wxUserId = adWxCpService.getUserService().getUserId(mobile);
+ } catch (WxErrorException e) {
+ throw new RuntimeException(e);
+ }
+ return wxUserId;
+ }
+
+
+ /**
+ * @description 通过wxUserId获取用户
+ * @author jqs
+ * @date 2023/9/4 16:35
+ * @param wxUserId
+ * @return WxCpUser
+ */
+ private WxCpUser getWxCpUser(String wxUserId){
+ WxCpUser wxCpUser = null;
+ try {
+ wxCpUser = wxCpService.getUserService().getById(wxUserId);
+ } catch (WxErrorException e) {
+ throw new RuntimeException(e);
+ }
+ return wxCpUser;
+ }
+
+ /**
+ * @description 创建企业微信员工
+ * @author jqs
+ * @date 2023/9/4 15:19
+ * @param mgtWxCPStaffDto
+ * @return void
+ */
+ @Override
+ public String addWxCpStaff(MgtWxCPStaffDto mgtWxCPStaffDto){
+ String wxUserId = mgtWxCPStaffDto.getWxUserId();
+ String mobile = mgtWxCPStaffDto.getStaffMobile();
+ String oldUserId = this.getWxUserIdByMobile(mobile);
+ WxCpUser oldWxCpUser = null;
+ Boolean sameUserId = false;
+ //判断手机号是否有对应企业微信用户 有则更新 无则新建
+ if(StringUtils.isNotBlank(oldUserId)){
+ oldWxCpUser = this.getWxCpUser(oldUserId);
+ }else{
+ //当手机号无对应用户时判断wxUserId是否被占用
+ oldWxCpUser = this.getWxCpUser(wxUserId);
+ if(oldWxCpUser!=null){
+ sameUserId = true;
+ oldWxCpUser = null;
}
}
+ //获取企业微信用户是否存在
+ if(oldWxCpUser!=null){
+ oldWxCpUser.setUserId(mgtWxCPStaffDto.getWxUserId());
+ oldWxCpUser.setName(mgtWxCPStaffDto.getStaffName());
+ oldWxCpUser.setMobile(mgtWxCPStaffDto.getStaffMobile());
+ if(StringUtils.isNotBlank(mgtWxCPStaffDto.getStaffEmail())){
+ oldWxCpUser.setEmail(mgtWxCPStaffDto.getStaffEmail());
+ }
+ if(StringUtils.isNotBlank(mgtWxCPStaffDto.getStaffPost())){
+ oldWxCpUser.setPosition(mgtWxCPStaffDto.getStaffPost());
+ }
+ oldWxCpUser.setPosition(mgtWxCPStaffDto.getStaffPost());
+ Long[] departIds = new Long[1];
+ departIds[0] = mgtWxCPStaffDto.getWxDeptId();
+ oldWxCpUser.setDepartIds(departIds);
+ if(mgtWxCPStaffDto.getHeadFlag()!=null){
+ Integer[] isLeaderInDept = new Integer[1];
+ isLeaderInDept[0] = Integer.valueOf(mgtWxCPStaffDto.getHeadFlag());
+ oldWxCpUser.setIsLeaderInDept(isLeaderInDept);
+ }
+ try {
+ adWxCpService.getUserService().update(oldWxCpUser);
+ } catch (WxErrorException e) {
+ throw new RuntimeException(e);
+ }
+ }else{
+ WxCpUser wxCpUser = new WxCpUser();
+ //wxUserId被占用重新生成
+ if(sameUserId){
+ wxUserId = wxUserId + "1";
+ }
+ wxCpUser.setUserId(wxUserId);
+ wxCpUser.setName(mgtWxCPStaffDto.getStaffName());
+ wxCpUser.setMobile(mgtWxCPStaffDto.getStaffMobile());
+ if(StringUtils.isNotBlank(mgtWxCPStaffDto.getStaffEmail())){
+ wxCpUser.setEmail(mgtWxCPStaffDto.getStaffEmail());
+ }
+ if(StringUtils.isNotBlank(mgtWxCPStaffDto.getStaffPost())){
+ wxCpUser.setPosition(mgtWxCPStaffDto.getStaffPost());
+ }
+ wxCpUser.setPosition(mgtWxCPStaffDto.getStaffPost());
+ Long[] departIds = new Long[1];
+ departIds[0] = mgtWxCPStaffDto.getWxDeptId();
+ wxCpUser.setDepartIds(departIds);
+ if(mgtWxCPStaffDto.getHeadFlag()!=null){
+ Integer[] isLeaderInDept = new Integer[1];
+ isLeaderInDept[0] = Integer.valueOf(mgtWxCPStaffDto.getHeadFlag());
+ wxCpUser.setIsLeaderInDept(isLeaderInDept);
+ }
+ try {
+ adWxCpService.getUserService().create(wxCpUser);
+ } catch (WxErrorException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ return wxUserId;
+ }
+
+ /**
+ * @description 删除企业微信员工
+ * @author jqs
+ * @date 2023/9/4 15:19
+ * @param wxUserId
+ * @return void
+ */
+ @Override
+ public void deleteWxCpStaff(String wxUserId){
+ try {
+ adWxCpService.getUserService().delete(wxUserId);
+ } catch (WxErrorException e) {
+ throw new RuntimeException(e);
+ }
}
}
--
Gitblit v1.7.1