admin
2025-02-12 e928bc6c4911e87ad89fb9cb155de4a7bc35435e
src/main/java/com/taoke/autopay/controller/client/OrderController.java
@@ -15,6 +15,7 @@
import com.taoke.autopay.exception.WxOrderCountException;
import com.taoke.autopay.factory.OrderFactory;
import com.taoke.autopay.manager.OrderPayFailProcessor;
import com.taoke.autopay.manager.PayCountVerifyManager;
import com.taoke.autopay.service.*;
import com.taoke.autopay.utils.*;
import com.taoke.autopay.utils.order.DYOrderApi;
@@ -94,6 +95,9 @@
    @Resource
    private UserSettingService userSettingService;
    @Resource
    private PayCountVerifyManager payCountVerifyManager;
    @ResponseBody
@@ -236,18 +240,7 @@
            // 验证渠道支付次数是否达到上限
            if (order.getUid() != null) {
                OrderCountTypeEnum orderCountType=null;
                if(orderType==Constant.ORDER_TYPE_DY){
                    orderCountType=OrderCountTypeEnum.DY_ORDER_PAY;
                }else if(orderType==Constant.ORDER_TYPE_KS){
                    orderCountType=OrderCountTypeEnum.KS_ORDER_PAY;
                }
                long todayCount = wxUserOrderCountService.sum(order.getUid(), orderCountType, orderChannel, TimeUtil.getGernalTime(System.currentTimeMillis(), Constant.DB_DAY_FORMAT));
                long totalCount = wxUserOrderCountService.sum(order.getUid(), orderCountType, null, null);
                int maxPayCount = userSettingService.getLimitCountByTotalCount(orderType, totalCount, orderChannel);
                if (todayCount >= maxPayCount) {
                    throw new Exception(String.format("老铁今日已达支付次数(%s)上限:%s", orderChannel.getName(), maxPayCount));
                }
                payCountVerifyManager.verifyPayCount(order.getUid(), orderType, orderChannel);
            }
            // 设置进入
@@ -311,14 +304,15 @@
        }
        OrderChannelEnum orderChannel = OrderChannelUtil.getChannelByKey(keyOrder.getOrderChannel());
        if (orderChannel != OrderChannelEnum.unknown) {
            // 不是卡金额的订单可直接支付
            // 确定渠道的订单可直接支付
            return JsonUtil.loadTrueResult("");
        }
        // 获取卡金额的设置信息
        PayMoneySetting payMoneySetting = payMoneySettingService.getSettingByMoney(keyOrder.getOrderMoney());
        if (payMoneySetting == null) {
            return JsonUtil.loadFalseResult("该金额不属于卡金额范围");
            keyOrderService.rejectPay(keyOrder.getId(),"付款金额不属于卡金额范围");
            return JsonUtil.loadFalseResult("付款金额不属于卡金额范围");
        }
        if (payMoneySetting.getVerifyMerchantChannel() == null || payMoneySetting.getVerifyMerchantChannel() == OrderChannelEnum.unknown) {
            // 没有设置校验渠道
@@ -329,12 +323,27 @@
            // 目前只判断超享佣
            boolean isCanPay = OrderChannelApiUtil.isMerchantCanPay(payMoneySetting.getVerifyMerchantChannel(), merchant, keyOrder.getOrderMoney());
            if (isCanPay) {
                // 通过商家校验
                try {
                    payCountVerifyManager.verifyPayCount(keyOrder.getUid(), keyOrder.getOrderType(), payMoneySetting.getVerifyMerchantChannel());
                }catch (KeyOrderException ee){
                    // 拒绝支付
                    keyOrderService.rejectPay(keyOrder.getId(), ee.getMessage());
                    return JsonUtil.loadFalseResult(ee.getMessage());
                }finally {
                    // 更新渠道
                    KeyOrder update = new KeyOrder();
                    update.setId(keyOrder.getId());
                    update.setOrderChannel(payMoneySetting.getVerifyMerchantChannel().getKey());
                    keyOrderService.update(update);
                }
                return JsonUtil.loadTrueResult("");
            } else {
                // 未通过商家校验
                keyOrderService.rejectPay(keyOrder.getId(),"商家校验未通过");
                return JsonUtil.loadFalseResult("商家校验未通过");
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            return JsonUtil.loadFalseResult(e.getMessage());
        }
    }