圣诞节活动-cp-cp排行榜-meRank改meRankList
This commit is contained in:
@@ -112,7 +112,7 @@ public class ChristmasCpDao implements InitializingBean {
|
||||
log.error("[2023圣诞节活动] {} 获取 {} 锁超时", uid, lockKey);
|
||||
throw new ServiceException(BusiStatus.SERVER_BUSY);
|
||||
}
|
||||
Map<Long, ChristmasCpUserProp> propMap = userCpPropMap.get(uid);
|
||||
Map<Long, ChristmasCpUserProp> propMap = userCpPropMap.getOrDefault(uid, new HashMap<>());
|
||||
return function.apply(propMap);
|
||||
} catch (InterruptedException e) {
|
||||
log.error("[2023圣诞节活动] {} 获取 {} 锁异常", uid, lockKey, e);
|
||||
@@ -161,11 +161,10 @@ public class ChristmasCpDao implements InitializingBean {
|
||||
BeanUtils.copyProperties(cpProp, userProp);
|
||||
userProp.setCpTaskStatus(new HashMap<>());
|
||||
|
||||
SpringContextHolder.getBean(ChristmasCpDao.class).saveUserCpProp(cpProp.getFromUid(), cpProp.getToUid(), userProp);
|
||||
SpringContextHolder.getBean(ChristmasCpDao.class).saveUserCpProp(cpProp.getToUid(), cpProp.getFromUid(), userProp);
|
||||
saveUserCpProp(cpProp.getFromUid(), cpProp.getToUid(), userProp);
|
||||
saveUserCpProp(cpProp.getToUid(), cpProp.getFromUid(), userProp);
|
||||
}
|
||||
|
||||
@Async
|
||||
public boolean saveUserCpProp(Long fromUid, Long toUid, ChristmasCpUserProp userProp){
|
||||
return withLock(fromUid, "user_cp_prop_lock", propMap->{
|
||||
if (CollectionUtils.isEmpty(propMap)){
|
||||
|
@@ -23,6 +23,6 @@ public class ActivityCpRankVo {
|
||||
@ApiModelProperty("排行榜")
|
||||
private List<ActivityCpRankItemVo> rankList;
|
||||
@ApiModelProperty("我的排行信息")
|
||||
private ActivityCpRankItemVo meRank;
|
||||
private List<ActivityCpRankItemVo> meRankList;
|
||||
|
||||
}
|
||||
|
@@ -41,7 +41,7 @@ public abstract class BaseCpRankActService<Provider extends CpRankObjectProvider
|
||||
|
||||
public abstract String addAndGetCpUid(CpRankActConfigDto config, Long fromUid, Long toUid, Integer giftId, Integer giftNum, Long totalGoldNum, Date sendGiftTime);
|
||||
|
||||
public ActivityCpRankVo getRank(String cpUid, CpRankTypeEnum rankType, String date, Integer rankSize) {
|
||||
public ActivityCpRankVo getRank(List<String> cpUidList, CpRankTypeEnum rankType, String date, Integer rankSize) {
|
||||
|
||||
CpRankActConfigDto configDto = getRankActConfig();
|
||||
|
||||
@@ -83,40 +83,55 @@ public abstract class BaseCpRankActService<Provider extends CpRankObjectProvider
|
||||
}
|
||||
}
|
||||
|
||||
ActivityCpRankItemVo meRankVo = new ActivityCpRankItemVo();
|
||||
meRankVo.setRanking(0);
|
||||
meRankVo.setScore(0L);
|
||||
|
||||
CpRankObject me = provider.getRankObjectByUid(cpUid);
|
||||
if (null != me){
|
||||
meRankVo.setCpUid(me.getCpUid());
|
||||
|
||||
meRankVo.setLeftUid(me.getLeftUid());
|
||||
meRankVo.setLeftErbanNo(me.getLeftErbanNo());
|
||||
meRankVo.setLeftNick(me.getLeftNick());
|
||||
meRankVo.setLeftAvatar(me.getLeftAvatar());
|
||||
|
||||
meRankVo.setRightUid(me.getRightUid());
|
||||
meRankVo.setRightErbanNo(me.getRightErbanNo());
|
||||
meRankVo.setRightNick(me.getRightNick());
|
||||
meRankVo.setRightAvatar(me.getRightAvatar());
|
||||
|
||||
int rankIndex = rank.rank(me.getCpUid());
|
||||
meRankVo.setRanking(rankIndex > rankSize - 1? 0: rankIndex + 1);
|
||||
|
||||
double score = rank.getScore(me.getCpUid());
|
||||
meRankVo.setScore(BigDecimal.valueOf(score).setScale(0, RoundingMode.DOWN).longValue());
|
||||
if (CollectionUtils.isEmpty(cpUidList)){
|
||||
return buildActivityRankVo(rankItemVoList, Collections.emptyList(), configDto, rankType);
|
||||
}
|
||||
|
||||
return buildActivityRankVo(rankItemVoList, meRankVo, configDto, rankType);
|
||||
List<Integer> cpRankingList = rank.revRank(cpUidList);
|
||||
List<Double> cpScoreList = rank.getScore(cpUidList);
|
||||
|
||||
Map<String, CpRankObject> objMap = provider.mapRankObjectByUids(cpUidList);
|
||||
|
||||
int index = 0;
|
||||
List<ActivityCpRankItemVo> meRankVoList = new ArrayList<>();
|
||||
for (String cpUid: cpUidList) {
|
||||
|
||||
ActivityCpRankItemVo cpRankItemVo = new ActivityCpRankItemVo();
|
||||
cpRankItemVo.setCpUid(cpUid);
|
||||
|
||||
Integer cpRanking = cpRankingList.get(index);
|
||||
cpRankItemVo.setRanking(null != cpRanking? cpRanking: 0);
|
||||
|
||||
Double cpScore = cpScoreList.get(index);
|
||||
cpRankItemVo.setScore(null != cpScore? BigDecimal.valueOf(cpScore).setScale(0, RoundingMode.DOWN).longValue(): 0L);
|
||||
|
||||
CpRankObject cpObj = objMap.get(cpUid);
|
||||
if (null != cpObj){
|
||||
cpRankItemVo.setLeftUid(cpObj.getLeftUid());
|
||||
cpRankItemVo.setLeftErbanNo(cpObj.getLeftErbanNo());
|
||||
cpRankItemVo.setLeftNick(cpObj.getLeftNick());
|
||||
cpRankItemVo.setLeftAvatar(cpObj.getLeftAvatar());
|
||||
|
||||
cpRankItemVo.setRightUid(cpObj.getRightUid());
|
||||
cpRankItemVo.setRightErbanNo(cpObj.getRightErbanNo());
|
||||
cpRankItemVo.setRightNick(cpObj.getRightNick());
|
||||
cpRankItemVo.setRightAvatar(cpObj.getRightAvatar());
|
||||
}
|
||||
|
||||
meRankVoList.add(cpRankItemVo);
|
||||
|
||||
index++;
|
||||
}
|
||||
|
||||
return buildActivityRankVo(rankItemVoList, meRankVoList, configDto, rankType);
|
||||
}
|
||||
|
||||
private ActivityCpRankVo buildActivityRankVo(List<ActivityCpRankItemVo> rankItemVoList, ActivityCpRankItemVo meRankVo,
|
||||
private ActivityCpRankVo buildActivityRankVo(List<ActivityCpRankItemVo> rankItemVoList, List<ActivityCpRankItemVo> meRankVoList,
|
||||
CpRankActConfigDto config, CpRankTypeEnum rankType) {
|
||||
String startTime = config.getStartTime().format(dateTimeFormatter);
|
||||
String endTime = config.getEndTime().format(dateTimeFormatter);
|
||||
|
||||
return new ActivityCpRankVo(startTime, endTime, rankType.getType(), rankItemVoList, meRankVo);
|
||||
return new ActivityCpRankVo(startTime, endTime, rankType.getType(), rankItemVoList, meRankVoList);
|
||||
}
|
||||
|
||||
protected String getRankKey(CpRankTypeEnum rankType, String date){
|
||||
|
@@ -5,6 +5,7 @@ import com.accompany.business.base.service.BaseCpRankActService;
|
||||
import com.accompany.business.christmas.ChristmasCpDao;
|
||||
import com.accompany.business.christmas.constant.ChristmasConstant;
|
||||
import com.accompany.business.christmas.dto.ChristmasCpProp;
|
||||
import com.accompany.business.christmas.dto.ChristmasCpUserProp;
|
||||
import com.accompany.business.christmas.vo.ChristmasCpVo;
|
||||
import com.accompany.business.common.constant.CpRankTypeEnum;
|
||||
import com.accompany.business.common.dto.CpRankActConfigDto;
|
||||
@@ -20,7 +21,10 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
@@ -70,8 +74,13 @@ public class ChristmasCpRankService extends BaseCpRankActService<CpUsersRankObje
|
||||
}
|
||||
|
||||
public ActivityCpRankVo getRank(Long uid, CpRankTypeEnum rankType, String date) {
|
||||
String cpUid = cpDao.getTheBestCpUidByUid(uid);
|
||||
return super.getRank(cpUid, rankType, date, 30);
|
||||
List<ChristmasCpUserProp> cpUserPropList = cpDao.listCpByUid(uid);
|
||||
List<String> cpUidList = !CollectionUtils.isEmpty(cpUserPropList)?
|
||||
cpDao.listCpByUid(uid).stream().map(ChristmasCpProp::getCpUid)
|
||||
.limit(10)
|
||||
.collect(Collectors.toList()):
|
||||
Collections.emptyList();
|
||||
return super.getRank(cpUidList, rankType, date, 30);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user