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