Ver Fonte

在职转接提示词优化2.0

xw há 1 dia atrás
pai
commit
59ac5dd2a1

+ 10 - 2
fs-admin/src/main/java/com/fs/qw/controller/QwExternalContactController.java

@@ -50,6 +50,7 @@ import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.enums.BusinessType;
 import com.fs.qw.domain.QwExternalContact;
 import com.fs.qw.service.IQwExternalContactService;
+import com.fs.qw.service.IQwUserServiceAsyncHelper;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.system.service.ISysConfigService;
@@ -91,6 +92,9 @@ public class QwExternalContactController extends BaseController
     @Autowired
     private ISysConfigService configService;
 
+    @Autowired
+    private IQwUserServiceAsyncHelper qwUserServiceAsyncHelper;
+
     QwExternalContactController(IQwExternalContactService qwExternalContactService,IQwTagService iQwTagService){
         this.qwExternalContactService=qwExternalContactService;
         this.iQwTagService=iQwTagService;
@@ -393,7 +397,9 @@ public class QwExternalContactController extends BaseController
             }
         }
 
-        return qwExternalContactService.resignedTransfer(param);
+        qwUserServiceAsyncHelper.resignedTransfer(param);
+        int count = param.getIds() != null ? param.getIds().size() : 0;
+        return R.ok("转接任务已提交,共 " + count + " 人,完成后请留意转接通知");
     }
     /**
      * 在职转接 分配客户
@@ -414,6 +420,8 @@ public class QwExternalContactController extends BaseController
                 param.setIds(ids);
             }
         }
-        return qwExternalContactService.transfer(param);
+        qwUserServiceAsyncHelper.transfer(param);
+        int count = param.getIds() != null ? param.getIds().size() : 0;
+        return R.ok("转接任务已提交,共 " + count + " 人,完成后请留意转接通知");
     }
 }

+ 4 - 2
fs-company/src/main/java/com/fs/company/controller/qw/QwExternalContactController.java

@@ -535,7 +535,8 @@ public class QwExternalContactController extends BaseController
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setOperatorCompanyUserId(loginUser.getUser().getUserId());
         param.setCompanyId(loginUser.getCompany().getCompanyId());
-        return qwExternalContactService.resignedTransfer(param);
+        qwUserServiceAsyncHelper.resignedTransfer(param);
+        return R.ok("转接任务已提交,共 " + param.getIds().size() + " 人,完成后请留意转接通知");
     }
 
     /**
@@ -555,7 +556,8 @@ public class QwExternalContactController extends BaseController
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setOperatorCompanyUserId(loginUser.getUser().getUserId());
         param.setCompanyId(loginUser.getCompany().getCompanyId());
-        return qwExternalContactService.transfer(param);
+        qwUserServiceAsyncHelper.transfer(param);
+        return R.ok("转接任务已提交,共 " + param.getIds().size() + " 人,完成后请留意转接通知");
     }
     /**
      * 修改企业微信客户

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

@@ -1417,19 +1417,49 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
         StringBuilder sb = new StringBuilder();
         sb.append("转接成功:").append(stats.suc).append(",转接失败:").append(stats.err);
         if (!stats.failures.isEmpty()) {
+            Map<Integer, List<String>> grouped = new LinkedHashMap<>();
+            for (TransferFailureDetail detail : stats.failures) {
+                grouped.computeIfAbsent(detail.getCode(), k -> new ArrayList<>()).add(detail.getCustomerName());
+            }
             sb.append("。失败原因:");
-            for (int i = 0; i < stats.failures.size(); i++) {
-                TransferFailureDetail detail = stats.failures.get(i);
-                if (i > 0) {
-                    sb.append("");
+            int groupIndex = 0;
+            for (Map.Entry<Integer, List<String>> entry : grouped.entrySet()) {
+                if (groupIndex > 0) {
+                    sb.append("");
                 }
-                sb.append(detail.getCustomerName()).append("(").append(detail.getCode()).append(")");
+                sb.append("【").append(getTransferFailReasonLabel(entry.getKey())).append("】");
+                sb.append(String.join("、", entry.getValue()));
+                groupIndex++;
             }
             sb.append(";");
         }
         return sb.toString();
     }
 
+    private String getTransferFailReasonLabel(int code) {
+        switch (code) {
+            case 40128:
+                return "客户转接过于频繁(90个自然日内,在职成员的每位客户仅可被转接2次)";
+            case 40129:
+                return "当前客户正在转接中";
+            case 40130:
+                return "原跟进人与接手人一样,不可继承";
+            case 40143:
+                return "转接成员被封禁,无法进行客户继承操作";
+            case 84061:
+                return "没有好友关系";
+            case -1:
+                return "客户不存在";
+            case -2:
+                return "接替人与当前负责人相同";
+            case -3:
+                return "企微接口请求失败";
+            default:
+                String msg = getErrorMsg(code);
+                return msg.equals(String.valueOf(code)) ? String.valueOf(code) : msg;
+        }
+    }
+
     private static class TransferFailureDetail {
         private final String customerName;
         private final int code;

+ 14 - 142
fs-service/src/main/java/com/fs/qw/service/impl/QwUserServiceAsyncHelperImpl.java

@@ -1075,81 +1075,18 @@ public class QwUserServiceAsyncHelperImpl implements IQwUserServiceAsyncHelper {
 
 
     /**
-     * 企业微信客户
-     *
-     * @param param
+     * 企业微信客户 - 异步在职转接
      */
     @Override
     @Async
     public void transfer(TransferParam param) {
         try {
-            log.info("开始分配客户Async");
-            QwUser qwUser = qwUserMapper.selectQwUserById(param.getUserId());
-            Integer err = 0;
-            Integer suc = 0;
-            if (qwUser != null) {
-                List<Long> ids = param.getIds();
-                for (Long id : ids) {
-                    QwExternalContact qwExternalContact = qwExternalContactMapper.selectQwExternalContactById(id);
-                    if (qwExternalContact == null || qwExternalContact.getUserId().equals(qwUser.getQwUserId())) {
-                        err++;
-                    } else {
-                        QwTransferCustomerParam qwTransferCustomerParam = new QwTransferCustomerParam();
-                        String content = param.getContent();
-                        if (content == null || content.isEmpty()) {
-                            content = "您好,您的服务已升级,后续将由我的同事接替我的工作,继续为您服务。";
-                        }
-                        qwTransferCustomerParam.setTransfer_success_msg(content);
-                        qwTransferCustomerParam.setHandover_userid(qwExternalContact.getUserId());
-                        qwTransferCustomerParam.setTakeover_userid(qwUser.getQwUserId());
-                        qwTransferCustomerParam.setExternal_userid(Arrays.asList(qwExternalContact.getExternalUserId()));
-                        QwTransferCustomerResult qwTransferCustomerResult = qwApiService.transferCustomer(qwTransferCustomerParam, param.getCorpId());
-
-                        if (qwTransferCustomerResult.getErrcode() == 0) {
-                            List<QwCustomer> customer = qwTransferCustomerResult.getCustomer();
-                            if (customer != null && customer.size() > 0) {
-                                for (QwCustomer qwCustomer : customer) {
-                                    if (qwCustomer.getErrcode() == 0) {
-                                        QwExternalContactTransferLog qwExternalContactTransferLog = new QwExternalContactTransferLog();
-                                        // qwExternalContactTransferLog.setCompanyId(param.getCorpId());
-                                        qwExternalContactTransferLog.setExternalContactId(id);
-                                        qwExternalContactTransferLog.setCompanyUserId(qwExternalContact.getCompanyUserId());
-                                        qwExternalContactTransferLog.setCreateTime(new Date());
-                                        qwExternalContactTransferLog.setStatus(2);
-                                        qwExternalContactTransferLog.setQwUserId(qwUser.getId());
-                                        qwExternalContactTransferLog.setHandoverUserId(qwExternalContact.getUserId());
-                                        qwExternalContactTransferLog.setTakeoverUserId(qwUser.getQwUserId());
-                                        qwExternalContactTransferLog.setCorpId(param.getCorpId());
-                                        qwExternalContactTransferLog.setExternalUserId(qwCustomer.getExternal_userid());
-                                        qwExternalContactTransferLog.setHandoverQwUserId(qwExternalContact.getQwUserId());
-                                        qwExternalContactTransferLog.setNeedClearTag(param.getNeedClearTag());
-                                        qwExternalContactTransferLog.setFsUserId(qwExternalContact.getFsUserId());
-                                        qwExternalContactTransferLogMapper.insertQwExternalContactTransferLog(qwExternalContactTransferLog);
-                                        QwExternalContact qwExternal = new QwExternalContact();
-                                        qwExternal.setStatus(2);
-                                        qwExternal.setTransferStatus(2);
-                                        qwExternal.setId(qwExternalContact.getId());
-                                        qwExternalContactMapper.updateQwExternalContact(qwExternal);
-                                        suc++;
-                                    } else {
-                                        err++;
-                                    }
-                                }
-                            } else {
-                                err++;
-                            }
-                        } else {
-                            logger.error("在职转接失败-" + qwTransferCustomerResult.getErrmsg() + "|" + param.getCorpId());
-                            err++;
-                        }
-                    }
-                }
-            }
-            log.info("在职转接 分配客户成功");
-            log.info("接替成功:" + suc + ",接替失败:" + err);
+            int size = param.getIds() != null ? param.getIds().size() : 0;
+            log.info("开始异步在职转接,客户数:{}", size);
+            qwExternalContactService.transfer(param);
+            log.info("异步在职转接完成,客户数:{}", size);
         } catch (Exception e) {
-            e.printStackTrace();
-            log.info("在职转接 分配客户失败");
+            log.error("异步在职转接失败", e);
         }
     }
 
