Bladeren bron

钉钉、微信同步人员

cs 2 jaren geleden
bovenliggende
commit
46d757181d

+ 24 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/CompanyController.java

@@ -3,10 +3,10 @@ package com.management.platform.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.constant.Constant;
-import com.management.platform.entity.CompanyDingding;
-import com.management.platform.entity.ExpenseType;
-import com.management.platform.entity.User;
+import com.management.platform.entity.*;
 import com.management.platform.mapper.CompanyDingdingMapper;
+import com.management.platform.mapper.CompanyMapper;
+import com.management.platform.mapper.ContactSyncLogMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.CompanyService;
 import com.management.platform.service.DingDingService;
@@ -47,6 +47,10 @@ public class CompanyController {
     private CompanyDingdingMapper companyDingdingMapper;
     @Resource
     private ExpenseTypeService expenseTypeService;
+    @Resource
+    private ContactSyncLogMapper contactSyncLogMapper;
+    @Resource
+    private CompanyMapper companyMapper;
 
     public static final HashMap<String, Long> syncLog = new HashMap();
 
@@ -62,6 +66,16 @@ public class CompanyController {
        return companyService.dataMigration(oldCompanyId,targetCompanyId);
     }
 
+    @RequestMapping("/getSyncInfo")
+    public HttpRespMsg getSyncInfo(){
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        String token = request.getHeader("token");
+        User user = userMapper.selectById(token);
+        ContactSyncLog contactSyncLog1 = contactSyncLogMapper.selectOne(new QueryWrapper<ContactSyncLog>().eq("company_id", user.getCompanyId()).orderByDesc("id").last("limit 1"));
+        httpRespMsg.data = contactSyncLog1;
+        return httpRespMsg;
+    }
+
     //同步钉钉
     @RequestMapping("/syncCorpMembs")
     public HttpRespMsg syncCorpMembs() {
@@ -98,6 +112,13 @@ public class CompanyController {
                 }
             }
 
+            Company company = companyMapper.selectOne(new QueryWrapper<Company>().eq("id", user.getCompanyId()));
+            Integer employeeCnt = userMapper.selectCount(new QueryWrapper<User>().eq("company_id", company.getId()).eq("is_active",1));
+            if (employeeCnt > company.getStaffCountMax()){
+                //公司人员已达上限,请联系客服提高人数上限。
+                msg.setError(MessageUtils.message("wx.employeeFull"));
+                return msg;
+            }
             CompanyDingding companyDingding = companyDingdingMapper.selectOne(new QueryWrapper<CompanyDingding>().eq("company_id", user.getCompanyId()));
             if (companyDingding != null) {
                 System.out.println("===========同步钉钉===========");

+ 62 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -138,6 +138,8 @@ public class WeiXinCorpController {
     ExpenseTypeService expenseTypeService;
     @Resource
     private WxOrderMapper wxOrderMapper;
+    @Resource
+    private ContactSyncLogMapper contactSyncLogMapper;
 
     public static String SUITE_ACCESS_TOKEN = null;
     public static long suiteTokenExpireTime = 0L;
@@ -634,7 +636,25 @@ public class WeiXinCorpController {
                             List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
                             user.setDepartmentCascade(convertDepartmentIdToCascade(user.getDepartmentId(), allDeptList));
                         }
-                        userMapper.insert(user);
+                        Integer employeeCnt = userMapper.selectCount(new QueryWrapper<User>().eq("company_id", companyId).eq("is_active",1));
+                        Company company = companyMapper.selectOne(new QueryWrapper<Company>().eq("id", companyId));
+                        ContactSyncLog contactSyncLog = new ContactSyncLog();
+                        contactSyncLog.setCompanyId(companyId);
+                        System.err.println("企业微信自动同步新增人员日志记录===============================");
+                        if (employeeCnt + 1 > company.getStaffCountMax()){
+                            contactSyncLog.setResult(0);
+                            //contactSyncLog.setMsg("公司人员已达上限,请联系客服提高人数上限。");
+                            contactSyncLog.setMsg(MessageUtils.message("wx.employeeFull"));
+                            System.err.println("日志信息:"+ contactSyncLog.toString());
+                            contactSyncLogMapper.insert(contactSyncLog);
+                        }else {
+                            userMapper.insert(user);
+                            contactSyncLog.setResult(1);
+                            //contactSyncLog.setMsg("同步成功");
+                            contactSyncLog.setMsg(MessageUtils.message("wx.synSuccess"));
+                            System.err.println("日志信息:"+ contactSyncLog.toString());
+                            contactSyncLogMapper.insert(contactSyncLog);
+                        }
                     } else if (!StringUtils.isEmpty(wxCorpInfo.getContactSecret()) && !StringUtils.isEmpty(wxCorpInfo.getContactServer())) {
                         //通过通讯录secret获取到员工姓名;这是从内部通讯录的
                         String remoteCorpConcactAccessToken = getRemoteCorpConcactAccessToken(wxCorpInfo);
@@ -676,7 +696,25 @@ public class WeiXinCorpController {
                                 List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
                                 user.setDepartmentCascade(convertDepartmentIdToCascade(user.getDepartmentId(), allDeptList));
                             }
-                            userMapper.insert(user);
+                            Integer employeeCnt = userMapper.selectCount(new QueryWrapper<User>().eq("company_id", companyId).eq("is_active",1));
+                            Company company = companyMapper.selectOne(new QueryWrapper<Company>().eq("id", companyId));
+                            ContactSyncLog contactSyncLog = new ContactSyncLog();
+                            contactSyncLog.setCompanyId(companyId);
+                            System.err.println("企业微信自动同步新增人员日志记录===============================");
+                            if (employeeCnt + 1 > company.getStaffCountMax()){
+                                contactSyncLog.setResult(0);
+                                //contactSyncLog.setMsg("公司人员已达上限,请联系客服提高人数上限。");
+                                contactSyncLog.setMsg(MessageUtils.message("wx.employeeFull"));
+                                System.err.println("日志信息:"+ contactSyncLog.toString());
+                                contactSyncLogMapper.insert(contactSyncLog);
+                            }else {
+                                userMapper.insert(user);
+                                contactSyncLog.setResult(1);
+                                //contactSyncLog.setMsg("同步成功");
+                                contactSyncLog.setMsg(MessageUtils.message("wx.synSuccess"));
+                                System.err.println("日志信息:"+ contactSyncLog.toString());
+                                contactSyncLogMapper.insert(contactSyncLog);
+                            }
                         }
                     }
                 } else if ("update_user".equals(changeType)) {
@@ -1689,6 +1727,14 @@ public class WeiXinCorpController {
     @RequestMapping("/getCorpMembsFromPlatform")
     public HttpRespMsg getCorpMembsFromPlatform(Integer companyId) {
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
+        Company company = companyMapper.selectOne(new QueryWrapper<Company>().eq("id", companyId));
+        Integer employeeCnt = userMapper.selectCount(new QueryWrapper<User>().eq("company_id", companyId).eq("is_active",1));
+        if (employeeCnt > company.getStaffCountMax()){
+            HttpRespMsg msg = new HttpRespMsg();
+            //公司人员已达上限,请联系客服提高人数上限。
+            msg.setError(MessageUtils.message("wx.employeeFull"));
+            return msg;
+        }
         if (wxCorpInfo == null) {
             HttpRespMsg msg = new HttpRespMsg();
             //msg.setError("仅企业微信用户支持该操作");
@@ -1865,7 +1911,20 @@ public class WeiXinCorpController {
         } else if (wxCorpInfo.getAuthMode() == 1){
             getMembAuthListLater(curCorpAccessToken, wxCorpInfo);
         }
-
+        employeeCnt = userMapper.selectCount(new QueryWrapper<User>().eq("company_id", companyId).eq("is_active",1));
+        ContactSyncLog contactSyncLog = new ContactSyncLog();
+        contactSyncLog.setCompanyId(companyId);
+        if (employeeCnt > company.getStaffCountMax()){
+            contactSyncLog.setResult(0);
+            //contactSyncLog.setMsg("公司人员已达上限,请联系客服提高人数上限。");
+            contactSyncLog.setMsg(MessageUtils.message("wx.employeeFull"));
+            contactSyncLogMapper.insert(contactSyncLog);
+        }else {
+            contactSyncLog.setResult(1);
+            //contactSyncLog.setMsg("同步成功");
+            contactSyncLog.setMsg(MessageUtils.message("wx.synSuccess"));
+            contactSyncLogMapper.insert(contactSyncLog);
+        }
         return new HttpRespMsg();
     }
 

+ 39 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java

@@ -123,6 +123,8 @@ public class DingDingServiceImpl implements DingDingService {
     private ExpenseTypeService expenseTypeService;
     @Resource
     private DdCallbackMapper ddCallbackMapper;
+    @Resource
+    private ContactSyncLogMapper contactSyncLogMapper;
 
 
     @Value("${configEnv.isPrivateDeploy}")
@@ -1112,7 +1114,26 @@ public class DingDingServiceImpl implements DingDingService {
                 List<User> oldList = userMapper.selectList(new QueryWrapper<User>().eq("dingding_userid", dingdingUserid).eq("company_id", dingding.getCompanyId()));
                 if (oldList.size() == 0) {
                     System.out.println("监听变化,主动新增钉钉用户==" + user.getName());
-                    userMapper.insert(user);
+                    Integer companyId = user.getCompanyId();
+                    Integer employeeCnt = userMapper.selectCount(new QueryWrapper<User>().eq("company_id", companyId).eq("is_active",1));
+                    Company company = companyMapper.selectOne(new QueryWrapper<Company>().eq("id", companyId));
+                    ContactSyncLog contactSyncLog = new ContactSyncLog();
+                    contactSyncLog.setCompanyId(companyId);
+                    System.err.println("钉钉自动同步新增人员日志记录===============================");
+                    if (employeeCnt + 1 > company.getStaffCountMax()){
+                        contactSyncLog.setResult(0);
+                        //contactSyncLog.setMsg("公司人员已达上限,请联系客服提高人数上限。");
+                        contactSyncLog.setMsg(MessageUtils.message("wx.employeeFull"));
+                        System.err.println("日志信息:"+ contactSyncLog.toString());
+                        contactSyncLogMapper.insert(contactSyncLog);
+                    }else {
+                        userMapper.insert(user);
+                        contactSyncLog.setResult(1);
+                        //contactSyncLog.setMsg("同步成功");
+                        contactSyncLog.setMsg(MessageUtils.message("wx.synSuccess"));
+                        System.err.println("日志信息:"+ contactSyncLog.toString());
+                        contactSyncLogMapper.insert(contactSyncLog);
+                    }
                 }
             }
         }
@@ -1159,8 +1180,23 @@ public class DingDingServiceImpl implements DingDingService {
 
                 List<User> oldList = userMapper.selectList(new QueryWrapper<User>().eq("dingding_userid", dingdingUserid).eq("company_id", companyId));
                 if (oldList.size() == 0) {
-                    System.out.println("新增钉钉用户==" + user.getName());
-                    userMapper.insert(user);
+                    Integer employeeCnt = userMapper.selectCount(new QueryWrapper<User>().eq("company_id", companyId).eq("is_active",1));
+                    Company company = companyMapper.selectOne(new QueryWrapper<Company>().eq("id", companyId));
+                    ContactSyncLog contactSyncLog = new ContactSyncLog();
+                    contactSyncLog.setCompanyId(companyId);
+                    if (employeeCnt + 1 > company.getStaffCountMax()){
+                        contactSyncLog.setResult(0);
+                        //contactSyncLog.setMsg("公司人员已达上限,请联系客服提高人数上限。");
+                        contactSyncLog.setMsg(MessageUtils.message("wx.employeeFull"));
+                        contactSyncLogMapper.insert(contactSyncLog);
+                    }else {
+                        System.out.println("新增钉钉用户==" + user.getName());
+                        userMapper.insert(user);
+                        contactSyncLog.setResult(1);
+                        //contactSyncLog.setMsg("同步成功");
+                        contactSyncLog.setMsg(MessageUtils.message("wx.synSuccess"));
+                        contactSyncLogMapper.insert(contactSyncLog);
+                    }
                 } else {
                     //可能需要更新姓名
                     User oldUser = oldList.get(0);

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages.properties

@@ -256,6 +256,8 @@ wx.noNewMemberUp=无新成员更新
 wx.AssCompleted=处理完毕。当前无新人员需要关联企业微信身份
 wx.AssCompletedByParam=处理完毕。本次自动关联了:{0}位人员:{1}
 wx.noWXUser=仅企业微信用户支持该操作
+wx.employeeFull = 公司人员已达上限,请联系客服提高人数上限。
+wx.synSuccess = 同步成功
 #请假相关
 leave.leave=请假
 leave.leaveOfDay=当天请假

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages_en_US.properties

@@ -256,6 +256,8 @@ wx.noNewMemberUp=No new member updates
 wx.AssCompleted=Processing completed. Currently, no new personnel need WeChat identity of affiliated enterprises.
 wx.AssCompletedByParam=Processing completed. This time: {0} people are automatically associated:{1}.
 wx.noWXUser=Only enterprise WeChat users support this operation.
+wx.employeeFull = The number of company personnel has reached the upper limit. Please contact customer service to increase the upper limit.
+wx.synSuccess = Synchronization succeeded.
 #请假相关
 leave.leave=leave
 leave.leaveOfDay=Leave of the day