打榜活动实体类更改

This commit is contained in:
tianfeng 2025-12-09 17:03:49 +08:00
parent c05a3d0639
commit c1a55cf9e1
3 changed files with 40 additions and 45 deletions

View File

@ -31,33 +31,16 @@ public class RankingDataAccumulateCmdExe {
RankingCycleType cycleType = RankingCycleType.getByCode(cmd.getCycleType());
RankingDimension dimension = RankingDimension.getByCode(cmd.getDimension());
// 查询用户现有记录
Optional<RankingActivityRecord> existingRecord = rankingActivityGateway.getUserRecord(
cmd.getReqSysOrigin().getOrigin(),
cmd.getUserId(),
activityType,
cmd.getCycleKey()
);
RankingActivityRecord record;
if (existingRecord.isPresent()) {
// 更新现有记录
record = existingRecord.get();
} else {
// 创建新记录
record = new RankingActivityRecord();
record.setSysOrigin(cmd.getReqSysOrigin().getOrigin());
record.setUserId(cmd.getUserId());
record.setUserSex(cmd.getUserSex());
record.setActivityType(activityType);
record.setCycleType(cycleType);
record.setCycleKey(cmd.getCycleKey());
record.setDimension(dimension);
record.setExtData(cmd.getExtData());
// 设置过期时间周期结束后30天
record.setExpiredTime(calculateExpiredTime(cycleType, cmd.getCycleKey()));
}
RankingActivityRecord record = new RankingActivityRecord();
record.setSysOrigin(cmd.getReqSysOrigin().getOrigin());
record.setUserId(cmd.getUserId());
record.setUserSex(cmd.getUserSex());
record.setActivityType(activityType);
record.setCycleType(cycleType);
record.setCycleKey(cmd.getCycleKey());
record.setDimension(dimension);
record.setExtData(cmd.getExtData());
record.setExpiredTime(calculateExpiredTime(cycleType, cmd.getCycleKey()));
// 累计数据
rankingActivityGateway.accumulateRankingData(record, cmd.getIncrementQuantity());

View File

@ -204,7 +204,7 @@ public class WeeklyRewardsSentManager {
}
Long activityId = activityConfigDTO.getId();
String lastWeekDate = getLastWeekDate();
String lastWeekDate = "20251208";
String sysOrigin = SysOriginPlatformEnum.LIKEI.name();
// 获取枚举

View File

@ -35,24 +35,36 @@ public class RankingActivityGatewayImpl implements RankingActivityGateway {
public RankingActivityRecord accumulateRankingData(RankingActivityRecord record, Long incrementQuantity) {
Timestamp now = new Timestamp(System.currentTimeMillis());
if (record.getId() == null) {
// 新记录 - 直接插入无并发问题
record.setQuantity(incrementQuantity);
record.setCreateTime(now);
record.setUpdateTime(now);
record.setDeleted(NOT_DELETED);
return repository.save(record);
} else {
// 已存在记录 - 使用原子更新
Query query = new Query(Criteria.where("_id").is(record.getId()));
Update update = new Update()
.inc("quantity", incrementQuantity)
.set("updateTime", now);
// 构建查询条件根据业务唯一键
Query query = new Query(Criteria
.where("sysOrigin").is(record.getSysOrigin())
.and("userId").is(record.getUserId())
.and("activityType").is(record.getActivityType())
.and("cycleKey").is(record.getCycleKey())
.and("deleted").is(NOT_DELETED)
);
FindAndModifyOptions options = new FindAndModifyOptions()
.returnNew(true); // 返回更新后的文档
return mongoTemplate.findAndModify(query, update, options, RankingActivityRecord.class);
}
// 构建更新操作
Update update = new Update()
.inc("quantity", incrementQuantity)
.set("updateTime", now)
.setOnInsert("sysOrigin", record.getSysOrigin())
.setOnInsert("userId", record.getUserId())
.setOnInsert("userSex", record.getUserSex())
.setOnInsert("activityType", record.getActivityType())
.setOnInsert("cycleType", record.getCycleType())
.setOnInsert("cycleKey", record.getCycleKey())
.setOnInsert("dimension", record.getDimension())
.setOnInsert("extData", record.getExtData())
.setOnInsert("expiredTime", record.getExpiredTime())
.setOnInsert("createTime", now)
.setOnInsert("deleted", NOT_DELETED);
FindAndModifyOptions options = new FindAndModifyOptions()
.upsert(true) // 不存在则插入
.returnNew(true); // 返回更新后的文档
return mongoTemplate.findAndModify(query, update, options, RankingActivityRecord.class);
}
@Override