瀏覽代碼

feat:关注记录插入修改(user_***修改)

刘云鑫 4 小時之前
父節點
當前提交
20939dea2d
共有 1 個文件被更改,包括 34 次插入14 次删除
  1. 34 14
      alien-store/src/main/java/shop/alien/store/service/LifeUserService.java

+ 34 - 14
alien-store/src/main/java/shop/alien/store/service/LifeUserService.java

@@ -35,9 +35,9 @@ import shop.alien.mapper.second.SecondRiskControlRecordMapper;
 import shop.alien.mapper.second.SecondUserCreditMapper;
 import shop.alien.store.config.BaseRedisService;
 import shop.alien.store.config.WebSocketProcess;
+import shop.alien.store.feign.SecondServiceFeign;
 import shop.alien.store.service.clockin.ClockInRecommendCacheService;
 import shop.alien.store.service.dynamics.DynamicsRecommendCacheService;
-import shop.alien.store.feign.SecondServiceFeign;
 import shop.alien.store.util.FunctionMagic;
 import shop.alien.util.type.PhoneTypeIdResult;
 import shop.alien.util.type.TypeUtil;
@@ -107,8 +107,7 @@ public class LifeUserService extends ServiceImpl<LifeUserMapper, LifeUser> {
 
     private final JdbcTemplate jdbcTemplate;
 
-
-    private TypeUtil typeUtil;
+    private final TypeUtil typeUtil;
 
     @Autowired
     private RiskControlProperties riskControlProperties;
@@ -154,16 +153,37 @@ public class LifeUserService extends ServiceImpl<LifeUserMapper, LifeUser> {
         try {
             fans.setCreatedTime(new Date());
 
+            Integer followedType = null;
+            Integer followedId  = null;
+            Integer fansType  = null;
+            Integer fansId  = null;
+            if ( typeUtil.containsUnderscore(fans.getFollowedId()) ){
+                PhoneTypeIdResult phoneTypeIdResult = typeUtil.resolveTypeAndId(fans.getFollowedId());
+                followedType = phoneTypeIdResult.getType();
+                followedId = phoneTypeIdResult.getId();
+            }
+            if ( typeUtil.containsUnderscore(fans.getFansId()) ){
+                PhoneTypeIdResult phoneTypeIdResult = typeUtil.resolveTypeAndId(fans.getFansId());
+                fansType = phoneTypeIdResult.getType();
+                fansId = phoneTypeIdResult.getId();
+
+            }
+            fans.setFollowedUserType(followedType);
+            fans.setFollowedRefId(followedId);
+            fans.setFansUserType(fansType);
+            fans.setFansRefId(fansId);
             LambdaQueryWrapper<LifeFans> activeQ = new LambdaQueryWrapper<>();
-            activeQ.eq(LifeFans::getFollowedId, fans.getFollowedId())
-                    .eq(LifeFans::getFansId, fans.getFansId())
+            activeQ.eq(LifeFans::getFollowedUserType, followedType)
+                    .eq(LifeFans::getFollowedRefId, followedId)
+                    .eq(LifeFans::getFansUserType, fansType)
+                    .eq(LifeFans::getFansRefId, fansId)
                     .last("LIMIT 1");
             LifeFans active = lifeFansMapper.selectOne(activeQ);
             if (active != null) {
                 return LifeFansFollowOutcome.success("您已关注,无需重复操作");
             }
 
-            int revived = reviveDeletedFollowRow(fans.getFollowedId(), fans.getFansId());
+            int revived = reviveDeletedFollowRow(followedType, followedId, fansType, fansId);
             if (revived > 0) {
                 sendFollowNoticeIfAllowed(fans);
                 notifyRecommendFeedCachesFollow(fans, true);
@@ -258,10 +278,12 @@ public class LifeUserService extends ServiceImpl<LifeUserMapper, LifeUser> {
     /**
      * 绕过 MyBatis-Plus 逻辑删除插件对 Mapper 手写 UPDATE 的条件注入风险,直接恢复一条软删的关注记录。
      */
-    private int reviveDeletedFollowRow(String followedId, String fansId) {
+    private int reviveDeletedFollowRow(Integer followedType, Integer followedId, Integer fansType, Integer fansId) {
         return jdbcTemplate.update(
-                "UPDATE life_fans SET delete_flag = 0 WHERE followed_id = ? AND fans_id = ? AND delete_flag = 1 LIMIT 1",
+                "UPDATE life_fans SET delete_flag = 0 WHERE followed_user_type = ? AND followed_ref_id = ? AND fans_user_type = ? AND fans_ref_id = ? AND delete_flag = 1 LIMIT 1",
+                followedType,
                 followedId,
+                fansType,
                 fansId);
     }
 
@@ -295,12 +317,10 @@ public class LifeUserService extends ServiceImpl<LifeUserMapper, LifeUser> {
         notice.setNoticeType(0);
         notice.setReceiverId(fans.getFollowedId());
         notice.setSenderId(fans.getFansId());
-
-        if (fans.getFollowedId().contains("_")){
-            PhoneTypeIdResult phoneTypeIdResult =typeUtil.resolveTypeAndId(fans.getFollowedId());
-            notice.setReceiverUserType(phoneTypeIdResult.getType());
-            notice.setSenderRefId(phoneTypeIdResult.getId());
-        }
+        notice.setSenderUserType(fans.getFansUserType());
+        notice.setSenderRefId(fans.getFansRefId());
+        notice.setReceiverUserType(fans.getFollowedUserType());
+        notice.setReceiverRefId(fans.getFollowedRefId());
 
         String storePhones = "''";
         String userPhones = "''";