ソースを参照

新飞书逻辑

cgp 1 日 前
コミット
23dc12a246

+ 0 - 1
fs-company/src/main/java/com/fs/company/controller/qw/FeishuAccountController.java

@@ -17,7 +17,6 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.List;
-import java.util.Objects;
 
 /**
  * 飞书应用账号管理 Controller

+ 3 - 3
fs-company/src/main/java/com/fs/company/controller/qw/FsCompanyCustomerController.java

@@ -463,10 +463,10 @@ public class FsCompanyCustomerController extends BaseController {
      * */
     @GetMapping("/getQRCode/{orderId}")
     public R getQRCode(@PathVariable("orderId") Long orderId){
-        throw new CustomException("功能维护中,请使用物流代收");
+        //throw new CustomException("功能维护中,请使用物流代收");
         //获取appId
-//        String appId = getAppId();
-//        return informationCollectionService.getCustomerGenerateQRCode(orderId,appId);
+        String appId = getAppId();
+        return informationCollectionService.getCustomerGenerateQRCode(orderId,appId);
     }
 
     @GetMapping(value = "/getAddress")

+ 7 - 3
fs-ipad-task/src/main/java/com/fs/app/service/IpadSendServer.java

@@ -333,6 +333,9 @@ public class IpadSendServer {
         if ("18".equals(content.getContentType())){
             // 完善content里面的飞书注册链接
             completeFeishuRegisterLink(vo, content,qwSopLogs, externalId,qwUserId);
+        }else if ("20".equals(content.getContentType())){
+            // 新飞书逻辑
+            completeFeishuCourseLink(vo, content,qwSopLogs, externalId,qwUserId);
         }
         // 文本
         LinkVo linkVo = LinkVo.builder()
@@ -370,7 +373,7 @@ public class IpadSendServer {
             String docIdKey=FEISHU_DOC_ID + externalId+ "_" + videoId;
             String feiShuDocId = redisCache.getCacheObject(docIdKey);
             if (StringUtils.isBlank(feiShuDocId)) {
-                log.error("未命中飞书缓存key:{}",docIdKey);
+                log.error("新飞书-未命中飞书缓存key:{}",docIdKey);
                 //如果缓存中的docId为空,则调用飞书API直接获取完整飞书链接
                 FeishuLinkParam param=new FeishuLinkParam();
                 param.setCompanyId(companyId);
@@ -385,7 +388,7 @@ public class IpadSendServer {
                 qwSopLogsService.updateLinkUrlInContentJson(qwSopLogs, feishuRegisterLink);
                 return content;
             }
-            log.error("命中飞书课程链接缓存key:{}",docIdKey);
+            log.error("新飞书-命中飞书课程链接缓存key:{}",docIdKey);
             //根据虚拟飞书链接组装真实飞书链接
             String completeFeiShuLinkUrl = replaceShortLinkInUrl(initUrl, feiShuDocId);
             String amountKey = FEISHU_CLIENT+feiShuDocId;
@@ -412,7 +415,7 @@ public class IpadSendServer {
 
             return content;
         }catch (Exception e){
-            log.error("ID:{}-完善飞书课程链接异常:{}", vo.getId(), e.getMessage());
+            log.error("ID:{}-新飞书完善飞书课程链接异常:{}", vo.getId(), e.getMessage());
         }
         return content;
     }
@@ -882,6 +885,7 @@ public class IpadSendServer {
                     }
                     break;
                 case "18":
+                case "20":
                     // 链接
                     sendLink(vo, content,qwSopLogs,externalUserId,qwUser.getId());
                     break;

+ 1 - 1
fs-qw-task/src/main/java/com/fs/app/taskService/impl/SopLogsTaskServiceImpl.java

@@ -1220,6 +1220,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                     break;
 
                 case "18" :
+                case "20" :
                     //飞书看课链接
                     Long companyIdLong = Long.parseLong(companyId);
                     Long companyUserIdLong = Long.parseLong(companyUserId);
@@ -1236,7 +1237,6 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
 
                     //3.调用生成飞书注册授权链接(这个是在ipad发送时取缓存的docId)
                     String feishuLink = feiShuService.getNewFeishuRegisterLink(videoId,companyIdLong,courseId,companyUserIdLong,shortLink);
-//                    String feishuLink = feiShuService.getFeishuRegisterLink(videoId,companyIdLong,courseId,companyUserIdLong,shortLink);
                     if (StringUtils.isNotEmpty(feishuLink)) {
                         setting.setLinkUrl(feishuLink);
                     }

+ 14 - 13
fs-service/src/main/java/com/fs/feishu/service/FeiShuService.java

@@ -85,16 +85,6 @@ public class FeiShuService {
         return feishuAccounts;
     }
 
-    /**
-     * 清理销售个人飞书账号缓存
-     * */
-    private void clearCompanyUserCache(Long companyId, Long companyUserId) {
-        if (companyId != null && companyUserId != null) {
-            String cacheKey = FEISHU_COMPANY_USER_KEY + companyId + ":" + companyUserId;
-            redisCache.deleteObject(cacheKey);
-        }
-    }
-
 
     public String getNewFeishuRegisterLink(Long videoId, Long companyId, Long courseId,
                                         Long companyUserId, String shortLink) {
@@ -217,7 +207,7 @@ public class FeiShuService {
 
 
 
-    // ==================== 生成新版飞书课程链接(无授权流程,直接是看课界面) ====================
+    // ==================== 生成新版飞书课程链接(无授权流程,进入即是看课界面) ====================
 
     public String getFeishuCoursePageLink(FeishuLinkParam param) {
         String courseLinkKey = String.format("feishu:course_link:%d:%d:%d:%d:%d:%s",
@@ -251,10 +241,10 @@ public class FeiShuService {
                     //有视频短链+外部联系人id,需要缓存docId和account
                     if (fsCourseLink.getQwExternalId()!=null){
                         String docIdKey=FEISHU_DOC_ID + fsCourseLink.getQwExternalId()+ "_" + param.getVideoId();
-                        redisCache.setCacheObject(docIdKey, docId);//30天过期
+                        redisCache.setCacheObject(docIdKey, docId);
                         String accountKey = FEISHU_CLIENT+docId;
                         account.setCourseFillFlag(Boolean.TRUE);//这里要记录一下课程内容已填充
-                        redisCache.setCacheObject(accountKey, account);;//30天过期
+                        redisCache.setCacheObject(accountKey, account);
                     }
                     String result = "https://www.feishu.cn/docx/" + docId;
                     redisCache.setCacheObject(courseLinkKey, result, 72, TimeUnit.HOURS);
@@ -455,6 +445,17 @@ public class FeiShuService {
         feishuAccountMapper.updateStatusAndErrorMsg(account.getId(), 0, errorMsg);
         clearCompanyUserCache(account.getCompanyId(), account.getCompanyUserId());
     }
+
+    /**
+     * 清理销售个人飞书账号缓存
+     * */
+    private void clearCompanyUserCache(Long companyId, Long companyUserId) {
+        if (companyId != null && companyUserId != null) {
+            String cacheKey = FEISHU_COMPANY_USER_KEY + companyId + ":" + companyUserId;
+            redisCache.deleteObject(cacheKey);
+        }
+    }
+
     //记录错误
     @Transactional(propagation = Propagation.REQUIRES_NEW)
     public void recordLinkError(Long videoId, Long companyId, Long courseId,

+ 4 - 0
fs-service/src/main/java/com/fs/his/domain/FsPrescribeDataScrm.java

@@ -205,4 +205,8 @@ public class FsPrescribeDataScrm extends BaseEntity {
 
     /** 销售id */
     private Long companyUserId;
+    /**
+     * 药食同源 选中为true否则为false
+     * */
+    private Boolean foodAsMedicine;
 }

+ 5 - 0
fs-service/src/main/java/com/fs/his/dto/BeforePrescribeAddDoctorAdviceDTO.java

@@ -39,4 +39,9 @@ public class BeforePrescribeAddDoctorAdviceDTO {
      * 不建议使用 选中为true否则为false
      * */
     private Boolean notRecommendUse;
+
+    /**
+     * 药食同源 选中为true否则为false
+     * */
+    private Boolean foodAsMedicine;
 }

+ 10 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsPrescribeDataScrmServiceImpl.java

@@ -106,6 +106,11 @@ public class FsPrescribeDataScrmServiceImpl implements IFsPrescribeDataScrmServi
      * */
     private static final Integer NOT_RECOMMEND_USE = 8;
 
+    /**
+     * 不适合用药
+     * */
+    private static final Integer FOOD_AS_MEDICINE = 9;
+
     // ==================== 基础 CRUD ====================
     @Override
     public FsPrescribeDataScrm selectFsPrescribeDataScrmByPrescribeId(Long prescribeId) {
@@ -290,6 +295,11 @@ public class FsPrescribeDataScrmServiceImpl implements IFsPrescribeDataScrmServi
             fsPrescribeDataScrm.setNotPrescribeReason("不适合用药");
             // 更新客户信息表状态为不适合用药
             updateCustomerStatus(fsPrescribeDataScrm.getPrescribeId(), NOT_RECOMMEND_USE);
+        }else if (addDoctorAdviceDTO.getFoodAsMedicine() != null && addDoctorAdviceDTO.getFoodAsMedicine()){
+            // 处理"药食同源"处方
+            fsPrescribeDataScrm.setDoctorConfirm(2);//药食同源
+            // 更新客户信息表状态为"药食同源"
+            updateCustomerStatus(fsPrescribeDataScrm.getPrescribeId(), FOOD_AS_MEDICINE);
         }
         return fsPrescribeDataScrmMapper.updateFsPrescribeDataScrm(fsPrescribeDataScrm);
     }

+ 8 - 8
fs-service/src/main/java/com/fs/sop/service/impl/SopUserLogsInfoServiceImpl.java

@@ -702,6 +702,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                                 break;
                             //飞书看课
                             case "18":
+                            case "20":
                                 // 参数转换
                                 Integer videoId = param.getVideoId() != null ? param.getVideoId().intValue() : null;
                                 Integer courseId = param.getCourseId() != null ? param.getCourseId().intValue() : null;
@@ -718,8 +719,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                                 //获取生成的课程短链码
                                 String shortCode = feishuH5Link.get("link");
 
-                                //3.调用生成飞书注册授权链接
-//                                String feishuLink = feiShuService.getFeishuRegisterLink(videoId.longValue(), companyIdLong, courseId.longValue(), companyUserIdLong,shortCode);
+                                //3.调用生成飞书伪链接
                                 String feishuLink = feiShuService.getNewFeishuRegisterLink(videoId.longValue(), companyIdLong, courseId.longValue(), companyUserIdLong,shortCode);
 
                                 if (StringUtils.isNotEmpty(feishuLink)) {
@@ -872,6 +872,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                                 break;
                             //飞书看课
                             case "18":
+                            case "20":
                                 // 参数转换
                                 Integer videoId = param.getVideoId() != null ? param.getVideoId().intValue() : null;
                                 Integer courseId = param.getCourseId() != null ? param.getCourseId().intValue() : null;
@@ -887,8 +888,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                                 //获取生成的课程短链码
                                 String shortCode = feishuH5Link.get("link");
 
-                                //3.调用生成飞书注册授权链接
-//                                String feishuLink = feiShuService.getFeishuRegisterLink(videoId.longValue(), companyIdLong, courseId.longValue(), companyUserIdLong,shortCode);
+                                //3.调用生成飞书伪链接
                                 String feishuLink = feiShuService.getNewFeishuRegisterLink(videoId.longValue(), companyIdLong, courseId.longValue(), companyUserIdLong,shortCode);
 
                                 if (StringUtils.isNotEmpty(feishuLink)) {
@@ -1203,6 +1203,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                             break;
                         //飞书看课
                         case "18":
+                        case "20":
                             // 参数转换
                             Integer videoId = param.getVideoId() != null ? param.getVideoId().intValue() : null;
                             Integer courseId = param.getCourseId() != null ? param.getCourseId().intValue() : null;
@@ -1237,8 +1238,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                             //获取生成的课程短链码
                             String shortCode = feishuH5Link.get("link");
 
-                            //3.调用生成飞书注册授权链接
-//                            String feishuLink = feiShuService.getFeishuRegisterLink(videoId.longValue(), companyIdLong, courseId.longValue(), companyUserIdLong,shortCode);
+                            //3.调用生成飞书伪链接
                             String feishuLink = feiShuService.getNewFeishuRegisterLink(videoId.longValue(), companyIdLong, courseId.longValue(), companyUserIdLong,shortCode);
 
                             if (StringUtils.isNotEmpty(feishuLink)) {
@@ -1896,6 +1896,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                     break;
                 //飞书看课
                 case "18":
+                case "20":
                     // 参数转换
                     Integer videoId = param.getVideoId() != null ? param.getVideoId().intValue() : null;
                     Integer courseId = param.getCourseId() != null ? param.getCourseId().intValue() : null;
@@ -1930,8 +1931,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                     //获取生成的课程短链码
                     String shortLink = feishuH5Link.get("link");
                     log.info("课程短链接生成成功:{}", shortLink);
-                    //3.调用生成飞书注册授权链接
-//                    String feishuLink = feiShuService.getFeishuRegisterLink(videoId.longValue(), companyIdLong, courseId.longValue(), companyUserIdLong,shortLink);
+                    //3.调用生成飞书伪链接
                     String feishuLink = feiShuService.getNewFeishuRegisterLink(videoId.longValue(), companyIdLong, courseId.longValue(), companyUserIdLong,shortLink);
 
                     if (StringUtils.isNotEmpty(feishuLink)) {