From c0fa314702c6bb19b0c8975dfaee8e39d1896844 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期五, 26 七月 2024 22:15:18 +0800
Subject: [PATCH] 代理新功能完善

---
 src/main/java/com/taoke/autopay/controller/client/OrderController.java |  177 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 153 insertions(+), 24 deletions(-)

diff --git a/src/main/java/com/taoke/autopay/controller/client/OrderController.java b/src/main/java/com/taoke/autopay/controller/client/OrderController.java
index 2d430a6..18aa07e 100644
--- a/src/main/java/com/taoke/autopay/controller/client/OrderController.java
+++ b/src/main/java/com/taoke/autopay/controller/client/OrderController.java
@@ -11,19 +11,17 @@
 import com.taoke.autopay.entity.*;
 
 import com.taoke.autopay.exception.KeyOrderException;
+import com.taoke.autopay.exception.KeyVerifyException;
 import com.taoke.autopay.exception.WxOrderCountException;
 import com.taoke.autopay.factory.OrderFactory;
-import com.taoke.autopay.service.ClientInfoService;
-import com.taoke.autopay.service.KeyOrderService;
-import com.taoke.autopay.service.WxUserOrderCountService;
-import com.taoke.autopay.service.WxUserSettingService;
-import com.taoke.autopay.utils.JsonUtil;
-import com.taoke.autopay.utils.StringUtil;
-import com.taoke.autopay.utils.TimeUtil;
+import com.taoke.autopay.manager.OrderPayFailProcessor;
+import com.taoke.autopay.service.*;
+import com.taoke.autopay.utils.*;
 import com.taoke.autopay.utils.order.DYOrderApi;
 import com.taoke.autopay.vo.AcceptData;
 import com.taoke.autopay.vo.KeyOrderVO;
 import com.taoke.autopay.vo.OrderFilter;
+import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -33,7 +31,11 @@
 
 import javax.annotation.Resource;
 import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * @author hxh
@@ -77,6 +79,12 @@
 
     @Resource
     private WxUserSettingService wxUserSettingService;
+
+    @Resource
+    private SystemConfigService systemConfigService;
+
+    @Resource
+    private OrderPayFailProcessor orderPayFailProcessor;
 
 
     @ResponseBody
@@ -203,6 +211,8 @@
                 orderUpdate.setOrderState(dto.getOrder_status());
                 orderUpdate.setOrderType(1);
                 orderUpdate.setOrderNo(orderNo);
