From 759f8df85ddb840682f91bad31e874fa0b58c075 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 14 四月 2021 19:16:12 +0800
Subject: [PATCH] 订单系统修改

---
 src/main/java/com/yeshi/buwan/service/imp/order/OrderServiceImpl.java |  160 +++++++++++++++++++++++++++++++----------------------
 1 files changed, 93 insertions(+), 67 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/service/imp/order/OrderServiceImpl.java b/src/main/java/com/yeshi/buwan/service/imp/order/OrderServiceImpl.java
index 0a18deb..189f166 100644
--- a/src/main/java/com/yeshi/buwan/service/imp/order/OrderServiceImpl.java
+++ b/src/main/java/com/yeshi/buwan/service/imp/order/OrderServiceImpl.java
@@ -62,7 +62,7 @@
     @Transactional(rollbackFor = Exception.class)
     @Override
     public OrderRecord createOrder(OrderRecord record) throws OrderException {
-        if (record.getMoney() == null || record.getType() == null || record.getOrderType() == null || record.getUid() == null) {
+        if (record.getMoney() == null || (record.getType() == null && record.getVideoInfoId() == null) || record.getOrderType() == null || record.getUid() == null) {
             throw new OrderException(1, "鍙傛暟涓嶅畬鏁�");
         }
 
@@ -73,6 +73,25 @@
         if (record.getCreateTime() == null) {
             record.setCreateTime(new Date());
         }
+
+        if (record.getPayWay() == OrderRecord.PAY_WAY_WX) {
+            if (record.getGoldCorn() != null && record.getGoldCorn() > 0) {
+                if (record.getMoney().compareTo(new BigDecimal("0")) == 0) {
+                    record.setPayWay(OrderRecord.PAY_WAY_GOLDCORN);
+                } else {
+                    record.setPayWay(OrderRecord.PAY_WAY_WX_GOLDCORN);
+                }
+            }
+        } else if (record.getPayWay() == OrderRecord.PAY_WAY_ALIPAY) {
+            if (record.getGoldCorn() != null && record.getGoldCorn() > 0) {
+                if (record.getMoney().compareTo(new BigDecimal("0")) == 0) {
+                    record.setPayWay(OrderRecord.PAY_WAY_GOLDCORN);
+                } else {
+                    record.setPayWay(OrderRecord.PAY_WAY_ALIPAY_GOLDCORN);
+                }
+            }
+        }
+
 
         record.setMoneyPay(false);
         record.setGoldCornPay(false);
@@ -85,8 +104,7 @@
     @Transactional(rollbackFor = Exception.class)
 //    @GlobalTransactional(timeoutMills = 30000, name = "buwan-order", rollbackFor = Exception.class)
     @Override
-    public PayWayInfoDTO payOrder(OrderRecord record) throws OrderException, GoldCornException, PayException {
-        //TODO 褰辫璞嗘敮浠�
+    public PayWayInfoDTO payOrder(OrderRecord record) throws OrderException, GoldCornException, PayException, VIPException, PPTVException {
         String orderNo = VIPOrderUtil.getOutOrderNo(record.getOrderType(), record.getId());
         switch (record.getPayWay()) {
             case OrderRecord
@@ -97,12 +115,16 @@
                 } catch (Exception e) {
                     throw new GoldCornException(1, "褰辫璞嗘墸闄ゅ嚭閿�");
                 }
+                paySuccess(record.getId(), OrderRecord.PAY_WAY_GOLDCORN, null, new Date());
 
                 orderLogger.info("璁㈠崟褰辫璞嗘敮浠樻垚鍔燂細id-{}", record.getId());
             case OrderRecord
                     .PAY_WAY_ALIPAY: {
+                if (record.getMoney() != null && record.getMoney().compareTo(new BigDecimal(0)) == 0) {
+                    return new PayWayInfoDTO(0, VipUtil.getPaySuccessUrl(record.getId()));
+                }
                 //鐢熸垚鏀粯瀹濇敮浠樿鍗�
-                String form = VipUtil.getVipChargeAlipayForm(record.getId(), orderNo, record.getMoney());
+                String form = VipUtil.getVipChargeAlipayForm(record.getId(), record.getOrderType(), orderNo, record.getMoney());
                 //鏆傚瓨2鍒嗛挓
                 String id = StringUtil.Md5(UUID.randomUUID().toString() + "#" + System.currentTimeMillis());
                 redisManager.cacheCommonString(id, form, 120);
@@ -115,12 +137,17 @@
                     .PAY_WAY_WX_GOLDCORN:
                 try {
                     goldCornManager.consumeGoldCorn(record, record.getGoldCorn());
+
                 } catch (Exception e) {
                     throw new GoldCornException(1, "褰辫璞嗘墸闄ゅ嚭閿�");
                 }
+                paySuccess(record.getId(), OrderRecord.PAY_WAY_GOLDCORN, null, new Date());
                 orderLogger.info("璁㈠崟褰辫璞嗘敮浠樻垚鍔燂細id-{} 绫诲瀷-{}", record.getId(), record.getOrderType().name());
             case OrderRecord
                     .PAY_WAY_WX: {
+                if (record.getMoney() != null && record.getMoney().compareTo(new BigDecimal(0)) == 0) {
+                    return new PayWayInfoDTO(0, VipUtil.getPaySuccessUrl(record.getId()));
+                }
                 //鐢熸垚寰俊鏀粯璁㈠崟
                 try {
                     String title = "";
@@ -141,12 +168,13 @@
             case OrderRecord.PAY_WAY_GOLDCORN: {
                 try {
                     goldCornManager.consumeGoldCorn(record, record.getGoldCorn());
+                    orderLogger.info("璁㈠崟褰辫璞嗘敮浠樻垚鍔燂細id-{}", record.getId());
                 } catch (Exception e) {
                     throw new GoldCornException(1, "褰辫璞嗘墸闄ゅ嚭閿�");
                 }
-                orderLogger.info("璁㈠崟褰辫璞嗘敮浠樻垚鍔燂細id-{}", record.getId());
+                paySuccess(record.getId(), OrderRecord.PAY_WAY_GOLDCORN, null, new Date());
+                return new PayWayInfoDTO(0, VipUtil.getPaySuccessUrl(record.getId()));
             }
-            break;
         }
         throw new OrderException(1, "鏀粯鏂瑰紡涓嶅瓨鍦�");
     }
@@ -186,69 +214,67 @@
         //淇敼璁板綍
         Query query = session.createSQLQuery("select * from wk_vip_order_record r where r.id=? for update").addEntity(OrderRecord.class).setCacheable(false).setParameter(0, id);
         List<OrderRecord> list = query.list();
-
-        if (list != null && list.size() > 0) {
-            OrderRecord record = list.get(0);
-            if (record.getState() != OrderRecord.STATE_NOT_PAY)
-                throw new VIPException(1, "璁㈠崟鏈浜庡緟鏀粯鐘舵��");
-
-
-            if (record.getPayWay() != OrderRecord.PAY_WAY_GOLDCORN) {
-                record.setPayMoney(payMoney);
-                record.setMoneyPay(true);
-            } else {
-                record.setGoldCornPay(true);
-            }
-
-            record.setPayTime(payTime);
-            record.setUpdateTime(new Date());
-            record.setState(getPayState(record));
-
-            //宸茬粡鏀粯鎴愬姛
-            if (record.getState() == OrderRecord.STATE_PAY) {
-                session.createSQLQuery("insert into wk_vip_order_pay_success(id,create_time) value(?,now())").setParameter(0, id).executeUpdate();
-
-            }
-
-            if (record.getOrderType() == OrderType.vip) {
-                Date[] expireDate = addExpireTime(session, record.getUid(), payTime, record.getType());
-                record.setVipStartTime(expireDate[0]);
-                record.setVipEndTime(expireDate[1]);
-                if (expireDate == null) {
-                    throw new VIPException(2, "娣诲姞鐢ㄦ埛浼氬憳鏃堕棿鍑洪敊");
-                }
-                session.update(record);
-
-
-                if (record.getState() == OrderRecord.STATE_PAY) {
-                    orderLogger.info("璁㈠崟鍏ㄩ儴鏀粯鎴愬姛锛歩d-{}", id);
-                    //璐拱VIP
-                    pptvVipManager.buyVIP(record);
-                    orderLogger.info("璐拱VIP鎴愬姛锛歩d-{}", id);
-                } else {
-                    orderLogger.info("璁㈠崟閮ㄥ垎鏀粯鎴愬姛锛歩d-{}", id);
-                }
-
-            } else if (record.getOrderType() == OrderType.video) {
-                record.setVipStartTime(payTime);
-                //7澶╀箣鍐呮湁鏁�
-                record.setVipEndTime(new Date(payTime.getTime() + 1000 * 60 * 60L * 24 * 7));
-                session.update(record);
-                //鍗曠墖璐拱鎴愬姛锛�7澶╂湁鏁堟湡锛�
-                if (record.getState() == OrderRecord.STATE_PAY) {
-                    orderLogger.info("璁㈠崟鍏ㄩ儴鏀粯鎴愬姛锛歩d-{}", id);
-                    //璐拱鍗曠墖
-                    pptvVipManager.buyVideo(record);
-                    orderLogger.info("璐拱鍗曠墖鎴愬姛锛歩d-{}", id);
-                } else {
-                    orderLogger.info("璁㈠崟閮ㄥ垎鏀粯鎴愬姛锛歩d-{}", id);
-                }
-            }
-
-            return record;
-        } else {
+        if (list == null || list.size() == 0)
             throw new VIPException(10, "璁㈠崟涓嶅瓨鍦�");
+
+        OrderRecord record = list.get(0);
+        if (record.getState() != OrderRecord.STATE_NOT_PAY)
+            throw new VIPException(1, "璁㈠崟鏈浜庡緟鏀粯鐘舵��");
+
+
+        if (payWay != OrderRecord.PAY_WAY_GOLDCORN) {
+            record.setPayMoney(payMoney);
+            record.setMoneyPay(true);
+        } else {
+            record.setGoldCornPay(true);
         }
+
+        record.setPayTime(payTime);
+        record.setUpdateTime(new Date());
+        record.setState(getPayState(record));
+
+        //宸茬粡鏀粯鎴愬姛
+        if (record.getState() == OrderRecord.STATE_PAY) {
+            session.createSQLQuery("insert into wk_vip_order_pay_success(id,create_time) value(?,now())").setParameter(0, id).executeUpdate();
+        }
+
+        if (record.getOrderType() == OrderType.vip) {
+            Date[] expireDate = addExpireTime(session, record.getUid(), payTime, record.getType());
+            record.setVipStartTime(expireDate[0]);
+            record.setVipEndTime(expireDate[1]);
+            if (expireDate == null) {
+                throw new VIPException(2, "娣诲姞鐢ㄦ埛浼氬憳鏃堕棿鍑洪敊");
+            }
+            session.update(record);
+
+
+            if (record.getState() == OrderRecord.STATE_PAY) {
+                orderLogger.info("璁㈠崟鍏ㄩ儴鏀粯鎴愬姛锛歩d-{}", id);
+                //璐拱VIP
+                pptvVipManager.buyVIP(record);
+                orderLogger.info("璐拱VIP鎴愬姛锛歩d-{}", id);
+            } else {
+                orderLogger.info("璁㈠崟閮ㄥ垎鏀粯鎴愬姛锛歩d-{}", id);
+            }
+
+        } else if (record.getOrderType() == OrderType.video) {
+            record.setVipStartTime(payTime);
+            //7澶╀箣鍐呮湁鏁�
+            record.setVipEndTime(new Date(payTime.getTime() + 1000 * 60 * 60L * 24 * 7));
+            session.update(record);
+            //鍗曠墖璐拱鎴愬姛锛�7澶╂湁鏁堟湡锛�
+            if (record.getState() == OrderRecord.STATE_PAY) {
+                orderLogger.info("璁㈠崟鍏ㄩ儴鏀粯鎴愬姛锛歩d-{}", id);
+                //璐拱鍗曠墖
+                pptvVipManager.buyVideo(record);
+                orderLogger.info("璐拱鍗曠墖鎴愬姛锛歩d-{}", id);
+            } else {
+                orderLogger.info("璁㈠崟閮ㄥ垎鏀粯鎴愬姛锛歩d-{}", id);
+            }
+        }
+
+        return record;
+
     }
 
 

--
Gitblit v1.8.0