|
|
@@ -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 = "''";
|