|
@@ -7,7 +7,9 @@ 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.DateUtils;
|
|
|
import com.zanxiang.common.utils.MD5Util;
|
|
|
+import com.zanxiang.common.utils.ObjectUtil;
|
|
|
import com.zanxiang.common.utils.StringUtils;
|
|
|
import com.zanxiang.mybatis.entity.*;
|
|
|
import com.zanxiang.sdk.common.util.HttpUtil;
|
|
@@ -22,11 +24,9 @@ import org.springframework.stereotype.Component;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.Locale;
|
|
|
-import java.util.Objects;
|
|
|
-import java.util.TreeMap;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* 订单履约逻辑
|
|
@@ -62,15 +62,38 @@ public class PerformOrderServiceImpl implements PerformOrderService {
|
|
|
@Autowired
|
|
|
private OrderCompleteService orderCompleteService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private GameService gameService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private GamePayWayService gamePayWayService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PayMerchantService payMerchantService;
|
|
|
+
|
|
|
public Boolean pushCp(PlatformOrderDTO orderInfo) {
|
|
|
+ logger.info("订单:{} 充值成功推送cp方回调 ----------start---------", orderInfo.getId());
|
|
|
if (orderInfo.getCpStatus() == CpStatusEnum.SUCCESS.getCode()) {
|
|
|
return true;
|
|
|
}
|
|
|
+ if (orderInfo.getGameId() <= 0) {
|
|
|
+ logger.error("订单:{} 充值成功推送cp方回调失败,订单中GameId不存在", orderInfo.getId());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
String orderId = orderInfo.getId();
|
|
|
- //todo 待完善
|
|
|
- String app_key = "111";
|
|
|
- String cpPaybackUrl = "https://baidu.com";
|
|
|
|
|
|
+ //获取游戏中的app_key与app_key信息
|
|
|
+ Game gameInfo = gameService.getById(orderInfo.getGameId());
|
|
|
+ if (Objects.isNull(gameInfo)) {
|
|
|
+ logger.error("订单:{} 充值成功推送cp方回调失败,订单中GameId:{} 的游戏信息未找到", orderInfo.getId(), orderInfo.getGameId());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ String app_key = gameInfo.getAppKey();
|
|
|
+ String cpPaybackUrl = gameInfo.getCpPaybackUrl();
|
|
|
+ if (StringUtils.isEmpty(gameInfo.getAppKey()) || StringUtils.isEmpty(gameInfo.getCpPaybackUrl())) {
|
|
|
+ logger.error("订单:{} 充值成功推送cp方回调失败,订单中GameId:{} 的游戏信息中,AppKey:{} 或 CpPaybackUrl:{} 为空", orderInfo.getId(), orderInfo.getGameId(), app_key, cpPaybackUrl);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
HashMap<String, String> map = new HashMap<>();
|
|
|
map.put("app_id", String.valueOf(orderInfo.getGameId()));
|
|
|
map.put("cp_order_id", orderInfo.getCpOrderId());
|
|
@@ -116,14 +139,17 @@ public class PerformOrderServiceImpl implements PerformOrderService {
|
|
|
logPayCp.setExt(orderInfo.getExt());
|
|
|
logPayCp.setNotifyCnt(i);
|
|
|
logPayCpService.save(logPayCp);
|
|
|
+ logger.info("订单:{} 充值成功推送cp方回调 ----------end---------", orderInfo.getId());
|
|
|
+ return true;
|
|
|
} catch (Exception e) {
|
|
|
- logger.error("订单:{} 通知cp方失败 e:{}", orderId, e);
|
|
|
+ logger.error("订单:{} 充值成功推送cp方回调 失败 e:{}", orderId, e);
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Boolean createOrderComplete(PlatformOrderDTO orderInfo) {
|
|
|
+ logger.info("订单:{} 创建订单宽表 ----------start---------", orderInfo.getId());
|
|
|
try {
|
|
|
OrderComplete orderComplete = orderCompleteMapper.info(orderInfo.getId());
|
|
|
orderComplete.setOrderDate(orderInfo.getCreateTime());
|
|
@@ -156,6 +182,7 @@ public class PerformOrderServiceImpl implements PerformOrderService {
|
|
|
|
|
|
@Override
|
|
|
public Boolean checkIsFirstRecharge(PlatformOrderDTO orderInfo) {
|
|
|
+ logger.info("订单:{} 检查更新用户是否为首充 ----------start---------", orderInfo.getId());
|
|
|
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)) {
|
|
@@ -174,6 +201,7 @@ public class PerformOrderServiceImpl implements PerformOrderService {
|
|
|
|
|
|
@Override
|
|
|
public Boolean userRechargeTotal(PlatformOrderDTO orderInfo) {
|
|
|
+ logger.info("订单:{} 更新用户充值统计 ----------start---------", orderInfo.getId());
|
|
|
try {
|
|
|
//订单取消情况 做减法
|
|
|
float amount = orderInfo.getAmount().floatValue();
|
|
@@ -227,4 +255,65 @@ public class PerformOrderServiceImpl implements PerformOrderService {
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Boolean payMerchantTotal(PlatformOrderDTO orderInfo) {
|
|
|
+ logger.info("订单:{} 更新商户号统计 ----------start---------", orderInfo.getId());
|
|
|
+ try {
|
|
|
+ if (StringUtils.isEmpty(orderInfo.getGamePaywayId())) {
|
|
|
+ logger.error("订单:{} 更新商户号统计时,该订单GamePaywayId为空", orderInfo.getId());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ GamePayWay gamePayWayInfo = gamePayWayService.getInfo(orderInfo.getGamePaywayId());
|
|
|
+ if (Objects.isNull(gamePayWayInfo)) {
|
|
|
+ logger.error("订单:{} 更新商户号统计时,获取GamePayway表id:{}信息为空", orderInfo.getId(), orderInfo.getGamePaywayId());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (gamePayWayInfo.getPayMerchantId() <= 0) {
|
|
|
+ logger.error("订单:{} 更新商户号统计时,获取GamePayway表id:{}信息中PayMerchantId为空", orderInfo.getId(), orderInfo.getGamePaywayId());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ PayMerchant payMerchantInfo = payMerchantService.getById(gamePayWayInfo.getPayMerchantId());
|
|
|
+ if (Objects.isNull(payMerchantInfo)) {
|
|
|
+ logger.error("订单:{} 更新商户号统计时,获取PayMerchant表id:{}信息为空", orderInfo.getId(), gamePayWayInfo.getPayMerchantId());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ BigDecimal amount = orderInfo.getAmount();
|
|
|
+ Date update_time = payMerchantInfo.getDayUpdateDate();
|
|
|
+ Date date = new Date();
|
|
|
+ String totalPayAmount, mouthPayAmount, weakerPayAmount, dayPayAmount;
|
|
|
+ totalPayAmount = " total_pay_amount = total_pay_amount + " + amount;
|
|
|
+ mouthPayAmount = " mouth_pay_amount = mouth_pay_amount + " + amount;
|
|
|
+ weakerPayAmount = " weaker_pay_amount = weaker_pay_amount + " + amount;
|
|
|
+ dayPayAmount = " day_pay_amount = day_pay_amount + " + amount;
|
|
|
+ if (update_time != null) {
|
|
|
+ if (!DateUtils.isThisMonth(payMerchantInfo.getMouthUpdateDate())) {
|
|
|
+ mouthPayAmount = " mouth_pay_amount = " + amount;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!DateUtils.isThisWeek(payMerchantInfo.getWeakerUpdateDate())) {
|
|
|
+ weakerPayAmount = " weaker_pay_amount = " + amount;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!DateUtils.isToday(payMerchantInfo.getDayUpdateDate())) {
|
|
|
+ dayPayAmount = " day_pay_amount = " + amount;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ payMerchantService.update(new UpdateWrapper<PayMerchant>().lambda()
|
|
|
+ .set(PayMerchant::getMouthUpdateDate, date)
|
|
|
+ .set(PayMerchant::getWeakerUpdateDate, date)
|
|
|
+ .set(PayMerchant::getDayUpdateDate, date)
|
|
|
+ .setSql(totalPayAmount)
|
|
|
+ .setSql(mouthPayAmount)
|
|
|
+ .setSql(weakerPayAmount)
|
|
|
+ .setSql(dayPayAmount)
|
|
|
+ .setEntity(payMerchantInfo)
|
|
|
+ );
|
|
|
+ logger.info("订单:{} 更新商户号统计 ----------end---------", orderInfo.getId());
|
|
|
+ return true;
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("订单:{} 更新商户号统计失败 e:{}", orderInfo.getId(), e);
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
}
|