boom奖励分区

This commit is contained in:
2024-10-09 17:05:52 +08:00
parent d6bf30bc11
commit 5f18060ea9
6 changed files with 19 additions and 14 deletions

View File

@@ -26,6 +26,10 @@ public class RoomBoomLevelAward implements Serializable {
*/
@TableId(type= IdType.AUTO)
private Long id;
/**
*partitionId
*/
private Integer partitionId;
/**
* boom等级
*/

View File

@@ -306,7 +306,7 @@ public class RoomBoomBizService {
//删除开奖信息key
this.getRoomBoomDrawTimeKey(cycleDate, roomUid).delete();
this.sendPushMsg(boomSign, sendUid, roomUid, roomBoomLevel, roomBoomConfig);
roomBoomSignService.handleAwardDelayJob(boomSign.getId());
roomBoomSignService.handleAwardDelayJob(boomSign.getId(), partitionId);
}
@@ -606,7 +606,7 @@ public class RoomBoomBizService {
for (RoomBoomLevel roomBoomLevel : boomLevel) {
//查询奖励
List<RoomBoomLevelAward> awards = roomBoomLevelAwardService.effectShowAwardList(roomBoomLevel.getLevel());
List<RoomBoomLevelAward> awards = roomBoomLevelAwardService.effectShowAwardList(roomBoomLevel.getLevel(), partitionId);
List<RoomBoomLevelAwardVo> roomBoomLevelAwardVos = converseBoomLevelAwardToVo(awards);

View File

@@ -21,19 +21,19 @@ public interface RoomBoomLevelAwardService extends IService<RoomBoomLevelAward>
* @param level
* @return
*/
List<RoomBoomLevelAward> selectValidAwardList(Integer level);
List<RoomBoomLevelAward> selectValidAwardList(Integer level, Integer partitionId);
/**
* 根据等级获取当前boom玩法的可展示开奖礼品,并按照seq排序
* @param level
* @return
*/
List<RoomBoomLevelAward> effectShowAwardList(Integer level);
List<RoomBoomLevelAward> effectShowAwardList(Integer level, Integer partitionId);
/**
* 查询当前boom玩法的可展示开奖礼品,并按照seq排序
* @return
*/
List<RoomBoomLevelAward> levalAwardList();
List<RoomBoomLevelAward> levalAwardList(Integer partitionId);
/**

View File

@@ -19,7 +19,7 @@ public interface RoomBoomSignService extends IService<RoomBoomSign> {
* 处理奖励派发逻辑
* @param id
*/
void handleAwardDelayJob(Long id);
void handleAwardDelayJob(Long id, Integer partitionId);
/**

View File

@@ -35,16 +35,16 @@ public class RoomBoomLevelAwardServiceImpl extends ServiceImpl<RoomBoomLevelAwar
private JedisService jedisService;
@Override
public List<RoomBoomLevelAward> selectValidAwardList(Integer level) {
public List<RoomBoomLevelAward> selectValidAwardList(Integer level, Integer partitionId) {
LambdaQueryWrapper<RoomBoomLevelAward> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(RoomBoomLevelAward::getLevel,level).gt(RoomBoomLevelAward::getAwardStock, 0);
wrapper.eq(RoomBoomLevelAward::getLevel,level).eq(RoomBoomLevelAward::getPartitionId, partitionId).gt(RoomBoomLevelAward::getAwardStock, 0);
return this.list(wrapper);
}
@Override
public List<RoomBoomLevelAward> effectShowAwardList(Integer level) {
public List<RoomBoomLevelAward> effectShowAwardList(Integer level, Integer partitionId) {
List<RoomBoomLevelAward> roomBoomLevelAwards = this.levalAwardList();
List<RoomBoomLevelAward> roomBoomLevelAwards = this.levalAwardList(partitionId);
List<RoomBoomLevelAward> awards = roomBoomLevelAwards.stream().filter(
d -> level.equals(d.getLevel()) && RoomBoomConstant.RoomBoomLevelAwardType.type_user.equals(d.getType())
@@ -55,14 +55,15 @@ public class RoomBoomLevelAwardServiceImpl extends ServiceImpl<RoomBoomLevelAwar
}
@Override
public List<RoomBoomLevelAward> levalAwardList() {
public List<RoomBoomLevelAward> levalAwardList(Integer partitionId) {
String levelAwardKey = RoomBoomConstant.RedisKey.room_boom_level_award.getKey();
String levelAwardKey = RoomBoomConstant.RedisKey.room_boom_level_award.getKey(partitionId);
String levelAwardValue = jedisService.get(levelAwardKey);
if (StringUtils.isNotEmpty(levelAwardValue)){
return JSONArray.parseArray(levelAwardValue,RoomBoomLevelAward.class);
}
LambdaQueryWrapper<RoomBoomLevelAward> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(RoomBoomLevelAward::getPartitionId, partitionId);
wrapper.orderByAsc(RoomBoomLevelAward::getSeq);
List<RoomBoomLevelAward> list = this.list(wrapper);
if (CollectionUtils.isNotEmpty(list)){

View File

@@ -74,7 +74,7 @@ public class RoomBoomSignServiceImpl extends ServiceImpl<RoomBoomSignMapper, Roo
private BaseSendService baseSendService;
@Override
public void handleAwardDelayJob(Long id) {
public void handleAwardDelayJob(Long id, Integer partitionId) {
String lockKey = RoomBoomConstant.RedisKey.room_boom_award_lock.getKey(id.toString());
RLock lock = redissonClient.getLock(lockKey);
boolean isLocked = false;
@@ -106,7 +106,7 @@ public class RoomBoomSignServiceImpl extends ServiceImpl<RoomBoomSignMapper, Roo
throw new ServiceException(BusiStatus.SERVERBUSY);
}
// todo 根据配置的奖品进行派奖
List<RoomBoomLevelAward> awards = roomBoomLevelAwardService.selectValidAwardList(level);
List<RoomBoomLevelAward> awards = roomBoomLevelAwardService.selectValidAwardList(level, partitionId);
if (CollectionUtils.isEmpty(awards)) {
log.error("当前boom玩法等级奖励配置为空无需发奖...signId:{},level:{},roomUid:{},sendUid:{}", roomBoomSign.getId(), level, roomUid, sendUid);
return;