sud小游戏-门票-结算事件
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
package com.accompany.business.dto.miniGame;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class MiniGamePaidLudoSettlementRecord {
|
||||
|
||||
private String mgId;
|
||||
private Long roundId;
|
||||
private Long roomUid;
|
||||
private Long uid;
|
||||
private BigDecimal ticket;
|
||||
private Date gameEndTime;
|
||||
|
||||
}
|
@@ -7,8 +7,8 @@ import org.springframework.context.ApplicationEvent;
|
||||
* @date: 2024/5/22 17:06
|
||||
* @description:
|
||||
*/
|
||||
public class MiniGameFinishEvent extends ApplicationEvent {
|
||||
public MiniGameFinishEvent(Object source) {
|
||||
public class MiniGamePaidLudoSettlementEvent extends ApplicationEvent {
|
||||
public MiniGamePaidLudoSettlementEvent(Object source) {
|
||||
super(source);
|
||||
}
|
||||
}
|
@@ -2,13 +2,11 @@ package com.accompany.business.event.listener.miniGame;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.accompany.business.dto.miniGame.GameEndDto;
|
||||
import com.accompany.business.dto.miniGame.GameModeDto;
|
||||
import com.accompany.business.dto.miniGame.MiniGameForNavConfigDto;
|
||||
import com.accompany.business.dto.miniGame.PlayerResultDto;
|
||||
import com.accompany.business.dto.miniGame.*;
|
||||
import com.accompany.business.enums.game.NavGameMatchStatusEnum;
|
||||
import com.accompany.business.enums.game.NavGameRoundStatusEnum;
|
||||
import com.accompany.business.event.MiniGameSettlementEvent;
|
||||
import com.accompany.business.event.miniGame.MiniGamePaidLudoSettlementEvent;
|
||||
import com.accompany.business.model.chat.ChatRoom;
|
||||
import com.accompany.business.model.miniGame.MiniGameMatch;
|
||||
import com.accompany.business.model.miniGame.MiniGameMatchRound;
|
||||
@@ -24,6 +22,7 @@ import com.accompany.business.service.record.BillRecordService;
|
||||
import com.accompany.common.constant.Constant;
|
||||
import com.accompany.common.netease.ErBanNetEaseService;
|
||||
import com.accompany.common.redis.RedisKey;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
import com.accompany.common.utils.GsonUtil;
|
||||
import com.accompany.core.enumeration.BillObjTypeEnum;
|
||||
import com.accompany.core.model.Users;
|
||||
@@ -33,10 +32,12 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.redisson.api.RMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationListener;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.util.Date;
|
||||
@@ -82,6 +83,9 @@ public class MiniGameForNavSettleListener implements ApplicationListener<MiniGam
|
||||
@Autowired
|
||||
private MiniGameForSudService miniGameForSudService;
|
||||
|
||||
@Autowired
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(MiniGameSettlementEvent event) {
|
||||
Object source = event.getSource();
|
||||
@@ -191,7 +195,16 @@ public class MiniGameForNavSettleListener implements ApplicationListener<MiniGam
|
||||
}
|
||||
|
||||
for (PlayerResultDto result : results){
|
||||
//todo pushEvent
|
||||
Long uid = Long.valueOf(result.getUid());
|
||||
|
||||
MiniGamePaidLudoSettlementRecord record = new MiniGamePaidLudoSettlementRecord();
|
||||
record.setMgId(mgId);
|
||||
record.setRoundId(miniGameMatchRound.getId());
|
||||
record.setRoomUid(roomId);
|
||||
record.setUid(uid);
|
||||
record.setTicket(BigDecimal.valueOf(gameModeDto.getTicket()));
|
||||
record.setGameEndTime(DateTimeUtil.convertMsToDate((long) (gameEndDto.getBattle_end_at() * 1000)));
|
||||
applicationContext.publishEvent(new MiniGamePaidLudoSettlementEvent(record));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -65,7 +65,8 @@ public class MiniGameLudoSettleListener implements ApplicationListener<MiniGameS
|
||||
Long uid = Long.valueOf(result.getUid());
|
||||
Users u = usersService.getNotNullUsersByUid(uid);
|
||||
MiniGameLudoConfigDto partitionConfigDto = miniGameLudoService.getConfigByPartitionId(configDto, u.getPartitionId());
|
||||
miniGameLudoTicketService.settlement(uid, u.getPartitionId(), configDto.getMgIdStr(), roomId, partitionConfigDto.getTicket());
|
||||
miniGameLudoTicketService.settlement(uid, u.getPartitionId(), configDto.getMgIdStr(), roomId, partitionConfigDto.getTicket(),
|
||||
gameEndDto.getGame_round_id(), gameEndDto.getBattle_end_at());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,13 +1,17 @@
|
||||
package com.accompany.business.service.miniGame.impl;
|
||||
|
||||
import com.accompany.business.dto.miniGame.MiniGamePaidLudoSettlementRecord;
|
||||
import com.accompany.business.event.miniGame.MiniGamePaidLudoSettlementEvent;
|
||||
import com.accompany.business.service.purse.UserPurseService;
|
||||
import com.accompany.business.service.record.BillRecordService;
|
||||
import com.accompany.common.redis.RedisKey;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
import com.accompany.core.enumeration.BillObjTypeEnum;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.redisson.api.RMap;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -23,6 +27,8 @@ public class MiniGameLudoTicketService {
|
||||
private UserPurseService userPurseService;
|
||||
@Autowired
|
||||
private BillRecordService billRecordService;
|
||||
@Autowired
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
public void pay(Long uid, Integer partitionId, String mgId, Long roomUid, BigDecimal ticket) {
|
||||
String objId = String.join("_", mgId, partitionId.toString(), roomUid.toString());
|
||||
@@ -83,7 +89,8 @@ public class MiniGameLudoTicketService {
|
||||
}
|
||||
|
||||
@Async
|
||||
public void settlement(Long uid, Integer partitionId, String mgId, Long roomUid, BigDecimal ticket) {
|
||||
public void settlement(Long uid, Integer partitionId, String mgId, Long roomUid, BigDecimal ticket,
|
||||
String gameRoundId, Integer battleEndAt) {
|
||||
String objId = String.join("_", mgId, partitionId.toString(), roomUid.toString());
|
||||
|
||||
RMap<Long, Integer> ticketConsumeCacheMap = getTicketConsumeCacheMap(objId);
|
||||
@@ -102,7 +109,14 @@ public class MiniGameLudoTicketService {
|
||||
log.info("[miniGameLudoTicket] settlement success uid {} mgId {} partitionId {} roomUid {} beforeNum {} afterNum {}",
|
||||
uid, mgId, partitionId, roomUid, beforeNum, afterNum);
|
||||
|
||||
//todo pushEvent
|
||||
MiniGamePaidLudoSettlementRecord record = new MiniGamePaidLudoSettlementRecord();
|
||||
record.setMgId(mgId);
|
||||
record.setRoundId(Long.parseLong(gameRoundId));
|
||||
record.setRoomUid(roomUid);
|
||||
record.setUid(uid);
|
||||
record.setTicket(ticket);
|
||||
record.setGameEndTime(DateTimeUtil.convertMsToDate((long) (battleEndAt * 1000)));
|
||||
applicationContext.publishEvent(new MiniGamePaidLudoSettlementEvent(record));
|
||||
}
|
||||
|
||||
public RMap<Long, Integer> getTicketCountCacheMap(String objId) {
|
||||
|
Reference in New Issue
Block a user