|
@@ -12,6 +12,7 @@ import com.zanxiang.game.back.base.pojo.vo.OrderBackQueryRpcVO;
|
|
import com.zanxiang.game.back.base.rpc.ITencentMiniGameBackRpc;
|
|
import com.zanxiang.game.back.base.rpc.ITencentMiniGameBackRpc;
|
|
import com.zanxiang.game.back.serve.pojo.entity.*;
|
|
import com.zanxiang.game.back.serve.pojo.entity.*;
|
|
import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
|
|
import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
|
|
|
|
+import com.zanxiang.game.back.serve.pojo.enums.BackTypeEnum;
|
|
import com.zanxiang.game.back.serve.service.*;
|
|
import com.zanxiang.game.back.serve.service.*;
|
|
import com.zanxiang.module.util.JsonUtil;
|
|
import com.zanxiang.module.util.JsonUtil;
|
|
import com.zanxiang.module.util.pojo.ResultVO;
|
|
import com.zanxiang.module.util.pojo.ResultVO;
|
|
@@ -25,6 +26,7 @@ import java.time.LocalDateTime;
|
|
import java.util.Collections;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Slf4j
|
|
@Slf4j
|
|
@@ -69,6 +71,7 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
|
|
}
|
|
}
|
|
List<Long> splitMoney = gameTencentMiniGameOrderSplitLogService.list(new LambdaQueryWrapper<GameTencentMiniGameOrderSplitLog>()
|
|
List<Long> splitMoney = gameTencentMiniGameOrderSplitLogService.list(new LambdaQueryWrapper<GameTencentMiniGameOrderSplitLog>()
|
|
.eq(GameTencentMiniGameOrderSplitLog::getOrderNo, orderLog.getOrderId())
|
|
.eq(GameTencentMiniGameOrderSplitLog::getOrderNo, orderLog.getOrderId())
|
|
|
|
+ .eq(GameTencentMiniGameOrderSplitLog::getBackType, BackTypeEnum.BACK_MEDIA_SDK.getBackType())
|
|
.orderByAsc(GameTencentMiniGameOrderSplitLog::getBackIndex)
|
|
.orderByAsc(GameTencentMiniGameOrderSplitLog::getBackIndex)
|
|
).stream().map(GameTencentMiniGameOrderSplitLog::getSplitMoney).collect(Collectors.toList());
|
|
).stream().map(GameTencentMiniGameOrderSplitLog::getSplitMoney).collect(Collectors.toList());
|
|
return ResultVO.ok(OrderBackQueryRpcVO.builder()
|
|
return ResultVO.ok(OrderBackQueryRpcVO.builder()
|
|
@@ -99,6 +102,7 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
|
|
.eq(GameTencentMiniGameOrder::getGameId, dto.getGameId())
|
|
.eq(GameTencentMiniGameOrder::getGameId, dto.getGameId())
|
|
.eq(GameTencentMiniGameOrder::getAgentKey, dto.getAgentKey())
|
|
.eq(GameTencentMiniGameOrder::getAgentKey, dto.getAgentKey())
|
|
.eq(GameTencentMiniGameOrder::getWechatOpenid, dto.getWechatOpenid())
|
|
.eq(GameTencentMiniGameOrder::getWechatOpenid, dto.getWechatOpenid())
|
|
|
|
+ .eq(GameTencentMiniGameOrder::getBackType, BackTypeEnum.BACK_MEDIA_SDK.getBackType())
|
|
);
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -117,8 +121,8 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
|
|
.eq(GameTencentMiniGameOrder::getAdAccountId, dto.getAdAccountId())
|
|
.eq(GameTencentMiniGameOrder::getAdAccountId, dto.getAdAccountId())
|
|
.eq(GameTencentMiniGameOrder::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
|
|
.eq(GameTencentMiniGameOrder::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
|
|
.eq(GameTencentMiniGameOrder::getWechatOpenid, dto.getWechatOpenid())
|
|
.eq(GameTencentMiniGameOrder::getWechatOpenid, dto.getWechatOpenid())
|
|
- .last("limit 1")
|
|
|
|
- ) == null;
|
|
|
|
|
|
+ .eq(GameTencentMiniGameOrder::getBackType, BackTypeEnum.BACK_API.getBackType())
|
|
|
|
+ .last("limit 1")) == null;
|
|
GameTencentMiniGameUser userLog = gameTencentMiniGameUserService.getOne(new LambdaQueryWrapper<GameTencentMiniGameUser>()
|
|
GameTencentMiniGameUser userLog = gameTencentMiniGameUserService.getOne(new LambdaQueryWrapper<GameTencentMiniGameUser>()
|
|
.select(GameTencentMiniGameUser::getBackStatus, GameTencentMiniGameUser::getClickId)
|
|
.select(GameTencentMiniGameUser::getBackStatus, GameTencentMiniGameUser::getClickId)
|
|
.eq(GameTencentMiniGameUser::getGameId, dto.getGameId())
|
|
.eq(GameTencentMiniGameUser::getGameId, dto.getGameId())
|
|
@@ -126,6 +130,7 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
|
|
.eq(GameTencentMiniGameUser::getWechatOpenid, dto.getWechatOpenid())
|
|
.eq(GameTencentMiniGameUser::getWechatOpenid, dto.getWechatOpenid())
|
|
.eq(GameTencentMiniGameUser::getAdAccountId, dto.getAdAccountId())
|
|
.eq(GameTencentMiniGameUser::getAdAccountId, dto.getAdAccountId())
|
|
.orderByDesc(GameTencentMiniGameUser::getCreateTime)
|
|
.orderByDesc(GameTencentMiniGameUser::getCreateTime)
|
|
|
|
+ .eq(GameTencentMiniGameUser::getBackType, BackTypeEnum.BACK_API.getBackType())
|
|
.last("limit 1")
|
|
.last("limit 1")
|
|
);
|
|
);
|
|
GameTencentMiniGameOrder orderLog = GameTencentMiniGameOrder.builder()
|
|
GameTencentMiniGameOrder orderLog = GameTencentMiniGameOrder.builder()
|
|
@@ -148,6 +153,7 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
|
|
.roleId(dto.getRoleId())
|
|
.roleId(dto.getRoleId())
|
|
.roleName(dto.getRoleName())
|
|
.roleName(dto.getRoleName())
|
|
.isFirstOrder(isFirstOrder)
|
|
.isFirstOrder(isFirstOrder)
|
|
|
|
+ .backType(BackTypeEnum.BACK_API.getBackType())
|
|
.build();
|
|
.build();
|
|
gameTencentMiniGameOrderService.save(orderLog);
|
|
gameTencentMiniGameOrderService.save(orderLog);
|
|
if (userLog == null) {
|
|
if (userLog == null) {
|
|
@@ -166,51 +172,44 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
|
|
log.error("腾讯小游戏订单媒体SDK回传收到:{}。订单未支付,直接过滤", JsonUtil.toString(dto));
|
|
log.error("腾讯小游戏订单媒体SDK回传收到:{}。订单未支付,直接过滤", JsonUtil.toString(dto));
|
|
return ResultVO.ok(true);
|
|
return ResultVO.ok(true);
|
|
}
|
|
}
|
|
- boolean isFirstOrder = gameTencentMiniGameOrderService.getOne(new LambdaQueryWrapper<GameTencentMiniGameOrder>()
|
|
|
|
- .select(GameTencentMiniGameOrder::getOrderId)
|
|
|
|
- .eq(GameTencentMiniGameOrder::getGameId, dto.getGameId())
|
|
|
|
- .eq(GameTencentMiniGameOrder::getWechatAppId, dto.getWechatAppId())
|
|
|
|
- .eq(GameTencentMiniGameOrder::getAdAccountId, dto.getAdAccountId())
|
|
|
|
- .eq(GameTencentMiniGameOrder::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
|
|
|
|
- .eq(GameTencentMiniGameOrder::getWechatOpenid, dto.getWechatOpenid())
|
|
|
|
- .last("limit 1")
|
|
|
|
- ) == null;
|
|
|
|
- GameTencentMiniGameUser userLog = gameTencentMiniGameUserService.getOne(new LambdaQueryWrapper<GameTencentMiniGameUser>()
|
|
|
|
- .select(GameTencentMiniGameUser::getBackStatus, GameTencentMiniGameUser::getClickId)
|
|
|
|
- .eq(GameTencentMiniGameUser::getGameId, dto.getGameId())
|
|
|
|
- .eq(GameTencentMiniGameUser::getWechatAppId, dto.getWechatAppId())
|
|
|
|
- .eq(GameTencentMiniGameUser::getWechatOpenid, dto.getWechatOpenid())
|
|
|
|
- .eq(GameTencentMiniGameUser::getAdAccountId, dto.getAdAccountId())
|
|
|
|
- .orderByDesc(GameTencentMiniGameUser::getCreateTime)
|
|
|
|
- .last("limit 1")
|
|
|
|
- );
|
|
|
|
- GameTencentMiniGameOrder orderLog = GameTencentMiniGameOrder.builder()
|
|
|
|
- .adAccountId(dto.getAdAccountId())
|
|
|
|
- .gameId(dto.getGameId())
|
|
|
|
- .orderId(dto.getOrderId())
|
|
|
|
- .agentKey(dto.getChannel())
|
|
|
|
- .rechargeMoney(dto.getRechargeMoney())
|
|
|
|
- .rechargeTime(dto.getRechargeTime())
|
|
|
|
- .subscribeTime(dto.getSubscribeTime())
|
|
|
|
- .registerTime(dto.getRegisterTime())
|
|
|
|
- .wechatAppId(dto.getWechatAppId())
|
|
|
|
- .wechatOpenid(dto.getWechatOpenid())
|
|
|
|
- .orderStatus(dto.getOrderStatus())
|
|
|
|
- .payTime(dto.getPayTime())
|
|
|
|
- .createTime(LocalDateTime.now())
|
|
|
|
- .backStatus(BackStatusEnum.NO.getBackStatus())
|
|
|
|
- .backPolicyId(dto.getBackPolicyId())
|
|
|
|
- .clickId(userLog == null ? null : userLog.getClickId())
|
|
|
|
- .roleId(dto.getRoleId())
|
|
|
|
- .roleName(dto.getRoleName())
|
|
|
|
- .isFirstOrder(isFirstOrder)
|
|
|
|
- .build();
|
|
|
|
- gameTencentMiniGameOrderService.save(orderLog);
|
|
|
|
- if (userLog == null) {
|
|
|
|
- log.error("腾讯小游戏订单媒体SDK回传失败,找不到回传的用户 orderId: {}", orderLog.getOrderId());
|
|
|
|
- return ResultVO.fail("找不到回传用户");
|
|
|
|
- } else {
|
|
|
|
|
|
+ // 此处加锁防止 cp 方调用过快,导致查询回传结果时判断逻辑没走完
|
|
|
|
+ String lockKey = ServerInfo.SERVER_NAME + ":TencentMiniGameOrderBack:" + dto.getGameId() + ":" + dto.getOrderId();
|
|
|
|
+ redisTemplate.opsForValue().set(lockKey, dto.getOrderId(), 2L, TimeUnit.MINUTES);
|
|
|
|
+ try {
|
|
|
|
+ boolean isFirstOrder = gameTencentMiniGameOrderService.getOne(new LambdaQueryWrapper<GameTencentMiniGameOrder>()
|
|
|
|
+ .select(GameTencentMiniGameOrder::getOrderId)
|
|
|
|
+ .eq(GameTencentMiniGameOrder::getGameId, dto.getGameId())
|
|
|
|
+ .eq(GameTencentMiniGameOrder::getWechatAppId, dto.getWechatAppId())
|
|
|
|
+ .eq(GameTencentMiniGameOrder::getAdAccountId, dto.getAdAccountId())
|
|
|
|
+ .eq(GameTencentMiniGameOrder::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
|
|
|
|
+ .eq(GameTencentMiniGameOrder::getWechatOpenid, dto.getWechatOpenid())
|
|
|
|
+ .eq(GameTencentMiniGameOrder::getBackType, BackTypeEnum.BACK_MEDIA_SDK.getBackType())
|
|
|
|
+ .last("limit 1")) == null;
|
|
|
|
+ GameTencentMiniGameOrder orderLog = GameTencentMiniGameOrder.builder()
|
|
|
|
+ .adAccountId(dto.getAdAccountId())
|
|
|
|
+ .gameId(dto.getGameId())
|
|
|
|
+ .orderId(dto.getOrderId())
|
|
|
|
+ .agentKey(dto.getChannel())
|
|
|
|
+ .rechargeMoney(dto.getRechargeMoney())
|
|
|
|
+ .rechargeTime(dto.getRechargeTime())
|
|
|
|
+ .subscribeTime(dto.getSubscribeTime())
|
|
|
|
+ .registerTime(dto.getRegisterTime())
|
|
|
|
+ .wechatAppId(dto.getWechatAppId())
|
|
|
|
+ .wechatOpenid(dto.getWechatOpenid())
|
|
|
|
+ .orderStatus(dto.getOrderStatus())
|
|
|
|
+ .payTime(dto.getPayTime())
|
|
|
|
+ .createTime(LocalDateTime.now())
|
|
|
|
+ .backStatus(BackStatusEnum.NO.getBackStatus())
|
|
|
|
+ .backPolicyId(dto.getBackPolicyId())
|
|
|
|
+ .roleId(dto.getRoleId())
|
|
|
|
+ .roleName(dto.getRoleName())
|
|
|
|
+ .isFirstOrder(isFirstOrder)
|
|
|
|
+ .backType(BackTypeEnum.BACK_MEDIA_SDK.getBackType())
|
|
|
|
+ .build();
|
|
|
|
+ gameTencentMiniGameOrderService.save(orderLog);
|
|
return ResultVO.ok(gameTencentMiniGameOrderService.callback(orderLog));
|
|
return ResultVO.ok(gameTencentMiniGameOrderService.callback(orderLog));
|
|
|
|
+ } finally {
|
|
|
|
+ redisTemplate.delete(lockKey);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -228,6 +227,7 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
|
|
.backStatus(BackStatusEnum.NO.getBackStatus())
|
|
.backStatus(BackStatusEnum.NO.getBackStatus())
|
|
.clickId(dto.getClickId())
|
|
.clickId(dto.getClickId())
|
|
.createTime(LocalDateTime.now())
|
|
.createTime(LocalDateTime.now())
|
|
|
|
+ .backType(BackTypeEnum.BACK_API.getBackType())
|
|
.build();
|
|
.build();
|
|
gameTencentMiniGameUserService.save(userLog);
|
|
gameTencentMiniGameUserService.save(userLog);
|
|
//查询回传策略
|
|
//查询回传策略
|
|
@@ -253,6 +253,7 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
|
|
.backStatus(BackStatusEnum.NO.getBackStatus())
|
|
.backStatus(BackStatusEnum.NO.getBackStatus())
|
|
.clickId(dto.getClickId())
|
|
.clickId(dto.getClickId())
|
|
.createTime(LocalDateTime.now())
|
|
.createTime(LocalDateTime.now())
|
|
|
|
+ .backType(BackTypeEnum.BACK_MEDIA_SDK.getBackType())
|
|
.build();
|
|
.build();
|
|
gameTencentMiniGameUserService.save(userLog);
|
|
gameTencentMiniGameUserService.save(userLog);
|
|
return ResultVO.ok(gameTencentMiniGameUserService.callback(userLog));
|
|
return ResultVO.ok(gameTencentMiniGameUserService.callback(userLog));
|
|
@@ -267,6 +268,7 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
|
|
.eq(GameTencentMiniGameRoleRegister::getWechatAppId, dto.getWechatAppId())
|
|
.eq(GameTencentMiniGameRoleRegister::getWechatAppId, dto.getWechatAppId())
|
|
.eq(GameTencentMiniGameRoleRegister::getWechatOpenid, dto.getWechatOpenid())
|
|
.eq(GameTencentMiniGameRoleRegister::getWechatOpenid, dto.getWechatOpenid())
|
|
.eq(GameTencentMiniGameRoleRegister::getRoleId, dto.getRoleId())
|
|
.eq(GameTencentMiniGameRoleRegister::getRoleId, dto.getRoleId())
|
|
|
|
+ .eq(GameTencentMiniGameRoleRegister::getBackType, BackTypeEnum.BACK_API.getBackType())
|
|
.last("limit 1")
|
|
.last("limit 1")
|
|
);
|
|
);
|
|
if (oldRole != null) {
|
|
if (oldRole != null) {
|
|
@@ -298,6 +300,7 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
|
|
.eq(GameTencentMiniGameUser::getWechatAppId, dto.getWechatAppId())
|
|
.eq(GameTencentMiniGameUser::getWechatAppId, dto.getWechatAppId())
|
|
.eq(GameTencentMiniGameUser::getWechatOpenid, dto.getWechatOpenid())
|
|
.eq(GameTencentMiniGameUser::getWechatOpenid, dto.getWechatOpenid())
|
|
.eq(GameTencentMiniGameUser::getAdAccountId, dto.getAdAccountId())
|
|
.eq(GameTencentMiniGameUser::getAdAccountId, dto.getAdAccountId())
|
|
|
|
+ .eq(GameTencentMiniGameUser::getBackType, BackTypeEnum.BACK_API.getBackType())
|
|
.orderByDesc(GameTencentMiniGameUser::getCreateTime)
|
|
.orderByDesc(GameTencentMiniGameUser::getCreateTime)
|
|
.last("limit 1")
|
|
.last("limit 1")
|
|
);
|
|
);
|
|
@@ -315,6 +318,7 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
|
|
.roleId(dto.getRoleId())
|
|
.roleId(dto.getRoleId())
|
|
.roleName(dto.getRoleName())
|
|
.roleName(dto.getRoleName())
|
|
.roleLevel(dto.getRoleLevel())
|
|
.roleLevel(dto.getRoleLevel())
|
|
|
|
+ .backType(BackTypeEnum.BACK_API.getBackType())
|
|
.build();
|
|
.build();
|
|
gameTencentMiniGameRoleRegisterService.save(roleRegisterLog);
|
|
gameTencentMiniGameRoleRegisterService.save(roleRegisterLog);
|
|
}
|
|
}
|
|
@@ -330,6 +334,7 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
|
|
.eq(GameTencentMiniGameRoleRegister::getWechatAppId, dto.getWechatAppId())
|
|
.eq(GameTencentMiniGameRoleRegister::getWechatAppId, dto.getWechatAppId())
|
|
.eq(GameTencentMiniGameRoleRegister::getWechatOpenid, dto.getWechatOpenid())
|
|
.eq(GameTencentMiniGameRoleRegister::getWechatOpenid, dto.getWechatOpenid())
|
|
.eq(GameTencentMiniGameRoleRegister::getRoleId, dto.getRoleId())
|
|
.eq(GameTencentMiniGameRoleRegister::getRoleId, dto.getRoleId())
|
|
|
|
+ .eq(GameTencentMiniGameRoleRegister::getBackType, BackTypeEnum.BACK_MEDIA_SDK.getBackType())
|
|
.last("limit 1")
|
|
.last("limit 1")
|
|
);
|
|
);
|
|
if (oldRole != null) {
|
|
if (oldRole != null) {
|
|
@@ -352,6 +357,7 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
|
|
.eq(GameTencentMiniGameUser::getWechatAppId, dto.getWechatAppId())
|
|
.eq(GameTencentMiniGameUser::getWechatAppId, dto.getWechatAppId())
|
|
.eq(GameTencentMiniGameUser::getWechatOpenid, dto.getWechatOpenid())
|
|
.eq(GameTencentMiniGameUser::getWechatOpenid, dto.getWechatOpenid())
|
|
.eq(GameTencentMiniGameUser::getAdAccountId, dto.getAdAccountId())
|
|
.eq(GameTencentMiniGameUser::getAdAccountId, dto.getAdAccountId())
|
|
|
|
+ .eq(GameTencentMiniGameUser::getBackType, BackTypeEnum.BACK_MEDIA_SDK.getBackType())
|
|
.orderByDesc(GameTencentMiniGameUser::getCreateTime)
|
|
.orderByDesc(GameTencentMiniGameUser::getCreateTime)
|
|
.last("limit 1")
|
|
.last("limit 1")
|
|
);
|
|
);
|
|
@@ -369,6 +375,7 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
|
|
.roleId(dto.getRoleId())
|
|
.roleId(dto.getRoleId())
|
|
.roleName(dto.getRoleName())
|
|
.roleName(dto.getRoleName())
|
|
.roleLevel(dto.getRoleLevel())
|
|
.roleLevel(dto.getRoleLevel())
|
|
|
|
+ .backType(BackTypeEnum.BACK_MEDIA_SDK.getBackType())
|
|
.build();
|
|
.build();
|
|
gameTencentMiniGameRoleRegisterService.save(roleRegisterLog);
|
|
gameTencentMiniGameRoleRegisterService.save(roleRegisterLog);
|
|
}
|
|
}
|