Prechádzať zdrojové kódy

益寿缘-销售端-完善获客链接查询逻辑

cgp 1 mesiac pred
rodič
commit
01d4ec3b02

+ 18 - 2
fs-company/src/main/java/com/fs/company/controller/qw/QwAcquisitionLinkInfoController.java

@@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletResponse;
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.ServletUtils;
 import com.fs.common.utils.StringUtils;
+import com.fs.company.mapper.CompanyUserRoleMapper;
 import com.fs.framework.security.LoginUser;
 import com.fs.framework.service.TokenService;
 import com.fs.his.dto.SendResultDetailDTO;
@@ -48,6 +49,9 @@ public class QwAcquisitionLinkInfoController extends BaseController
     @Autowired
     private TokenService tokenService;
 
+    @Autowired
+    private CompanyUserRoleMapper roleMapper;
+
     @Autowired
     private IQwAcquisitionLinkInfoService qwAcquisitionLinkInfoService;
 
@@ -60,6 +64,13 @@ public class QwAcquisitionLinkInfoController extends BaseController
     @GetMapping("/list")
     public TableDataInfo list(QwAcquisitionLinkInfo qwAcquisitionLinkInfo)
     {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        qwAcquisitionLinkInfo.setCreateBy(loginUser.getUser().getUserId());
+        //管理员查看所有数据
+        Long isAdmin = roleMapper.companyUserIsAdmin(loginUser.getUser().getUserId());
+        if (isAdmin != null) {
+            qwAcquisitionLinkInfo.setCreateBy(null);
+        }
         startPage();
         List<QwAcquisitionLinkInfo> list = qwAcquisitionLinkInfoService.selectQwAcquisitionLinkInfoList(qwAcquisitionLinkInfo);
         return getDataTable(list);
@@ -191,7 +202,7 @@ public class QwAcquisitionLinkInfoController extends BaseController
                 throw new CustomException("请登录");
             }
             // 调用服务层方法生成短链接文本
-            String resultText = qwAcquisitionLinkInfoService.extractLink(qwAcquisitionAssistantId, phone, url);
+            String resultText = qwAcquisitionLinkInfoService.extractLink(qwAcquisitionAssistantId, phone, url,loginUser.getCompany().getCompanyId());
 
             return AjaxResult.success(resultText);
 
