|
@@ -26,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
@@ -66,6 +67,9 @@ public class CallBackServiceImpl implements ICallBackService {
|
|
|
@Autowired
|
|
|
private IGameExtService gameExtService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IOrderService orderService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private IGameBackLogService gameBackLogService;
|
|
|
|
|
@@ -73,15 +77,13 @@ public class CallBackServiceImpl implements ICallBackService {
|
|
|
private IDistributedLockComponent distributedLockComponent;
|
|
|
|
|
|
@Override
|
|
|
- public boolean callBackJudge(CallBackControlParam param, UserData userData) {
|
|
|
+ public Map<String, Object> callBackJudge(CallBackControlParam param, UserData userData) {
|
|
|
log.error("事件回传判断, param : {}, userData : {}", JsonUtil.toString(param), JsonUtil.toString(userData));
|
|
|
+ Map<String, Object> resultMap = new HashMap<>(5);
|
|
|
+ resultMap.put("callBackTypeEnum", param.getCallBackTypeEnum().getValue());
|
|
|
+ resultMap.put("userId", userData.getUserId());
|
|
|
//事件类型枚举
|
|
|
CallBackTypeEnum callBackTypeEnum = param.getCallBackTypeEnum();
|
|
|
- //登录(老账号登录)
|
|
|
- if (Objects.equals(callBackTypeEnum, CallBackTypeEnum.CALL_BACK_LOGIN_IN)) {
|
|
|
- log.error("事件回传判断, 账号登录不回传, param : {}, userData : {}", JsonUtil.toString(param), JsonUtil.toString(userData));
|
|
|
- return Boolean.FALSE;
|
|
|
- }
|
|
|
//线程锁
|
|
|
String lockKey = RedisKeyConstant.CALL_BACK_JUDGE_LOCK + callBackTypeEnum.getValue() + "_" + userData.getUserId();
|
|
|
if (Objects.equals(callBackTypeEnum, CallBackTypeEnum.CALL_BACK_ACTIVATE)) {
|
|
@@ -93,51 +95,71 @@ public class CallBackServiceImpl implements ICallBackService {
|
|
|
//上锁
|
|
|
if (!distributedLockComponent.doLock(lockKey, 0L, 1L, TimeUnit.MINUTES)) {
|
|
|
log.error("重复请求触发线程锁, 直接返回false, lockKey : {}", lockKey);
|
|
|
- return Boolean.FALSE;
|
|
|
+ resultMap.put("callBack", Boolean.FALSE);
|
|
|
+ return resultMap;
|
|
|
}
|
|
|
Game game = gameService.getById(userData.getGameId());
|
|
|
//判断游戏状态
|
|
|
if (Objects.equals(game.getStatus(), 2)) {
|
|
|
- log.error("事件回传判断, 测试游戏接入中, 直接返回true, param : {}, userData : {}", JsonUtil.toString(param), JsonUtil.toString(userData));
|
|
|
- return Boolean.TRUE;
|
|
|
+ resultMap.put("callBack", Boolean.TRUE);
|
|
|
+ if (Objects.equals(callBackTypeEnum, CallBackTypeEnum.CALL_BACK_PAY_ORDER)) {
|
|
|
+ PlatformOrderDTO platformOrderDTO = orderService.getByOrderId(param.getOrderId());
|
|
|
+ resultMap.put("amount", platformOrderDTO.getAmount());
|
|
|
+ }
|
|
|
+ return resultMap;
|
|
|
}
|
|
|
//查询玩家
|
|
|
User user = userService.getById(userData.getUserId());
|
|
|
//不存在渠道
|
|
|
Agent agent = agentService.getById(user.getAgentId());
|
|
|
if (agent == null) {
|
|
|
- log.error("事件回传判断, 渠道信息不存在, 直接返回false, param : {}, userData : {}", JsonUtil.toString(param), JsonUtil.toString(userData));
|
|
|
- return Boolean.FALSE;
|
|
|
+ resultMap.put("callBack", Boolean.FALSE);
|
|
|
+ return resultMap;
|
|
|
}
|
|
|
try {
|
|
|
- //注册(新创建账号)
|
|
|
- if (Objects.equals(callBackTypeEnum, CallBackTypeEnum.CALL_BACK_REGISTER)) {
|
|
|
- TtAppUserBackQueryRpcDTO transform = this.transform(user.getId(), agent);
|
|
|
- return ttAppBackRpc.userBackQuery(transform).getData();
|
|
|
- }
|
|
|
- //激活(创建角色)
|
|
|
- if (Objects.equals(callBackTypeEnum, CallBackTypeEnum.CALL_BACK_ACTIVATE)) {
|
|
|
- if (Strings.isBlank(param.getRoleId())) {
|
|
|
- log.error("事件回传判断, 角色Id参数不存在, param : {}, userData : {}", JsonUtil.toString(param), JsonUtil.toString(userData));
|
|
|
- return Boolean.FALSE;
|
|
|
- }
|
|
|
- TtAppRoleRegisterBackQueryRpcDTO transform = this.transform(user.getId(), agent, param.getRoleId());
|
|
|
- return ttAppBackRpc.roleRegisterBackQuery(transform).getData();
|
|
|
- }
|
|
|
- //支付
|
|
|
- if (Objects.equals(callBackTypeEnum, CallBackTypeEnum.CALL_BACK_PAY_ORDER)) {
|
|
|
- if (Strings.isBlank(param.getOrderId())) {
|
|
|
- log.error("事件回传判断, 订单Id参数不存在, param : {}, userData : {}", JsonUtil.toString(param), JsonUtil.toString(userData));
|
|
|
- return Boolean.FALSE;
|
|
|
- }
|
|
|
- TtAppOrderBackQueryRpcDTO transform = this.transform(user.getId(), param.getOrderId(), agent);
|
|
|
- return ttAppBackRpc.orderBackQuery(transform).getData();
|
|
|
+ switch (callBackTypeEnum) {
|
|
|
+ case CALL_BACK_REGISTER:
|
|
|
+ // 注册(新创建账号)
|
|
|
+ TtAppUserBackQueryRpcDTO userTransform = this.transform(user.getId(), agent);
|
|
|
+ resultMap.put("callBack", ttAppBackRpc.userBackQuery(userTransform).getData());
|
|
|
+ break;
|
|
|
+ case CALL_BACK_LOGIN_IN:
|
|
|
+ // 登录(老账号登录)
|
|
|
+ resultMap.put("callBack", Boolean.FALSE);
|
|
|
+ break;
|
|
|
+ case CALL_BACK_ACTIVATE:
|
|
|
+ // 激活(创建角色)
|
|
|
+ if (Strings.isBlank(param.getRoleId())) {
|
|
|
+ resultMap.put("callBack", Boolean.FALSE);
|
|
|
+ resultMap.put("roleId", "unknown");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ TtAppRoleRegisterBackQueryRpcDTO roleTransform = this.transform(user.getId(), agent, param.getRoleId());
|
|
|
+ resultMap.put("roleId", param.getRoleId());
|
|
|
+ resultMap.put("callBack", ttAppBackRpc.roleRegisterBackQuery(roleTransform).getData());
|
|
|
+ break;
|
|
|
+ case CALL_BACK_PAY_ORDER:
|
|
|
+ // 支付
|
|
|
+ if (Strings.isBlank(param.getOrderId())) {
|
|
|
+ resultMap.put("callBack", Boolean.FALSE);
|
|
|
+ resultMap.put("orderId", "unknown");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ TtAppOrderBackQueryRpcDTO orderTransform = this.transform(user.getId(), param.getOrderId(), agent);
|
|
|
+ resultMap.put("orderId", param.getOrderId());
|
|
|
+ resultMap.put("callBack", ttAppBackRpc.orderBackQuery(orderTransform).getData());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ // 处理未知类型
|
|
|
+ resultMap.put("callBack", Boolean.FALSE);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
log.error("事件回传判断, 出现异常, param : {}, userData : {}, e : {}", JsonUtil.toString(param),
|
|
|
JsonUtil.toString(userData), e.getMessage(), e);
|
|
|
+ resultMap.put("callBack", Boolean.FALSE);
|
|
|
}
|
|
|
- return Boolean.FALSE;
|
|
|
+ //返回结果
|
|
|
+ return resultMap;
|
|
|
}
|
|
|
|
|
|
@Override
|