Przeglądaj źródła

life_like_record相关代码修改

zhangchen 10 godzin temu
rodzic
commit
6b6787f1b3
27 zmienionych plików z 476 dodań i 148 usunięć
  1. 2 2
      alien-entity/src/main/java/shop/alien/mapper/CommonCommentMapper.java
  2. 5 2
      alien-entity/src/main/java/shop/alien/mapper/LifeUserDynamicsMapper.java
  3. 214 0
      alien-entity/src/main/java/shop/alien/util/LifeLikeIdentityHelper.java
  4. 2 14
      alien-entity/src/main/resources/mapper/LifeUserDynamicsMapper.xml
  5. 4 4
      alien-entity/src/main/resources/mapper/OrderReviewMapper.xml
  6. 2 2
      alien-entity/src/main/resources/mapper/ReviewCommentMapper.xml
  7. 2 2
      alien-entity/src/main/resources/mapper/StoreStaffCommentMapper.xml
  8. 3 3
      alien-entity/src/main/resources/mapper/StoreStaffReviewMapper.xml
  9. 5 5
      alien-entity/src/main/resources/mapper/second/SecondGoodsInfoMapper.xml
  10. 8 2
      alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/OrderReviewServiceImpl.java
  11. 11 3
      alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/ReviewCommentServiceImpl.java
  12. 26 9
      alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/StoreCommentServiceImpl.java
  13. 17 10
      alien-second/src/main/java/shop/alien/second/service/impl/SecondGoodsServiceImpl.java
  14. 12 2
      alien-store-platform/src/main/java/shop/alien/storeplatform/service/impl/StoreMenuPlatformServiceImpl.java
  15. 28 20
      alien-store/src/main/java/shop/alien/store/service/LifeActivityService.java
  16. 15 21
      alien-store/src/main/java/shop/alien/store/service/LifeCommentService.java
  17. 14 10
      alien-store/src/main/java/shop/alien/store/service/LifeUserDynamicsService.java
  18. 10 5
      alien-store/src/main/java/shop/alien/store/service/impl/CommonCommentServiceImpl.java
  19. 14 8
      alien-store/src/main/java/shop/alien/store/service/impl/CommonRatingServiceImpl.java
  20. 8 2
      alien-store/src/main/java/shop/alien/store/service/impl/OrderReviewServiceImpl.java
  21. 11 3
      alien-store/src/main/java/shop/alien/store/service/impl/ReviewCommentServiceImpl.java
  22. 10 4
      alien-store/src/main/java/shop/alien/store/service/impl/StoreClockInServiceImpl.java
  23. 10 2
      alien-store/src/main/java/shop/alien/store/service/impl/StoreCommentServiceImpl.java
  24. 18 7
      alien-store/src/main/java/shop/alien/store/service/impl/StoreMenuServiceImpl.java
  25. 11 3
      alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffCommentServiceImpl.java
  26. 6 1
      alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffConfigServiceImpl.java
  27. 8 2
      alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffReviewServiceImpl.java

+ 2 - 2
alien-entity/src/main/java/shop/alien/mapper/CommonCommentMapper.java

