From c97706c3cc213b7db3d381e8a0435ff0ef9a04d6 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期一, 04 九月 2023 18:53:40 +0800
Subject: [PATCH] seata  同步 支付调整

---
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java |  201 +++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 188 insertions(+), 13 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 3f6867d..3cdbef9 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
@@ -4,6 +4,7 @@
 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.dto.MgtWxCPStaffDto;
 import com.ruoyi.system.domain.pojo.staff.SysStaff;
 import com.ruoyi.system.service.staff.SysStaffService;
 import com.ruoyi.system.service.staff.SysWxCpService;
@@ -13,8 +14,11 @@
 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.WxCpUser;
 import me.chanjar.weixin.cp.bean.message.WxCpMessage;
 import me.chanjar.weixin.cp.bean.message.WxCpMessageSendResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -31,8 +35,13 @@
 @Log4j2
 public class SysWxCpServiceImpl implements SysWxCpService {
 
-    @Resource
+    @Autowired
+    @Qualifier("wxService")
     private WxCpService wxCpService;
+
+    @Autowired
+    @Qualifier("adWxService")
+    private WxCpService adWxCpService;
 
     @Resource
     private RemoteShopService remoteShopService;
@@ -42,6 +51,7 @@
 
     @Resource
     private SysStaffService sysStaffService;
+
     /**
      * @description
      * @author  jqs
@@ -142,28 +152,193 @@
         }
     }
 
+    /**
+     * @description  更新企业微信部门
+     * @author  jqs
+     * @date    2023/9/4 15:19
+     * @param wxDeptId
+     * @param deptName
+     * @return  void
+     */
     @Override
-    public void updateDept(){
+    public void updateWxCpDept(Long wxDeptId,String deptName){
         WxCpDepart group = new WxCpDepart();
-        group.setId(240L);
-        group.setName("软件开发测试部门");
+        group.setId(wxDeptId);
+        group.setName(deptName);
         try {
-            wxCpService.getDepartmentService().update(group);
+            adWxCpService.getDepartmentService().update(group);
         } catch (WxErrorException e) {
             throw new RuntimeException(e);
         }
     }
 
+    /**
+     * @description  创建企业微信部门
+     * @author  jqs
+     * @date    2023/9/4 15:19
+     * @param parentId
+     * @param deptName
+     * @return  void
+     */
     @Override
-    public void sendMessage(){
-        WxCpMessage message;
-        message = new WxCpMessage();
-        message.setAgentId(1000024);
-        message.setToUser("jiangqiushi");
-        message.setMsgType("text");
-        message.setContent("今日需要任务跟进,请注意!");
+    public Long addWxCpDept(Long parentId,String deptName){
+        WxCpDepart depart = new WxCpDepart();
+        depart.setParentId(parentId);
+        depart.setName(deptName);
+        Long departId = null;
         try {
-            WxCpMessageSendResult result = wxCpService.getMessageService().send(message);
+            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 = adWxCpService.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