|
@@ -1,15 +1,18 @@
|
|
|
package com.zanxiang.sdk.service.Impl;
|
|
|
|
|
|
import com.alipay.easysdk.kernel.util.Signer;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.zanxiang.common.enums.CpStatusEnum;
|
|
|
+import com.zanxiang.common.enums.OrderStateEnum;
|
|
|
import com.zanxiang.common.enums.ResEnum;
|
|
|
import com.zanxiang.common.utils.MD5Util;
|
|
|
import com.zanxiang.common.utils.StringUtils;
|
|
|
import com.zanxiang.mybatis.entity.*;
|
|
|
import com.zanxiang.sdk.common.util.HttpUtil;
|
|
|
import com.zanxiang.sdk.domain.dto.PlatformOrderDTO;
|
|
|
-import com.zanxiang.sdk.domain.mapper.OrderCompleteMapper;
|
|
|
+import com.zanxiang.sdk.domain.mapper.OrderCompleteCreateMapper;
|
|
|
import com.zanxiang.sdk.service.*;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.slf4j.Logger;
|
|
@@ -20,8 +23,10 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.time.ZoneId;
|
|
|
-import java.util.*;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Locale;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.TreeMap;
|
|
|
|
|
|
/**
|
|
|
* 订单履约逻辑
|
|
@@ -32,7 +37,7 @@ import java.util.*;
|
|
|
@Component
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
-@Transactional
|
|
|
+@Transactional(rollbackFor = {RuntimeException.class, Exception.class})
|
|
|
public class PerformOrderServiceImpl implements PerformOrderService {
|
|
|
protected final Logger logger = LoggerFactory.getLogger(PlatformOrderServiceImpl.class);
|
|
|
|
|
@@ -43,22 +48,19 @@ public class PerformOrderServiceImpl implements PerformOrderService {
|
|
|
private LogPayCpService logPayCpService;
|
|
|
|
|
|
@Autowired
|
|
|
- private UserService userService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private GamePayWayService gamePayWayService;
|
|
|
+ private OrderCompleteCreateMapper orderCompleteMapper;
|
|
|
|
|
|
@Autowired
|
|
|
- private PayMerchantService payMerchantService;
|
|
|
+ private GameUserRoleService gameUserRoleService;
|
|
|
|
|
|
@Autowired
|
|
|
- private GameUserRoleService gameUserRoleService;
|
|
|
+ private GameUserService gameUserService;
|
|
|
|
|
|
@Autowired
|
|
|
- private UserExtService userExtService;
|
|
|
+ private UserService userService;
|
|
|
|
|
|
@Autowired
|
|
|
- private OrderCompleteMapper orderCompleteMapper;
|
|
|
+ private OrderCompleteService orderCompleteService;
|
|
|
|
|
|
public Boolean pushCp(PlatformOrderDTO orderInfo) {
|
|
|
if (orderInfo.getCpStatus() == CpStatusEnum.SUCCESS.getCode()) {
|
|
@@ -116,121 +118,113 @@ public class PerformOrderServiceImpl implements PerformOrderService {
|
|
|
logPayCpService.save(logPayCp);
|
|
|
} catch (Exception e) {
|
|
|
logger.error("订单:{} 通知cp方失败 e:{}", orderId, e);
|
|
|
- e.printStackTrace();
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Boolean createOrderComplete(PlatformOrderDTO orderInfo) {
|
|
|
- OrderComplete orderComplete = new OrderComplete();
|
|
|
- orderComplete.setOrderId(Long.valueOf(orderInfo.getId()));
|
|
|
- orderComplete.setGameId(StringUtils.isNotEmpty(orderInfo.getGameId()) ? Long.valueOf(orderInfo.getGameId()) : null);
|
|
|
- orderComplete.setOrderDate(orderInfo.getCreateTime());
|
|
|
- orderComplete.setCpOrderId(StringUtils.isNotEmpty(orderInfo.getCpOrderId()) ? orderInfo.getCpOrderId() : "");
|
|
|
- orderComplete.setMerchantOrderNo(orderInfo.getMerchantOrderNo());
|
|
|
- orderComplete.setUserId(StringUtils.isNotEmpty(orderInfo.getUserId()) ? Long.valueOf(orderInfo.getUserId()) : null);
|
|
|
- orderComplete.setCpId(StringUtils.isNotEmpty(orderInfo.getCpId()) ? Long.valueOf(orderInfo.getCpId()) : null);
|
|
|
- orderComplete.setProductId(orderInfo.getProductId());
|
|
|
- orderComplete.setProductName(orderInfo.getProductName());
|
|
|
- orderComplete.setOrderAmount(orderInfo.getAmount());
|
|
|
- orderComplete.setRealAmount(orderInfo.getRealAmount());
|
|
|
- orderComplete.setIsSwitch(orderInfo.getIsSwitch());
|
|
|
- orderComplete.setPayTime(orderInfo.getPayTime());
|
|
|
- orderComplete.setLastCpNotifyTime(orderInfo.getLastCpNotifyTime());
|
|
|
- orderComplete.setStatus(orderInfo.getStatus());
|
|
|
- orderComplete.setCpStatus(orderInfo.getCpStatus());
|
|
|
- orderComplete.setIsDelete(orderInfo.getIsDelete());
|
|
|
- orderComplete.setChannel(orderInfo.getChannel());
|
|
|
- orderComplete.setCreateTime(orderInfo.getCreateTime());
|
|
|
- orderComplete.setEndTime(orderInfo.getEndTime());
|
|
|
- orderComplete.setPayDevice(orderInfo.getPayDevice());
|
|
|
- orderComplete.setGameRoleId(orderInfo.getRoleId());
|
|
|
-
|
|
|
- /*-------支付那一刻系统------*/
|
|
|
- orderComplete.setFromDevice(orderInfo.getFromDevice());
|
|
|
-
|
|
|
-
|
|
|
- //todo 获取游戏信息
|
|
|
- orderComplete.setGameName("");
|
|
|
- orderComplete.setGameCategory("");
|
|
|
- orderComplete.setGameRegional("");
|
|
|
- orderComplete.setGameLevel("");
|
|
|
- orderComplete.setGameVip("");
|
|
|
-
|
|
|
- if (StringUtils.isNotEmpty(orderInfo.getRoleId())) {
|
|
|
- GameUserRole userRole = gameUserRoleService.getOne(new QueryWrapper<GameUserRole>().lambda().eq(GameUserRole::getRoleId, orderInfo.getRoleId()));
|
|
|
- if (!Objects.isNull(userRole)) {
|
|
|
- orderComplete.setGameRegional(userRole.getRegionalName());
|
|
|
- orderComplete.setGameLevel(userRole.getRoleLevel() != null ? String.valueOf(userRole.getRoleLevel()) : null);
|
|
|
- orderComplete.setGameVip(userRole.getRoleVipLevel() != null ? String.valueOf(userRole.getRoleVipLevel()) : null);
|
|
|
+ try {
|
|
|
+ OrderComplete orderComplete = orderCompleteMapper.info(orderInfo.getId());
|
|
|
+ orderComplete.setOrderDate(orderInfo.getCreateTime());
|
|
|
+ //todo 推广相关信息
|
|
|
+ orderComplete.setAgentId("");
|
|
|
+ orderComplete.setAgentAccount("");
|
|
|
+ orderComplete.setAgentMedia("");
|
|
|
+ orderComplete.setAgentAdvert("");
|
|
|
+
|
|
|
+ //todo 广告通知状态
|
|
|
+ orderComplete.setAdvertNotifyStatus(0);
|
|
|
+ orderComplete.setAdvertNotifyType(0);
|
|
|
+
|
|
|
+ OrderComplete complete = orderCompleteService.getOne(new LambdaQueryWrapper<OrderComplete>().eq(OrderComplete::getOrderId, orderInfo.getId()));
|
|
|
+ if (Objects.isNull(complete)) {
|
|
|
+ orderCompleteMapper.insert(orderComplete);
|
|
|
+ logger.info("订单:{} 生成宽表数据成功", orderInfo.getId());
|
|
|
+ } else {
|
|
|
+ OrderComplete pa = new OrderComplete();
|
|
|
+ pa.setOrderId(complete.getOrderId());
|
|
|
+ orderCompleteService.update(pa, new UpdateWrapper<OrderComplete>().setEntity(orderComplete));
|
|
|
+ logger.info("订单:{} 宽表数据更新成功", orderInfo.getId());
|
|
|
}
|
|
|
+ return true;
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("订单:{} 生成宽表数据失败 e:{}", orderInfo.getId(), e);
|
|
|
}
|
|
|
+ return false;
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
- //todo 获取玩家账号信息
|
|
|
- orderComplete.setUserAccount("");
|
|
|
- orderComplete.setUserRegisterTime(new Date());
|
|
|
-
|
|
|
- if (StringUtils.isNotEmpty(orderInfo.getUserId())) {
|
|
|
- User userInfo = userService.getById(orderInfo.getUserId());
|
|
|
- if (!Objects.isNull(userInfo)) {
|
|
|
- orderComplete.setUserAccount(userInfo.getUsername());
|
|
|
- orderComplete.setUserRegisterTime(userInfo.getCreateTime() != null ? Date.from(userInfo.getCreateTime().atZone(ZoneId.systemDefault()).toInstant()) : null);
|
|
|
+ @Override
|
|
|
+ public Boolean checkIsFirstRecharge(PlatformOrderDTO orderInfo) {
|
|
|
+ try {
|
|
|
+ Order one = platformOrderService.getOne(new QueryWrapper<Order>().lambda().eq(Order::getUserId, orderInfo.getUserId()).ne(Order::getId, orderInfo.getId()).last("limit 1"));
|
|
|
+ if (Objects.isNull(one)) {
|
|
|
+ Order order = new Order();
|
|
|
+ order.setId(order.getId());
|
|
|
+ order.setIsFirstRecharge(1);
|
|
|
+ platformOrderService.updateById(order);
|
|
|
+ logger.info("订单:{} 验证订单是否为首充成功", orderInfo.getId());
|
|
|
+ return true;
|
|
|
}
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("订单:{} 验证订单是否为首充失败 e:{}", orderInfo.getId(), e);
|
|
|
}
|
|
|
- //todo 注册游戏信息
|
|
|
- orderComplete.setUserRegisterGameId(0L);
|
|
|
- orderComplete.setUserRegisterGame("");
|
|
|
- orderComplete.setUserRegisterGameCategory("");
|
|
|
- orderComplete.setUserRegisterChannel("");
|
|
|
-
|
|
|
- if (StringUtils.isNotEmpty(orderInfo.getUserId())) {
|
|
|
- UserExt userExt = userExtService.getById(orderInfo.getUserId());
|
|
|
- if (!Objects.isNull(userExt)) {
|
|
|
- orderComplete.setUserRegisterGameId(userExt.getRegGameId());
|
|
|
- orderComplete.setUserRegisterChannel(userExt.getRegFrom());
|
|
|
+ return true;
|
|
|
+ }
|
|
|
|
|
|
+ @Override
|
|
|
+ public Boolean userRechargeTotal(PlatformOrderDTO orderInfo) {
|
|
|
+ try {
|
|
|
+ //订单取消情况 做减法
|
|
|
+ float amount = orderInfo.getAmount().floatValue();
|
|
|
+ int num = 1;
|
|
|
+ if (orderInfo.getStatus().equals(OrderStateEnum.CANCEL.getCode())) {
|
|
|
+ amount = -amount;
|
|
|
+ num = -1;
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- //todo 推广相关信息
|
|
|
- orderComplete.setAgentId("");
|
|
|
- orderComplete.setAgentAccount("");
|
|
|
- orderComplete.setAgentMedia("");
|
|
|
- orderComplete.setAgentAdvert("");
|
|
|
-
|
|
|
-
|
|
|
- //todo 支付相关信息
|
|
|
- orderComplete.setPayWayId("");
|
|
|
- orderComplete.setPayWay("");
|
|
|
- orderComplete.setMerchantNo("");
|
|
|
- orderComplete.setMerchantName("");
|
|
|
- if (StringUtils.isNotEmpty(orderInfo.getGamePaywayId())) {
|
|
|
- GamePayWay gamePayWay = gamePayWayService.getInfo(orderInfo.getGamePaywayId());
|
|
|
- if (!Objects.isNull(gamePayWay)) {
|
|
|
- orderComplete.setPayWayId(gamePayWay.getPayWayId() > 0 ? String.valueOf(gamePayWay.getPayWayId()) : null);
|
|
|
- orderComplete.setPayWay(gamePayWay.getPayWayName());
|
|
|
-
|
|
|
- if (!Objects.isNull(gamePayWay.getPayMerchantId())) {
|
|
|
- PayMerchant payMerchant = payMerchantService.getById(gamePayWay.getPayMerchantId());
|
|
|
- if (!Objects.isNull(payMerchant)) {
|
|
|
- orderComplete.setMerchantNo(payMerchant.getMerchantNo());
|
|
|
- orderComplete.setMerchantName(payMerchant.getMerchantName());
|
|
|
- }
|
|
|
- }
|
|
|
+ //游戏用户角色统计更新
|
|
|
+ if (StringUtils.isNotEmpty(orderInfo.getRoleId())) {
|
|
|
+ GameUserRole gameUserRole = new GameUserRole();
|
|
|
+ gameUserRole.setRoleId(orderInfo.getRoleId());
|
|
|
+ gameUserRoleService.update(gameUserRole, new UpdateWrapper<GameUserRole>().lambda()
|
|
|
+ .set(GameUserRole::getLastRechargeTime, orderInfo.getPayTime())
|
|
|
+ .setSql("recharge_count=recharge_count+" + num)
|
|
|
+ .setSql("recharge_money=recharge_money+" + amount)
|
|
|
+ .setEntity(gameUserRole)
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ logger.info("订单:{} 用户玩家角色RoleId为空,不进行gameUserRole充值统计汇总", orderInfo.getId());
|
|
|
+ }
|
|
|
+ //游戏用户统计更新
|
|
|
+ if (StringUtils.isNotEmpty(orderInfo.getMgUserId())) {
|
|
|
+ GameUser gameUser = new GameUser();
|
|
|
+ gameUser.setId(Long.valueOf(orderInfo.getMgUserId()));
|
|
|
+ gameUserService.update(gameUser, new UpdateWrapper<GameUser>().lambda()
|
|
|
+ .set(GameUser::getLastRechargeTime, orderInfo.getPayTime())
|
|
|
+ .setSql("recharge_count=recharge_count+" + num)
|
|
|
+ .setSql("recharge_money=recharge_money+" + amount)
|
|
|
+ .setEntity(gameUser)
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ logger.info("订单:{} 用户玩家MgUserId为空,不进行gameUser充值统计汇总", orderInfo.getId());
|
|
|
}
|
|
|
+ //用户统计更新
|
|
|
+ if (StringUtils.isNotEmpty(orderInfo.getUserId())) {
|
|
|
+ User user = new User();
|
|
|
+ user.setId(Long.valueOf(orderInfo.getUserId()));
|
|
|
+ userService.update(user, new UpdateWrapper<User>().lambda()
|
|
|
+ .set(User::getLastRechargeTime, orderInfo.getPayTime())
|
|
|
+ .setSql("recharge_count=recharge_count+" + num)
|
|
|
+ .setSql("recharge_money=recharge_money+" + amount)
|
|
|
+ .setEntity(user)
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ logger.info("订单:{} 用户UserId为空,不进行User充值统计汇总", orderInfo.getId());
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("订单:{} 用户充值统计逻辑操作失败 e:{}", orderInfo.getId(), e);
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- //todo 是否首充单独更新
|
|
|
- orderComplete.setIsFirstRecharge(0);
|
|
|
-
|
|
|
- //todo 广告通知状态
|
|
|
- orderComplete.setAdvertNotifyStatus(0);
|
|
|
- orderComplete.setAdvertNotifyType(0);
|
|
|
-
|
|
|
- return null;
|
|
|
+ return false;
|
|
|
}
|
|
|
}
|