@@ -212,6 +223,11 @@ public class QwAcquisitionLinkInfoController extends BaseController
                                              @RequestParam("qwAcquisitionAssistantId") Long qwAcquisitionAssistantId,
                                              @RequestParam("qwAcquisitionAssistantUrl") String qwAcquisitionAssistantUrl) {
 
+        // 获取当前登录用户信息
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        if (loginUser == null || loginUser.getCompany() == null) {
+            throw new CustomException("请登录");
+        }
         // 1. 参数校验
         if (file == null || file.isEmpty()) {
             return AjaxResult.error("上传的文件不能为空");
@@ -242,7 +258,7 @@ public class QwAcquisitionLinkInfoController extends BaseController
             batchAddAcquisitionLinkDTO.setQwAcquisitionAssistantId(qwAcquisitionAssistantId);
             batchAddAcquisitionLinkDTO.setQwAcquisitionAssistantUrl(qwAcquisitionAssistantUrl);
             batchAddAcquisitionLinkDTO.setPhoneList(phoneList);
-
+            batchAddAcquisitionLinkDTO.setCreateBy(loginUser.getCompany().getCompanyId());
             // 5. 调用服务层方法处理
             int count = qwAcquisitionLinkInfoService.batchCreateMessageLink(batchAddAcquisitionLinkDTO);
 

+ 38 - 2
fs-service/src/main/java/com/fs/qw/domain/QwAcquisitionLinkInfo.java

@@ -1,7 +1,7 @@
 package com.fs.qw.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
-import com.fs.common.core.domain.BaseEntity;
 
 /**
  * 获客链接-号码链接生成记录对象 qw_acquisition_link_info
@@ -10,7 +10,7 @@ import com.fs.common.core.domain.BaseEntity;
  * @date 2026-03-27
  */
 @Data
-public class QwAcquisitionLinkInfo extends BaseEntity {
+public class QwAcquisitionLinkInfo{
     private static final long serialVersionUID = 1L;
 
     /**
@@ -38,4 +38,40 @@ public class QwAcquisitionLinkInfo extends BaseEntity {
      */
     private String randomStr;
 
+    /**
+     * 创建人
+     */
+    private Long createBy;
+
+    /**
+     * 创建时间
+     * */
+    private String createTime;
+
+    /**
+     * 更新人
+     */
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     * */
+    private String updateTime;
+
+    /**
+     * 备注
+     * */
+    private String remark;
+
+    /**
+     * 链接名称
+     * */
+    @TableField(exist = false)
+    private String linkName;
+
+    /**
+     * 创建人名称
+     * */
+    @TableField(exist = false)
+    private String createName;
 }

+ 5 - 0
fs-service/src/main/java/com/fs/qw/dto/BatchAddAcquisitionLinkDTO.java

@@ -7,6 +7,11 @@ import java.util.List;
 @Data
 public class BatchAddAcquisitionLinkDTO {
 
+    /**
+     * 创建人
+     */
+    private Long createBy;
+
     /**
      * 获客链接管理主键ID
      */

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

@@ -94,5 +94,5 @@ public interface IQwAcquisitionLinkInfoService
     /**
      * 根据手机号生成单个获客链接
      * */
-    String extractLink(Long qwAcquisitionAssistantId, String originalPhone, String originalLink);
+    String extractLink(Long qwAcquisitionAssistantId, String originalPhone, String originalLink,Long createBy);
 }

+ 4 - 4
fs-service/src/main/java/com/fs/qw/service/impl/QwAcquisitionAssistantServiceImpl.java

@@ -252,7 +252,7 @@ public class QwAcquisitionAssistantServiceImpl implements IQwAcquisitionAssistan
         // ========== 缓存URL,便于后续通过pageParam访问 ==========
         try {
             String cacheKey = QW_ACQUISITION_URL_KEY_PREFIX + randomParam;
-            Integer cacheExpire = 10; // 默认缓存10
+            Integer cacheExpire = 2; // 默认缓存2
             redisCache.setCacheObject(cacheKey, friendUrl, cacheExpire, TimeUnit.DAYS);
             log.info("获客链接URL缓存成功, pageParam: {}, url: {}", randomParam, friendUrl);
         } catch (Exception e) {
@@ -303,7 +303,7 @@ public class QwAcquisitionAssistantServiceImpl implements IQwAcquisitionAssistan
         redisCache.deleteObject(oldKey);
         String newPageParam =generateUniquePageParam();
         String newKey = QW_ACQUISITION_URL_KEY_PREFIX + newPageParam;
-        Integer cacheExpire = 10;//默认缓存10
+        Integer cacheExpire = 2;//默认缓存2
         redisCache.setCacheObject(newKey, existAssistant.getUrl(), cacheExpire, TimeUnit.DAYS);
 
         assistant.setPageParam(newPageParam);
@@ -416,8 +416,8 @@ public class QwAcquisitionAssistantServiceImpl implements IQwAcquisitionAssistan
             log.info("获客链接URL不存在,缓存空值10秒, pageParam:{}", pageParam);
             return null;
         } else {
-            // 正常值仍缓存10
-            Integer cacheExpire = 10;
+            // 正常值仍缓存2
+            Integer cacheExpire = 2;
             redisCache.setCacheObject(key, friendUrl, cacheExpire, TimeUnit.DAYS);
             log.info("获客链接URL缓存成功, pageParam:{}", pageParam);
         }

+ 25 - 11
fs-service/src/main/java/com/fs/qw/service/impl/QwAcquisitionLinkInfoServiceImpl.java

@@ -1,15 +1,16 @@
 package com.fs.qw.service.impl;
 
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
 
 import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.exception.CustomException;
 import com.fs.common.service.ISmsService;
+import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.StringUtils;
 import com.fs.company.domain.CompanySmsTemp;
 import com.fs.company.service.ICompanySmsTempService;
@@ -87,7 +88,16 @@ public class QwAcquisitionLinkInfoServiceImpl implements IQwAcquisitionLinkInfoS
     @Override
     public List<QwAcquisitionLinkInfo> selectQwAcquisitionLinkInfoList(QwAcquisitionLinkInfo qwAcquisitionLinkInfo)
     {
-        return qwAcquisitionLinkInfoMapper.selectQwAcquisitionLinkInfoList(qwAcquisitionLinkInfo);
+        List<QwAcquisitionLinkInfo> resultList = qwAcquisitionLinkInfoMapper.selectQwAcquisitionLinkInfoList(qwAcquisitionLinkInfo);
+        if (CollectionUtils.isEmpty(resultList)){
+            return Collections.emptyList();
+        }
+        for (QwAcquisitionLinkInfo item : resultList) {
+            if (item.getPhone() != null) {
+                item.setPhone(item.getPhone().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
+            }
+        }
+        return resultList;
     }
 
     /**
@@ -111,6 +121,7 @@ public class QwAcquisitionLinkInfoServiceImpl implements IQwAcquisitionLinkInfoS
     @Override
     public int updateQwAcquisitionLinkInfo(QwAcquisitionLinkInfo qwAcquisitionLinkInfo)
     {
+        //TODO 如果放开编辑就需要更新缓存
         return qwAcquisitionLinkInfoMapper.updateQwAcquisitionLinkInfo(qwAcquisitionLinkInfo);
     }
 
@@ -204,7 +215,7 @@ public class QwAcquisitionLinkInfoServiceImpl implements IQwAcquisitionLinkInfoS
             if (r != null && "200".equals(String.valueOf(r.get("code")))) {
 
                 //新增号码-链接生成记录
-                addAcquisitionLinkInfo(acquisitionAssistant.getId(), phone, acquisitionAssistant.getUrl(),randomStr);
+                addAcquisitionLinkInfo(acquisitionAssistant.getId(), phone, acquisitionAssistant.getUrl(),randomStr,sendMsgLogBo.getCompanyUserId());
 
                 return new SendResultDetailDTO(true, null, null);
             } else {
@@ -220,7 +231,6 @@ public class QwAcquisitionLinkInfoServiceImpl implements IQwAcquisitionLinkInfoS
 
     @Override
     public String selectQwAcquisitionUrlByRandomStr(String randomStr) {
-        log.error("-------------------------------------进入selectQwAcquisitionUrlByRandomStr-----------------------------------");
         String key = QW_FRIEND_LINK_URL_KEY + randomStr;
         String fullLink = null;
 
@@ -249,8 +259,8 @@ public class QwAcquisitionLinkInfoServiceImpl implements IQwAcquisitionLinkInfoS
             log.info("完整获客链接URL不存在,缓存空值10秒, randomStr:{}", randomStr);
             return null;
         } else {
-            // 正常值仍缓存10
-            Integer cacheExpire = 10;
+            // 正常值仍缓存2
+            Integer cacheExpire = 2;
             redisCache.setCacheObject(key, fullLink, cacheExpire, TimeUnit.DAYS);
             log.info("完整获客链接URL缓存成功, randomStr:{}", randomStr);
         }
@@ -268,7 +278,7 @@ public class QwAcquisitionLinkInfoServiceImpl implements IQwAcquisitionLinkInfoS
             try {
                 //新增号码-链接生成记录
                 String randomStr = generateUniqueRandomStr();
-                int addResult = addAcquisitionLinkInfo(qwAcquisitionAssistantId, phone, qwAcquisitionAssistantUrl, randomStr);
+                int addResult = addAcquisitionLinkInfo(qwAcquisitionAssistantId, phone, qwAcquisitionAssistantUrl, randomStr,batchAddAcquisitionLinkDTO.getCreateBy());
                 result += addResult;
                 // 可以在这里根据 addResult 判断单次是否成功,并记录日志
                 if (addResult > 0) {
@@ -287,10 +297,12 @@ public class QwAcquisitionLinkInfoServiceImpl implements IQwAcquisitionLinkInfoS
     }
 
     @Override
-    public String extractLink(Long qwAcquisitionAssistantId, String originalPhone, String originalLink) {
+    public String extractLink(Long qwAcquisitionAssistantId, String originalPhone, String originalLink,Long createBy) {
         String randomStr = generateUniqueRandomStr();
         QwAcquisitionLinkInfo qwAcquisitionLinkInfo=new QwAcquisitionLinkInfo();
         qwAcquisitionLinkInfo.setQwAcquisitionAssistantId(qwAcquisitionAssistantId);
+        qwAcquisitionLinkInfo.setCreateBy(createBy);
+        qwAcquisitionLinkInfo.setCreateTime(DateUtils.getTime());
         qwAcquisitionLinkInfo.setPhone(originalPhone);//这里存储原始手机号
         //加密手机号
         String phonePlus = encryptPhone(originalPhone);
@@ -301,7 +313,7 @@ public class QwAcquisitionLinkInfoServiceImpl implements IQwAcquisitionLinkInfoS
         // ========== 缓存URL,便于后续通过randomStr访问 ==========
         try {
             String cacheKey = QW_FRIEND_LINK_URL_KEY + randomStr;
-            Integer cacheExpire = 10; // 默认缓存10
+            Integer cacheExpire = 2; // 默认缓存2
             redisCache.setCacheObject(cacheKey, linkPlus, cacheExpire, TimeUnit.DAYS);
             log.info("获客链接URL缓存成功, pageParam: {}, url: {}", randomStr, linkPlus);
         } catch (Exception e) {
@@ -315,9 +327,11 @@ public class QwAcquisitionLinkInfoServiceImpl implements IQwAcquisitionLinkInfoS
     /**
      * 添加链接生成记录
      * */
-    public int addAcquisitionLinkInfo(Long qwAcquisitionAssistantId,String originalPhone,String originalLink,String randomStr){
+    public int addAcquisitionLinkInfo(Long qwAcquisitionAssistantId,String originalPhone,String originalLink,String randomStr,Long createBy){
         QwAcquisitionLinkInfo qwAcquisitionLinkInfo=new QwAcquisitionLinkInfo();
         qwAcquisitionLinkInfo.setQwAcquisitionAssistantId(qwAcquisitionAssistantId);
+        qwAcquisitionLinkInfo.setCreateBy(createBy);
+        qwAcquisitionLinkInfo.setCreateTime(DateUtils.getTime());
         qwAcquisitionLinkInfo.setPhone(originalPhone);//这里存储原始手机号
         //加密手机号
         String phonePlus = encryptPhone(originalPhone);
@@ -328,7 +342,7 @@ public class QwAcquisitionLinkInfoServiceImpl implements IQwAcquisitionLinkInfoS
         // ========== 缓存URL,便于后续通过randomStr访问 ==========
         try {
             String cacheKey = QW_FRIEND_LINK_URL_KEY + randomStr;
-            Integer cacheExpire = 10; // 默认缓存10
+            Integer cacheExpire = 2; // 默认缓存2
             redisCache.setCacheObject(cacheKey, linkPlus, cacheExpire, TimeUnit.DAYS);
             log.info("获客链接URL缓存成功, pageParam: {}, url: {}", randomStr, linkPlus);
         } catch (Exception e) {

+ 46 - 14
fs-service/src/main/resources/mapper/qw/QwAcquisitionLinkInfoMapper.xml

@@ -15,29 +15,53 @@
         <result property="updateTime" column="update_time"/>
         <result property="remark" column="remark"/>
         <result property="randomStr" column="random_str"/>
+        <result property="linkName" column="link_name"/>
+        <result property="createName" column="nick_name"/>
     </resultMap>
 
     <sql id="selectQwAcquisitionLinkInfoVo">
-        select id, qw_acquisition_assistant_id, link, phone, create_by, create_time, update_by, update_time, remark,random_str from qw_acquisition_link_info
+        select id,
+               qw_acquisition_assistant_id,
+               link,
+               phone,
+               create_by,
+               create_time,
+               update_by,
+               update_time,
+               remark,
+               random_str
+        from qw_acquisition_link_info
     </sql>
 
-    <select id="selectQwAcquisitionLinkInfoList" parameterType="com.fs.qw.domain.QwAcquisitionLinkInfo" resultMap="QwAcquisitionLinkInfoResult">
-        <include refid="selectQwAcquisitionLinkInfoVo"/>
+    <select id="selectQwAcquisitionLinkInfoList" parameterType="com.fs.qw.domain.QwAcquisitionLinkInfo"
+            resultMap="QwAcquisitionLinkInfoResult">
+        select acinfo.id, acinfo.qw_acquisition_assistant_id, acinfo.link, acinfo.phone, acinfo.create_by,
+        acinfo.create_time, acinfo.update_by,
+        acinfo.update_time,acinfo.remark,acinfo.random_str, acas.link_name,cu.nick_name
+        from qw_acquisition_link_info acinfo
+        left join qw_acquisition_assistant acas on acinfo.qw_acquisition_assistant_id = acas.id
+        left join company_user cu on cu.user_id = acinfo.create_by
         <where>
             <if test="qwAcquisitionAssistantId != null and qwAcquisitionAssistantId != ''">
-                and qw_acquisition_assistant_id = #{qwAcquisitionAssistantId}
+                and acinfo.qw_acquisition_assistant_id = #{qwAcquisitionAssistantId}
             </if>
             <if test="link != null and link != ''">
-                and link like concat('%', #{link}, '%')
+                and acinfo.link like concat('%', #{link}, '%')
             </if>
             <if test="phone != null and phone != ''">
-                and phone like concat('%', #{phone}, '%')
+                and acinfo.phone like concat('%', #{phone}, '%')
+            </if>
+            <if test="linkName != null and linkName != ''">
+                and acas.link_name like concat('%', #{linkName}, '%')
+            </if>
+            <if test="createName != null and createName != ''">
+                and cu.nick_name like concat('%', #{createName}, '%')
             </if>
             <if test="remark != null and remark != ''">
-                and remark like concat('%', #{remark}, '%')
+                and acinfo.remark like concat('%', #{remark}, '%')
             </if>
             <if test="randomStr != null and randomStr != ''">
-                and random_str like concat('%', #{randomStr}, '%')
+                and acinfo.random_str like concat('%', #{randomStr}, '%')
             </if>
         </where>
     </select>
@@ -48,21 +72,26 @@
     </select>
 
     <select id="selectAllRandomStr" resultType="java.lang.String">
-        select random_str from qw_acquisition_link_info
+        select random_str
+        from qw_acquisition_link_info
     </select>
     <select id="selectQwAcquisitionUrlByRandomStr" resultType="java.lang.String">
-        select link from qw_acquisition_link_info where random_str = #{randomStr}
+        select link
+        from qw_acquisition_link_info
+        where random_str = #{randomStr}
     </select>
 
     <select id="selectAcquisitionLinkInfoListByIds" resultMap="QwAcquisitionLinkInfoResult">
-        select id, qw_acquisition_assistant_id, link, phone, create_by, create_time, update_by, update_time, remark,random_str from qw_acquisition_link_info where id in
+        select id, qw_acquisition_assistant_id, link, phone, create_by, create_time, update_by, update_time,
+        remark,random_str from qw_acquisition_link_info where id in
         <foreach item="id" collection="ids" open="(" separator="," close=")">
             #{id}
         </foreach>
     </select>
 
     <select id="selectAcquisitionLinkInfoListByAcquisitionAssistantIds" resultMap="QwAcquisitionLinkInfoResult">
-        select id, qw_acquisition_assistant_id, link, phone, create_by, create_time, update_by, update_time, remark,random_str
+        select id, qw_acquisition_assistant_id, link, phone, create_by, create_time, update_by, update_time,
+        remark,random_str
         from qw_acquisition_link_info
         where qw_acquisition_assistant_id in
         <foreach item="id" collection="qwAcquisitionAssistantIds" open="(" separator="," close=")">
@@ -70,7 +99,8 @@
         </foreach>
     </select>
 
-    <insert id="insertQwAcquisitionLinkInfo" parameterType="com.fs.qw.domain.QwAcquisitionLinkInfo" useGeneratedKeys="true" keyProperty="id">
+    <insert id="insertQwAcquisitionLinkInfo" parameterType="com.fs.qw.domain.QwAcquisitionLinkInfo"
+            useGeneratedKeys="true" keyProperty="id">
         insert into qw_acquisition_link_info
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="qwAcquisitionAssistantId != null">
@@ -161,7 +191,9 @@
     </update>
 
     <delete id="deleteQwAcquisitionLinkInfoById" parameterType="Long">
-        delete from qw_acquisition_link_info where id = #{id}
+        delete
+        from qw_acquisition_link_info
+        where id = #{id}
     </delete>
 
     <delete id="deleteQwAcquisitionLinkInfoByIds" parameterType="String">