打榜活动实体类更改
This commit is contained in:
parent
c05a3d0639
commit
c1a55cf9e1
@ -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());
|
||||
|
||||
@ -204,7 +204,7 @@ public class WeeklyRewardsSentManager {
|
||||
}
|
||||
|
||||
Long activityId = activityConfigDTO.getId();
|
||||
String lastWeekDate = getLastWeekDate();
|
||||
String lastWeekDate = "20251208";
|
||||
|
||||
String sysOrigin = SysOriginPlatformEnum.LIKEI.name();
|
||||
// 获取枚举
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user