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 |  251 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 250 insertions(+), 1 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 2b94fce..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
@@ -1,6 +1,12 @@
 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.dto.MgtWxCPStaffDto;
+import com.ruoyi.system.domain.pojo.staff.SysStaff;
+import com.ruoyi.system.service.staff.SysStaffService;
 import com.ruoyi.system.service.staff.SysWxCpService;
 import com.ruoyi.system.service.sys.ISysDeptService;
 import lombok.extern.log4j.Log4j2;
@@ -8,6 +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;
@@ -24,11 +35,23 @@
 @Log4j2
 public class SysWxCpServiceImpl implements SysWxCpService {
 
-    @Resource
+    @Autowired
+    @Qualifier("wxService")
     private WxCpService wxCpService;
+
+    @Autowired
+    @Qualifier("adWxService")
+    private WxCpService adWxCpService;
+
+    @Resource
+    private RemoteShopService remoteShopService;
 
     @Resource
     private ISysDeptService  sysDeptService;
+
+    @Resource
+    private SysStaffService sysStaffService;
+
     /**
      * @description
      * @author  jqs
@@ -94,4 +117,230 @@
             throw new RuntimeException(e);
         }
     }
+
+    /**
+     * @description  企业微信消息推送
+     * @author  jqs
+     * @date    2023/8/29 11:05
+     * @return  void
+     */
+    @Override
+    public void sendTaskMessage(){
+        //获取员工任务列表
+        List<MgtUserTaskMsgVo> userTaskMsgVoList = remoteShopService.getTaskMsgList().getData();
+        log.info("定时发送通知任务任务列表---"+userTaskMsgVoList.size());
+        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);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * @description  更新企业微信部门
+     * @author  jqs
+     * @date    2023/9/4 15:19
+     * @param wxDeptId
+     * @param deptName
+     * @return  void
+     */
+    @Override
+    public void updateWxCpDept(Long wxDeptId,String deptName){
+        WxCpDepart group = new WxCpDepart();
+        group.setId(wxDeptId);
+        group.setName(deptName);
+        try {
+            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 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 = 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