Ver Fonte

Merge remote-tracking branch 'origin/master_feat_ysy_20250929' into master_feat_ysy_20250929

wjj há 5 dias atrás
pai
commit
8abe011a54

+ 49 - 1
fs-company/src/main/java/com/fs/company/controller/qw/QwAcquisitionLinkInfoController.java

@@ -218,6 +218,54 @@ public class QwAcquisitionLinkInfoController extends BaseController
         }
     }
 
+    /**
+     * 提取链接 -正常的获客
+     *
+     * @param params 包含 id, url 的参数
+     * @return 生成的文本内容
+     */
+    @PostMapping("/extractLinkNol")
+    public AjaxResult extractLinkNol(@RequestBody Map<String, Object> params) {
+        try {
+            // 参数校验
+            Long qwAcquisitionAssistantId = null;
+            String phone = null;
+            String url = null;
+
+            if (params.get("id") != null) {
+                qwAcquisitionAssistantId = Long.valueOf(params.get("id").toString());
+            }
+
+            if (params.get("url") != null) {
+                url = params.get("url").toString();
+            }
+
+            if (qwAcquisitionAssistantId == null) {
+                return AjaxResult.error("获客链接ID不能为空");
+            }
+            if (StringUtils.isEmpty(url)) {
+                return AjaxResult.error("获客链接URL不能为空");
+            }
+
+            // 获取当前登录用户信息
+            LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+            if (loginUser == null || loginUser.getCompany() == null) {
+                throw new CustomException("请登录");
+            }
+            // 调用服务层方法生成短链接文本
+            String resultText = qwAcquisitionLinkInfoService.extractLinkNol(qwAcquisitionAssistantId, url,loginUser.getCompany().getCompanyId());
+
+            return AjaxResult.success(resultText);
+
+        } catch (CustomException e) {
+            log.error("提取链接失败: {}", e.getMessage());
+            return AjaxResult.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("提取链接异常", e);
+            return AjaxResult.error("服务器内部错误: " + e.getMessage());
+        }
+    }
+
     /**
      * 批量生成多手机号短链
      * */
@@ -398,4 +446,4 @@ public class QwAcquisitionLinkInfoController extends BaseController
                 return "";
         }
     }
-}
+}

+ 2 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreCouponIssueScrmMapper.java

@@ -83,6 +83,7 @@ public interface FsStoreCouponIssueScrmMapper
             "update fs_store_coupon_issue_scrm  set remain_count=(select ifnull(count(1),0) from fs_store_coupon_issue_user_scrm where issue_id=#{id}) where id=#{id}  " +
             "</script>"})
     void updateFsStoreCouponIssueCount(Long id);
+
     @Select({"<script> " +
             "select i.*,c.coupon_price,c.use_min_price,c.coupon_time   from fs_store_coupon_issue_scrm i left join fs_store_coupon_scrm c on c.coupon_id=i.coupon_id  " +
             "where i.limit_time &gt; now() and i.is_del=0 and i.status=1   " +
@@ -98,6 +99,7 @@ public interface FsStoreCouponIssueScrmMapper
             " order by c.coupon_price desc "+
             "</script>"})
     List<FsStoreCouponIssueVO> getCompanyCouponIssueList(@Param("maps") FsCouponIssueParam map);
+
     @Select({"<script> " +
             "select i.*,c.coupon_price,c.use_min_price,c.coupon_time  from fs_store_coupon_issue_scrm i left join fs_store_coupon_scrm c on c.coupon_id=i.coupon_id  " +
             "where i.id=#{id}  order by c.coupon_price desc " +

+ 2 - 1
fs-service/src/main/java/com/fs/qw/service/IQwAcquisitionLinkInfoService.java

@@ -96,9 +96,10 @@ public interface IQwAcquisitionLinkInfoService
      * 根据手机号生成单个获客链接
      * */
     String extractLink(Long qwAcquisitionAssistantId, String originalPhone, String originalLink,Long createBy);
+    String extractLinkNol(Long qwAcquisitionAssistantId, String originalLink,Long createBy);
 
     /**
      * iPad盲加好友
      * */
     void ipadBlindAdd(IpadBlindAddDto dto,SendMsgLogBo sendMsgLogBo);
-}
+}

+ 27 - 1
fs-service/src/main/java/com/fs/qw/service/impl/QwAcquisitionLinkInfoServiceImpl.java

@@ -92,6 +92,7 @@ public class QwAcquisitionLinkInfoServiceImpl implements IQwAcquisitionLinkInfoS
     }
     //拼接电话号码的链接后缀(这个后面拼接加密后的手机字符串)
     private static final String  LINK_SUFFIX = "?customer_channel=up:";
+    private static final String  LINK_SUFFIX_NOL = "?customer_channel=link:";
 
     // 企微加好友链接-url的key
     private static final String QW_FRIEND_LINK_URL_KEY = "qw_friend_link_url:";
@@ -590,6 +591,31 @@ public class QwAcquisitionLinkInfoServiceImpl implements IQwAcquisitionLinkInfoS
         return LINK_DOMAIN+randomStr;
     }
 
+    @Override
+    public String extractLinkNol(Long qwAcquisitionAssistantId, String originalLink, Long createBy) {
+        String randomStr = generateUniqueRandomStr();
+        QwAcquisitionLinkInfo qwAcquisitionLinkInfo=new QwAcquisitionLinkInfo();
+        qwAcquisitionLinkInfo.setQwAcquisitionAssistantId(qwAcquisitionAssistantId);
+        qwAcquisitionLinkInfo.setCreateBy(createBy);
+        qwAcquisitionLinkInfo.setCreateTime(DateUtils.getTime());
+        String linkPlus=originalLink+LINK_SUFFIX_NOL+ qwAcquisitionAssistantId;
+        qwAcquisitionLinkInfo.setLink(linkPlus);
+        qwAcquisitionLinkInfo.setRandomStr(randomStr);
+        int addResult=qwAcquisitionLinkInfoMapper.insertQwAcquisitionLinkInfo(qwAcquisitionLinkInfo);
+        // ========== 缓存URL,便于后续通过randomStr访问 ==========
+        try {
+            String cacheKey = QW_FRIEND_LINK_URL_KEY + randomStr;
+            Integer cacheExpire = 2; // 默认缓存2天
+            redisCache.setCacheObject(cacheKey, linkPlus, cacheExpire, TimeUnit.DAYS);
+            log.info("获客链接URL缓存成功, pageParam: {}, url: {}", randomStr, linkPlus);
+        } catch (Exception e) {
+            // 缓存失败不影响主流程,但需要记录日志
+            log.error("获客链接URL缓存失败, pageParam: {}", randomStr, e);
+        }
+        // 返回域名+随机字符串
+        return LINK_DOMAIN+randomStr;
+    }
+
     @Override
     public void ipadBlindAdd(IpadBlindAddDto dto,SendMsgLogBo sendMsgLogBo) {
         //获取QwUser信息
@@ -790,4 +816,4 @@ public class QwAcquisitionLinkInfoServiceImpl implements IQwAcquisitionLinkInfoS
         private String phone;
         private String failReason;
     }
-}
+}