cp榜单key拼接按男女顺序排列
This commit is contained in:
parent
1bd9d17ffb
commit
e97867d156
@ -9,6 +9,7 @@ import com.red.circle.other.app.dto.cmd.activity.RankingDataUpdateCmd;
|
|||||||
import com.red.circle.other.app.service.activity.RankingActivityService;
|
import com.red.circle.other.app.service.activity.RankingActivityService;
|
||||||
import com.red.circle.other.domain.gateway.user.UserProfileGateway;
|
import com.red.circle.other.domain.gateway.user.UserProfileGateway;
|
||||||
import com.red.circle.other.domain.gateway.user.ability.UserRegionGateway;
|
import com.red.circle.other.domain.gateway.user.ability.UserRegionGateway;
|
||||||
|
import com.red.circle.other.domain.model.user.UserProfile;
|
||||||
import com.red.circle.other.domain.ranking.RankingActivityType;
|
import com.red.circle.other.domain.ranking.RankingActivityType;
|
||||||
import com.red.circle.other.domain.ranking.RankingCycleType;
|
import com.red.circle.other.domain.ranking.RankingCycleType;
|
||||||
import com.red.circle.other.domain.ranking.RankingDimension;
|
import com.red.circle.other.domain.ranking.RankingDimension;
|
||||||
@ -53,6 +54,7 @@ import java.util.stream.Collectors;
|
|||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -313,6 +315,11 @@ public class RankCountStrategy implements GiftStrategy {
|
|||||||
.forEach(cp -> {
|
.forEach(cp -> {
|
||||||
cpValueService.incrValue(cp.getCpValId(), acceptAmount);
|
cpValueService.incrValue(cp.getCpValId(), acceptAmount);
|
||||||
|
|
||||||
|
// 排序CP用户ID
|
||||||
|
ImmutablePair<Long, Long> sortedPair = sortCpUserIds(cp.getUserId(), cp.getCpUserId());
|
||||||
|
Long orderedUserOne = sortedPair.getLeft();
|
||||||
|
Long orderedUserTwo = sortedPair.getRight();
|
||||||
|
|
||||||
// 累计cp总额
|
// 累计cp总额
|
||||||
userCpValueCacheService.incr(cp.getUserId(),
|
userCpValueCacheService.incr(cp.getUserId(),
|
||||||
cp.getCpUserId(),
|
cp.getCpUserId(),
|
||||||
@ -321,13 +328,13 @@ public class RankCountStrategy implements GiftStrategy {
|
|||||||
cpRelationshipCacheService.remove(Arrays.asList(cp.getUserId(), cp.getCpUserId()));
|
cpRelationshipCacheService.remove(Arrays.asList(cp.getUserId(), cp.getCpUserId()));
|
||||||
|
|
||||||
weekCpValueCountService.incrThisWeekQuantity(runningWater.getSysOrigin(),
|
weekCpValueCountService.incrThisWeekQuantity(runningWater.getSysOrigin(),
|
||||||
cp.getUserId(),
|
orderedUserOne,
|
||||||
cp.getCpUserId(),
|
orderedUserTwo,
|
||||||
acceptAmount.longValue());
|
acceptAmount.longValue());
|
||||||
|
|
||||||
weekCpValueCountService.incrThisSeasonQuantity(runningWater.getSysOrigin(),
|
weekCpValueCountService.incrThisSeasonQuantity(runningWater.getSysOrigin(),
|
||||||
cp.getUserId(),
|
orderedUserOne,
|
||||||
cp.getCpUserId(),
|
orderedUserTwo,
|
||||||
acceptAmount.longValue());
|
acceptAmount.longValue());
|
||||||
});
|
});
|
||||||
// 更新cp用户赠送的礼物价值
|
// 更新cp用户赠送的礼物价值
|
||||||
@ -342,6 +349,35 @@ public class RankCountStrategy implements GiftStrategy {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 确保CP用户ID顺序:男前女后,性别相同则ID小的在前
|
||||||
|
*/
|
||||||
|
private ImmutablePair<Long, Long> sortCpUserIds(Long userIdOne, Long userIdTwo) {
|
||||||
|
UserProfile userOne = userProfileGateway.getByUserId(userIdOne);
|
||||||
|
UserProfile userTwo = userProfileGateway.getByUserId(userIdTwo);
|
||||||
|
|
||||||
|
if (userOne == null || userTwo == null) {
|
||||||
|
return userIdOne < userIdTwo ?
|
||||||
|
ImmutablePair.of(userIdOne, userIdTwo) :
|
||||||
|
ImmutablePair.of(userIdTwo, userIdOne);
|
||||||
|
}
|
||||||
|
|
||||||
|
Integer sexOne = userOne.getUserSex();
|
||||||
|
Integer sexTwo = userTwo.getUserSex();
|
||||||
|
|
||||||
|
// 性别不同:男(1)在前,女(0)在后
|
||||||
|
if (!Objects.equals(sexOne, sexTwo)) {
|
||||||
|
return Objects.equals(sexOne, 1) ?
|
||||||
|
ImmutablePair.of(userIdOne, userIdTwo) :
|
||||||
|
ImmutablePair.of(userIdTwo, userIdOne);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 性别相同:ID小的在前
|
||||||
|
return userIdOne < userIdTwo ?
|
||||||
|
ImmutablePair.of(userIdOne, userIdTwo) :
|
||||||
|
ImmutablePair.of(userIdTwo, userIdOne);
|
||||||
|
}
|
||||||
|
|
||||||
private boolean isWeekStar(GiftValue giftValue) {
|
private boolean isWeekStar(GiftValue giftValue) {
|
||||||
return giftValue.getGiftType().contains(GiftSpecialEnum.STAR.name());
|
return giftValue.getGiftType().contains(GiftSpecialEnum.STAR.name());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -228,15 +228,11 @@ public class WeekCpValueCountServiceImpl implements WeekCpValueCountService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String getWeekUniqueId(Long userOne, Long userIdTwo) {
|
private String getWeekUniqueId(Long userOne, Long userIdTwo) {
|
||||||
return StringUtils.sortAscNumberJoin("_", userOne, userIdTwo)
|
return userOne + "_" + userIdTwo + "_" + getThisWeekDate();
|
||||||
.concat("_")
|
|
||||||
.concat(getThisWeekDate());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getSeasonUniqueId(Long userOne, Long userIdTwo) {
|
private String getSeasonUniqueId(Long userOne, Long userIdTwo) {
|
||||||
return StringUtils.sortAscNumberJoin("_", userOne, userIdTwo)
|
return userOne + "_" + userIdTwo + "_" + getThisSeasonCycleKey();
|
||||||
.concat("_")
|
|
||||||
.concat(getThisSeasonCycleKey());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean existsThisWeek(Long userIdOne, Long userIdTwo) {
|
private boolean existsThisWeek(Long userIdOne, Long userIdTwo) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user