admin
2021-04-14 759f8df85ddb840682f91bad31e874fa0b58c075
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,14 +214,15 @@
        //修改记录
        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)
            throw new VIPException(10, "订单不存在");
        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) {
        if (payWay != OrderRecord.PAY_WAY_GOLDCORN) {
                record.setPayMoney(payMoney);
                record.setMoneyPay(true);
            } else {
@@ -207,7 +236,6 @@
            //已经支付成功
            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) {
@@ -246,9 +274,7 @@
            }
            return record;
        } else {
            throw new VIPException(10, "订单不存在");
        }
    }