打榜活动实体类更改

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()); RankingCycleType cycleType = RankingCycleType.getByCode(cmd.getCycleType());
RankingDimension dimension = RankingDimension.getByCode(cmd.getDimension()); RankingDimension dimension = RankingDimension.getByCode(cmd.getDimension());
// 查询用户现有记录 RankingActivityRecord record = new RankingActivityRecord();
Optional<RankingActivityRecord> existingRecord = rankingActivityGateway.getUserRecord( record.setSysOrigin(cmd.getReqSysOrigin().getOrigin());
cmd.getReqSysOrigin().getOrigin(), record.setUserId(cmd.getUserId());
cmd.getUserId(), record.setUserSex(cmd.getUserSex());
activityType, record.setActivityType(activityType);
cmd.getCycleKey() record.setCycleType(cycleType);
); record.setCycleKey(cmd.getCycleKey());
record.setDimension(dimension);
RankingActivityRecord record; record.setExtData(cmd.getExtData());
if (existingRecord.isPresent()) { record.setExpiredTime(calculateExpiredTime(cycleType, cmd.getCycleKey()));
// 更新现有记录
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()));
}
// 累计数据 // 累计数据
rankingActivityGateway.accumulateRankingData(record, cmd.getIncrementQuantity()); rankingActivityGateway.accumulateRankingData(record, cmd.getIncrementQuantity());

View File

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

View File

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