cpList 缓存重写,定时任务更改
This commit is contained in:
parent
d0936e24f9
commit
51c5cf0712
@ -6,6 +6,7 @@ import com.red.circle.other.app.dto.cmd.user.relation.cp.CpApplyDismissCmd;
|
|||||||
import com.red.circle.other.app.service.user.user.UserProfileService;
|
import com.red.circle.other.app.service.user.user.UserProfileService;
|
||||||
import com.red.circle.other.domain.gateway.user.UserProfileGateway;
|
import com.red.circle.other.domain.gateway.user.UserProfileGateway;
|
||||||
import com.red.circle.other.infra.common.user.UserGiftBackpackCommon;
|
import com.red.circle.other.infra.common.user.UserGiftBackpackCommon;
|
||||||
|
import com.red.circle.other.infra.database.cache.service.cp.CpRelationshipCacheService;
|
||||||
import com.red.circle.other.infra.database.cache.service.user.UserCpValueCacheService;
|
import com.red.circle.other.infra.database.cache.service.user.UserCpValueCacheService;
|
||||||
import com.red.circle.other.infra.database.mongo.service.user.count.WeekCpValueCountService;
|
import com.red.circle.other.infra.database.mongo.service.user.count.WeekCpValueCountService;
|
||||||
import com.red.circle.other.infra.database.rds.entity.user.user.CpRelationship;
|
import com.red.circle.other.infra.database.rds.entity.user.user.CpRelationship;
|
||||||
@ -40,6 +41,7 @@ public class DismissCpApplyCmdExe {
|
|||||||
private final CpBlessRecordService cpBlessRecordService;
|
private final CpBlessRecordService cpBlessRecordService;
|
||||||
private final CpCabinAchieveService cpCabinAchieveService;
|
private final CpCabinAchieveService cpCabinAchieveService;
|
||||||
private final UserProfileGateway userProfileGateway;
|
private final UserProfileGateway userProfileGateway;
|
||||||
|
private final CpRelationshipCacheService cpRelationshipCacheService;
|
||||||
|
|
||||||
public void execute(CpApplyDismissCmd cmd) {
|
public void execute(CpApplyDismissCmd cmd) {
|
||||||
|
|
||||||
@ -54,7 +56,7 @@ public class DismissCpApplyCmdExe {
|
|||||||
// 更新CP关系为分手中,不删除数据
|
// 更新CP关系为分手中,不删除数据
|
||||||
cpRelationshipService.updateToDismissing(cmd.requiredReqUserId(), cmd.getCpUserId());
|
cpRelationshipService.updateToDismissing(cmd.requiredReqUserId(), cmd.getCpUserId());
|
||||||
|
|
||||||
userProfileGateway.removeCacheAll(Arrays.asList(cmd.requiredReqUserId(), cmd.getCpUserId()));
|
cpRelationshipCacheService.remove(Arrays.asList(cmd.requiredReqUserId(), cmd.getCpUserId()));
|
||||||
|
|
||||||
// 以下数据不删除,7天后由定时任务清理
|
// 以下数据不删除,7天后由定时任务清理
|
||||||
// weekCpValueCountService.removeThisWeek(...)
|
// weekCpValueCountService.removeThisWeek(...)
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import com.red.circle.mq.business.model.event.user.CpApplyEvent;
|
|||||||
import com.red.circle.mq.rocket.business.producer.UserMqMessageService;
|
import com.red.circle.mq.rocket.business.producer.UserMqMessageService;
|
||||||
import com.red.circle.other.app.dto.cmd.user.relation.cp.ProcessApplyCmd;
|
import com.red.circle.other.app.dto.cmd.user.relation.cp.ProcessApplyCmd;
|
||||||
import com.red.circle.other.domain.gateway.user.UserProfileGateway;
|
import com.red.circle.other.domain.gateway.user.UserProfileGateway;
|
||||||
|
import com.red.circle.other.infra.database.cache.service.cp.CpRelationshipCacheService;
|
||||||
import com.red.circle.other.infra.database.rds.entity.user.user.CpApply;
|
import com.red.circle.other.infra.database.rds.entity.user.user.CpApply;
|
||||||
import com.red.circle.other.infra.database.rds.entity.user.user.CpRelationship;
|
import com.red.circle.other.infra.database.rds.entity.user.user.CpRelationship;
|
||||||
import com.red.circle.other.infra.database.rds.entity.user.user.CpValue;
|
import com.red.circle.other.infra.database.rds.entity.user.user.CpValue;
|
||||||
@ -44,6 +45,7 @@ public class ProcessCpApplyCmd {
|
|||||||
private final UserMqMessageService userMqMessageService;
|
private final UserMqMessageService userMqMessageService;
|
||||||
private final CpRelationshipService cpRelationshipService;
|
private final CpRelationshipService cpRelationshipService;
|
||||||
private final UserProfileGateway userProfileGateway;
|
private final UserProfileGateway userProfileGateway;
|
||||||
|
private final CpRelationshipCacheService cpRelationshipCacheService;
|
||||||
|
|
||||||
public void execute(ProcessApplyCmd cmd) {
|
public void execute(ProcessApplyCmd cmd) {
|
||||||
process(cmd);
|
process(cmd);
|
||||||
@ -96,7 +98,7 @@ public class ProcessCpApplyCmd {
|
|||||||
cmd.requireReqSysOrigin());
|
cmd.requireReqSysOrigin());
|
||||||
}
|
}
|
||||||
|
|
||||||
userProfileGateway.removeCacheAll(Arrays.asList(cpApply.getSendApplyUserId(), cpApply.getAcceptApplyUserId()));
|
cpRelationshipCacheService.remove(Arrays.asList(cpApply.getSendApplyUserId(), cpApply.getAcceptApplyUserId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refuseStatusWait(ProcessApplyCmd cmd, CpApply cpApply) {
|
private void refuseStatusWait(ProcessApplyCmd cmd, CpApply cpApply) {
|
||||||
|
|||||||
@ -14,6 +14,8 @@ import com.red.circle.other.app.service.user.relation.UserSupportRelationService
|
|||||||
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.model.user.UserProfile;
|
||||||
|
import com.red.circle.other.infra.database.cache.key.user.UserKey;
|
||||||
|
import com.red.circle.other.infra.database.cache.service.cp.CpRelationshipCacheService;
|
||||||
import com.red.circle.other.infra.database.mongo.entity.live.RoomProfileManager;
|
import com.red.circle.other.infra.database.mongo.entity.live.RoomProfileManager;
|
||||||
import com.red.circle.other.infra.database.mongo.service.live.RoomProfileManagerService;
|
import com.red.circle.other.infra.database.mongo.service.live.RoomProfileManagerService;
|
||||||
import com.red.circle.other.infra.database.rds.service.user.user.CpValueService;
|
import com.red.circle.other.infra.database.rds.service.user.user.CpValueService;
|
||||||
@ -51,6 +53,7 @@ public class UserProfileUseQryExe {
|
|||||||
private final RedisService redisService;
|
private final RedisService redisService;
|
||||||
private final UserSupportRelationService userRelationInterviewService;
|
private final UserSupportRelationService userRelationInterviewService;
|
||||||
private final CpValueService cpValueService;
|
private final CpValueService cpValueService;
|
||||||
|
private final CpRelationshipCacheService cpRelationshipCacheService;
|
||||||
|
|
||||||
public UserProfileDTO execute(UserProfileQryCmd cmd) {
|
public UserProfileDTO execute(UserProfileQryCmd cmd) {
|
||||||
UserProfile userProfile = getUserProfile(cmd);
|
UserProfile userProfile = getUserProfile(cmd);
|
||||||
@ -96,18 +99,9 @@ public class UserProfileUseQryExe {
|
|||||||
userRelationInterviewService.addVisitor(userIdCmd);
|
userRelationInterviewService.addVisitor(userIdCmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 重新赋值cpValue
|
|
||||||
if (CollectionUtil.isNotEmpty(userProfileDTO.getCpList())) {
|
|
||||||
Set<Long> cpValIdSet = userProfileDTO.getCpList().stream().map(CpSimpleUserProfileCO::getCpValId).collect(Collectors.toSet());
|
|
||||||
Map<Long, BigDecimal> mapCpVal = cpValueService.mapCpVal(cpValIdSet);
|
|
||||||
|
|
||||||
userProfileDTO.getCpList().forEach(cp -> {
|
// 填充用户CP信息
|
||||||
BigDecimal cpValue = mapCpVal.get(cp.getCpValId());
|
userProfileDTO.setCpList(cpRelationshipCacheService.getUserCpList(userProfile.getId()));
|
||||||
if (Objects.nonNull(cpValue)) {
|
|
||||||
cp.setCpValue(cpValue);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return userProfileDTO;
|
return userProfileDTO;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@ 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;
|
||||||
import com.red.circle.other.infra.common.game.GameKtvCommon;
|
import com.red.circle.other.infra.common.game.GameKtvCommon;
|
||||||
|
import com.red.circle.other.infra.database.cache.service.cp.CpRelationshipCacheService;
|
||||||
import com.red.circle.other.infra.database.cache.service.user.UserCpValueCacheService;
|
import com.red.circle.other.infra.database.cache.service.user.UserCpValueCacheService;
|
||||||
import com.red.circle.other.infra.database.mongo.dto.TemporaryActivityCountParam;
|
import com.red.circle.other.infra.database.mongo.dto.TemporaryActivityCountParam;
|
||||||
import com.red.circle.other.infra.database.mongo.entity.gift.GiftAcceptUser;
|
import com.red.circle.other.infra.database.mongo.entity.gift.GiftAcceptUser;
|
||||||
@ -79,6 +80,7 @@ public class RankCountStrategy implements GiftStrategy {
|
|||||||
private final GiftGiveRunningWaterService giftGiveRunningWaterService;
|
private final GiftGiveRunningWaterService giftGiveRunningWaterService;
|
||||||
private final TemporaryActivityCountService temporaryActivityCountService;
|
private final TemporaryActivityCountService temporaryActivityCountService;
|
||||||
private final RankingActivityService rankingActivityService;
|
private final RankingActivityService rankingActivityService;
|
||||||
|
private final CpRelationshipCacheService cpRelationshipCacheService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void processor(OfflineProcessGiftEvent event) {
|
public void processor(OfflineProcessGiftEvent event) {
|
||||||
@ -340,8 +342,9 @@ public class RankCountStrategy implements GiftStrategy {
|
|||||||
userCpValueCacheService.incr(cp.getUserId(),
|
userCpValueCacheService.incr(cp.getUserId(),
|
||||||
cp.getCpUserId(),
|
cp.getCpUserId(),
|
||||||
acceptAmount.longValue());
|
acceptAmount.longValue());
|
||||||
});
|
|
||||||
|
|
||||||
|
cpRelationshipCacheService.remove(Arrays.asList(cp.getUserId(), cp.getCpUserId()));
|
||||||
|
});
|
||||||
// 更新cp用户赠送的礼物价值
|
// 更新cp用户赠送的礼物价值
|
||||||
// cpRelationshipService.updateAccountByUserId(cpRelationship.getUserId(),
|
// cpRelationshipService.updateAccountByUserId(cpRelationship.getUserId(),
|
||||||
// cpRelationship.getAmount().add(acceptAmount));
|
// cpRelationship.getAmount().add(acceptAmount));
|
||||||
|
|||||||
@ -1,7 +1,9 @@
|
|||||||
package com.red.circle.other.app.scheduler;
|
package com.red.circle.other.app.scheduler;
|
||||||
|
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
import com.red.circle.other.domain.gateway.user.UserProfileGateway;
|
||||||
import com.red.circle.other.infra.common.user.UserGiftBackpackCommon;
|
import com.red.circle.other.infra.common.user.UserGiftBackpackCommon;
|
||||||
|
import com.red.circle.other.infra.database.cache.service.cp.CpRelationshipCacheService;
|
||||||
import com.red.circle.other.infra.database.cache.service.user.UserCpValueCacheService;
|
import com.red.circle.other.infra.database.cache.service.user.UserCpValueCacheService;
|
||||||
import com.red.circle.other.infra.database.mongo.service.user.count.WeekCpValueCountService;
|
import com.red.circle.other.infra.database.mongo.service.user.count.WeekCpValueCountService;
|
||||||
import com.red.circle.other.infra.database.rds.entity.user.user.CpRelationship;
|
import com.red.circle.other.infra.database.rds.entity.user.user.CpRelationship;
|
||||||
@ -10,6 +12,8 @@ import com.red.circle.other.infra.database.rds.service.user.user.CpCabinAchieveS
|
|||||||
import com.red.circle.other.infra.database.rds.service.user.user.CpRelationshipService;
|
import com.red.circle.other.infra.database.rds.service.user.user.CpRelationshipService;
|
||||||
import com.red.circle.other.infra.database.rds.service.user.user.CpValueService;
|
import com.red.circle.other.infra.database.rds.service.user.user.CpValueService;
|
||||||
import com.red.circle.tool.core.collection.CollectionUtils;
|
import com.red.circle.tool.core.collection.CollectionUtils;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -33,6 +37,8 @@ public class CleanExpiredDismissingCpTask {
|
|||||||
private final UserCpValueCacheService userCpValueCacheService;
|
private final UserCpValueCacheService userCpValueCacheService;
|
||||||
private final CpCabinAchieveService cpCabinAchieveService;
|
private final CpCabinAchieveService cpCabinAchieveService;
|
||||||
private final CpBlessRecordService cpBlessRecordService;
|
private final CpBlessRecordService cpBlessRecordService;
|
||||||
|
private final UserProfileGateway userProfileGateway;
|
||||||
|
private final CpRelationshipCacheService cpRelationshipCacheService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 每天凌晨3点执行清理任务.
|
* 每天凌晨3点执行清理任务.
|
||||||
@ -58,7 +64,7 @@ public class CleanExpiredDismissingCpTask {
|
|||||||
private void cleanCpData(CpRelationship cpRelationship) {
|
private void cleanCpData(CpRelationship cpRelationship) {
|
||||||
try {
|
try {
|
||||||
// 删除CP关系
|
// 删除CP关系
|
||||||
cpRelationshipService.deleteCpRelationship(cpRelationship.getUserId());
|
cpRelationshipService.deleteById(cpRelationship.getId());
|
||||||
|
|
||||||
// 删除周统计
|
// 删除周统计
|
||||||
weekCpValueCountService.removeThisWeek(cpRelationship.getUserId(),
|
weekCpValueCountService.removeThisWeek(cpRelationship.getUserId(),
|
||||||
@ -80,6 +86,8 @@ public class CleanExpiredDismissingCpTask {
|
|||||||
// 删除祝福记录
|
// 删除祝福记录
|
||||||
cpBlessRecordService.deleteByCpValId(cpRelationship.getCpValId());
|
cpBlessRecordService.deleteByCpValId(cpRelationship.getCpValId());
|
||||||
|
|
||||||
|
cpRelationshipCacheService.remove(Arrays.asList(cpRelationship.getUserId(), cpRelationship.getCpUserId()));
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("CleanExpiredDismissingCpTask cleanCpData error, userId={}, cpUserId={}",
|
log.error("CleanExpiredDismissingCpTask cleanCpData error, userId={}, cpUserId={}",
|
||||||
cpRelationship.getUserId(), cpRelationship.getCpUserId(), e);
|
cpRelationship.getUserId(), cpRelationship.getCpUserId(), e);
|
||||||
|
|||||||
@ -62,7 +62,13 @@ public enum UserKey implements RedisKeys {
|
|||||||
/**
|
/**
|
||||||
* 系统用户友谊卡配置.
|
* 系统用户友谊卡配置.
|
||||||
*/
|
*/
|
||||||
FRIENDSHIP_CARD_CONF;
|
FRIENDSHIP_CARD_CONF,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户CP
|
||||||
|
*/
|
||||||
|
CP,
|
||||||
|
;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String businessPrefix() {
|
public String businessPrefix() {
|
||||||
|
|||||||
@ -0,0 +1,24 @@
|
|||||||
|
package com.red.circle.other.infra.database.cache.service.cp;
|
||||||
|
|
||||||
|
import com.red.circle.other.inner.model.dto.user.CpSimpleUserProfileCO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CP关系缓存服务.
|
||||||
|
*/
|
||||||
|
public interface CpRelationshipCacheService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取用户CP列表.
|
||||||
|
*/
|
||||||
|
List<CpSimpleUserProfileCO> getUserCpList(Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 移除用户CP列表缓存.
|
||||||
|
*
|
||||||
|
* @param userId 用户id
|
||||||
|
*/
|
||||||
|
void remove(List<Long> userId);
|
||||||
|
}
|
||||||
@ -0,0 +1,126 @@
|
|||||||
|
package com.red.circle.other.infra.database.cache.service.cp.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.red.circle.component.redis.service.RedisService;
|
||||||
|
import com.red.circle.other.infra.database.cache.key.user.UserKey;
|
||||||
|
import com.red.circle.other.infra.database.cache.service.cp.CpRelationshipCacheService;
|
||||||
|
import com.red.circle.other.infra.database.rds.entity.user.user.BaseInfo;
|
||||||
|
import com.red.circle.other.infra.database.rds.entity.user.user.CpRelationship;
|
||||||
|
import com.red.circle.other.infra.database.rds.service.user.user.BaseInfoService;
|
||||||
|
import com.red.circle.other.infra.database.rds.service.user.user.CpRelationshipService;
|
||||||
|
import com.red.circle.other.infra.database.rds.service.user.user.CpValueService;
|
||||||
|
import com.red.circle.other.inner.model.dto.user.CpSimpleUserProfileCO;
|
||||||
|
import com.red.circle.tool.core.collection.CollectionUtils;
|
||||||
|
import com.red.circle.tool.core.date.DateUtils;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CP关系缓存服务实现.
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class CpRelationshipCacheServiceImpl implements CpRelationshipCacheService {
|
||||||
|
|
||||||
|
private final CpRelationshipService cpRelationshipService;
|
||||||
|
private final RedisService redisService;
|
||||||
|
private final BaseInfoService baseInfoService;
|
||||||
|
private final CpValueService cpValueService;
|
||||||
|
|
||||||
|
|
||||||
|
private static final long CACHE_EXPIRE_SECONDS = 7200L;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<CpSimpleUserProfileCO> getUserCpList(Long userId) {
|
||||||
|
String key = getKey(userId);
|
||||||
|
|
||||||
|
String cacheData = redisService.getString(key);
|
||||||
|
if (cacheData != null) {
|
||||||
|
return JSON.parseArray(cacheData, CpSimpleUserProfileCO.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
List<CpRelationship> cpRelationshipList = cpRelationshipService.getByUserId(userId);
|
||||||
|
if (CollectionUtils.isEmpty(cpRelationshipList)) {
|
||||||
|
redisService.setString(key, JSON.toJSONString(Collections.emptyList()), CACHE_EXPIRE_SECONDS, TimeUnit.SECONDS);
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量获取CP用户信息
|
||||||
|
Set<Long> cpUserIds = cpRelationshipList.stream()
|
||||||
|
.map(CpRelationship::getCpUserId)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
List<BaseInfo> cpUserProfiles = baseInfoService.listByUserId(cpUserIds);
|
||||||
|
Map<Long, BaseInfo> cpUserProfileMap = cpUserProfiles.stream()
|
||||||
|
.collect(Collectors.toMap(BaseInfo::getId, Function.identity()));
|
||||||
|
BaseInfo baseInfo = baseInfoService.getById(userId);
|
||||||
|
|
||||||
|
// 批量获取CP值
|
||||||
|
Set<Long> cpValIds = cpRelationshipList.stream()
|
||||||
|
.map(CpRelationship::getCpValId)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
Map<Long, BigDecimal> cpValueMap = cpValueService.mapCpVal(cpValIds);
|
||||||
|
|
||||||
|
// 组装CP列表
|
||||||
|
List<CpSimpleUserProfileCO> cpList = cpRelationshipList.stream()
|
||||||
|
.map(cpRelationship -> {
|
||||||
|
BaseInfo cpUser = cpUserProfileMap.get(cpRelationship.getCpUserId());
|
||||||
|
if (cpUser == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
BigDecimal cpValue = cpValueMap.getOrDefault(cpRelationship.getCpValId(), BigDecimal.ZERO);
|
||||||
|
Long days = DateUtils.toDurationDays(cpRelationship.getCreateTime(), DateUtils.now());
|
||||||
|
String firstDay = cpRelationship.getCreateTime().toInstant()
|
||||||
|
.atZone(ZoneId.systemDefault()).toLocalDate().toString();
|
||||||
|
|
||||||
|
return new CpSimpleUserProfileCO()
|
||||||
|
.setMeUserId(baseInfo.getId())
|
||||||
|
.setMeAccount(baseInfo.getAccount())
|
||||||
|
.setMeUserAvatar(baseInfo.getUserAvatar())
|
||||||
|
.setMeUserNickname(baseInfo.getUserNickname())
|
||||||
|
.setCpUserId(cpUser.getId())
|
||||||
|
.setCpAccount(cpUser.getAccount())
|
||||||
|
.setCpUserAvatar(cpUser.getUserAvatar())
|
||||||
|
.setCpUserNickname(cpUser.getUserNickname())
|
||||||
|
.setCpValId(cpRelationship.getCpValId())
|
||||||
|
.setCpValue(cpValue)
|
||||||
|
.setCreateTime(cpRelationship.getCreateTime())
|
||||||
|
.setDays(days)
|
||||||
|
.setFirstDay(firstDay);
|
||||||
|
})
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.sorted(Comparator.comparing(CpSimpleUserProfileCO::getCpValue).reversed()
|
||||||
|
.thenComparing(CpSimpleUserProfileCO::getCreateTime))
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
redisService.setString(key, JSON.toJSONString(cpList), CACHE_EXPIRE_SECONDS, TimeUnit.SECONDS);
|
||||||
|
return cpList;
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("填充CP数据失败, userId={}", userId, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getKey(Long userId) {
|
||||||
|
return UserKey.CP.getKey(userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void remove(List<Long> userIds) {
|
||||||
|
userIds.forEach(userId -> {
|
||||||
|
redisService.delete(getKey(userId));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -63,11 +63,9 @@ public interface CpRelationshipService extends BaseService<CpRelationship> {
|
|||||||
Long getCpValByUserId(Long userId);
|
Long getCpValByUserId(Long userId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除cp关系.
|
* 根据id删除
|
||||||
*
|
|
||||||
* @param userId 用户id
|
|
||||||
*/
|
*/
|
||||||
void deleteCpRelationship(Long userId);
|
void deleteById(Long id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 组建cp.
|
* 组建cp.
|
||||||
|
|||||||
@ -114,9 +114,8 @@ public class CpRelationshipServiceImpl extends
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteCpRelationship(Long userId) {
|
public void deleteById(Long id) {
|
||||||
delete().eq(CpRelationship::getCpUserId, userId).last(PageConstant.LIMIT_ONE).execute();
|
removeById(id);
|
||||||
delete().eq(CpRelationship::getUserId, userId).last(PageConstant.LIMIT_ONE).execute();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -283,9 +283,6 @@ public class UserRunProfileTransportGatewayImpl implements UserRunProfileTranspo
|
|||||||
// 用户是否首充处理
|
// 用户是否首充处理
|
||||||
fillUserFirstRecharge(newUserRunProfile);
|
fillUserFirstRecharge(newUserRunProfile);
|
||||||
|
|
||||||
// 填充CP列表数据
|
|
||||||
fillUserCpList(newUserRunProfile);
|
|
||||||
|
|
||||||
newUserRunProfile.addUseProps(userUsePropsEntityMap.get(userBaseInfo.getId()));
|
newUserRunProfile.addUseProps(userUsePropsEntityMap.get(userBaseInfo.getId()));
|
||||||
newUserRunProfile.addUseProps(userUseRoomTheme.get(userBaseInfo.getId()));
|
newUserRunProfile.addUseProps(userUseRoomTheme.get(userBaseInfo.getId()));
|
||||||
newUserRunProfile.setOwnSpecialId(userSpecialIdMap.get(userBaseInfo.getId()));
|
newUserRunProfile.setOwnSpecialId(userSpecialIdMap.get(userBaseInfo.getId()));
|
||||||
@ -322,68 +319,6 @@ public class UserRunProfileTransportGatewayImpl implements UserRunProfileTranspo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 填充用户CP列表数据
|
|
||||||
*/
|
|
||||||
private void fillUserCpList(UserRunProfile userRunProfile) {
|
|
||||||
try {
|
|
||||||
List<CpRelationship> cpRelationshipList = cpRelationshipService.getByUserId(userRunProfile.getId());
|
|
||||||
if (CollectionUtils.isEmpty(cpRelationshipList)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 批量获取CP用户信息
|
|
||||||
Set<Long> cpUserIds = cpRelationshipList.stream()
|
|
||||||
.map(CpRelationship::getCpUserId)
|
|
||||||
.collect(Collectors.toSet());
|
|
||||||
List<BaseInfo> cpUserProfiles = baseInfoService.listByUserId(cpUserIds);
|
|
||||||
Map<Long, BaseInfo> cpUserProfileMap = cpUserProfiles.stream()
|
|
||||||
.collect(Collectors.toMap(BaseInfo::getId, Function.identity()));
|
|
||||||
|
|
||||||
// 批量获取CP值
|
|
||||||
Set<Long> cpValIds = cpRelationshipList.stream()
|
|
||||||
.map(CpRelationship::getCpValId)
|
|
||||||
.collect(Collectors.toSet());
|
|
||||||
Map<Long, BigDecimal> cpValueMap = cpValueService.mapCpVal(cpValIds);
|
|
||||||
|
|
||||||
// 组装CP列表
|
|
||||||
List<CpSimpleUserProfileCO> cpList = cpRelationshipList.stream()
|
|
||||||
.map(cpRelationship -> {
|
|
||||||
BaseInfo cpUser = cpUserProfileMap.get(cpRelationship.getCpUserId());
|
|
||||||
if (cpUser == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
BigDecimal cpValue = cpValueMap.getOrDefault(cpRelationship.getCpValId(), BigDecimal.ZERO);
|
|
||||||
Long days = DateUtils.toDurationDays(cpRelationship.getCreateTime(), DateUtils.now());
|
|
||||||
String firstDay = cpRelationship.getCreateTime().toInstant()
|
|
||||||
.atZone(ZoneId.systemDefault()).toLocalDate().toString();
|
|
||||||
|
|
||||||
return new CpSimpleUserProfileCO()
|
|
||||||
.setMeUserId(userRunProfile.getId())
|
|
||||||
.setMeAccount(userRunProfile.getAccount())
|
|
||||||
.setMeUserAvatar(userRunProfile.getUserAvatar())
|
|
||||||
.setMeUserNickname(userRunProfile.getUserNickname())
|
|
||||||
.setCpUserId(cpUser.getId())
|
|
||||||
.setCpAccount(cpUser.getAccount())
|
|
||||||
.setCpUserAvatar(cpUser.getUserAvatar())
|
|
||||||
.setCpUserNickname(cpUser.getUserNickname())
|
|
||||||
.setCpValId(cpRelationship.getCpValId())
|
|
||||||
.setCpValue(cpValue)
|
|
||||||
.setCreateTime(cpRelationship.getCreateTime())
|
|
||||||
.setDays(days)
|
|
||||||
.setFirstDay(firstDay);
|
|
||||||
})
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.sorted(Comparator.comparing(CpSimpleUserProfileCO::getCpValue).reversed()
|
|
||||||
.thenComparing(CpSimpleUserProfileCO::getCreateTime))
|
|
||||||
.toList();
|
|
||||||
|
|
||||||
userRunProfile.setCpList(cpList);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("填充CP数据失败, userId={}", userRunProfile.getId(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Map<Long, List<UseBadgeDTO>> mapUserUseBadgeEntity(String sysOrigin,
|
private Map<Long, List<UseBadgeDTO>> mapUserUseBadgeEntity(String sysOrigin,
|
||||||
Set<Long> userIds) {
|
Set<Long> userIds) {
|
||||||
return Optional.ofNullable(this.listUserUseBadgeEntity(sysOrigin, userIds))
|
return Optional.ofNullable(this.listUserUseBadgeEntity(sysOrigin, userIds))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user