+                orderUpdate.setOrderChannel(dto.getOrderChannel());
+                orderUpdate.setPayType(Constant.PAY_TYPE_WITH_ORDER_NO);
                 if (order.getState() == KeyOrder.STATE_NOT_PROCESS) {
                     if (dto.getOrder_status() == DYOrderDto.ORDER_STATUS_CANCELED) {
                         orderUpdate.setState(KeyOrder.STATE_PAY);
@@ -223,7 +233,7 @@
             if (order.getUid() != null) {
                 WxUserOrderCount countInfo = wxUserOrderCountService.get(order.getUid(), OrderCountTypeEnum.DY_ORDER_PAY, TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd"));
                 if (countInfo != null) {
-                    WxUserSettings settings = wxUserSettingService.selectByUid(order.getUid());
+                    WxUserSettings settings = wxUserSettingService.getUserSettings(order.getUid());
                     if (settings.getDyOrderCountPerDay() <= countInfo.getOrderCount()) {
                         throw new Exception("浠婃棩宸茶揪鏀粯娆℃暟涓婇檺锛�" + settings.getDyOrderCountPerDay());
                     }
@@ -236,6 +246,8 @@
             orderUpdate.setOrderType(1);
             orderUpdate.setOrderState(dto.getOrder_status());
             orderUpdate.setOrderNo(orderNo);
+            orderUpdate.setOrderChannel(dto.getOrderChannel());
+            orderUpdate.setPayType(Constant.PAY_TYPE_WITH_ORDER_NO);
             orderUpdate.setExcutePayTime(new Date());
             keyOrderService.update(orderUpdate);
             order = keyOrderService.selectById(id);
@@ -260,9 +272,124 @@
     }
 
     @ResponseBody
+    @RequestMapping("setOrderNoV2")
+    public String setOrderNoV2(AcceptData acceptData, String id, String orderNoDesc, String orderStatus, String money) {
+        loggerPay.info("setOrderNo: {}-{}-{}-{}", id, orderNoDesc, orderStatus, money);
+        if (StringUtil.isNullOrEmpty(id)) {
+            return JsonUtil.loadFalseResult("璇蜂笂浼爄d");
+        }
+        if (StringUtil.isNullOrEmpty(money)) {
+            return JsonUtil.loadFalseResult("璇蜂笂浼爉oney");
+        }
+
+        KeyOrder order = keyOrderService.selectById(id);
+        if (order == null) {
+            return JsonUtil.loadFalseResult("鍙d护涓嶅瓨鍦�");
+        }
+
+        money = money.replace("楼","");
+
+        int orderType=Constant.ORDER_TYPE_UNKNOWN;
+
+        if(orderNoDesc.contains("鎶栭煶")){
+            orderType = Constant.ORDER_TYPE_DY;
+        }else  if(orderNoDesc.contains("蹇墜")){
+            orderType = Constant.ORDER_TYPE_KS;
+        }
+
+        String orderNo= "";
+        try {
+            if(orderType==Constant.ORDER_TYPE_UNKNOWN){
+                throw new KeyOrderException("鏈畾涔夌殑璁㈠崟绫诲瀷");
+            }
+
+            if (!StringUtil.isNullOrEmpty(orderStatus)) {
+                throw new KeyOrderException(orderStatus);
+            }
+
+            DYOrderDto dyOrderDto =null;
+            try {
+                dyOrderDto = keyOrderService.verifyKey(orderNoDesc, orderStatus, money);
+            }catch(KeyVerifyException ve){
+                throw new KeyOrderException("鍙d护楠岃瘉澶辫触锛�" + ve.getMessage());
+            }
+//            if(dyOrderDto!=null&&order.getOrderMoney()!=null){
+//                // 鍒ゆ柇璁㈠崟鏀粯閲戦涓庣敤鎴锋彁浜ょ殑閲戦鏄惁鍖归厤
+//                if(dyOrderDto.getPay_amount()!=order.getOrderMoney().multiply(new BigDecimal(100)).setScale(0, RoundingMode.FLOOR).intValue()){
+//                    throw new KeyOrderException(String.format("璁㈠崟鎺ュ彛閲戦涓嶅尮閰嶏細%s-%s",dyOrderDto.getPay_amount(),MoneyUtil.getMoneyStr(order.getOrderMoney())));
+//                }
+//            }
+            if(dyOrderDto!=null){
+                orderNo = dyOrderDto.getOrder_id();
+            }
+
+
+            if (order.getUid() != null) {
+                OrderCountTypeEnum orderCountType=null;
+                switch (orderType){
+                    case Constant.ORDER_TYPE_DY:
+                        orderCountType= OrderCountTypeEnum.DY_ORDER_PAY;
+                        break;
+                    case Constant.ORDER_TYPE_KS:
+                        orderCountType= OrderCountTypeEnum.KS_ORDER_PAY;
+                        break;
+                }
+
+                WxUserOrderCount countInfo = wxUserOrderCountService.get(order.getUid(), orderCountType, TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd"));
+                if (countInfo != null) {
+                    WxUserSettings settings = wxUserSettingService.getUserSettings(order.getUid());
+                    int maxOrderCount = settings.getDyOrderCountPerDay();
+                    if(orderCountType == OrderCountTypeEnum.KS_ORDER_PAY){
+                        maxOrderCount = settings.getKsOrderCountPerDay();
+                    }
+                    if (maxOrderCount <= countInfo.getOrderCount()) {
+                        throw new Exception("鑰侀搧浠婃棩宸茶揪鏀粯娆℃暟涓婇檺锛�" + settings.getDyOrderCountPerDay());
+                    }
+                }
+            }
+
+            // 璁剧疆杩涘叆
+            KeyOrder orderUpdate = new KeyOrder();
+            orderUpdate.setId(id);
+            orderUpdate.setOrderType(orderType);
+            orderUpdate.setOrderNo(orderNo);
+            orderUpdate.setOrderMoney(new BigDecimal(money));
+            if(dyOrderDto!=null){
+                orderUpdate.setOrderState(dyOrderDto.getOrder_status());
+                orderUpdate.setOrderChannel(dyOrderDto.getOrderChannel());
+                orderUpdate.setPayType(Constant.PAY_TYPE_WITH_ORDER_NO);
+            }else{
+                orderUpdate.setPayType(Constant.PAY_TYPE_WITH_MONEY);
+            }
+            orderUpdate.setExcutePayTime(new Date());
+            keyOrderService.update(orderUpdate);
+            order = keyOrderService.selectById(id);
+            return JsonUtil.loadTrueResult(gson.toJson(OrderFactory.create(order)));
+        } catch (KeyOrderException e) {
+            KeyOrder orderUpdate = new KeyOrder();
+            orderUpdate.setId(id);
+            orderUpdate.setOrderType(orderType);
+            orderUpdate.setOrderNo(orderNo);
+            orderUpdate.setOrderMoney(new BigDecimal(money));
+            orderUpdate.setOrderState(0);
+            orderUpdate.setState(KeyOrder.STATE_REJECT_PAY);
+            if (order.getExcutePayTime() == null) {
+                orderUpdate.setExcutePayTime(new Date());
+            }
+            orderUpdate.setStateDesc(e.getMessage());
+            keyOrderService.update(orderUpdate);
+            return JsonUtil.loadFalseResult(e.getMessage());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return JsonUtil.loadFalseResult(e.getMessage());
+        }
+    }
+
+
+    @ResponseBody
     @RequestMapping("setPayResult")
     public String setPayResult(AcceptData acceptData, String id, boolean paySuccess, String msg) {
-        loggerPay.info("setPayResult: {}-{}", id, paySuccess);
+        loggerPay.info("setPayResult: {}-{}-{}", id, paySuccess, msg);
         if (StringUtil.isNullOrEmpty(id)) {
             return JsonUtil.loadFalseResult("璇蜂笂浼爄d");
         }
@@ -270,29 +397,31 @@
         if (order == null) {
             return JsonUtil.loadFalseResult("鍙d护涓嶅瓨鍦�");
         }
-        if (StringUtil.isNullOrEmpty(order.getOrderNo())) {
-            return JsonUtil.loadFalseResult("娌℃湁鍖归厤鍒拌鍗曞彿");
-        }
+//        if (StringUtil.isNullOrEmpty(order.getOrderNo())) {
+//            return JsonUtil.loadFalseResult("娌℃湁鍖归厤鍒拌鍗曞彿");
+//        }
 
         if (order.getState() == KeyOrder.STATE_NOT_PROCESS) {
             if (!paySuccess) {
                 // 鏀粯澶辫触
-                KeyOrder orderUpdate = new KeyOrder();
-                orderUpdate.setId(id);
-                orderUpdate.setState(KeyOrder.STATE_NOT_PAY);
-                orderUpdate.setStateDesc("鏀粯澶辫触");
-                keyOrderService.update(orderUpdate);
-            } else {
-                KeyOrder orderUpdate = new KeyOrder();
-                orderUpdate.setId(id);
-                orderUpdate.setState(KeyOrder.STATE_PAY);
-                if (order.getPayTime() == null) {
-                    orderUpdate.setPayTime(new Date());
+                if(msg!=null&&msg.contains("瓒呮椂"))
+                {
+                    loggerPay.info(String.format("鍥犱负瓒呮椂鏀粯澶辫触涓嶅鐞嗭細%s-%s", order.getId(), msg));
+                    orderPayFailProcessor.processPayFail(order.getId(), msg);
+                }else {
+                    KeyOrder orderUpdate = new KeyOrder();
+                    orderUpdate.setId(id);
+                    orderUpdate.setState(KeyOrder.STATE_NOT_PAY);
+                    orderUpdate.setStateDesc("鏀粯澶辫触");
+                    keyOrderService.update(orderUpdate);
                 }
-                orderUpdate.setStateDesc("鏀粯鎴愬姛");
+                loggerPay.info("澶勭悊鏀粯澶辫触瀹屾垚");
+            } else {
                 try {
                     keyOrderService.paySuccess(id, "鏀粯鎴愬姛", TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd"));
+                    loggerPay.info("澶勭悊鏀粯鎴愬姛瀹屾垚");
                 } catch (WxOrderCountException e) {
+                    loggerPay.error(e.getMessage());
                     e.printStackTrace();
                     return JsonUtil.loadFalseResult(e.getMessage());
                 }

--
Gitblit v1.8.0