|
@@ -1,13 +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.OrderCompleteCreateMapper;
|
|
|
import com.zanxiang.sdk.service.*;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.slf4j.Logger;
|
|
@@ -18,7 +23,10 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.*;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Locale;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.TreeMap;
|
|
|
|
|
|
/**
|
|
|
* 订单履约逻辑
|
|
@@ -29,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);
|
|
|
|
|
@@ -39,11 +47,20 @@ public class PerformOrderServiceImpl implements PerformOrderService {
|
|
|
@Autowired
|
|
|
private LogPayCpService logPayCpService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private OrderCompleteCreateMapper orderCompleteMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private GameUserRoleService gameUserRoleService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private GameUserService gameUserService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private UserService userService;
|
|
|
|
|
|
@Autowired
|
|
|
- private GamePayWayService gamePayWayService;
|
|
|
+ private OrderCompleteService orderCompleteService;
|
|
|
|
|
|
public Boolean pushCp(PlatformOrderDTO orderInfo) {
|
|
|
if (orderInfo.getCpStatus() == CpStatusEnum.SUCCESS.getCode()) {
|
|
@@ -55,7 +72,7 @@ public class PerformOrderServiceImpl implements PerformOrderService {
|
|
|
String cpPaybackUrl = "https://baidu.com";
|
|
|
|
|
|
HashMap<String, String> map = new HashMap<>();
|
|
|
- map.put("app_id", orderInfo.getGameId());
|
|
|
+ map.put("app_id", String.valueOf(orderInfo.getGameId()));
|
|
|
map.put("cp_order_id", orderInfo.getCpOrderId());
|
|
|
map.put("mem_id", orderInfo.getMgUserId());
|
|
|
map.put("order_status", String.valueOf(orderInfo.getStatus()));
|
|
@@ -101,91 +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.setFromDevice(orderInfo.getFromDevice());
|
|
|
-
|
|
|
-
|
|
|
- //todo 获取游戏信息
|
|
|
- orderComplete.setGameName("");
|
|
|
- orderComplete.setGameCategory("");
|
|
|
- orderComplete.setGameRegional("");
|
|
|
- orderComplete.setGameRole("");
|
|
|
- orderComplete.setGameLevel("");
|
|
|
- orderComplete.setGameVip("");
|
|
|
-
|
|
|
- //todo 获取玩家账号信息
|
|
|
- orderComplete.setUserAccount("");
|
|
|
- orderComplete.setUserRegisterTime(new Date());
|
|
|
- orderComplete.setUserRegisterGameId(0L);
|
|
|
- orderComplete.setUserRegisterGame("");
|
|
|
- orderComplete.setUserRegisterGameCategory("");
|
|
|
- orderComplete.setUserRegisterChannel("");
|
|
|
-
|
|
|
- if (StringUtils.isNotEmpty(orderInfo.getUserId())) {
|
|
|
- User userInfo = userService.getById(orderInfo.getUserId());
|
|
|
- if (!Objects.isNull(userInfo)) {
|
|
|
- orderComplete.setUserAccount(userInfo.getUsername());
|
|
|
+ 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.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());
|
|
|
+ @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);
|
|
|
}
|
|
|
+ return true;
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
- //todo 是否首充单独更新
|
|
|
- orderComplete.setIsFirstRecharge(0);
|
|
|
-
|
|
|
- //todo 广告通知状态
|
|
|
- orderComplete.setAdvertNotifyStatus(0);
|
|
|
- orderComplete.setAdvertNotifyType(0);
|
|
|
-
|
|
|
- return null;
|
|
|
+ @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;
|
|
|
+ }
|
|
|
+ //游戏用户角色统计更新
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ return false;
|
|
|
}
|
|
|
}
|