| | |
| | | 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; |
| | |
| | | |
| | | @Resource |
| | | private UserSettingService userSettingService; |
| | | |
| | | @Resource |
| | | private PayCountVerifyManager payCountVerifyManager; |
| | | |
| | | |
| | | @ResponseBody |
| | |
| | | |
| | | // 验证渠道支付次数是否达到上限 |
| | | 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); |
| | | } |
| | | |
| | | // 设置进入 |
| | |
| | | } |
| | | 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) { |
| | | // 没有设置校验渠道 |
| | |
| | | // 目前只判断超享佣 |
| | | 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()); |
| | | } |
| | | } |