Преглед изворни кода

Merge remote-tracking branch 'origin/master'

yys пре 2 месеци
родитељ
комит
f6d3ee44a2

+ 3 - 18
fs-qw-api/src/main/java/com/fs/app/controller/OpenQwApiController.java

@@ -34,12 +34,7 @@ public class OpenQwApiController extends BaseController {
      */
     @PostMapping("/getSyncQwUser")
     public R getSyncQwUser(@RequestParam Long tenantId, @RequestParam String corpId){
-        tenantDataSourceManager.ensureSwitchByTenantId(tenantId);
-        try {
-            return openQwApiService.getSyncQwUser(corpId);
-        } finally {
-            tenantDataSourceManager.clear();
-        }
+        return openQwApiService.getSyncQwUser(tenantId, corpId);
     }
 
 
@@ -51,12 +46,7 @@ public class OpenQwApiController extends BaseController {
      */
     @PostMapping("/getSyncQwDept")
     public R getSyncQwDept(@RequestParam Long tenantId, @RequestParam String corpId){
-        tenantDataSourceManager.ensureSwitchByTenantId(tenantId);
-        try {
-            return openQwApiService.getSyncQwDept(corpId);
-        } finally {
-            tenantDataSourceManager.clear();
-        }
+        return openQwApiService.getSyncQwDept(tenantId, corpId);
     }
 
     /**
@@ -67,12 +57,7 @@ public class OpenQwApiController extends BaseController {
      */
     @PostMapping("/getSyncName")
     public R getSyncName(@RequestParam Long tenantId, @RequestParam String corpId){
-        tenantDataSourceManager.ensureSwitchByTenantId(tenantId);
-        try {
-            return openQwApiService.getSyncName(corpId);
-        } finally {
-            tenantDataSourceManager.clear();
-        }
+        return openQwApiService.getSyncName(tenantId, corpId);
     }
 
     /**

+ 3 - 3
fs-qw-api/src/main/java/com/fs/app/service/OpenQwApiService.java

@@ -6,11 +6,11 @@ import com.fs.qw.param.QwExternalContactAddTagParam;
 import com.fs.qw.param.QwExternalContactUpdateNoteParam;
 
 public interface OpenQwApiService {
-    R getSyncQwUser(String corpId);
+    R getSyncQwUser(Long tenantId, String corpId);
 
-    R getSyncQwDept(String corpId);
+    R getSyncQwDept(Long tenantId, String corpId);
 
-    R getSyncName(String corpId);
+    R getSyncName(Long tenantId, String corpId);
 
     R batchUpdateExternalContactNotes(QwExternalContactUpdateNoteParam param);
 

+ 78 - 98
fs-qw-api/src/main/java/com/fs/app/service/impl/OpenQwApiServiceImpl.java

@@ -5,6 +5,7 @@ import com.fs.app.service.OpenQwApiService;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.utils.SecurityUtils;
+import com.fs.framework.datasource.TenantDataSourceUtil;
 import com.fs.qw.domain.QwCompany;
 import com.fs.qw.domain.QwDept;
 import com.fs.qw.domain.QwExternalContact;
@@ -77,115 +78,94 @@ public class OpenQwApiServiceImpl implements OpenQwApiService {
     @Autowired
     private RedisCache redisCache;
 
+    @Autowired
+    private TenantDataSourceUtil tenantDataSourceUtil;
+
     @Override
-    public R getSyncQwUser(String corpId) {
-        QwUserIdResult userList = qwApiService.getUserList(corpId);
-        List<DeptUser> deptUser = userList.getDept_user();
-        log.info("返回数据:{}", JSON.toJSONString(userList));
-        log.info("同步用户数量:{}", deptUser.size());
-        QwCompany qwCompany = iQwCompanyService.selectQwCompanyByCorpId(corpId);
-        String accessToken = qwApiService.getToken(corpId, qwCompany.getPermanentCode());
-        for (DeptUser user : deptUser) {
-            QwUser qw = qwUserMapper.selectQwUserByCorpIdAndUserId(corpId, user.getUserid());
-            String serverQwUserName = qwApiService.getServerQwUserName(corpId, qwCompany.getOpenSecret(), user.getUserid(), qwCompany.getPermanentCode());
-            log.info("同步用户名称:{}", serverQwUserName);
-            QwUser qwUser = new QwUser();
-            qwUser.setQwUserId(user.getUserid());
-            qwUser.setDepartment(user.getDepartment().toString());
-            qwUser.setQwUserName(serverQwUserName);
-            qwUser.setCorpId(corpId);
-            QwOpenidByUserParams param = new QwOpenidByUserParams();
-            param.setUserid(user.getUserid());
-            QwOpenidResult qwOpenidResult = qwApiService.useridToOpenid(param, corpId);
-            qwUser.setOpenid(qwOpenidResult.getOpenid());
-
-            qwUser.setQwOpenUserid(qwApiService.getOpenUserid(accessToken, user.getUserid(), corpId));
-            if (qw == null) {
-                qwUserMapper.insertQwUser(qwUser);
-            } else {
-                qwUser.setId(qw.getId());
-                qwUser.setIsDel(0);
-                qwUserMapper.updateQwUser(qwUser);
+    public R getSyncQwUser(Long tenantId, String corpId) {
+        return tenantDataSourceUtil.executeWithResult(tenantId, () -> {
+            QwUserIdResult userList = qwApiService.getUserList(corpId);
+            List<DeptUser> deptUser = userList.getDept_user();
+            log.info("返回数据:{}", JSON.toJSONString(userList));
+            log.info("同步用户数量:{}", deptUser.size());
+            QwCompany qwCompany = iQwCompanyService.selectQwCompanyByCorpId(corpId);
+            String accessToken = qwApiService.getToken(corpId, qwCompany.getPermanentCode());
+            for (DeptUser user : deptUser) {
+                QwUser qw = qwUserMapper.selectQwUserByCorpIdAndUserId(corpId, user.getUserid());
+                String serverQwUserName = qwApiService.getServerQwUserName(corpId, qwCompany.getOpenSecret(), user.getUserid(), qwCompany.getPermanentCode());
+                log.info("同步用户名称:{}", serverQwUserName);
+                QwUser qwUser = new QwUser();
+                qwUser.setQwUserId(user.getUserid());
+                qwUser.setDepartment(user.getDepartment().toString());
+                qwUser.setQwUserName(serverQwUserName);
+                qwUser.setCorpId(corpId);
+                QwOpenidByUserParams param = new QwOpenidByUserParams();
+                param.setUserid(user.getUserid());
+                QwOpenidResult qwOpenidResult = qwApiService.useridToOpenid(param, corpId);
+                qwUser.setOpenid(qwOpenidResult.getOpenid());
+
+                qwUser.setQwOpenUserId(qwApiService.getOpenUserid(accessToken, user.getUserid(), corpId));
+                if (qw == null) {
+                    qwUserMapper.insertQwUser(qwUser);
+                } else {
+                    qwUser.setId(qw.getId());
+                    qwUser.setIsDel(0);
+                    qwUserMapper.updateQwUser(qwUser);
+                }
             }
-        }
-        return R.ok();
+            return R.ok();
+        });
     }
 
     @Override
-    public R getSyncQwDept(String corpId) {
-        QwDeptResult departmentList = qwApiService.getDepartmentList(corpId);
-
-        if (departmentList.getErrcode() == 0) {
-            List<Department> department = departmentList.getDepartment();
-            for (Department dept : department) {
-                QwDept qwDept = new QwDept();
-                qwDept.setDeptId(Long.valueOf(dept.getId()));
-                qwDept.setDeptName(dept.getName());
-                qwDept.setCorpId(corpId);
-                qwDept.setParentid(Long.valueOf(dept.getParentid()));
-                int i = qwDeptMapper.insertOrUpdateQwDept(qwDept);
+    public R getSyncQwDept(Long tenantId, String corpId) {
+        return tenantDataSourceUtil.executeWithResult(tenantId, () -> {
+            QwDeptResult departmentList = qwApiService.getDepartmentList(corpId);
+
+            if (departmentList.getErrcode() == 0) {
+                List<Department> department = departmentList.getDepartment();
+                for (Department dept : department) {
+                    QwDept qwDept = new QwDept();
+                    qwDept.setDeptId(Long.valueOf(dept.getId()));
+                    qwDept.setDeptName(dept.getName());
+                    qwDept.setCorpId(corpId);
+                    qwDept.setParentid(Long.valueOf(dept.getParentid()));
+                    int i = qwDeptMapper.insertOrUpdateQwDept(qwDept);
+                }
+            } else {
+                return R.error("同步失败:" + departmentList.getErrmsg());
             }
-        }else {
-            return R.error("同步失败:"+departmentList.getErrmsg());
-        }
 
-        return null;
+            return R.ok();
+        });
     }
 
     @Override
-    public R getSyncName(String corpId) {
-        QwCompany qwCompany = iQwCompanyService.selectQwCompanyByCorpId(corpId);
-        List<QwUser> qwUsers=qwUserMapper.selectQwUserByCorpId(corpId);
-        if (qwCompany == null) {
-            log.warn("syncQwUserName skipped: corpId={} 对应企业为空", corpId);
-            return R.error("企业信息不存在");
-        }
-        if (qwUsers == null || qwUsers.isEmpty()) {
-            log.info("syncQwUserName no users: corpId={}", corpId);
-            return R.ok();
-        }
-        String currentDataSource = getCurrentDataSourceType();
-        Long tenantId = SecurityUtils.getTenantId();
-        String currentTraceId = MDC.get("traceId");
-        log.info("syncQwUserName start: corpId={}, tenantId={}, dataSource={}, userCount={}",
-                corpId, tenantId, currentDataSource, qwUsers.size());
-        ExecutorService executorService = Executors.newFixedThreadPool(50);
-        for (QwUser user : qwUsers) {
-            executorService.submit(() -> {
-                try {
-                    if (currentDataSource != null && !currentDataSource.isEmpty()) {
-                        setCurrentDataSourceType(currentDataSource);
-                        MDC.put("dataSource", currentDataSource);
-                    }
-                    if (tenantId != null) {
-                        MDC.put("tenantId", String.valueOf(tenantId));
-                    }
-                    if (currentTraceId != null && !currentTraceId.isEmpty()) {
-                        MDC.put("traceId", currentTraceId);
-                    }
-                    updateQwUserName(user, qwCompany);
-                } finally {
-                    clearCurrentDataSourceType();
-                    MDC.remove("dataSource");
-                    MDC.remove("tenantId");
-                    MDC.remove("traceId");
-                }
-            });
-        }
-        executorService.shutdown(); // 关闭线程池,等待所有任务完成
-        try {
-            if (!executorService.awaitTermination(5, TimeUnit.MINUTES)) {
-                log.warn("syncQwUserName timeout: corpId={}, tenantId={}, dataSource={}",
-                        corpId, tenantId, currentDataSource);
+    public R getSyncName(Long tenantId, String corpId) {
+        return tenantDataSourceUtil.executeWithResult(tenantId, () -> {
+            QwCompany qwCompany = iQwCompanyService.selectQwCompanyByCorpId(corpId);
+            List<QwUser> qwUsers = qwUserMapper.selectQwUserByCorpId(corpId);
+            if (qwCompany == null) {
+                log.warn("syncQwUserName skipped: corpId={} 对应企业为空", corpId);
+                return R.error("企业信息不存在");
             }
-        } catch (InterruptedException e) {
-            Thread.currentThread().interrupt();
-            log.warn("syncQwUserName interrupted: corpId={}, tenantId={}, dataSource={}",
-                    corpId, tenantId, currentDataSource, e);
-        }
-        log.info("syncQwUserName finish: corpId={}, tenantId={}, dataSource={}",
-                corpId, tenantId, currentDataSource);
-        return R.ok();
+            if (qwUsers == null || qwUsers.isEmpty()) {
+                log.info("syncQwUserName no users: corpId={}", corpId);
+                return R.ok();
+            }
+            String currentDataSource = getCurrentDataSourceType();
+            log.info("syncQwUserName start: corpId={}, tenantId={}, dataSource={}, userCount={}",
+                    corpId, tenantId, currentDataSource, qwUsers.size());
+            ExecutorService executorService = Executors.newFixedThreadPool(50);
+            for (QwUser user : qwUsers) {
+                executorService.submit(() -> {
+                        updateQwUserName(user, qwCompany);
+                });
+            }
+            log.info("syncQwUserName finish: corpId={}, tenantId={}, dataSource={}",
+                    corpId, tenantId, currentDataSource);
+            return R.ok();
+        });
     }
 
     @Override

+ 1 - 1
fs-service/src/main/java/com/fs/qw/domain/QwUser.java

@@ -27,7 +27,7 @@ public class QwUser extends BaseEntity
     /**
      * 加密企微用户id
      */
-    private String qwOpenUserid;
+    private String qwOpenUserId;
 
     /** 企微用户名 */
     @Excel(name = "企微用户名")

+ 6 - 6
fs-service/src/main/java/com/fs/qw/service/impl/QwExternalContactServiceImpl.java

@@ -1027,7 +1027,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
 
 
                     // 设置公共属性
-                    qwExternalContact.setQwOpenUserId(qwUser.getQwOpenUserid());
+                    qwExternalContact.setQwOpenUserId(qwUser.getQwOpenUserId());
                     qwExternalContact.setCompanyUserId(qwUser.getCompanyUserId());
                     qwExternalContact.setQwUserId(qwUser.getId());
                     qwExternalContact.setName(contact.getName()); // 设置名称
@@ -1197,7 +1197,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                     }
                     qwTransferCustomerParam.setTransfer_success_msg(content);
                     qwTransferCustomerParam.setHandover_userid(qwExternalContact.getQwOpenUserId());
-                    qwTransferCustomerParam.setTakeover_userid(qwUser.getQwOpenUserid());
+                    qwTransferCustomerParam.setTakeover_userid(qwUser.getQwOpenUserId());
                     qwTransferCustomerParam.setExternal_userid(Arrays.asList(qwExternalContact.getExternalUserId()));
                     QwTransferCustomerResult qwTransferCustomerResult = qwApiService.transferCustomer(qwTransferCustomerParam, param.getCorpId());
 //                    logger.info("返回:{}",qwTransferCustomerResult);
@@ -2528,7 +2528,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
         }
 
         for (FollowUser followUser : followUsers) {
-            if (followUser.getUserid().equals(qwUser.getQwOpenUserid())) {
+            if (followUser.getUserid().equals(qwUser.getQwOpenUserId())) {
                 qwExternalContact.setUserId(followUser.getUserid()); // 设置属于用户ID
                 qwExternalContact.setExternalUserId(externalContact.getExternal_userid()); // 设置外部联系人ID
                 if (qwUser != null) {
@@ -2586,7 +2586,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
 
                 //添加的标签
                 QwEditUserTagParam qwEditUserTagParam = new QwEditUserTagParam();
-                qwEditUserTagParam.setUserid(qwUser.getQwOpenUserid());
+                qwEditUserTagParam.setUserid(qwUser.getQwOpenUserId());
                 qwEditUserTagParam.setExternal_userid(externalUserID);
                 //添加标签的日志记录
                 QwAutoTagsLogs qwAutoTagsLogs = new QwAutoTagsLogs();
@@ -2822,7 +2822,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                         qwExternalContact.setRemark(tagRemark + "-" + externalContact.getName());
                         QwExternalContactRemarkParam param = new QwExternalContactRemarkParam();
                         param.setRemark(qwExternalContact.getRemark());
-                        param.setUserid(qwUser.getQwOpenUserid());
+                        param.setUserid(qwUser.getQwOpenUserId());
                         param.setExternal_userid(externalUserID);
                         QwExternalContactRemarkResult remarkResult = qwApiService.externalcontactRemark(param, qwExternalContact.getCorpId());
 
@@ -3956,7 +3956,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
 //            logger.info("修改查询用户:" + externalcontact);
             List<FollowUser> followUsers = contactResult.getFollow_user();
             for (FollowUser followUser : followUsers) {
-                if (followUser.getUserid().equals(qwUser.getQwOpenUserid())) {
+                if (followUser.getUserid().equals(qwUser.getQwOpenUserId())) {
                     QwExternalContact qwExternalContact1 = qwExternalContactMapper.selectQwExternalContactUserIdAndExternalIdAndCompanyId(externalUserID, userID, corpId);
                     if (qwExternalContact1 != null) {
 

+ 2 - 1
fs-service/src/main/java/com/fs/qwApi/service/impl/QwApiServiceImpl.java

@@ -947,6 +947,7 @@ public class QwApiServiceImpl implements QwApiService {
             HttpResponse response = httpClient.execute(httpPost);
             String reJson = EntityUtils.toString(response.getEntity());
             JSONObject jsonObject = JSON.parseObject(reJson);
+            log.info("转换UserId,传参:{},结果:{}",json,reJson);
             String openUserIdListStr = jsonObject.getString("open_userid_list");
             if (StringUtils.isNotBlank(openUserIdListStr)) {
                 List<HashMap> openUserIdList = JSONObject.parseArray(openUserIdListStr, HashMap.class);
@@ -1234,7 +1235,7 @@ public class QwApiServiceImpl implements QwApiService {
             HttpPost httpPost  = new HttpPost(uri);
             HttpResponse response = httpClient.execute(httpPost);
             String reJson = EntityUtils.toString(response.getEntity());
-            log.info("接口返回数据:{}", reJson);
+            log.info("接口返回数据:{},原userId:{},传入userId:{}", reJson,userid,transUserId);
             JSONObject jsonObject = JSON.parseObject(reJson);
             name = jsonObject.getString("name");
 

+ 6 - 3
fs-service/src/main/java/com/fs/statis/service/impl/FsStatisSalerWatchServiceImpl.java

@@ -347,11 +347,14 @@ public class FsStatisSalerWatchServiceImpl implements FsStatisSalerWatchService
         fsStatisSalerWatchMapper.deleteDateData(date);
 
         // -------开始计算-------------
-        fsStatisTempParamMapper.batchSave(list);
-        fsStatisTempParamMapper.batchSaveToSop(list);
+        if (!list.isEmpty()) {
+            fsStatisTempParamMapper.batchSave(list);
+            fsStatisTempParamMapper.batchSaveToSop(list);
 
-        log.info("list 大小{}",list.size());
+            log.info("list 大小{}",list.size());
 
+
+        }
         // 根据临时表生成数据
         fsStatisSalerWatchMapper.generateData(date);
 

+ 4 - 4
fs-service/src/main/resources/mapper/qw/QwUserMapper.xml

@@ -7,7 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <resultMap type="QwUser" id="QwUserResult">
         <result property="id"    column="id"    />
         <result property="qwUserId"    column="qw_user_id"    />
-        <result property="qwOpenUserid"    column="qw_open_user_id"    />
+        <result property="qwOpenUserId"    column="qw_open_user_id"    />
         <result property="qwUserName"    column="qw_user_name"    />
         <result property="department"    column="department"    />
         <result property="openid"    column="openid"    />
@@ -95,7 +95,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         insert into qw_user
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="qwUserId != null">qw_user_id,</if>
-            <if test="qwOpenUserid != null">qw_open_user_id,</if>
+            <if test="qwOpenUserId != null">qw_open_user_id,</if>
             <if test="qwUserName != null">qw_user_name,</if>
             <if test="department != null">department,</if>
             <if test="openid != null">openid,</if>
@@ -126,7 +126,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="qwUserId != null">#{qwUserId},</if>
-            <if test="qwOpenUserid != null">#{qwOpenUserid},</if>
+            <if test="qwOpenUserId != null">#{qwOpenUserId},</if>
             <if test="qwUserName != null">#{qwUserName},</if>
             <if test="department != null">#{department},</if>
             <if test="openid != null">#{openid},</if>
@@ -159,7 +159,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         update qw_user
         <trim prefix="SET" suffixOverrides=",">
             <if test="qwUserId != null">qw_user_id = #{qwUserId},</if>
-            <if test="qwOpenUserid != null">qw_open_user_id = #{qwOpenUserid},</if>
+            <if test="qwOpenUserId != null">qw_open_user_id = #{qwOpenUserId},</if>
             <if test="qwUserName != null">qw_user_name = #{qwUserName},</if>
             <if test="department != null">department = #{department},</if>
             <if test="openid != null">openid = #{openid},</if>