|
@@ -15,11 +15,9 @@ import com.zanxiang.game.back.base.tencent.pojo.dto.TencentUserDTO;
|
|
|
import com.zanxiang.game.back.serve.dao.mapper.GameBackPolicyMapper;
|
|
|
import com.zanxiang.game.back.serve.pojo.dto.GameBackPolicyDTO;
|
|
|
import com.zanxiang.game.back.serve.pojo.dto.GameBackPolicyListDTO;
|
|
|
-import com.zanxiang.game.back.serve.pojo.entity.GameBackPolicy;
|
|
|
-import com.zanxiang.game.back.serve.pojo.entity.GameTencentBackLog;
|
|
|
-import com.zanxiang.game.back.serve.pojo.entity.GameTencentOrder;
|
|
|
-import com.zanxiang.game.back.serve.pojo.entity.GameTencentUser;
|
|
|
+import com.zanxiang.game.back.serve.pojo.entity.*;
|
|
|
import com.zanxiang.game.back.serve.pojo.enums.ActionTypeEnum;
|
|
|
+import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
|
|
|
import com.zanxiang.game.back.serve.pojo.vo.GameBackPolicyVO;
|
|
|
import com.zanxiang.game.back.serve.service.IGameBackPolicyService;
|
|
|
import com.zanxiang.game.back.serve.service.IGameTencentBackLogService;
|
|
@@ -69,42 +67,31 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public boolean tencentOrderBack(TencentOrderDTO dto) {
|
|
|
- GameTencentOrder gameTencentOrder = gameTencentOrderService.getOne(new LambdaQueryWrapper<GameTencentOrder>()
|
|
|
- .eq(GameTencentOrder::getWechatAppId, dto.getWechatAppId())
|
|
|
- .eq(GameTencentOrder::getOrderId, dto.getOrderId())
|
|
|
- .eq(GameTencentOrder::getOrderStatus,dto.getOrderStatus()));
|
|
|
-
|
|
|
//订单保存
|
|
|
- if (null == gameTencentOrder){
|
|
|
- gameTencentOrder = GameTencentOrder.builder()
|
|
|
- .orderId(dto.getOrderId())
|
|
|
- .channel(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())
|
|
|
- .isBack(0)
|
|
|
- .build();
|
|
|
- gameTencentOrderService.save(gameTencentOrder);
|
|
|
- }
|
|
|
+ GameTencentOrder gameTencentOrder = GameTencentOrder.builder()
|
|
|
+ .orderId(dto.getOrderId())
|
|
|
+ .channel(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())
|
|
|
+ .isBack(BackStatusEnum.NO.getBackStatus())
|
|
|
+ .build();
|
|
|
+ gameTencentOrderService.save(gameTencentOrder);
|
|
|
if (!dto.getOrderStatus().equals(COMPLETE_ORDER) && !dto.getOrderStatus().equals(PURCHASE)) {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- String actionType;
|
|
|
- if (dto.getOrderStatus().equals(PURCHASE)){
|
|
|
- actionType = ActionTypeEnum.PURCHASE.getActionType();
|
|
|
- }else {
|
|
|
- actionType = ActionTypeEnum.COMPLETE_ORDER.getActionType();
|
|
|
- }
|
|
|
+ String actionType = gameTencentOrder.getOrderStatus().equals(PURCHASE) ?
|
|
|
+ ActionTypeEnum.PURCHASE.getActionType() : ActionTypeEnum.COMPLETE_ORDER.getActionType();
|
|
|
DataReportOfAppIdRpcDTO dataReportOfAppIdRpcDTO = DataReportOfAppIdRpcDTO.builder()
|
|
|
.appId(dto.getWechatAppId())
|
|
|
.action(UserActionRpcDTO.builder()
|
|
|
- .actionTime(dto.getRechargeTime())
|
|
|
+ .actionTime(dto.getOrderStatus().equals(PURCHASE) ? dto.getPayTime() : dto.getRechargeTime())
|
|
|
.actionType(actionType)
|
|
|
.userId(UserActionRpcDTO.UserIdRpcDTO.builder()
|
|
|
.wechatAppId(dto.getWechatAppId())
|
|
@@ -132,15 +119,31 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
|
|
|
.eq(GameBackPolicy::getGameId, dto.getGameId())
|
|
|
.isNull(GameBackPolicy::getAccountId));
|
|
|
}
|
|
|
+
|
|
|
+ boolean doBack = BackPolicyUtil.backOrder(gameBackPolicy, dto.getRechargeMoney(), backUnit -> Long.valueOf(
|
|
|
+ gameTencentOrderService.list(new LambdaQueryWrapper<GameTencentOrder>()
|
|
|
+ .eq(GameTencentOrder::getGameId, dto.getGameId())
|
|
|
+ .eq(GameTencentOrder::getWechatAppId, dto.getWechatAppId())
|
|
|
+ .eq(GameTencentOrder::getAdAccountId, dto.getAdAccountId())
|
|
|
+ .eq(GameTencentOrder::getOrderStatus, 2)
|
|
|
+ .last("limit " + backUnit)
|
|
|
+ .orderByDesc(GameTencentOrder::getCreateTime)
|
|
|
+ ).stream().filter(order -> order.getIsBack().equals(BackStatusEnum.SUCCESS.getBackStatus())).count()
|
|
|
+ ).intValue());
|
|
|
try {
|
|
|
- if (BackPolicyUtil.isBackOrder(gameBackPolicy, dto.getRechargeMoney())) {
|
|
|
+ if (dto.getOrderStatus().equals(COMPLETE_ORDER) || doBack) {
|
|
|
userActionSetRpc.reportByAppId(dataReportOfAppIdRpcDTO);
|
|
|
- gameTencentBackLogService.save(gameTencentBackLog);
|
|
|
- gameTencentOrder.setIsBack(1);
|
|
|
+ gameTencentOrder.setIsBack(BackStatusEnum.FAILED.getBackStatus());
|
|
|
gameTencentOrderService.updateById(gameTencentOrder);
|
|
|
+
|
|
|
+ gameTencentBackLogService.save(gameTencentBackLog);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
log.error("回传腾讯订单失败,失败原因:{}", e.getMessage());
|
|
|
+ gameTencentOrder.setBackLog(e.getMessage());
|
|
|
+ gameTencentOrder.setIsBack(BackStatusEnum.FAILED.getBackStatus());
|
|
|
+ gameTencentOrderService.updateById(gameTencentOrder);
|
|
|
+
|
|
|
gameTencentBackLog.setBackLog(e.getMessage());
|
|
|
gameTencentBackLogService.saveOrUpdate(gameTencentBackLog);
|
|
|
return false;
|
|
@@ -151,18 +154,27 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public boolean tencentUserBack(TencentUserDTO dto) {
|
|
|
- GameTencentUser gameTencentUser = GameTencentUser.builder()
|
|
|
- .adAccountId(dto.getAdAccountId())
|
|
|
- .gameId(dto.getGameId())
|
|
|
- .channel(dto.getChannel())
|
|
|
- .subscribeTime(dto.getSubscribeTime())
|
|
|
- .registerTime(dto.getRegisterTime())
|
|
|
- .wechatAppId(dto.getWechatAppId())
|
|
|
- .wechatOpenid(dto.getWechatOpenid())
|
|
|
- .userType(dto.getUserType())
|
|
|
- .isBack(0)
|
|
|
- .build();
|
|
|
- gameTencentUserService.save(gameTencentUser);
|
|
|
+ GameTencentUser gameTencentUser = gameTencentUserService.getOne(new LambdaQueryWrapper<GameTencentUser>()
|
|
|
+ .eq(GameTencentUser::getWechatOpenid, dto.getWechatOpenid())
|
|
|
+ .eq(GameTencentUser::getGameId, dto.getGameId())
|
|
|
+ .eq(GameTencentUser::getWechatAppId, dto.getWechatAppId())
|
|
|
+ .eq(GameTencentUser::getAdAccountId, dto.getAdAccountId())
|
|
|
+ .eq(GameTencentUser::getIsBack,BackStatusEnum.SUCCESS.getBackStatus())
|
|
|
+ );
|
|
|
+ if (null == gameTencentUser){
|
|
|
+ //用户保存
|
|
|
+ gameTencentUser = GameTencentUser.builder()
|
|
|
+ .adAccountId(dto.getAdAccountId())
|
|
|
+ .gameId(dto.getGameId())
|
|
|
+ .channel(dto.getChannel())
|
|
|
+ .subscribeTime(dto.getSubscribeTime())
|
|
|
+ .registerTime(dto.getRegisterTime())
|
|
|
+ .wechatAppId(dto.getWechatAppId())
|
|
|
+ .wechatOpenid(dto.getWechatOpenid())
|
|
|
+ .isBack(BackStatusEnum.NO.getBackStatus())
|
|
|
+ .build();
|
|
|
+ gameTencentUserService.save(gameTencentUser);
|
|
|
+ }
|
|
|
|
|
|
DataReportOfAppIdRpcDTO dataReportOfAppIdRpcDTO = DataReportOfAppIdRpcDTO.builder()
|
|
|
.appId(dto.getWechatAppId())
|
|
@@ -187,11 +199,16 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
|
|
|
.build();
|
|
|
try {
|
|
|
userActionSetRpc.reportByAppId(dataReportOfAppIdRpcDTO);
|
|
|
- gameTencentBackLogService.save(gameTencentBackLog);
|
|
|
- gameTencentUser.setIsBack(1);
|
|
|
+ gameTencentUser.setIsBack(BackStatusEnum.SUCCESS.getBackStatus());
|
|
|
gameTencentUserService.updateById(gameTencentUser);
|
|
|
+
|
|
|
+ gameTencentBackLogService.save(gameTencentBackLog);
|
|
|
} catch (Exception e) {
|
|
|
log.error("回传腾讯用户失败,失败原因:{}", e.getMessage());
|
|
|
+ gameTencentUser.setBackLog(e.getMessage());
|
|
|
+ gameTencentUser.setIsBack(BackStatusEnum.FAILED.getBackStatus());
|
|
|
+ gameTencentUserService.updateById(gameTencentUser);
|
|
|
+
|
|
|
gameTencentBackLog.setBackLog(e.getMessage());
|
|
|
gameTencentBackLogService.saveOrUpdate(gameTencentBackLog);
|
|
|
return false;
|