@@ -37,7 +37,7 @@ public interface CommonCommentMapper extends BaseMapper<CommonComment> {
             "IF(cc.comment_type = 1, lu.user_name, su.nick_name) AS headName, " +
             "IF(cc.comment_type = 1, lu.user_phone, su.phone) AS headPhone, " +
             "IF(cc.comment_type = 2, si.store_name, NULL) AS storeName, " +
-            "IF(llr.dianzan_id IS NULL, '0', '1') AS isLike " +
+            "IF(llr.id IS NULL, '0', '1') AS isLike " +
             "FROM common_comment cc " +
             "LEFT JOIN life_user lu ON cc.user_id = lu.id AND lu.delete_flag = 0 " +
             "LEFT JOIN store_info si ON cc.merchant_id = si.id AND si.delete_flag = 0 " +
@@ -45,7 +45,7 @@ public interface CommonCommentMapper extends BaseMapper<CommonComment> {
             "AND su.id = (SELECT MIN(su2.id) FROM store_user su2 WHERE su2.store_id = cc.merchant_id AND su2.delete_flag = 0) " +
             "LEFT JOIN life_like_record llr ON llr.huifu_id = cc.id " +
             "AND llr.`type` = #{type} " +
-            "AND llr.dianzan_id = #{dianzanId} " +
+            "AND llr.dianzan_user_type = 1 AND llr.dianzan_ref_id = #{dianzanId} " +
             "AND llr.delete_flag = 0 " +
             "${ew.customSqlSegment}")
     List<CommonCommentVo> selectALlComment(@Param("page") Page<CommonCommentVo> page,

+ 5 - 2
alien-entity/src/main/java/shop/alien/mapper/LifeUserDynamicsMapper.java

@@ -62,7 +62,7 @@ public interface LifeUserDynamicsMapper extends BaseMapper<LifeUserDynamics> {
             "left join life_like_record llr\n" +
             "on llr.huifu_id = lud.id\n" +
             "and llr.delete_flag = 0\n" +
-            "and llr.dianzan_id = (select CONCAT('user_',lu1.user_phone) from life_user lu1 where lu1.id = #{userId})" +
+            "and llr.dianzan_user_type = 1 and llr.dianzan_ref_id = #{userId}" +
             "${ew.customSqlSegment}")
     List<LifeUserDynamicsVo> getStoreDynamicslistWithWrapper(@Param("userId") String userId, @Param(Constants.WRAPPER) QueryWrapper<LifeUserDynamics> dynamicsWrapper);
 
@@ -79,7 +79,10 @@ public interface LifeUserDynamicsMapper extends BaseMapper<LifeUserDynamics> {
             "  inner join (\n" +
             "    select huifu_id, max(created_time) as like_created_time\n" +
             "    from life_like_record llr\n" +
-            "    where llr.dianzan_id = #{phoneId}\n" +
+            "    where llr.dianzan_user_type = (case when #{phoneId} like 'user\\_%' then 1 when #{phoneId} like 'store\\_%' then 2 when #{phoneId} like 'lawyer\\_%' then 3 else null end)\n" +
+            "      and llr.dianzan_ref_id = (case when #{phoneId} like 'user\\_%' then (select id from life_user where concat('user_', user_phone) = #{phoneId} and delete_flag = 0 limit 1)\n" +
+            "           when #{phoneId} like 'store\\_%' then (select id from store_user where concat('store_', phone) = #{phoneId} and delete_flag = 0 limit 1)\n" +
+            "           when #{phoneId} like 'lawyer\\_%' then (select id from lawyer_user where concat('lawyer_', phone) = #{phoneId} and delete_flag = 0 limit 1) else null end)\n" +
             "      and llr.delete_flag = 0\n" +
             "    group by huifu_id\n" +
             "  ) llr_sub on lud.id = llr_sub.huifu_id\n" +

+ 214 - 0
alien-entity/src/main/java/shop/alien/util/LifeLikeIdentityHelper.java

@@ -0,0 +1,214 @@
+package shop.alien.util;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+import shop.alien.entity.store.LawyerUser;
+import shop.alien.entity.store.LifeLikeRecord;
+import shop.alien.entity.store.LifeUser;
+import shop.alien.entity.store.StoreUser;
+import shop.alien.mapper.LawyerUserMapper;
+import shop.alien.mapper.LifeUserMapper;
+import shop.alien.mapper.StoreUserMapper;
+import shop.alien.util.type.PhoneTypeIdResult;
+import shop.alien.util.type.TypeUtil;
+
+import java.util.Objects;
+
+/**
+ * life_like_record 点赞人身份工具。
+ * <p>
+ * 入参:兼容前端 legacy {@code dianzanId}(user_/store_/lawyer_ 或纯数字 life_user.id)。<br>
+ * 库表:查询/新增/修改只使用 {@code dianzan_user_type} + {@code dianzan_ref_id},不读写 {@code dianzan_id} 列。<br>
+ * 响应:由 type+refId 合成 {@code dianzanId} 返回给前端。
+ * </p>
+ */
+@Component
+@RequiredArgsConstructor
+public class LifeLikeIdentityHelper {
+
+    public static final int TYPE_USER = 1;
+    public static final int TYPE_STORE = 2;
+    public static final int TYPE_LAWYER = 3;
+
+    private final TypeUtil typeUtil;
+    private final LifeUserMapper lifeUserMapper;
+    private final StoreUserMapper storeUserMapper;
+    private final LawyerUserMapper lawyerUserMapper;
+
+    public static final class LikerScope {
+        private final String legacyDianzanId;
+        private final Integer dianzanUserType;
+        private final Integer dianzanRefId;
+
+        public LikerScope(String legacyDianzanId, Integer dianzanUserType, Integer dianzanRefId) {
+            this.legacyDianzanId = legacyDianzanId;
+            this.dianzanUserType = dianzanUserType;
+            this.dianzanRefId = dianzanRefId;
+        }
+
+        public String getLegacyDianzanId() {
+            return legacyDianzanId;
+        }
+
+        public Integer getDianzanUserType() {
+            return dianzanUserType;
+        }
+
+        public Integer getDianzanRefId() {
+            return dianzanRefId;
+        }
+
+        public boolean hasTypeRef() {
+            return dianzanUserType != null && dianzanRefId != null;
+        }
+    }
+
+    /** 将前端传入的 legacy dianzanId 解析为 type+refId(仅入参侧兼容)。 */
+    public LikerScope resolveFromDianzanId(String dianzanId) {
+        if (!StringUtils.hasText(dianzanId)) {
+            return new LikerScope(null, null, null);
+        }
+        String trimmed = dianzanId.trim();
+        if (typeUtil.containsUnderscore(trimmed)) {
+            PhoneTypeIdResult resolved = typeUtil.resolveTypeAndId(trimmed);
+            if (resolved != null) {
+                return new LikerScope(trimmed, resolved.getType(), resolved.getId());
+            }
+            return new LikerScope(trimmed, null, null);
+        }
+        try {
+            int refId = Integer.parseInt(trimmed);
+            return new LikerScope(trimmed, TYPE_USER, refId);
+        } catch (NumberFormatException e) {
+            return new LikerScope(trimmed, null, null);
+        }
+    }
+
+    public LikerScope fromLifeUserId(Integer lifeUserId) {
+        if (lifeUserId == null) {
+            return new LikerScope(null, null, null);
+        }
+        return new LikerScope(String.valueOf(lifeUserId), TYPE_USER, lifeUserId);
+    }
+
+    public LikerScope fromStoreUserId(Integer storeUserId) {
+        if (storeUserId == null) {
+            return new LikerScope(null, null, null);
+        }
+        StoreUser storeUser = storeUserMapper.selectById(storeUserId);
+        String legacy = storeUser != null && StringUtils.hasText(storeUser.getPhone())
+                ? "store_" + storeUser.getPhone()
+                : String.valueOf(storeUserId);
+        return new LikerScope(legacy, TYPE_STORE, storeUserId);
+    }
+
+    /** 从库表记录解析点赞人(仅认 dianzan_user_type + dianzan_ref_id)。 */
+    public LikerScope resolveFromRecord(LifeLikeRecord record) {
+        if (record == null
+                || record.getDianzanUserType() == null
+                || record.getDianzanRefId() == null) {
+            return new LikerScope(null, null, null);
+        }
+        String legacy = buildLegacyDianzanId(record.getDianzanUserType(), record.getDianzanRefId());
+        return new LikerScope(legacy, record.getDianzanUserType(), record.getDianzanRefId());
+    }
+
+    /** 写入前:由入参 dianzanId 或显式 type+refId 填充新字段,不落库 dianzan_id。 */
+    public void normalizeBeforeSave(LifeLikeRecord record) {
+        if (record == null) {
+            return;
+        }
+        if (record.getDianzanUserType() == null || record.getDianzanRefId() == null) {
+            LikerScope scope = resolveFromDianzanId(record.getDianzanId());
+            if (scope.hasTypeRef()) {
+                record.setDianzanUserType(scope.getDianzanUserType());
+                record.setDianzanRefId(scope.getDianzanRefId());
+            }
+        }
+        record.setDianzanId(null);
+    }
+
+    public void applyLikerFilter(LambdaQueryWrapper<LifeLikeRecord> wrapper, LikerScope scope) {
+        if (wrapper == null || scope == null || !scope.hasTypeRef()) {
+            return;
+        }
+        wrapper.eq(LifeLikeRecord::getDianzanUserType, scope.getDianzanUserType())
+                .eq(LifeLikeRecord::getDianzanRefId, scope.getDianzanRefId());
+    }
+
+    public void applyLikerFilter(LambdaUpdateWrapper<LifeLikeRecord> wrapper, LikerScope scope) {
+        if (wrapper == null || scope == null || !scope.hasTypeRef()) {
+            return;
+        }
+        wrapper.eq(LifeLikeRecord::getDianzanUserType, scope.getDianzanUserType())
+                .eq(LifeLikeRecord::getDianzanRefId, scope.getDianzanRefId());
+    }
+
+    public void applyLikerFilter(QueryWrapper<LifeLikeRecord> wrapper, LikerScope scope) {
+        applyLikerFilter(wrapper, scope, null);
+    }
+
+    public void applyLikerFilter(QueryWrapper<LifeLikeRecord> wrapper, LikerScope scope, String tableAlias) {
+        if (wrapper == null || scope == null || !scope.hasTypeRef()) {
+            return;
+        }
+        String prefix = StringUtils.hasText(tableAlias) ? tableAlias + "." : "";
+        wrapper.eq(prefix + "dianzan_user_type", scope.getDianzanUserType())
+                .eq(prefix + "dianzan_ref_id", scope.getDianzanRefId());
+    }
+
+    /** 与 life_fans 等仍使用 legacy 字符串的模块比对。 */
+    public String resolveComparableDianzanId(LifeLikeRecord record) {
+        LikerScope scope = resolveFromRecord(record);
+        if (scope.hasTypeRef()) {
+            String legacy = buildLegacyDianzanId(scope.getDianzanUserType(), scope.getDianzanRefId());
+            if (legacy != null) {
+                return legacy;
+            }
+            if (Objects.equals(scope.getDianzanUserType(), TYPE_USER)) {
+                return String.valueOf(scope.getDianzanRefId());
+            }
+        }
+        return record != null ? record.getDianzanId() : null;
+    }
+
+    public String buildLegacyDianzanId(Integer dianzanUserType, Integer dianzanRefId) {
+        if (dianzanUserType == null || dianzanRefId == null) {
+            return null;
+        }
+        switch (dianzanUserType) {
+            case TYPE_USER: {
+                LifeUser user = lifeUserMapper.selectById(dianzanRefId);
+                return user != null && StringUtils.hasText(user.getUserPhone())
+                        ? "user_" + user.getUserPhone() : String.valueOf(dianzanRefId);
+            }
+            case TYPE_STORE: {
+                StoreUser storeUser = storeUserMapper.selectById(dianzanRefId);
+                return storeUser != null && StringUtils.hasText(storeUser.getPhone())
+                        ? "store_" + storeUser.getPhone() : null;
+            }
+            case TYPE_LAWYER: {
+                LawyerUser lawyerUser = lawyerUserMapper.selectById(dianzanRefId);
+                return lawyerUser != null && StringUtils.hasText(lawyerUser.getPhone())
+                        ? "lawyer_" + lawyerUser.getPhone() : null;
+            }
+            default:
+                return null;
+        }
+    }
+
+    /** 响应侧:由 type+refId 合成 dianzanId,不读库表 dianzan_id。 */
+    public void ensureEntityLegacyDianzanId(LifeLikeRecord record) {
+        if (record == null || record.getDianzanUserType() == null || record.getDianzanRefId() == null) {
+            return;
+        }
+        String legacy = buildLegacyDianzanId(record.getDianzanUserType(), record.getDianzanRefId());
+        if (legacy != null) {
+            record.setDianzanId(legacy);
+        }
+    }
+}

+ 2 - 14
alien-entity/src/main/resources/mapper/LifeUserDynamicsMapper.xml

@@ -305,23 +305,11 @@
         left join life_like_record llr on
         llr.huifu_id = dynamice.id
         and llr.delete_flag = 0
-        and llr.dianzan_id = (
-        select
-        CONCAT('user_', lu1.user_phone)
-        from
-        life_user lu1
-        where
-        lu1.id = #{userId})
+        and llr.dianzan_user_type = 1 and llr.dianzan_ref_id = #{userId})
         left join life_like_record llr1 on
         llr1.huifu_id = dynamice.id
         and llr1.delete_flag = 0
-        and llr1.dianzan_id = (
-        select
-        CONCAT('store_', lu2.phone)
-        from
-        store_user lu2
-        where
-        lu2.id = #{userId})
+        and llr1.dianzan_user_type = 2 and llr1.dianzan_ref_id = #{userId})
         where
         dynamice.phoneUserType = 2) dyna
         left join life_comment lc on

+ 4 - 4
alien-entity/src/main/resources/mapper/OrderReviewMapper.xml

@@ -67,7 +67,7 @@
         LEFT JOIN law_firm lf ON lf.id = lu2.firm_id AND lf.delete_flag = 0
         LEFT JOIN life_like_record llr ON CONVERT(llr.huifu_id, CHAR) = CONVERT(orv.id, CHAR)
             AND llr.type = '7' 
-            AND CONVERT(llr.dianzan_id, CHAR) = CONVERT(#{currentUserId}, CHAR)
+            AND llr.dianzan_user_type = 1 AND llr.dianzan_ref_id = #{currentUserId}
             AND llr.delete_flag = 0
         LEFT JOIN comment_appeals ca ON ca.comment_id = orv.id AND ca.delete_flag = 0
         WHERE orv.delete_flag = 0
@@ -125,7 +125,7 @@
         LEFT JOIN law_firm lf ON lf.id = lu2.firm_id AND lf.delete_flag = 0
         LEFT JOIN life_like_record llr ON CONVERT(llr.huifu_id, CHAR) = CONVERT(orv.id, CHAR)
             AND llr.type = '7' 
-            AND CONVERT(llr.dianzan_id, CHAR) = CONVERT(#{currentUserId}, CHAR)
+            AND llr.dianzan_user_type = 1 AND llr.dianzan_ref_id = #{currentUserId}
             AND llr.delete_flag = 0
         WHERE orv.delete_flag = 0
         AND orv.order_id = #{orderId}
@@ -178,7 +178,7 @@
         LEFT JOIN law_firm lf ON lf.id = lu2.firm_id AND lf.delete_flag = 0
         LEFT JOIN life_like_record llr ON CONVERT(llr.huifu_id, CHAR) = CONVERT(orv.id, CHAR)
             AND llr.type = '7' 
-            AND CONVERT(llr.dianzan_id, CHAR) = CONVERT(#{currentUserId}, CHAR)
+            AND llr.dianzan_user_type = 1 AND llr.dianzan_ref_id = #{currentUserId}
             AND llr.delete_flag = 0
         WHERE orv.delete_flag = 0
         AND orv.id = #{reviewId}
@@ -353,7 +353,7 @@
         LEFT JOIN law_firm lf ON lf.id = lu2.firm_id AND lf.delete_flag = 0
         LEFT JOIN life_like_record llr ON CONVERT(llr.huifu_id, CHAR) = CONVERT(orv.id, CHAR)
             AND llr.type = '7'
-            AND CONVERT(llr.dianzan_id, CHAR) = CONVERT(#{currentUserId}, CHAR)
+            AND llr.dianzan_user_type = 1 AND llr.dianzan_ref_id = #{currentUserId}
             AND llr.delete_flag = 0
         WHERE orv.delete_flag = 0
         AND orv.lawyer_user_id = #{lawyerUserId}

+ 2 - 2
alien-entity/src/main/resources/mapper/ReviewCommentMapper.xml

@@ -88,7 +88,7 @@
             AND lu_lawyer_comment.delete_flag = 0
         LEFT JOIN life_like_record llr ON CONVERT(llr.huifu_id, CHAR) = CONVERT(rc.id, CHAR)
             AND llr.type = '8' 
-            AND CONVERT(llr.dianzan_id, CHAR) = CONVERT(#{currentUserId}, CHAR)
+            AND llr.dianzan_user_type = 1 AND llr.dianzan_ref_id = #{currentUserId}
             AND llr.delete_flag = 0
         WHERE rc.delete_flag = 0
         AND rc.review_id = #{reviewId}
@@ -160,7 +160,7 @@
             AND lu_lawyer_comment.delete_flag = 0
         LEFT JOIN life_like_record llr ON CONVERT(llr.huifu_id, CHAR) = CONVERT(rc.id, CHAR)
             AND llr.type = '8' 
-            AND CONVERT(llr.dianzan_id, CHAR) = CONVERT(#{currentUserId}, CHAR)
+            AND llr.dianzan_user_type = 1 AND llr.dianzan_ref_id = #{currentUserId}
             AND llr.delete_flag = 0
         WHERE rc.delete_flag = 0
         AND rc.head_id = #{headId}

+ 2 - 2
alien-entity/src/main/resources/mapper/StoreStaffCommentMapper.xml

@@ -81,7 +81,7 @@
             AND ssc_receive.delete_flag = 0
         LEFT JOIN life_like_record llr ON CONVERT(llr.huifu_id, CHAR) = CONVERT(ssc.id, CHAR)
             AND llr.type = '10' 
-            AND CONVERT(llr.dianzan_id, CHAR) = CONVERT(#{currentUserId}, CHAR)
+            AND llr.dianzan_user_type = 1 AND llr.dianzan_ref_id = #{currentUserId}
             AND llr.delete_flag = 0
         WHERE ssc.delete_flag = 0
         AND ssc.review_id = #{reviewId}
@@ -147,7 +147,7 @@
             AND ssc_receive.delete_flag = 0
         LEFT JOIN life_like_record llr ON CONVERT(llr.huifu_id, CHAR) = CONVERT(ssc.id, CHAR)
             AND llr.type = '10' 
-            AND CONVERT(llr.dianzan_id, CHAR) = CONVERT(#{currentUserId}, CHAR)
+            AND llr.dianzan_user_type = 1 AND llr.dianzan_ref_id = #{currentUserId}
             AND llr.delete_flag = 0
         WHERE ssc.delete_flag = 0
         AND ssc.head_id = #{headId}

+ 3 - 3
alien-entity/src/main/resources/mapper/StoreStaffReviewMapper.xml

@@ -62,7 +62,7 @@
         LEFT JOIN store_img si ON si.id = sp.img_id AND si.delete_flag = 0
         LEFT JOIN life_like_record llr ON CONVERT(llr.huifu_id, CHAR) = CONVERT(ssr.id, CHAR)
             AND llr.type = '9' 
-            AND CONVERT(llr.dianzan_id, CHAR) = CONVERT(#{currentUserId}, CHAR)
+            AND llr.dianzan_user_type = 1 AND llr.dianzan_ref_id = #{currentUserId}
             AND llr.delete_flag = 0
         WHERE ssr.delete_flag = 0
           AND ssr.audit_status = 1
@@ -112,7 +112,7 @@
         LEFT JOIN store_img si ON si.id = sp.img_id AND si.delete_flag = 0
         LEFT JOIN life_like_record llr ON CONVERT(llr.huifu_id, CHAR) = CONVERT(ssr.id, CHAR)
             AND llr.type = '9' 
-            AND CONVERT(llr.dianzan_id, CHAR) = CONVERT(#{currentUserId}, CHAR)
+            AND llr.dianzan_user_type = 1 AND llr.dianzan_ref_id = #{currentUserId}
             AND llr.delete_flag = 0
         WHERE ssr.delete_flag = 0
           AND ssr.audit_status = 1
@@ -237,7 +237,7 @@
         LEFT JOIN store_img si ON si.id = sp.img_id AND si.delete_flag = 0
         LEFT JOIN life_like_record llr ON CONVERT(llr.huifu_id, CHAR) = CONVERT(ssr.id, CHAR)
             AND llr.type = '9' 
-            AND CONVERT(llr.dianzan_id, CHAR) = CONVERT(#{currentUserId}, CHAR)
+            AND llr.dianzan_user_type = 1 AND llr.dianzan_ref_id = #{currentUserId}
             AND llr.delete_flag = 0
         WHERE ssr.delete_flag = 0
         AND ssr.audit_status = 1

+ 5 - 5
alien-entity/src/main/resources/mapper/second/SecondGoodsInfoMapper.xml

@@ -74,7 +74,7 @@
                 CONCAT('user_', u.user_phone) as user_phone
             FROM
                 second_goods g inner join life_user u on u.id =  g.user_id and u.delete_flag = 0
-                left join life_like_record llr on llr.dianzan_id = #{phoneId} and llr.huifu_id = g.id and llr.type = 6 and llr.delete_flag = 0
+                left join life_like_record llr on llr.dianzan_user_type = 1 and llr.dianzan_ref_id = (select id from life_user where concat('user_', user_phone) = #{phoneId} and delete_flag = 0 limit 1) and llr.huifu_id = g.id and llr.type = 6 and llr.delete_flag = 0
             where g.delete_flag = 0
                 <if test="typeId != null and typeId != '' ">
                     and (g.category_one_id = #{typeId} or g.category_two_id =#{typeId} )
@@ -131,7 +131,7 @@
                 u.id = g.user_id
                 and g.goods_status = 3
                 and g.delete_flag = 0
-            left join life_like_record llr on llr.dianzan_id = #{phoneId} and llr.huifu_id = g.id and llr.type = 6 and llr.delete_flag = 0
+            left join life_like_record llr on llr.dianzan_user_type = 1 and llr.dianzan_ref_id = (select id from life_user where concat('user_', user_phone) = #{phoneId} and delete_flag = 0 limit 1) and llr.huifu_id = g.id and llr.type = 6 and llr.delete_flag = 0
             left join life_collect lc on lc.business_id = g.id and lc.user_id_user_type = #{collectUserType} and lc.user_id_ref_id = #{collectRefId} and lc.delete_flag = 0 and lc.business_type = 1
         where
             f.fans_id = #{phoneId} and f.delete_flag = 0
@@ -211,7 +211,7 @@
     <!--            (SELECT count(1) FROM store_comment c where c.business_id = g.id and c.business_type = 7 and c.delete_flag = 0 ) as commentCount-->
             FROM
                 second_goods g inner join life_user u on u.id = g.user_id
-                left join life_like_record llr on llr.dianzan_id = #{phoneId} and llr.huifu_id = g.id and llr.type = 6 and llr.delete_flag = 0
+                left join life_like_record llr on llr.dianzan_user_type = 1 and llr.dianzan_ref_id = (select id from life_user where concat('user_', user_phone) = #{phoneId} and delete_flag = 0 limit 1) and llr.huifu_id = g.id and llr.type = 6 and llr.delete_flag = 0
                 left join life_collect lc on lc.business_id = g.id and lc.user_id_user_type = #{collectUserType} and lc.user_id_ref_id = #{collectRefId} and lc.delete_flag = 0 and lc.business_type = 1
             where g.delete_flag = 0
                 and not exists (select 1 from shieldUser s where s.id = g.id)
@@ -261,7 +261,7 @@
             case when llr.id is null then '0' else '1' end likeStatus,
             case when lc.id is null then '0' else '1' end collectStatus
         from second_goods g inner join life_user lu on g.user_id = lu.id and lu.delete_flag = 0
-            left join life_like_record llr on llr.dianzan_id = #{phoneId} and llr.huifu_id = g.id and llr.type = 6 and llr.delete_flag = 0
+            left join life_like_record llr on llr.dianzan_user_type = 1 and llr.dianzan_ref_id = (select id from life_user where concat('user_', user_phone) = #{phoneId} and delete_flag = 0 limit 1) and llr.huifu_id = g.id and llr.type = 6 and llr.delete_flag = 0
             left join life_collect lc on lc.business_id = g.id and lc.user_id_user_type = #{collectUserType} and lc.user_id_ref_id = #{collectRefId} and lc.delete_flag = 0 and lc.business_type = 1
         where g.id = #{goodsId} and g.delete_flag = 0
             and g.position != '' and g.position is not null
@@ -292,7 +292,7 @@
             case when llr.id is null then '0' else '1' end likeStatus,
             case when lc.id is null then '0' else '1' end collectStatus
         from second_goods g inner join life_user lu on g.user_id = lu.id and lu.delete_flag = 0
-            left join life_like_record llr on llr.dianzan_id = #{phoneId} and llr.huifu_id = g.id and llr.type = 6 and llr.delete_flag = 0
+            left join life_like_record llr on llr.dianzan_user_type = 1 and llr.dianzan_ref_id = (select id from life_user where concat('user_', user_phone) = #{phoneId} and delete_flag = 0 limit 1) and llr.huifu_id = g.id and llr.type = 6 and llr.delete_flag = 0
             left join life_collect lc on lc.business_id = g.id and lc.user_id_user_type = #{collectUserType} and lc.user_id_ref_id = #{collectRefId} and lc.delete_flag = 0 and lc.business_type = 1
         where g.id = #{goodsId} and g.delete_flag = 0
             and g.position != '' and g.position is not null

+ 8 - 2
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/OrderReviewServiceImpl.java

@@ -27,6 +27,8 @@ import shop.alien.lawyer.service.OrderReviewService;
 import shop.alien.lawyer.service.ReviewCommentService;
 import shop.alien.mapper.*;
 import shop.alien.util.type.LifeNoticeUtil;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -49,6 +51,7 @@ public class OrderReviewServiceImpl extends ServiceImpl<OrderReviewMapper, Order
     private final ReviewCommentService reviewCommentService;
     private final ReviewCommentMapper reviewCommentMapper;
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
     private final LawyerUserMapper lawyerUserMapper;
     private final LifeNoticeMapper lifeNoticeMapper;
 
@@ -552,17 +555,19 @@ public class OrderReviewServiceImpl extends ServiceImpl<OrderReviewMapper, Order
         }
 
         // 检查是否已点赞
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
         LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(LifeLikeRecord::getType, "7")
-                .eq(LifeLikeRecord::getDianzanId, String.valueOf(userId))
                 .eq(LifeLikeRecord::getHuifuId, String.valueOf(reviewId))
                 .eq(LifeLikeRecord::getDeleteFlag, 0);
+        lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
         List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(queryWrapper);
 
         if (CollectionUtils.isEmpty(records)) {
             // 插入点赞记录
             LifeLikeRecord likeRecord = new LifeLikeRecord();
             likeRecord.setDianzanId(String.valueOf(userId));
+            lifeLikeIdentityHelper.normalizeBeforeSave(likeRecord);
             likeRecord.setHuifuId(String.valueOf(reviewId));
             likeRecord.setType("7");
             likeRecord.setCreatedTime(new Date());
@@ -598,11 +603,12 @@ public class OrderReviewServiceImpl extends ServiceImpl<OrderReviewMapper, Order
         }
 
         // 查询点赞记录
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
         LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(LifeLikeRecord::getType, "7")
-                .eq(LifeLikeRecord::getDianzanId, String.valueOf(userId))
                 .eq(LifeLikeRecord::getHuifuId, String.valueOf(reviewId))
                 .eq(LifeLikeRecord::getDeleteFlag, 0);
+        lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
         List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(queryWrapper);
 
         if (!CollectionUtils.isEmpty(records)) {

+ 11 - 3
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/ReviewCommentServiceImpl.java

@@ -18,6 +18,8 @@ import shop.alien.entity.store.dto.ReviewReplyDto;
 import shop.alien.entity.store.vo.ReviewCommentVo;
 import shop.alien.lawyer.service.OrderReviewService;
 import shop.alien.lawyer.service.ReviewCommentService;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 import shop.alien.mapper.LawyerUserMapper;
 import shop.alien.mapper.LifeLikeRecordMapper;
 import shop.alien.mapper.ReviewCommentMapper;
@@ -42,15 +44,18 @@ public class ReviewCommentServiceImpl extends ServiceImpl<ReviewCommentMapper, R
     private final OrderReviewService orderReviewService;
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
     private final LawyerUserMapper lawyerUserMapper;
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
 
     public ReviewCommentServiceImpl(ReviewCommentMapper reviewCommentMapper,
                                     @Lazy OrderReviewService orderReviewService,
                                     LifeLikeRecordMapper lifeLikeRecordMapper,
-                                    LawyerUserMapper lawyerUserMapper) {
+                                    LawyerUserMapper lawyerUserMapper,
+                                    LifeLikeIdentityHelper lifeLikeIdentityHelper) {
         this.reviewCommentMapper = reviewCommentMapper;
         this.orderReviewService = orderReviewService;
         this.lifeLikeRecordMapper = lifeLikeRecordMapper;
         this.lawyerUserMapper = lawyerUserMapper;
+        this.lifeLikeIdentityHelper = lifeLikeIdentityHelper;
     }
 
     /**
@@ -185,17 +190,19 @@ public class ReviewCommentServiceImpl extends ServiceImpl<ReviewCommentMapper, R
         }
 
         // 检查是否已点赞
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
         LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(LifeLikeRecord::getType, "8")
-                .eq(LifeLikeRecord::getDianzanId, String.valueOf(userId))
                 .eq(LifeLikeRecord::getHuifuId, String.valueOf(commentId))
                 .eq(LifeLikeRecord::getDeleteFlag, 0);
+        lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
         List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(queryWrapper);
 
         if (CollectionUtils.isEmpty(records)) {
             // 插入点赞记录
             LifeLikeRecord likeRecord = new LifeLikeRecord();
             likeRecord.setDianzanId(String.valueOf(userId));
+            lifeLikeIdentityHelper.normalizeBeforeSave(likeRecord);
             likeRecord.setHuifuId(String.valueOf(commentId));
             likeRecord.setType("8");
             likeRecord.setCreatedTime(new Date());
@@ -233,11 +240,12 @@ public class ReviewCommentServiceImpl extends ServiceImpl<ReviewCommentMapper, R
         }
 
         // 查询点赞记录
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
         LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(LifeLikeRecord::getType, "8")
-                .eq(LifeLikeRecord::getDianzanId, String.valueOf(userId))
                 .eq(LifeLikeRecord::getHuifuId, String.valueOf(commentId))
                 .eq(LifeLikeRecord::getDeleteFlag, 0);
+        lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
         List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(queryWrapper);
 
         if (!CollectionUtils.isEmpty(records)) {

+ 26 - 9
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/StoreCommentServiceImpl.java

@@ -37,6 +37,8 @@ import shop.alien.util.common.safe.TextModerationResultVO;
 import shop.alien.util.common.safe.TextModerationUtil;
 import shop.alien.util.common.safe.TextReviewServiceEnum;
 import shop.alien.util.type.LifeNoticeUtil;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 
 import java.io.IOException;
 import java.math.BigDecimal;
@@ -62,6 +64,8 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
 
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
 
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
+
     private final FileUploadUtil fileUploadUtil;
 
     private final StoreImgMapper storeImgMapper;
@@ -252,8 +256,10 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
             storeCommentVo.setCommitCount(0);
             //父级点赞状态
             if (StringUtils.isNotEmpty(phoneId)) {
+                LikerScope likerScope = lifeLikeIdentityHelper.resolveFromDianzanId(phoneId);
                 LambdaQueryWrapper<LifeLikeRecord> likeRecordQueryWrapper = new LambdaQueryWrapper<>();
-                likeRecordQueryWrapper.eq(LifeLikeRecord::getDianzanId, phoneId).eq(LifeLikeRecord::getHuifuId, storeCommentVo.getId());
+                likeRecordQueryWrapper.eq(LifeLikeRecord::getHuifuId, storeCommentVo.getId());
+                lifeLikeIdentityHelper.applyLikerFilter(likeRecordQueryWrapper, likerScope);
                 Integer i = lifeLikeRecordMapper.selectCount(likeRecordQueryWrapper);
                 if (i > 0) {
                     storeCommentVo.setIsLike(1);
@@ -320,8 +326,10 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
             //子级点赞状态
             if (StringUtils.isNotEmpty(phoneId)) {
                 childCommentList.forEach(child -> {
+                    LikerScope childLikerScope = lifeLikeIdentityHelper.resolveFromDianzanId(phoneId);
                     LambdaQueryWrapper<LifeLikeRecord> childlikeRecordQueryWrapper = new LambdaQueryWrapper<>();
-                    childlikeRecordQueryWrapper.eq(LifeLikeRecord::getDianzanId, phoneId).eq(LifeLikeRecord::getHuifuId, child.getId());
+                    childlikeRecordQueryWrapper.eq(LifeLikeRecord::getHuifuId, child.getId());
+                    lifeLikeIdentityHelper.applyLikerFilter(childlikeRecordQueryWrapper, childLikerScope);
                     if (lifeLikeRecordMapper.selectCount(childlikeRecordQueryWrapper) > 0) {
                         child.setIsLike(1);
                     } else {
@@ -1475,11 +1483,12 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
 
         // 检查当前用户是否已点赞
         if (currentUserId != null) {
+            LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(currentUserId);
             LambdaQueryWrapper<LifeLikeRecord> likeWrapper = new LambdaQueryWrapper<>();
             likeWrapper.eq(LifeLikeRecord::getType, "7")
-                    .eq(LifeLikeRecord::getDianzanId, String.valueOf(currentUserId))
                     .eq(LifeLikeRecord::getHuifuId, String.valueOf(review.getId()))
                     .eq(LifeLikeRecord::getDeleteFlag, 0);
+            lifeLikeIdentityHelper.applyLikerFilter(likeWrapper, likerScope);
             long likeCount = lifeLikeRecordMapper.selectCount(likeWrapper);
             reviewVo.setIsLiked(likeCount > 0 ? 1 : 0);
         } else {
@@ -1525,17 +1534,19 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
         }
 
         // 检查是否已点赞(type=7 表示订单评价点赞)
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
         LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(LifeLikeRecord::getType, "7")
-                .eq(LifeLikeRecord::getDianzanId, String.valueOf(userId))
                 .eq(LifeLikeRecord::getHuifuId, String.valueOf(reviewId))
                 .eq(LifeLikeRecord::getDeleteFlag, 0);
+        lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
         List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(queryWrapper);
 
         if (CollectionUtils.isEmpty(records)) {
             // 插入点赞记录
             LifeLikeRecord likeRecord = new LifeLikeRecord();
             likeRecord.setDianzanId(String.valueOf(userId));
+            lifeLikeIdentityHelper.normalizeBeforeSave(likeRecord);
             likeRecord.setHuifuId(String.valueOf(reviewId));
             likeRecord.setType("7");
             likeRecord.setCreatedTime(new Date());
@@ -1563,11 +1574,12 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
         log.info("StoreCommentServiceImpl.cancelLikeOrderReview?reviewId={}, userId={}", reviewId, userId);
 
         // 查询点赞记录
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
         LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(LifeLikeRecord::getType, "7")
-                .eq(LifeLikeRecord::getDianzanId, String.valueOf(userId))
                 .eq(LifeLikeRecord::getHuifuId, String.valueOf(reviewId))
                 .eq(LifeLikeRecord::getDeleteFlag, 0);
+        lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
         List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(queryWrapper);
 
         if (!CollectionUtils.isEmpty(records)) {
@@ -1755,11 +1767,12 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
             
             // 检查是否已点赞
             if (currentUserId != null) {
+                LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(currentUserId);
                 LambdaQueryWrapper<LifeLikeRecord> likeWrapper = new LambdaQueryWrapper<>();
                 likeWrapper.eq(LifeLikeRecord::getType, "8")
-                        .eq(LifeLikeRecord::getDianzanId, String.valueOf(currentUserId))
                         .eq(LifeLikeRecord::getHuifuId, String.valueOf(comment.getId()))
                         .eq(LifeLikeRecord::getDeleteFlag, 0);
+                lifeLikeIdentityHelper.applyLikerFilter(likeWrapper, likerScope);
                 vo.setIsLiked(lifeLikeRecordMapper.selectCount(likeWrapper) > 0 ? 1 : 0);
             } else {
                 vo.setIsLiked(0);
@@ -1798,17 +1811,19 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
         }
 
         // 检查是否已点赞(type=8 表示评论点赞)
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
         LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(LifeLikeRecord::getType, "8")
-                .eq(LifeLikeRecord::getDianzanId, String.valueOf(userId))
                 .eq(LifeLikeRecord::getHuifuId, String.valueOf(commentId))
                 .eq(LifeLikeRecord::getDeleteFlag, 0);
+        lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
         List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(queryWrapper);
 
         if (CollectionUtils.isEmpty(records)) {
             // 插入点赞记录
             LifeLikeRecord likeRecord = new LifeLikeRecord();
             likeRecord.setDianzanId(String.valueOf(userId));
+            lifeLikeIdentityHelper.normalizeBeforeSave(likeRecord);
             likeRecord.setHuifuId(String.valueOf(commentId));
             likeRecord.setType("8");
             likeRecord.setCreatedTime(new Date());
@@ -1845,11 +1860,12 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
         }
 
         // 查询点赞记录
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
         LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(LifeLikeRecord::getType, "8")
-                .eq(LifeLikeRecord::getDianzanId, String.valueOf(userId))
                 .eq(LifeLikeRecord::getHuifuId, String.valueOf(commentId))
                 .eq(LifeLikeRecord::getDeleteFlag, 0);
+        lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
         List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(queryWrapper);
 
         if (!CollectionUtils.isEmpty(records)) {
@@ -1957,11 +1973,12 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
             
             // 检查是否已点赞
             if (currentUserId != null) {
+                LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(currentUserId);
                 LambdaQueryWrapper<LifeLikeRecord> likeWrapper = new LambdaQueryWrapper<>();
                 likeWrapper.eq(LifeLikeRecord::getType, "8")
-                        .eq(LifeLikeRecord::getDianzanId, String.valueOf(currentUserId))
                         .eq(LifeLikeRecord::getHuifuId, String.valueOf(reply.getId()))
                         .eq(LifeLikeRecord::getDeleteFlag, 0);
+                lifeLikeIdentityHelper.applyLikerFilter(likeWrapper, likerScope);
                 vo.setIsLiked(lifeLikeRecordMapper.selectCount(likeWrapper) > 0 ? 1 : 0);
             } else {
                 vo.setIsLiked(0);

+ 17 - 10
alien-second/src/main/java/shop/alien/second/service/impl/SecondGoodsServiceImpl.java

@@ -38,6 +38,8 @@ import shop.alien.util.common.VideoUtils;
 import shop.alien.util.common.safe.*;
 import shop.alien.util.type.LifeCollectIdentityQuery;
 import shop.alien.util.type.LifeNoticeUtil;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
@@ -124,6 +126,8 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
      */
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
 
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
+
     /**
      * 收藏Mapper,用于操作收藏记录表
      */
@@ -1569,11 +1573,12 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
         searchGoodsList.getRecords().forEach(goods -> {
             if (userId != null) {
                 // 设置点赞状态
-                LambdaUpdateWrapper<LifeLikeRecord> updateWrapper = new LambdaUpdateWrapper<>();
-                updateWrapper.eq(LifeLikeRecord::getHuifuId, goods.getId())
-                        .eq(LifeLikeRecord::getDianzanId, "user_"+phone).
-                        eq(LifeLikeRecord::getType, Constants.LikeType.SECOND_HAND_GOODS); // 6-二手商品
-                if (lifeLikeRecordMapper.selectCount(updateWrapper) > 0) {
+                LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
+                LambdaQueryWrapper<LifeLikeRecord> likeQueryWrapper = new LambdaQueryWrapper<>();
+                likeQueryWrapper.eq(LifeLikeRecord::getHuifuId, goods.getId())
+                        .eq(LifeLikeRecord::getType, Constants.LikeType.SECOND_HAND_GOODS);
+                lifeLikeIdentityHelper.applyLikerFilter(likeQueryWrapper, likerScope);
+                if (lifeLikeRecordMapper.selectCount(likeQueryWrapper) > 0) {
                     goods.setLikeStatus(1);
                 }
             }
@@ -1783,15 +1788,17 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
      */
     @Override
     public IPage<SecondGoodsVo> getLikeGoodsPage(IPage<SecondGoodsVo> page, int userId, String phone) {
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
         QueryWrapper<SecondGoodsVo> queryWrapper = new QueryWrapper<>();
         queryWrapper
-                // 可以查看已删除的商品数据
-//                .eq("sg.delete_flag", Constants.DeleteFlag.NOT_DELETED)
                 .eq("lc.delete_flag", Constants.DeleteFlag.NOT_DELETED)
-                .eq("lc.dianzan_id", "user_"+phone)
-                .eq("lc.type", Constants.LikeType.SECOND_HAND_GOODS) // 6-二手商品
-                .eq("sg.user_id", userId) // 用户ID
+                .eq("lc.type", Constants.LikeType.SECOND_HAND_GOODS)
+                .eq("sg.user_id", userId)
                 .orderByDesc("lc.created_time");
+        if (likerScope.hasTypeRef()) {
+            queryWrapper.eq("lc.dianzan_user_type", likerScope.getDianzanUserType())
+                    .eq("lc.dianzan_ref_id", likerScope.getDianzanRefId());
+        }
         return secondGoodsMapper.getLikeGoodsPage(page, queryWrapper);
     }
 

+ 12 - 2
alien-store-platform/src/main/java/shop/alien/storeplatform/service/impl/StoreMenuPlatformServiceImpl.java

@@ -29,6 +29,8 @@ import shop.alien.mapper.StoreImgMapper;
 import shop.alien.mapper.StoreMenuMapper;
 import shop.alien.storeplatform.feign.AlienStoreFeign;
 import shop.alien.storeplatform.service.StoreMenuPlatformService;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 import shop.alien.util.ali.AliOSSUtil;
 
 import java.io.ByteArrayInputStream;
@@ -54,6 +56,8 @@ public class StoreMenuPlatformServiceImpl extends ServiceImpl<StoreMenuMapper, S
 
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
 
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
+
     private final StoreImgMapper storeImgMapper;
 
     private final LifeGroupBuyThaliMapper lifeGroupBuyThaliMapper;
@@ -80,8 +84,10 @@ public class StoreMenuPlatformServiceImpl extends ServiceImpl<StoreMenuMapper, S
             List<StoreMenuVo> collect = storeMenuMapper.getStoreMenuList(storeId, dishType);
             collect.forEach(item -> {
                 if (StringUtils.isNotEmpty(phoneId)) {
+                    LikerScope likerScope = lifeLikeIdentityHelper.resolveFromDianzanId(phoneId);
                     LambdaQueryWrapper<LifeLikeRecord> query = new LambdaQueryWrapper<>();
-                    query.eq(LifeLikeRecord::getDianzanId, phoneId).eq(LifeLikeRecord::getHuifuId, item.getId());
+                    query.eq(LifeLikeRecord::getHuifuId, item.getId());
+                    lifeLikeIdentityHelper.applyLikerFilter(query, likerScope);
                     Integer i = lifeLikeRecordMapper.selectCount(query);
                     if (i > 0) {
                         item.setIsLike(1);
@@ -295,7 +301,11 @@ public class StoreMenuPlatformServiceImpl extends ServiceImpl<StoreMenuMapper, S
      */
     @Override
     public boolean getMenuLikeStatus(String userId, Integer menuId) {
-        return lifeLikeRecordMapper.selectCount(new QueryWrapper<LifeLikeRecord>().eq("dianzan_id", userId).eq("huifu_id", menuId).eq("delete_flag", 0)) > 0;
+        LikerScope likerScope = lifeLikeIdentityHelper.resolveFromDianzanId(userId);
+        LambdaQueryWrapper<LifeLikeRecord> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(LifeLikeRecord::getHuifuId, menuId).eq(LifeLikeRecord::getDeleteFlag, 0);
+        lifeLikeIdentityHelper.applyLikerFilter(wrapper, likerScope);
+        return lifeLikeRecordMapper.selectCount(wrapper) > 0;
     }
     /**
      * Excel导入门店菜单

+ 28 - 20
alien-store/src/main/java/shop/alien/store/service/LifeActivityService.java

@@ -1,5 +1,6 @@
 package shop.alien.store.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -19,6 +20,8 @@ import shop.alien.mapper.LifeActivityMapper;
 import shop.alien.mapper.LifeCommentMapper;
 import shop.alien.mapper.LifeLikeRecordMapper;
 import shop.alien.mapper.LifeUserMapper;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 import shop.alien.util.common.ListToPage;
 
 import java.util.*;
@@ -39,6 +42,8 @@ public class LifeActivityService {
 
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
 
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
+
     private final WebAuditService webAuditService;
 
     public int save(LifeActivity lifeActivity) {
@@ -68,10 +73,11 @@ public class LifeActivityService {
         IPage<LifeActivity> activityList = lifeActivityMapper.selectPage(storePage, queryWrapper);
 
         // 查询点赞数据
-        QueryWrapper<LifeLikeRecord> likeWrapper = new QueryWrapper<>();
-        likeWrapper.eq("type", "3");
-        likeWrapper.eq("dianzan_id", phoneId);
-        likeWrapper.eq("delete_flag", "0");
+        LikerScope likerScope = lifeLikeIdentityHelper.resolveFromDianzanId(phoneId);
+        LambdaQueryWrapper<LifeLikeRecord> likeWrapper = new LambdaQueryWrapper<>();
+        likeWrapper.eq(LifeLikeRecord::getType, "3")
+                .eq(LifeLikeRecord::getDeleteFlag, "0");
+        lifeLikeIdentityHelper.applyLikerFilter(likeWrapper, likerScope);
         List<LifeLikeRecord> likeRecordList = lifeLikeRecordMapper.selectList(likeWrapper);
 
         List<LifeActivityVo> activityVoList = new ArrayList<>();
@@ -101,10 +107,11 @@ public class LifeActivityService {
         LifeActivity lifeActivity = lifeActivityMapper.selectById(id);
         LifeActivityVo hdVo = new LifeActivityVo();
         BeanUtils.copyProperties(lifeActivity, hdVo);
-        LambdaUpdateWrapper<LifeLikeRecord> recordLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
-        recordLambdaUpdateWrapper.eq(LifeLikeRecord::getHuifuId, lifeActivity.getId());
-        recordLambdaUpdateWrapper.eq(LifeLikeRecord::getDianzanId, currentId);
-        List<LifeLikeRecord> dianzanRecords = lifeLikeRecordMapper.selectList(recordLambdaUpdateWrapper);
+        LikerScope currentLikerScope = lifeLikeIdentityHelper.resolveFromDianzanId(currentId);
+        LambdaQueryWrapper<LifeLikeRecord> recordQueryWrapper = new LambdaQueryWrapper<>();
+        recordQueryWrapper.eq(LifeLikeRecord::getHuifuId, lifeActivity.getId());
+        lifeLikeIdentityHelper.applyLikerFilter(recordQueryWrapper, currentLikerScope);
+        List<LifeLikeRecord> dianzanRecords = lifeLikeRecordMapper.selectList(recordQueryWrapper);
         if (!CollectionUtils.isEmpty(dianzanRecords)) {
             hdVo.setIsLike("1");
         } else {
@@ -123,10 +130,10 @@ public class LifeActivityService {
                 vo.setHeadImage(user.getUserImage());
                 vo.setUserAdress(user.getAddress());
             }
-            recordLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
-            recordLambdaUpdateWrapper.eq(LifeLikeRecord::getHuifuId, pl.getId());
-            recordLambdaUpdateWrapper.eq(LifeLikeRecord::getDianzanId, currentId);
-            dianzanRecords = lifeLikeRecordMapper.selectList(recordLambdaUpdateWrapper);
+            recordQueryWrapper = new LambdaQueryWrapper<>();
+            recordQueryWrapper.eq(LifeLikeRecord::getHuifuId, pl.getId());
+            lifeLikeIdentityHelper.applyLikerFilter(recordQueryWrapper, currentLikerScope);
+            dianzanRecords = lifeLikeRecordMapper.selectList(recordQueryWrapper);
             if (!CollectionUtils.isEmpty(dianzanRecords)) {
                 vo.setDianzanStatus("1");
             } else {
@@ -157,10 +164,11 @@ public class LifeActivityService {
         LifeActivity lifeActivity = lifeActivityMapper.selectById(id);
         LifeActivityVo hdVo = new LifeActivityVo();
         BeanUtils.copyProperties(lifeActivity, hdVo);
-        LambdaUpdateWrapper<LifeLikeRecord> recordLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
-        recordLambdaUpdateWrapper.eq(LifeLikeRecord::getHuifuId, lifeActivity.getId());
-        recordLambdaUpdateWrapper.eq(LifeLikeRecord::getDianzanId, currentId);
-        List<LifeLikeRecord> dianzanRecords = lifeLikeRecordMapper.selectList(recordLambdaUpdateWrapper);
+        LikerScope currentLikerScope = lifeLikeIdentityHelper.resolveFromDianzanId(currentId);
+        LambdaQueryWrapper<LifeLikeRecord> recordQueryWrapper = new LambdaQueryWrapper<>();
+        recordQueryWrapper.eq(LifeLikeRecord::getHuifuId, lifeActivity.getId());
+        lifeLikeIdentityHelper.applyLikerFilter(recordQueryWrapper, currentLikerScope);
+        List<LifeLikeRecord> dianzanRecords = lifeLikeRecordMapper.selectList(recordQueryWrapper);
         if (!CollectionUtils.isEmpty(dianzanRecords)) {
             hdVo.setIsLike("1");
         } else {
@@ -179,10 +187,10 @@ public class LifeActivityService {
                 vo.setHeadImage(user.getUserImage());
                 vo.setUserAdress(user.getAddress());
             }
-            recordLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
-            recordLambdaUpdateWrapper.eq(LifeLikeRecord::getHuifuId, pl.getId());
-            recordLambdaUpdateWrapper.eq(LifeLikeRecord::getDianzanId, currentId);
-            dianzanRecords = lifeLikeRecordMapper.selectList(recordLambdaUpdateWrapper);
+            recordQueryWrapper = new LambdaQueryWrapper<>();
+            recordQueryWrapper.eq(LifeLikeRecord::getHuifuId, pl.getId());
+            lifeLikeIdentityHelper.applyLikerFilter(recordQueryWrapper, currentLikerScope);
+            dianzanRecords = lifeLikeRecordMapper.selectList(recordQueryWrapper);
             if (!CollectionUtils.isEmpty(dianzanRecords)) {
                 vo.setDianzanStatus("1");
             } else {

+ 15 - 21
alien-store/src/main/java/shop/alien/store/service/LifeCommentService.java

@@ -15,6 +15,8 @@ import org.springframework.util.ObjectUtils;
 import org.springframework.util.StringUtils;
 import shop.alien.store.util.CommonConstant;
 import shop.alien.store.util.LifeDynamicsIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 import shop.alien.entity.second.SecondGoods;
 import shop.alien.entity.store.*;
 import shop.alien.entity.store.vo.LifePinglunVo;
@@ -87,9 +89,9 @@ public class LifeCommentService {
 
     private final LifeDynamicsIdentityHelper dynamicsIdentityHelper;
 
-    private final ClockInRecommendCacheService clockInRecommendCacheService;
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
 
-    private TypeUtil typeUtil;
+    private final ClockInRecommendCacheService clockInRecommendCacheService;
 
     /**
      * 系统app通知开关
@@ -126,12 +128,12 @@ public class LifeCommentService {
         }
         
         try {
-            // 查询是否已有点赞记录(使用 LambdaQueryWrapper 而不是 LambdaUpdateWrapper)
+            LikerScope likerScope = lifeLikeIdentityHelper.resolveFromDianzanId(userId);
             LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(LifeLikeRecord::getType, type)
-                    .eq(LifeLikeRecord::getDianzanId, userId)
                     .eq(LifeLikeRecord::getHuifuId, huifuId)
                     .eq(LifeLikeRecord::getDeleteFlag, CommonConstant.DELETE_FLAG_UNDELETE);
+            lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
             List<LifeLikeRecord> recordList = lifeLikeRecordMapper.selectList(queryWrapper);
             
             // 如果已有点赞记录,直接返回0(表示已点赞)
@@ -142,19 +144,10 @@ public class LifeCommentService {
             
             // 插入点赞记录
             LifeLikeRecord lifeLikeRecord = new LifeLikeRecord();
-            if ( typeUtil.containsUnderscore(userId) ) {
-                PhoneTypeIdResult phoneTypeIdResult = typeUtil.resolveTypeAndId(userId);
-                lifeLikeRecord.setDianzanUserType(phoneTypeIdResult.getType());
-                lifeLikeRecord.setDianzanRefId(phoneTypeIdResult.getId());
-            }
-            // 员工点赞特殊处理
-            if( CommonConstant.LIKE_TYPE_STAFF.equals(type) ) {
-                lifeLikeRecord.setDianzanUserType(1);
-                lifeLikeRecord.setDianzanRefId(Integer.parseInt(userId));
-            }
+            lifeLikeRecord.setDianzanId(userId);
+            lifeLikeIdentityHelper.normalizeBeforeSave(lifeLikeRecord);
             lifeLikeRecord.setCreatedTime(new Date());
             lifeLikeRecord.setHuifuId(huifuId);
-            lifeLikeRecord.setDianzanId(userId);
             lifeLikeRecord.setType(type);
             int insertResult = lifeLikeRecordMapper.insert(lifeLikeRecord);
             
@@ -422,12 +415,12 @@ public class LifeCommentService {
         }
         
         try {
-            // 查询是否已有点赞记录
+            LikerScope likerScope = lifeLikeIdentityHelper.resolveFromDianzanId(userId);
             LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(LifeLikeRecord::getDianzanId, userId)
-                    .eq(LifeLikeRecord::getHuifuId, huifuId)
+            queryWrapper.eq(LifeLikeRecord::getHuifuId, huifuId)
                     .eq(LifeLikeRecord::getType, type)
                     .eq(LifeLikeRecord::getDeleteFlag, CommonConstant.DELETE_FLAG_UNDELETE);
+            lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
             List<LifeLikeRecord> recordList = lifeLikeRecordMapper.selectList(queryWrapper);
             
             // 如果没有点赞记录,直接返回0(表示未点赞)
@@ -439,9 +432,9 @@ public class LifeCommentService {
             // 删除点赞记录(逻辑删除)
             LambdaUpdateWrapper<LifeLikeRecord> updateWrapper = new LambdaUpdateWrapper<>();
             updateWrapper.eq(LifeLikeRecord::getHuifuId, huifuId)
-                    .eq(LifeLikeRecord::getDianzanId, userId)
                     .eq(LifeLikeRecord::getType, type)
                     .eq(LifeLikeRecord::getDeleteFlag, CommonConstant.DELETE_FLAG_UNDELETE);
+            lifeLikeIdentityHelper.applyLikerFilter(updateWrapper, likerScope);
             int deleteResult = lifeLikeRecordMapper.delete(updateWrapper);
             
             if (deleteResult <= 0) {
@@ -600,9 +593,10 @@ public class LifeCommentService {
                     if (!ObjectUtils.isEmpty(user)) {
                         vo.setHeadImage(user.getUserImage());
                     }
-                    LambdaUpdateWrapper<LifeLikeRecord> recordLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+                    LambdaQueryWrapper<LifeLikeRecord> recordLambdaUpdateWrapper = new LambdaQueryWrapper<>();
                     recordLambdaUpdateWrapper.eq(LifeLikeRecord::getHuifuId, vo.getId());
-                    recordLambdaUpdateWrapper.eq(LifeLikeRecord::getDianzanId, vo.getUserId());
+                    lifeLikeIdentityHelper.applyLikerFilter(recordLambdaUpdateWrapper,
+                            lifeLikeIdentityHelper.resolveFromDianzanId(vo.getUserId()));
                     List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(recordLambdaUpdateWrapper);
                     if (ObjectUtils.isEmpty(records)) {
                         vo.setDianzanStatus("0");

+ 14 - 10
alien-store/src/main/java/shop/alien/store/service/LifeUserDynamicsService.java

@@ -20,6 +20,8 @@ import shop.alien.entity.store.vo.LifeUserDynamicsVo;
 import shop.alien.mapper.*;
 import shop.alien.store.util.LifeDynamicsIdentityHelper;
 import shop.alien.store.util.LifeDynamicsIdentityHelper.PublisherScope;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 import shop.alien.util.common.constant.CommentSourceTypeEnum;
 
 import java.util.*;
@@ -69,6 +71,8 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
 
     private final LifeDynamicsIdentityHelper dynamicsIdentityHelper;
 
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
+
 
     public int addLiulanCount(String id) {
         LambdaUpdateWrapper<LifeUserDynamics> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
@@ -141,9 +145,10 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
                     if (!ObjectUtils.isEmpty(user)) {
                         vo.setHeadImage(user.getUserImage());
                     }
-                    LambdaUpdateWrapper<LifeLikeRecord> recordLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+                    LambdaQueryWrapper<LifeLikeRecord> recordLambdaUpdateWrapper = new LambdaQueryWrapper<>();
                     recordLambdaUpdateWrapper.eq(LifeLikeRecord::getHuifuId, vo.getId());
-                    recordLambdaUpdateWrapper.eq(LifeLikeRecord::getDianzanId, vo.getUserId());
+                    lifeLikeIdentityHelper.applyLikerFilter(recordLambdaUpdateWrapper,
+                            lifeLikeIdentityHelper.resolveFromDianzanId(vo.getUserId()));
                     List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(recordLambdaUpdateWrapper);
                     if (ObjectUtils.isEmpty(records)) {
                         vo.setDianzanStatus("0");
@@ -220,8 +225,8 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
                 return Collections.emptyList();
             }
             LambdaQueryWrapper<LifeLikeRecord> wrapper = new LambdaQueryWrapper<>();
-            wrapper.eq(LifeLikeRecord::getDianzanId, phoneId)
-                    .eq(LifeLikeRecord::getType, "2");
+            wrapper.eq(LifeLikeRecord::getType, "2");
+            lifeLikeIdentityHelper.applyLikerFilter(wrapper, lifeLikeIdentityHelper.resolveFromDianzanId(phoneId));
             return lifeLikeRecordMapper.selectList(wrapper).stream()
                     .map(LifeLikeRecord::getHuifuId)
                     .collect(Collectors.toList());
@@ -412,11 +417,9 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
             CompletableFuture<Set<String>> likeSetFuture = CompletableFuture.supplyAsync(() -> {
                 LambdaQueryWrapper<LifeLikeRecord> likeWrapper = new LambdaQueryWrapper<>();
                 likeWrapper.eq(LifeLikeRecord::getType, "2");
-                if (userType.equals("1")) {
-                    likeWrapper.eq(LifeLikeRecord::getDianzanId, "user_" + loginPhone);
-                } else {
-                    likeWrapper.eq(LifeLikeRecord::getDianzanId, "store_" + loginPhone);
-                }
+                String likerId = userType.equals("1") ? "user_" + loginPhone : "store_" + loginPhone;
+                lifeLikeIdentityHelper.applyLikerFilter(likeWrapper,
+                        lifeLikeIdentityHelper.resolveFromDianzanId(likerId));
                 List<LifeLikeRecord> lifeLikeList = lifeLikeRecordMapper.selectList(likeWrapper);
                 return lifeLikeList.stream().map(LifeLikeRecord::getHuifuId).collect(Collectors.toSet());
             });
@@ -667,8 +670,9 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
         resultMap.put("dynamicTotal", lifeUserDynamicsIPage.getTotal());
         // 查询我的点赞
         LambdaQueryWrapper<LifeLikeRecord> likeWrapper = new LambdaQueryWrapper<>();
-        likeWrapper.eq(LifeLikeRecord::getDianzanId, myselfPhoneId);
         likeWrapper.eq(LifeLikeRecord::getType, "2");
+        lifeLikeIdentityHelper.applyLikerFilter(likeWrapper,
+                lifeLikeIdentityHelper.resolveFromDianzanId(myselfPhoneId));
         List<LifeLikeRecord> lifeLikeList = lifeLikeRecordMapper.selectList(likeWrapper);
         List<String> likeList = lifeLikeList.stream().map(LifeLikeRecord::getHuifuId).collect(Collectors.toList());
 

+ 10 - 5
alien-store/src/main/java/shop/alien/store/service/impl/CommonCommentServiceImpl.java

@@ -18,6 +18,8 @@ import shop.alien.mapper.*;
 import shop.alien.store.service.CommonCommentService;
 import shop.alien.store.util.CommonConstant;
 import shop.alien.store.util.LifeDynamicsIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 import shop.alien.store.util.ai.AiContentModerationUtil;
 import shop.alien.util.common.constant.CommentSourceTypeEnum;
 import shop.alien.util.common.safe.TextModerationUtil;
@@ -46,6 +48,7 @@ public class CommonCommentServiceImpl extends ServiceImpl<CommonCommentMapper, C
 
     private final LifeDynamicsIdentityHelper dynamicsIdentityHelper;
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
     private final StoreUserMapper storeUserMapper;
     private final LifeUserViolationMapper lifeUserViolationMapper;
     private final LifeUserMapper lifeUserMapper;
@@ -316,11 +319,13 @@ public class CommonCommentServiceImpl extends ServiceImpl<CommonCommentMapper, C
             }
 
             // 3.查询当前用户是否喜欢
-            LifeLikeRecord lifeLikeRecord = lifeLikeRecordMapper.selectOne(new QueryWrapper<LifeLikeRecord>()
-                    .eq("type", CommonConstant.LIKE_TYPE_DYNAMICS)
-                    .eq("dianzan_id", fansId)
-                    .eq("huifu_id", sourceId)
-                    .eq("delete_flag", 0));
+            LikerScope likerScope = lifeLikeIdentityHelper.resolveFromDianzanId(fansId);
+            LambdaQueryWrapper<LifeLikeRecord> likeQueryWrapper = new LambdaQueryWrapper<>();
+            likeQueryWrapper.eq(LifeLikeRecord::getType, CommonConstant.LIKE_TYPE_DYNAMICS)
+                    .eq(LifeLikeRecord::getHuifuId, sourceId)
+                    .eq(LifeLikeRecord::getDeleteFlag, 0);
+            lifeLikeIdentityHelper.applyLikerFilter(likeQueryWrapper, likerScope);
+            LifeLikeRecord lifeLikeRecord = lifeLikeRecordMapper.selectOne(likeQueryWrapper);
             if(null != lifeLikeRecord){
                 map.put("isLike",1);
             } else {

+ 14 - 8
alien-store/src/main/java/shop/alien/store/service/impl/CommonRatingServiceImpl.java

@@ -46,6 +46,8 @@ import shop.alien.util.common.safe.TextModerationUtil;
 import shop.alien.util.common.safe.TextReviewServiceEnum;
 import shop.alien.util.type.LifeCollectIdentityQuery;
 import shop.alien.util.type.LifeNoticeUtil;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -81,6 +83,7 @@ public class CommonRatingServiceImpl extends ServiceImpl<CommonRatingMapper, Com
     private final LifeUserMapper lifeUserMapper;
     private final CommonCommentMapper commonCommentMapper;
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
     private final LifeCollectMapper lifeCollectMapper;
     private final LifeFansMapper lifeFansMapper;
     private final TagsSynonymMapper tagsSynonymMapper;
@@ -872,11 +875,13 @@ public class CommonRatingServiceImpl extends ServiceImpl<CommonRatingMapper, Com
      * @param commonRatingVo 评价vo
      */
     private void setIsLike(Integer ratingId, Long userId, CommonRatingVo commonRatingVo) {
-        List<LifeLikeRecord> lifeLikeRecords = lifeLikeRecordMapper.selectList(new QueryWrapper<LifeLikeRecord>().lambda()
-                .eq(LifeLikeRecord::getDianzanId, userId)
-                .eq(LifeLikeRecord::getHuifuId, ratingId)
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId != null ? userId.intValue() : null);
+        LambdaQueryWrapper<LifeLikeRecord> likeQueryWrapper = new LambdaQueryWrapper<>();
+        likeQueryWrapper.eq(LifeLikeRecord::getHuifuId, ratingId)
                 .eq(LifeLikeRecord::getDeleteFlag, 0)
-                .eq(LifeLikeRecord::getType, CommonConstant.RATING_LIKE));
+                .eq(LifeLikeRecord::getType, CommonConstant.RATING_LIKE);
+        lifeLikeIdentityHelper.applyLikerFilter(likeQueryWrapper, likerScope);
+        List<LifeLikeRecord> lifeLikeRecords = lifeLikeRecordMapper.selectList(likeQueryWrapper);
         if(lifeLikeRecords.size() > 0){
             commonRatingVo.setIsLike(1);
         } else {
@@ -972,10 +977,11 @@ public class CommonRatingServiceImpl extends ServiceImpl<CommonRatingMapper, Com
             List<LifeLikeRecord> lifeLikeRecords = new ArrayList<>();
             Map<String, LifeLikeRecord> likeRecordMap = new HashMap<>();
             if (userId != null) {
-                lifeLikeRecords = lifeLikeRecordMapper.selectList(
-                        new QueryWrapper<LifeLikeRecord>().lambda()
-                        .eq(LifeLikeRecord::getDianzanId, userId)
-                        .eq(LifeLikeRecord::getType, CommonConstant.RATING_LIKE));
+                LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId.intValue());
+                LambdaQueryWrapper<LifeLikeRecord> likeQueryWrapper = new LambdaQueryWrapper<>();
+                likeQueryWrapper.eq(LifeLikeRecord::getType, CommonConstant.RATING_LIKE);
+                lifeLikeIdentityHelper.applyLikerFilter(likeQueryWrapper, likerScope);
+                lifeLikeRecords = lifeLikeRecordMapper.selectList(likeQueryWrapper);
                 likeRecordMap = lifeLikeRecords.stream()
                         .collect(Collectors.toMap(LifeLikeRecord::getHuifuId, Function.identity()));
             }

+ 8 - 2
alien-store/src/main/java/shop/alien/store/service/impl/OrderReviewServiceImpl.java

@@ -22,6 +22,8 @@ import shop.alien.entity.store.vo.PendingReviewVo;
 import shop.alien.mapper.*;
 import shop.alien.store.service.OrderReviewService;
 import shop.alien.store.service.ReviewCommentService;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -44,6 +46,7 @@ public class OrderReviewServiceImpl extends ServiceImpl<OrderReviewMapper, Order
     private final ReviewCommentService reviewCommentService;
     private final ReviewCommentMapper reviewCommentMapper;
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
     private final LawyerUserMapper lawyerUserMapper;
 
     @Override
@@ -502,17 +505,19 @@ public class OrderReviewServiceImpl extends ServiceImpl<OrderReviewMapper, Order
         }
 
         // 检查是否已点赞
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
         LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(LifeLikeRecord::getType, "7")
-                .eq(LifeLikeRecord::getDianzanId, String.valueOf(userId))
                 .eq(LifeLikeRecord::getHuifuId, String.valueOf(reviewId))
                 .eq(LifeLikeRecord::getDeleteFlag, 0);
+        lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
         List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(queryWrapper);
 
         if (CollectionUtils.isEmpty(records)) {
             // 插入点赞记录
             LifeLikeRecord likeRecord = new LifeLikeRecord();
             likeRecord.setDianzanId(String.valueOf(userId));
+            lifeLikeIdentityHelper.normalizeBeforeSave(likeRecord);
             likeRecord.setHuifuId(String.valueOf(reviewId));
             likeRecord.setType("7");
             likeRecord.setCreatedTime(new Date());
@@ -548,11 +553,12 @@ public class OrderReviewServiceImpl extends ServiceImpl<OrderReviewMapper, Order
         }
 
         // 查询点赞记录
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
         LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(LifeLikeRecord::getType, "7")
-                .eq(LifeLikeRecord::getDianzanId, String.valueOf(userId))
                 .eq(LifeLikeRecord::getHuifuId, String.valueOf(reviewId))
                 .eq(LifeLikeRecord::getDeleteFlag, 0);
+        lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
         List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(queryWrapper);
 
         if (!CollectionUtils.isEmpty(records)) {

+ 11 - 3
alien-store/src/main/java/shop/alien/store/service/impl/ReviewCommentServiceImpl.java

@@ -22,6 +22,8 @@ import shop.alien.mapper.ReviewCommentMapper;
 import shop.alien.entity.store.LawyerUser;
 import shop.alien.store.service.OrderReviewService;
 import shop.alien.store.service.ReviewCommentService;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 
 import java.util.Date;
 import java.util.List;
@@ -42,15 +44,18 @@ public class ReviewCommentServiceImpl extends ServiceImpl<ReviewCommentMapper, R
     private final OrderReviewService orderReviewService;
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
     private final LawyerUserMapper lawyerUserMapper;
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
 
     public ReviewCommentServiceImpl(ReviewCommentMapper reviewCommentMapper,
                                     @Lazy OrderReviewService orderReviewService,
                                     LifeLikeRecordMapper lifeLikeRecordMapper,
-                                    LawyerUserMapper lawyerUserMapper) {
+                                    LawyerUserMapper lawyerUserMapper,
+                                    LifeLikeIdentityHelper lifeLikeIdentityHelper) {
         this.reviewCommentMapper = reviewCommentMapper;
         this.orderReviewService = orderReviewService;
         this.lifeLikeRecordMapper = lifeLikeRecordMapper;
         this.lawyerUserMapper = lawyerUserMapper;
+        this.lifeLikeIdentityHelper = lifeLikeIdentityHelper;
     }
 
     /**
@@ -185,17 +190,19 @@ public class ReviewCommentServiceImpl extends ServiceImpl<ReviewCommentMapper, R
         }
 
         // 检查是否已点赞
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
         LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(LifeLikeRecord::getType, "8")
-                .eq(LifeLikeRecord::getDianzanId, String.valueOf(userId))
                 .eq(LifeLikeRecord::getHuifuId, String.valueOf(commentId))
                 .eq(LifeLikeRecord::getDeleteFlag, 0);
+        lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
         List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(queryWrapper);
 
         if (CollectionUtils.isEmpty(records)) {
             // 插入点赞记录
             LifeLikeRecord likeRecord = new LifeLikeRecord();
             likeRecord.setDianzanId(String.valueOf(userId));
+            lifeLikeIdentityHelper.normalizeBeforeSave(likeRecord);
             likeRecord.setHuifuId(String.valueOf(commentId));
             likeRecord.setType("8");
             likeRecord.setCreatedTime(new Date());
@@ -233,11 +240,12 @@ public class ReviewCommentServiceImpl extends ServiceImpl<ReviewCommentMapper, R
         }
 
         // 查询点赞记录
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
         LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(LifeLikeRecord::getType, "8")
-                .eq(LifeLikeRecord::getDianzanId, String.valueOf(userId))
                 .eq(LifeLikeRecord::getHuifuId, String.valueOf(commentId))
                 .eq(LifeLikeRecord::getDeleteFlag, 0);
+        lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
         List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(queryWrapper);
 
         if (!CollectionUtils.isEmpty(records)) {

+ 10 - 4
alien-store/src/main/java/shop/alien/store/service/impl/StoreClockInServiceImpl.java

@@ -31,6 +31,8 @@ import shop.alien.util.common.constant.CommentSourceTypeEnum;
 import shop.alien.util.type.PhoneTypeIdResult;
 import shop.alien.util.type.LifeCollectIdentityQuery;
 import shop.alien.util.type.TypeUtil;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
@@ -63,6 +65,8 @@ public class StoreClockInServiceImpl extends ServiceImpl<StoreClockInMapper, Sto
 
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
 
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
+
     private final StoreCommentService storeCommentService;
 
     private final LifeCollectMapper lifeCollectMapper;
@@ -156,9 +160,10 @@ public class StoreClockInServiceImpl extends ServiceImpl<StoreClockInMapper, Sto
         
         // 优化:提前查询所有需要的数据,避免在循环中查询
         // 查询我的点赞 - 使用Set提高查找效率
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
         LambdaQueryWrapper<LifeLikeRecord> likeWrapper = new LambdaQueryWrapper<>();
-        likeWrapper.eq(LifeLikeRecord::getDianzanId, userId);
         likeWrapper.eq(LifeLikeRecord::getType, "5");
+        lifeLikeIdentityHelper.applyLikerFilter(likeWrapper, likerScope);
         List<LifeLikeRecord> lifeLikeList = lifeLikeRecordMapper.selectList(likeWrapper);
         Set<String> likeSet = lifeLikeList.stream()
                 .map(LifeLikeRecord::getHuifuId)
@@ -544,10 +549,11 @@ public class StoreClockInServiceImpl extends ServiceImpl<StoreClockInMapper, Sto
                 storeClockInVo.setIsCollect("1");
             }
 
+            LikerScope viewerLikerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
             LambdaQueryWrapper<LifeLikeRecord> likeQw = new LambdaQueryWrapper<>();
-            likeQw.eq(LifeLikeRecord::getDianzanId, userId);
-            likeQw.eq(LifeLikeRecord::getType, "5");
-            likeQw.eq(LifeLikeRecord::getHuifuId, String.valueOf(storeClockIn.getId()));
+            likeQw.eq(LifeLikeRecord::getType, "5")
+                    .eq(LifeLikeRecord::getHuifuId, String.valueOf(storeClockIn.getId()));
+            lifeLikeIdentityHelper.applyLikerFilter(likeQw, viewerLikerScope);
             storeClockInVo.setIsLike(lifeLikeRecordMapper.selectCount(likeQw) > 0 ? "1" : "0");
 
             LifeUser viewer = lifeUserMapper.selectById(userId);

+ 10 - 2
alien-store/src/main/java/shop/alien/store/service/impl/StoreCommentServiceImpl.java

@@ -32,6 +32,8 @@ import shop.alien.util.common.safe.TextModerationResultVO;
 import shop.alien.util.common.safe.TextModerationUtil;
 import shop.alien.util.common.safe.TextReviewServiceEnum;
 import shop.alien.util.type.LifeNoticeUtil;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 
 import java.io.IOException;
 import java.math.BigDecimal;
@@ -57,6 +59,8 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
 
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
 
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
+
     private final FileUploadUtil fileUploadUtil;
 
     private final StoreImgMapper storeImgMapper;
@@ -258,8 +262,10 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
             storeCommentVo.setCommitCount(0);
             //父级点赞状态
             if (StringUtils.isNotEmpty(phoneId)) {
+                LikerScope likerScope = lifeLikeIdentityHelper.resolveFromDianzanId(phoneId);
                 LambdaQueryWrapper<LifeLikeRecord> likeRecordQueryWrapper = new LambdaQueryWrapper<>();
-                likeRecordQueryWrapper.eq(LifeLikeRecord::getDianzanId, phoneId).eq(LifeLikeRecord::getHuifuId, storeCommentVo.getId());
+                likeRecordQueryWrapper.eq(LifeLikeRecord::getHuifuId, storeCommentVo.getId());
+                lifeLikeIdentityHelper.applyLikerFilter(likeRecordQueryWrapper, likerScope);
                 Integer i = lifeLikeRecordMapper.selectCount(likeRecordQueryWrapper);
                 if (i > 0) {
                     storeCommentVo.setIsLike(1);
@@ -326,8 +332,10 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
             //子级点赞状态
             if (StringUtils.isNotEmpty(phoneId)) {
                 childCommentList.forEach(child -> {
+                    LikerScope childLikerScope = lifeLikeIdentityHelper.resolveFromDianzanId(phoneId);
                     LambdaQueryWrapper<LifeLikeRecord> childlikeRecordQueryWrapper = new LambdaQueryWrapper<>();
-                    childlikeRecordQueryWrapper.eq(LifeLikeRecord::getDianzanId, phoneId).eq(LifeLikeRecord::getHuifuId, child.getId());
+                    childlikeRecordQueryWrapper.eq(LifeLikeRecord::getHuifuId, child.getId());
+                    lifeLikeIdentityHelper.applyLikerFilter(childlikeRecordQueryWrapper, childLikerScope);
                     if (lifeLikeRecordMapper.selectCount(childlikeRecordQueryWrapper) > 0) {
                         child.setIsLike(1);
                     } else {

+ 18 - 7
alien-store/src/main/java/shop/alien/store/service/impl/StoreMenuServiceImpl.java

@@ -22,6 +22,8 @@ import shop.alien.mapper.LifeLikeRecordMapper;
 import shop.alien.mapper.StoreMenuMapper;
 import shop.alien.store.service.StoreImgService;
 import shop.alien.store.service.StoreMenuService;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 
 import java.util.Collections;
 import java.util.Comparator;
@@ -46,6 +48,8 @@ public class StoreMenuServiceImpl extends ServiceImpl<StoreMenuMapper, StoreMenu
 
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
 
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
+
     private final StoreImgService storeImgService;
 
     private final LifeGroupBuyThaliMapper lifeGroupBuyThaliMapper;
@@ -94,9 +98,10 @@ public class StoreMenuServiceImpl extends ServiceImpl<StoreMenuMapper, StoreMenu
                     .collect(Collectors.toSet());
 
             // 批量查询点赞记录
+            LikerScope likerScope = lifeLikeIdentityHelper.resolveFromDianzanId(phoneId);
             LambdaQueryWrapper<LifeLikeRecord> likeQuery = new LambdaQueryWrapper<>();
-            likeQuery.eq(LifeLikeRecord::getDianzanId, phoneId)
-                    .in(LifeLikeRecord::getHuifuId, menuIdStrSet);
+            likeQuery.in(LifeLikeRecord::getHuifuId, menuIdStrSet);
+            lifeLikeIdentityHelper.applyLikerFilter(likeQuery, likerScope);
             List<LifeLikeRecord> likeRecordList = lifeLikeRecordMapper.selectList(likeQuery);
 
             // 构建已点赞的菜单ID集合
@@ -322,7 +327,11 @@ public class StoreMenuServiceImpl extends ServiceImpl<StoreMenuMapper, StoreMenu
      */
     @Override
     public boolean getMenuLikeStatus(String userId, Integer menuId) {
-        return lifeLikeRecordMapper.selectCount(new QueryWrapper<LifeLikeRecord>().eq("dianzan_id", userId).eq("huifu_id", menuId).eq("delete_flag", 0)) > 0;
+        LikerScope likerScope = lifeLikeIdentityHelper.resolveFromDianzanId(userId);
+        LambdaQueryWrapper<LifeLikeRecord> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(LifeLikeRecord::getHuifuId, menuId).eq(LifeLikeRecord::getDeleteFlag, 0);
+        lifeLikeIdentityHelper.applyLikerFilter(wrapper, likerScope);
+        return lifeLikeRecordMapper.selectCount(wrapper) > 0;
     }
 
 
@@ -482,10 +491,11 @@ public class StoreMenuServiceImpl extends ServiceImpl<StoreMenuMapper, StoreMenu
         }
 
         // 批量查询点赞记录
+        LikerScope likerScope = lifeLikeIdentityHelper.resolveFromDianzanId(phoneId);
         LambdaQueryWrapper<LifeLikeRecord> likeQuery = new LambdaQueryWrapper<>();
-        likeQuery.eq(LifeLikeRecord::getDianzanId, phoneId)
-                .eq(LifeLikeRecord::getDeleteFlag, 0)
+        likeQuery.eq(LifeLikeRecord::getDeleteFlag, 0)
                 .in(LifeLikeRecord::getHuifuId, menuIdStrSet);
+        lifeLikeIdentityHelper.applyLikerFilter(likeQuery, likerScope);
         List<LifeLikeRecord> likeRecordList = lifeLikeRecordMapper.selectList(likeQuery);
 
         // 构建已点赞的菜单ID集合
@@ -524,10 +534,11 @@ public class StoreMenuServiceImpl extends ServiceImpl<StoreMenuMapper, StoreMenu
         StoreMenuVo storeMenuVo = storeMenuMapper.getClientMenuInfoById(id);
         if(StringUtils.isNotEmpty(phoneId)){
             // 批量查询点赞记录
+            LikerScope likerScope = lifeLikeIdentityHelper.resolveFromDianzanId(phoneId);
             LambdaQueryWrapper<LifeLikeRecord> likeQuery = new LambdaQueryWrapper<>();
-            likeQuery.eq(LifeLikeRecord::getDianzanId, phoneId)
-                    .eq(LifeLikeRecord::getDeleteFlag, 0)
+            likeQuery.eq(LifeLikeRecord::getDeleteFlag, 0)
                     .eq(LifeLikeRecord::getHuifuId, storeMenuVo.getId());
+            lifeLikeIdentityHelper.applyLikerFilter(likeQuery, likerScope);
             int likeCount = lifeLikeRecordMapper.selectCount(likeQuery);
             if(likeCount > 0){
                 storeMenuVo.setIsLike(1);

+ 11 - 3
alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffCommentServiceImpl.java

@@ -21,6 +21,8 @@ import shop.alien.mapper.StoreStaffCommentMapper;
 import shop.alien.store.service.StoreStaffCommentService;
 import shop.alien.store.service.StoreStaffReviewService;
 import shop.alien.store.util.ai.AiContentModerationUtil;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 
 import java.util.Date;
 import java.util.List;
@@ -45,14 +47,17 @@ public class StoreStaffCommentServiceImpl extends ServiceImpl<StoreStaffCommentM
     private final StoreStaffReviewService storeStaffReviewService;
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
     private final AiContentModerationUtil aiContentModerationUtil;
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
 
     public StoreStaffCommentServiceImpl(StoreStaffCommentMapper storeStaffCommentMapper,
                                         @Lazy StoreStaffReviewService storeStaffReviewService,
-                                        LifeLikeRecordMapper lifeLikeRecordMapper, AiContentModerationUtil aiContentModerationUtil) {
+                                        LifeLikeRecordMapper lifeLikeRecordMapper, AiContentModerationUtil aiContentModerationUtil,
+                                        LifeLikeIdentityHelper lifeLikeIdentityHelper) {
         this.storeStaffCommentMapper = storeStaffCommentMapper;
         this.storeStaffReviewService = storeStaffReviewService;
         this.lifeLikeRecordMapper = lifeLikeRecordMapper;
         this.aiContentModerationUtil = aiContentModerationUtil;
+        this.lifeLikeIdentityHelper = lifeLikeIdentityHelper;
     }
 
     @Override
@@ -438,11 +443,12 @@ public class StoreStaffCommentServiceImpl extends ServiceImpl<StoreStaffCommentM
      * 检查是否已点赞
      */
     private boolean isLiked(Integer commentId, Integer userId, String type) {
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
         LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(LifeLikeRecord::getType, type)
-                .eq(LifeLikeRecord::getDianzanId, String.valueOf(userId))
                 .eq(LifeLikeRecord::getHuifuId, String.valueOf(commentId))
                 .eq(LifeLikeRecord::getDeleteFlag, 0);
+        lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
         List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(queryWrapper);
         return !CollectionUtils.isEmpty(records);
     }
@@ -455,6 +461,7 @@ public class StoreStaffCommentServiceImpl extends ServiceImpl<StoreStaffCommentM
             // 插入点赞记录
             LifeLikeRecord likeRecord = new LifeLikeRecord();
             likeRecord.setDianzanId(String.valueOf(userId));
+            lifeLikeIdentityHelper.normalizeBeforeSave(likeRecord);
             likeRecord.setHuifuId(String.valueOf(commentId));
             likeRecord.setType(LIKE_TYPE_COMMENT);
             likeRecord.setCreatedTime(new Date());
@@ -485,11 +492,12 @@ public class StoreStaffCommentServiceImpl extends ServiceImpl<StoreStaffCommentM
     private R<Boolean> doCancelLikeComment(Integer commentId, Integer userId) {
         try {
             // 查询点赞记录
+            LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
             LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(LifeLikeRecord::getType, LIKE_TYPE_COMMENT)
-                    .eq(LifeLikeRecord::getDianzanId, String.valueOf(userId))
                     .eq(LifeLikeRecord::getHuifuId, String.valueOf(commentId))
                     .eq(LifeLikeRecord::getDeleteFlag, 0);
+            lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
             List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(queryWrapper);
 
             if (CollectionUtils.isEmpty(records)) {

+ 6 - 1
alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffConfigServiceImpl.java

@@ -38,6 +38,8 @@ import shop.alien.store.service.StoreStaffFitnessCertificationService;
 import shop.alien.store.service.StoreStaffFitnessCourseService;
 import shop.alien.store.service.StoreStaffFitnessExperienceService;
 import shop.alien.store.util.CommonConstant;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 import shop.alien.util.ali.AliOSSUtil;
 
 import java.io.File;
@@ -84,6 +86,8 @@ public class StoreStaffConfigServiceImpl implements StoreStaffConfigService {
 
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
 
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
+
     private final StoreStaffAuditAsyncService storeStaffAuditAsyncService;
 
     /**
@@ -1802,11 +1806,12 @@ public class StoreStaffConfigServiceImpl implements StoreStaffConfigService {
         }
 
         try {
+            LikerScope likerScope = lifeLikeIdentityHelper.resolveFromDianzanId(userId);
             LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(LifeLikeRecord::getType, "8") // 8-点赞员工
-                    .eq(LifeLikeRecord::getDianzanId, userId)
                     .eq(LifeLikeRecord::getHuifuId, String.valueOf(staffId))
                     .eq(LifeLikeRecord::getDeleteFlag, 0);
+            lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
             long count = lifeLikeRecordMapper.selectCount(queryWrapper);
             return count > 0;
         } catch (Exception e) {

+ 8 - 2
alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffReviewServiceImpl.java

@@ -21,6 +21,8 @@ import shop.alien.mapper.*;
 import shop.alien.store.service.StoreStaffCommentService;
 import shop.alien.store.service.StoreStaffReviewService;
 import shop.alien.store.util.ai.AiContentModerationUtil;
+import shop.alien.util.LifeLikeIdentityHelper;
+import shop.alien.util.LifeLikeIdentityHelper.LikerScope;
 import shop.alien.util.common.DistanceUtil;
 
 import java.math.BigDecimal;
@@ -45,6 +47,7 @@ public class StoreStaffReviewServiceImpl extends ServiceImpl<StoreStaffReviewMap
     private final StoreStaffCommentService storeStaffCommentService;
     private final StoreStaffCommentMapper storeStaffCommentMapper;
     private final LifeLikeRecordMapper lifeLikeRecordMapper;
+    private final LifeLikeIdentityHelper lifeLikeIdentityHelper;
     private final StoreStaffConfigMapper storeStaffConfigMapper;
     private final StoreInfoMapper storeInfoMapper;
     private final StoreUserMapper storeUserMapper;
@@ -389,11 +392,12 @@ public class StoreStaffReviewServiceImpl extends ServiceImpl<StoreStaffReviewMap
      * 检查是否已点赞
      */
     private boolean isLiked(Integer targetId, Integer userId, String type) {
+        LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
         LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(LifeLikeRecord::getType, type)
-                .eq(LifeLikeRecord::getDianzanId, String.valueOf(userId))
                 .eq(LifeLikeRecord::getHuifuId, String.valueOf(targetId))
                 .eq(LifeLikeRecord::getDeleteFlag, 0);
+        lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
         List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(queryWrapper);
         return !CollectionUtils.isEmpty(records);
     }
@@ -406,6 +410,7 @@ public class StoreStaffReviewServiceImpl extends ServiceImpl<StoreStaffReviewMap
             // 插入点赞记录
             LifeLikeRecord likeRecord = new LifeLikeRecord();
             likeRecord.setDianzanId(String.valueOf(userId));
+            lifeLikeIdentityHelper.normalizeBeforeSave(likeRecord);
             likeRecord.setHuifuId(String.valueOf(reviewId));
             likeRecord.setType(type);
             likeRecord.setCreatedTime(new Date());
@@ -436,11 +441,12 @@ public class StoreStaffReviewServiceImpl extends ServiceImpl<StoreStaffReviewMap
     private <T> R<Boolean> doCancelLike(Integer targetId, Integer userId, String type, Class<T> entityClass) {
         try {
             // 查询点赞记录
+            LikerScope likerScope = lifeLikeIdentityHelper.fromLifeUserId(userId);
             LambdaQueryWrapper<LifeLikeRecord> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(LifeLikeRecord::getType, type)
-                    .eq(LifeLikeRecord::getDianzanId, String.valueOf(userId))
                     .eq(LifeLikeRecord::getHuifuId, String.valueOf(targetId))
                     .eq(LifeLikeRecord::getDeleteFlag, 0);
+            lifeLikeIdentityHelper.applyLikerFilter(queryWrapper, likerScope);
             List<LifeLikeRecord> records = lifeLikeRecordMapper.selectList(queryWrapper);
 
             if (CollectionUtils.isEmpty(records)) {