@@ -1191,84 +1128,19 @@ public class QwUserServiceAsyncHelperImpl implements IQwUserServiceAsyncHelper {
 
     }
 
+    /**
+     * 企业微信客户 - 异步离职转接
+     */
     @Override
     @Async
     public void resignedTransfer(ResignedTransferParam param) {
         try {
-
-            log.info("离职继承分配客户Async");
-
-            QwUser qwUser = qwUserMapper.selectQwUserById(param.getUserId());
-            Integer err = 0;
-            Integer suc = 0;
-            if (qwUser != null) {
-                List<Long> ids = param.getIds();
-                for (Long id : ids) {
-                    QwExternalContact qwExternalContact = qwExternalContactMapper.selectQwExternalContactById(id);
-
-                    if (qwExternalContact == null || qwExternalContact.getUserId().equals(qwUser.getQwUserId())) {
-                        err++;
-                    } else {
-                        QwTransferCustomerResignedParam qwTransferCustomerParam = new QwTransferCustomerResignedParam();
-                        qwTransferCustomerParam.setHandover_userid(qwExternalContact.getUserId());
-                        qwTransferCustomerParam.setTakeover_userid(qwUser.getQwUserId());
-                        qwTransferCustomerParam.setExternal_userid(Arrays.asList(qwExternalContact.getExternalUserId()));
-                        QwTransferCustomerResignedResult qwTransferCustomerResignedParam = qwApiService.resignedTransferCustomer(qwTransferCustomerParam, param.getCorpId());
-
-                        if (qwTransferCustomerResignedParam.getErrcode() == 0) {
-                            List<QwCustomer> customer = qwTransferCustomerResignedParam.getCustomer();
-                            if (customer != null && customer.size() > 0) {
-                                for (QwCustomer qwCustomer : customer) {
-                                    if (qwCustomer.getErrcode() == 0) {
-                                        QwExternalContactTransferLog qwExternalContactTransferLog = new QwExternalContactTransferLog();
-                                        // qwExternalContactTransferLog.setCompanyId(param.getCorpId());
-                                        qwExternalContactTransferLog.setExternalContactId(id);
-                                        qwExternalContactTransferLog.setCompanyUserId(qwExternalContact.getCompanyUserId());
-                                        qwExternalContactTransferLog.setCreateTime(new Date());
-                                        qwExternalContactTransferLog.setStatus(2);
-                                        qwExternalContactTransferLog.setQwUserId(qwUser.getId());
-                                        qwExternalContactTransferLog.setHandoverUserId(qwExternalContact.getUserId());
-                                        qwExternalContactTransferLog.setTakeoverUserId(qwUser.getQwUserId());
-                                        qwExternalContactTransferLog.setCorpId(param.getCorpId());
-                                        qwExternalContactTransferLog.setExternalUserId(qwCustomer.getExternal_userid());
-                                        qwExternalContactTransferLog.setHandoverQwUserId(qwExternalContact.getQwUserId());
-                                        qwExternalContactTransferLog.setNeedClearTag(param.getNeedClearTag());
-                                        qwExternalContactTransferLog.setFsUserId(qwExternalContact.getFsUserId());
-                                        qwExternalContactTransferLogMapper.insertQwExternalContactTransferLog(qwExternalContactTransferLog);
-                                        QwExternalContact qwExternal = new QwExternalContact();
-                                        qwExternal.setStatus(2);
-                                        qwExternal.setTransferStatus(2);
-                                        qwExternal.setId(qwExternalContact.getId());
-                                        qwExternalContactMapper.updateQwExternalContact(qwExternal);
-                                        //查询是否绑定公司码
-                                        /*CompanyCompanyFsuser companyCompanyFsuser = companyCompanyFsuserMapper.getInfoByUserId(String.valueOf(qwExternalContact.getFsUserId()));
-                                        if (companyCompanyFsuser!=null){
-                                            //修改腕表客服
-                                            watchCompanyUserMapper.updateByCompanyUserId(qwUser.getCompanyUserId(),companyCompanyFsuser.getCompanyUserId());
-                                            //换绑公司码
-                                            companyCompanyFsuser.setCompanyUserId(qwUser.getCompanyUserId());
-                                            companyCompanyFsuser.setQwContactId(qwExternalContact.getId());
-                                            companyCompanyFsuserMapper.updateCompanyCompanyUser(companyCompanyFsuser);
-                                        }*/
-                                        suc++;
-                                    } else {
-                                        err++;
-                                    }
-                                }
-                            } else {
-                                err++;
-                            }
-                        } else {
-                            err++;
-                        }
-                    }
-                }
-            }
-            log.info("接替成功:" + suc + ",接替失败:" + err);
-            log.info("离职继承分配客户成功");
+            int size = param.getIds() != null ? param.getIds().size() : 0;
+            log.info("开始异步离职转接,客户数:{}", size);
+            qwExternalContactService.resignedTransfer(param);
+            log.info("异步离职转接完成,客户数:{}", size);
         } catch (Exception e) {
-            e.printStackTrace();
-            log.info("离职继承分配客户失败");
+            log.error("异步离职转接失败", e);
         }
     }