From 3ec572e2cb7adf7d33d2018b24c003d9ef18906a Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期二, 12 十一月 2024 13:32:51 +0800
Subject: [PATCH] 代码提交

---
 xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/service/impl/OrderServiceImpl.java |  581 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 578 insertions(+), 3 deletions(-)

diff --git a/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/service/impl/OrderServiceImpl.java b/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/service/impl/OrderServiceImpl.java
index 2877c44..43da7b5 100644
--- a/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/service/impl/OrderServiceImpl.java
+++ b/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/service/impl/OrderServiceImpl.java
@@ -1,10 +1,45 @@
 package com.xinquan.order.service.impl;
 
-import com.xinquan.order.domain.Order;
-import com.xinquan.order.mapper.OrderMapper;
-import com.xinquan.order.service.OrderService;
+import com.alibaba.fastjson2.JSONObject;
+import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.C;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xinquan.common.core.constant.Constants;
+import com.xinquan.common.core.constant.SecurityConstants;
+import com.xinquan.common.core.domain.R;
+import com.xinquan.common.core.enums.ChargeTypeEnum;
+import com.xinquan.common.core.enums.DisabledEnum;
+import com.xinquan.common.core.enums.PaymentStatusEnum;
+import com.xinquan.common.core.enums.PaymentTypeEnum;
+import com.xinquan.common.core.exception.ServiceException;
+import com.xinquan.common.core.utils.ip.IpUtils;
+import com.xinquan.common.security.service.TokenService;
+import com.xinquan.common.security.utils.SecurityUtils;
+import com.xinquan.course.api.domain.Course;
+import com.xinquan.course.api.feign.RemoteCourseService;
+import com.xinquan.meditation.api.domain.Meditation;
+import com.xinquan.meditation.api.feign.RemoteMeditationService;
+import com.xinquan.order.api.domain.Order;
+import com.xinquan.order.domain.OrderPaymentRecord;
+import com.xinquan.order.domain.vo.ClientPlaceOrderVO;
+import com.xinquan.order.mapper.OrderMapper;
+import com.xinquan.order.service.OrderPaymentRecordService;
+import com.xinquan.order.service.OrderService;
+import com.xinquan.order.utils.JuHeFuUtil;
+import com.xinquan.order.utils.OrderUtil;
+import com.xinquan.system.api.domain.AppUser;
+import com.xinquan.system.api.model.LoginUser;
+import com.xinquan.user.api.domain.dto.AppUserDTO;
+import com.xinquan.user.api.feign.RemoteAppUserService;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.List;
+import lombok.RequiredArgsConstructor;
+import org.jetbrains.annotations.NotNull;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
 
 /**
  * <p>
@@ -15,6 +50,546 @@
  * @since 2024-08-21
  */
 @Service
+@RequiredArgsConstructor
 public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
 
+    @Resource
+    private  RemoteMeditationService remoteMeditationService;
+    @Resource
+    private  RemoteCourseService remoteCourseService;
+    @Resource
+    private  RemoteAppUserService remoteAppUserService;
+    @Resource
+    private  OrderPaymentRecordService orderPaymentRecordService;
+    @Autowired
+    private TokenService tokenService;
+    /**
+     * 创建待支付订单
+     *
+     * @param targetId    目标id
+     * @param orderFrom   订单来源 1=冥想音频 2=课程
+     * @param receiverId  被赠送课程APP用户id
+     * @param balanceFlag 是否使用余额抵扣 1=是 2=否
+     * @param payType     支付方式 1=微信 2=支付宝
+     * @return 下单返回数据视图对象
+     * @see com.xinquan.order.domain.vo.ClientPlaceOrderVO
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public ClientPlaceOrderVO placeOrder(Long targetId, Integer orderFrom, Long receiverId, Long orderId,
+            Integer balanceFlag, Integer payType,BigDecimal amount,Integer vipType) throws Exception {
+        // 获取当前登录用户id
+        LoginUser loginUser = tokenService.getLoginUser();
+        if (loginUser==null){
+            return new ClientPlaceOrderVO();
+        }
+        Long userId = loginUser.getUserid();
+        if (amount!=null){
+            amount = amount.setScale(2, RoundingMode.HALF_DOWN);
+        }
+        // 获取用户信息
+        AppUser appUser = getAppUserById(userId);
+        ClientPlaceOrderVO clientPlaceOrderVO = new ClientPlaceOrderVO();
+        Order order = new Order();
+        // 购买冥想音频
+        if (orderFrom == 1) {
+            Meditation meditation = remoteMeditationService.getMeditationById(targetId,
+                    SecurityConstants.INNER).getData();
+            String meditationTitle = meditation.getMeditationTitle();
+            String detailDescription = meditation.getDetailDescription();
+            String wxOpenId = appUser.getWxOpenId();
+            // 创建订单
+            String orderNo = OrderUtil.getOrderNoForPrefix("MX");
+            if (orderId==null){
+                order.setPayType(payType);
+                order.setOrderFrom(orderFrom);
+                order.setBizOrderNo(orderNo);
+                order.setBusinessId(meditation.getId());
+                order.setAppUserId(userId);
+                order.setRealPayAmount(meditation.getGeneralPrice());
+                order.setPayType(payType);
+                order.setBuyContent("购买疗愈【"+meditationTitle+"】");
+                order.setTotalAmount(meditation.getGeneralPrice());
+                order.setGiveUserId(receiverId);
+                this.save(order);
+            }else{
+                 order = this.getById(orderId);
+                order.setBuyContent("购买疗愈【"+meditationTitle+"】");
+            }
+
+            Long orderId9 = order.getId();
+            clientPlaceOrderVO.setOrderNo(orderNo);
+            clientPlaceOrderVO.setId(orderId9);
+            // 如果冥想音频价格设定为单独收费,且需要使用余额抵扣
+            if (balanceFlag.equals(1) && meditation.getChargeType().equals(ChargeTypeEnum.SEPARATE_CHARGE.getCode())) {
+                BigDecimal needPayAmount = handleBalancePayment(appUser,
+                        meditation.getGeneralPrice(),
+                        orderId9);
+                if (needPayAmount.compareTo(BigDecimal.ZERO) <= 0) {
+                    clientPlaceOrderVO.setZeroFlag(DisabledEnum.YES.getCode());
+                    // 抵扣后金额为0 为余额支付
+                    order.setPayType(4);
+                    order.setRealPayAmount(meditation.getGeneralPrice());
+                    order.setBuyContent("购买疗愈【"+meditationTitle+"】");
+                    this.updateById(order);
+                    return clientPlaceOrderVO;
+                }else{
+                    // 余额抵扣不完
+                    OrderPaymentRecord one = orderPaymentRecordService.lambdaQuery().eq(OrderPaymentRecord::getPaymentType, 4)
+                            .eq(OrderPaymentRecord::getOrderId, orderId9).one();
+                    if (one!=null){
+                        one.setPayAmount(meditation.getGeneralPrice().subtract(needPayAmount));
+                        orderPaymentRecordService.updateById(one);
+                    }
+                }
+                if (payType==1){
+                    // 微信+余额
+                    order.setPayType(5);
+                }else if (payType == 2){
+                    // 支付宝+余额
+                    order.setPayType(6);
+                }
+                order.setBuyContent("购买疗愈【"+meditationTitle+"】");
+                this.updateById(order);
+                // 创建支付订单
+                createPayment(payType, orderNo, needPayAmount, meditationTitle, detailDescription,
+                        wxOpenId, orderId9, clientPlaceOrderVO);
+            } else {
+                // 创建支付订单
+                createPayment(payType, orderNo, meditation.getGeneralPrice(), meditationTitle,
+                        detailDescription, wxOpenId, orderId9, clientPlaceOrderVO);
+            }
+        }
+        else if (orderFrom == 2){
+            // 购买课程
+            Course course = remoteCourseService.getCourseById(targetId).getData();
+            String courseTitle = course.getCourseTitle();
+            String wxOpenId = appUser.getWxOpenId();
+            String description = course.getDescription();
+
+            // 创建订单
+            String orderNo = OrderUtil.getOrderNoForPrefix("KC");
+            if (orderId==null){
+                order.setOrderFrom(orderFrom);
+                order.setBizOrderNo(orderNo);
+                order.setGiveUserId(receiverId);
+                order.setBusinessId(course.getId());
+                order.setAppUserId(userId);
+                order.setBuyContent("购买课程【"+courseTitle+"】");
+                order.setRealPayAmount(course.getGeneralPrice());
+                order.setTotalAmount(course.getGeneralPrice());
+                this.save(order);
+            }else{
+                order = this.getById(orderId);
+                order.setBuyContent("购买课程【"+courseTitle+"】");
+
+            }
+            Long orderId8 = order.getId();
+            clientPlaceOrderVO.setOrderNo(orderNo);
+            clientPlaceOrderVO.setId(orderId8);
+
+            if (balanceFlag.equals(1) && course.getChargeType()
+                    .equals(ChargeTypeEnum.SEPARATE_CHARGE.getCode())) {
+                BigDecimal needPayAmount = handleBalancePayment(appUser, course.getGeneralPrice(),
+                        orderId8);
+
+                if (needPayAmount.compareTo(BigDecimal.ZERO) <= 0) {
+                    clientPlaceOrderVO.setZeroFlag(DisabledEnum.YES.getCode());
+                    // 抵扣后金额为0 为余额支付
+                    order.setPayType(4);
+                    order.setRealPayAmount(course.getGeneralPrice());
+                    order.setBuyContent("购买课程【"+courseTitle+"】");
+
+                    this.updateById(order);
+                    return clientPlaceOrderVO;
+                }else{
+                    // 余额抵扣不完
+                    OrderPaymentRecord one = orderPaymentRecordService.lambdaQuery().eq(OrderPaymentRecord::getPaymentType, 4)
+                            .eq(OrderPaymentRecord::getOrderId, orderId8).one();
+                    if (one!=null){
+                        one.setPayAmount(course.getGeneralPrice().subtract(needPayAmount));
+                        orderPaymentRecordService.updateById(one);
+                    }
+                }
+                if (payType==1){
+                    // 微信+余额
+                    order.setPayType(5);
+                }else if (payType == 2){
+                    // 支付宝+余额
+                    order.setPayType(6);
+                }
+                order.setBuyContent("购买课程【"+courseTitle+"】");
+
+                this.updateById(order);
+                // 创建支付订单
+                createPayment(payType, orderNo, needPayAmount, courseTitle, description,
+                        wxOpenId, orderId8, clientPlaceOrderVO);
+            } else {
+                // 创建支付订单
+                createPayment(payType, orderNo, course.getGeneralPrice(), courseTitle,
+                        description, wxOpenId, orderId8, clientPlaceOrderVO);
+            }
+        }
+        else if (orderFrom == 3){
+            String wxOpenId = appUser.getWxOpenId();
+            // 创建订单
+            String orderNo = OrderUtil.getOrderNoForPrefix("HY");
+            order.setOrderFrom(orderFrom);
+            order.setBizOrderNo(orderNo);
+            order.setAppUserId(userId);
+            order.setTotalAmount(amount);
+            order.setPayType(payType);
+            order.setRealPayAmount(amount);
+            String vipType1 ="";
+            switch (vipType){
+                case 1:
+                    vipType1="月会员";
+                    break;
+                case 2:
+                    vipType1="季会员";
+                    break;
+                case 3:
+                    vipType1="年会员";
+                    break;
+            }
+            order.setBuyContent(vipType1);
+            this.save(order);
+            Long orderId7 = order.getId();
+            clientPlaceOrderVO.setOrderNo(orderNo);
+            clientPlaceOrderVO.setId(orderId7);
+            // 创建支付订单
+            createPayment(payType, orderNo, amount, "购买会员",
+                    vipType1, wxOpenId, orderId7, clientPlaceOrderVO);
+
+        }else {
+            // 充值
+            String wxOpenId = appUser.getWxOpenId();
+            // 创建订单
+            String orderNo = OrderUtil.getOrderNoForPrefix("CZ");
+            order.setOrderFrom(orderFrom);
+            order.setBizOrderNo(orderNo);
+            order.setAppUserId(userId);
+            order.setTotalAmount(amount);
+            order.setRealPayAmount(amount);
+            order.setPayType(payType);
+            order.setBuyContent("充值");
+            this.save(order);
+            Long orderId6 = order.getId();
+            clientPlaceOrderVO.setOrderNo(orderNo);
+            clientPlaceOrderVO.setId(orderId6);
+            // 创建支付订单
+            createPayment(payType, orderNo, amount, "充值余额",
+                    "充值余额", wxOpenId, orderId6, clientPlaceOrderVO);
+        }
+        return clientPlaceOrderVO;
+    }
+
+    /**
+     * 处理余额抵扣
+     *
+     * @param appUser      app用户
+     * @param generalPrice 通用价格
+     * @param orderId      订单号
+     * @return 需要支付的金额
+     */
+    @NotNull
+    private BigDecimal handleBalancePayment(AppUser appUser, BigDecimal generalPrice,
+            Long orderId) {
+        if (appUser.getBalance().compareTo(BigDecimal.ZERO) < 0) {
+            throw new ServiceException("用户可用余额不足,请重新选择支付方案");
+        }
+        // 更新用户余额
+        remoteAppUserService.updateAppUser(
+                AppUserDTO.builder().balance(
+                                appUser.getBalance().subtract(generalPrice))
+                        .build(), SecurityConstants.INNER);
+
+        OrderPaymentRecord balancePaymentRecord = new OrderPaymentRecord();
+        balancePaymentRecord.setOrderId(orderId);
+        balancePaymentRecord.setPaymentType(PaymentTypeEnum.BALANCE_PAY.getCode());
+        balancePaymentRecord.setPaymentStatus(PaymentStatusEnum.COMPLETED.getCode());
+        orderPaymentRecordService.save(balancePaymentRecord);
+
+        // 计算除去余额还需支付的金额
+        return generalPrice
+                .subtract(appUser.getBalance());
+    }
+
+    /**
+     * 获取登录用户信息
+     *
+     * @param userId APP用户id
+     * @return AppUser
+     */
+    private AppUser getAppUserById(Long userId) {
+        return remoteAppUserService.getAppUserById(userId+"").getData();
+    }
+
+    /**
+     * 创建支付订单
+     *
+     * @param payType            支付方式 1=微信 2=支付宝
+     * @param orderNo            订单编号
+     * @param needPayAmount      支付金额
+     * @param goodsTitle         商品标题
+     * @param goodsDesc          商品描述
+     * @param wxOpenId           微信openId
+     * @param orderId            订单id
+     * @param clientPlaceOrderVO 下单返回数据视图对象
+     * @throws Exception
+     */
+    private void createPayment(Integer payType, String orderNo, BigDecimal needPayAmount,
+            String goodsTitle, String goodsDesc, String wxOpenId, Long orderId,
+            ClientPlaceOrderVO clientPlaceOrderVO) throws Exception {
+        if (payType == 1){
+            // 微信托管支付
+            // 截取前42个字符 商品描述信息,微信小程序和微信公众号该字段,最大长度 42 个字符
+            // 调用第三方支付获取支付信息
+            JSONObject payInfo = JuHeFuUtil.createPayment1(orderNo, payType,
+                    needPayAmount.toString(), goodsTitle, goodsDesc,
+                    IpUtils.getIpAddr(), wxOpenId,
+                    //                "https://v7ro848ar5jx.ngrok.xiaomiqiu123.top/order/client/order/order/base/callback")
+                    "https://xq.xqzhihui.com/api/order/client/order/order/base/callback");
+            // 第三方支付记录
+            OrderPaymentRecord paymentRecord = new OrderPaymentRecord();
+            paymentRecord.setOrderId(orderId);
+            Order byId = this.getById(orderId);
+            this.updateById(byId);
+            clientPlaceOrderVO.setPayAmt(payInfo.getString("pay_amt"));
+            clientPlaceOrderVO.setPath(payInfo.getJSONObject("expend").getString("path"));
+            clientPlaceOrderVO.setPayInfo(payInfo.getJSONObject("expend").getString("pay_info"));
+            clientPlaceOrderVO.setOrgId(payInfo.getJSONObject("expend").getString("org_id"));
+            clientPlaceOrderVO.setAppId(payInfo.getJSONObject("expend").getString("app_id"));
+            paymentRecord.setPaymentType(PaymentTypeEnum.WECHAT_PAY.getCode());
+            paymentRecord.setPayOrderNo(payInfo.getString("id"));
+            paymentRecord.setPaymentStatus(PaymentStatusEnum.TO_BE_PAID.getCode());
+            paymentRecord.setPayAmount(needPayAmount);
+            orderPaymentRecordService.save(paymentRecord);
+            // 设置订单是否需要支付标识
+            clientPlaceOrderVO.setZeroFlag(DisabledEnum.NO.getCode());
+        }else{
+            // 调用第三方支付获取支付信息
+            JSONObject payInfo = JuHeFuUtil.createPayment(orderNo, payType,
+                    needPayAmount.toString(), goodsTitle, goodsDesc,
+                    IpUtils.getIpAddr(), wxOpenId,
+                    //                "https://v7ro848ar5jx.ngrok.xiaomiqiu123.top/order/client/order/order/base/callback")
+                    "https://xq.xqzhihui.com/api/order/client/order/order/base/callback");
+            // 第三方支付记录
+            OrderPaymentRecord paymentRecord = new OrderPaymentRecord();
+            paymentRecord.setOrderId(orderId);
+            paymentRecord.setPayAmount(needPayAmount);
+            Order byId = this.getById(orderId);
+            byId.setPayOrderNo(payInfo.getString("id"));
+            this.updateById(byId);
+            clientPlaceOrderVO.setQrcodeUrl(payInfo.getString("qrcode_url"));
+            paymentRecord.setPaymentType(PaymentTypeEnum.ALI_PAY.getCode());
+            paymentRecord.setPaymentStatus(PaymentStatusEnum.TO_BE_PAID.getCode());
+            orderPaymentRecordService.save(paymentRecord);
+            // 设置订单是否需要支付标识
+            clientPlaceOrderVO.setZeroFlag(DisabledEnum.NO.getCode());
+        }
+
+    }
+
+    /**
+     * 根据类型获取已完成的订单列表
+     *
+     * @param userId    用户id
+     * @param orderFrom 订单来源
+     * @return
+     */
+    @Override
+    public List<Order> getOrderListByType(Long userId, Integer orderFrom) {
+        return this.lambdaQuery().eq(Order::getAppUserId, userId).eq(Order::getOrderFrom, orderFrom)
+                .eq(Order::getPaymentStatus, PaymentStatusEnum.COMPLETED.getCode()).list();
+    }
+
+    @Override
+    public String placeOrderApple(Long targetId, Integer orderFrom,
+                                  Long receiverId, Integer balanceFlag,
+                                  BigDecimal amount, Integer vipType, String transactionIdentifier) {
+        // 获取当前登录用户id
+        Long userId = tokenService.getLoginUser().getUserid();
+        // 获取用户信息
+        AppUser appUser = getAppUserById(userId);
+        ClientPlaceOrderVO clientPlaceOrderVO = new ClientPlaceOrderVO();
+        Order order = new Order();
+        // 购买冥想音频
+        if (orderFrom == 1) {
+            Meditation meditation = remoteMeditationService.getMeditationById(targetId,
+                    SecurityConstants.INNER).getData();
+            // 创建订单
+            String orderNo = OrderUtil.getOrderNoForPrefix("MX");
+            order.setOrderFrom(orderFrom);
+            order.setBizOrderNo(orderNo);
+            order.setBusinessId(meditation.getId());
+            order.setAppUserId(userId);
+            order.setTotalAmount(meditation.getIosPrice());
+            order.setPayType(3);
+            order.setBuyContent("购买疗愈");
+            this.save(order);
+            Long orderId = order.getId();
+            clientPlaceOrderVO.setOrderNo(orderNo);
+            clientPlaceOrderVO.setId(orderId);
+            // 如果冥想音频价格设定为单独收费,且需要使用余额抵扣
+            if (balanceFlag.equals(1) && meditation.getChargeType().equals(ChargeTypeEnum.SEPARATE_CHARGE.getCode())) {
+                BigDecimal needPayAmount = handleBalancePayment(appUser,
+                        meditation.getIosPrice(),
+                        orderId);
+                if (needPayAmount.compareTo(BigDecimal.ZERO) <= 0) {
+                    clientPlaceOrderVO.setZeroFlag(DisabledEnum.YES.getCode());
+                    // 抵扣后金额为0 为余额支付
+                    order.setPayType(4);
+                    order.setRealPayAmount(meditation.getIosPrice());
+                    this.updateById(order);
+                    return order.getId().toString();
+                }else{
+                    order.setPayType(7);
+                    this.updateById(order);
+                    // 创建支付订单
+                    OrderPaymentRecord paymentRecord = new OrderPaymentRecord();
+                    paymentRecord.setPayAmount(meditation.getIosPrice());
+                    paymentRecord.setPayOrderNo(transactionIdentifier);
+                    paymentRecord.setOrderId(orderId);
+                    paymentRecord.setPaymentType(PaymentTypeEnum.IOS_PAY.getCode());
+                    paymentRecord.setPaymentStatus(PaymentStatusEnum.TO_BE_PAID.getCode());
+                    orderPaymentRecordService.save(paymentRecord);
+                }
+
+            } else {
+                order.setPayType(3);
+                this.updateById(order);
+                // 纯内购支付
+                OrderPaymentRecord paymentRecord = new OrderPaymentRecord();
+                paymentRecord.setPayAmount(meditation.getIosPrice());
+                paymentRecord.setPayOrderNo(transactionIdentifier);
+                paymentRecord.setOrderId(orderId);
+                paymentRecord.setPaymentType(PaymentTypeEnum.IOS_PAY.getCode());
+                paymentRecord.setPaymentStatus(PaymentStatusEnum.TO_BE_PAID.getCode());
+                orderPaymentRecordService.save(paymentRecord);
+            }
+        }
+        else if (orderFrom == 2){
+            // 购买课程
+            Course course = remoteCourseService.getCourseById(targetId).getData();
+            // 创建订单
+            String orderNo = OrderUtil.getOrderNoForPrefix("KC");
+            order.setOrderFrom(orderFrom);
+            order.setBuyContent("购买课程");
+            order.setBizOrderNo(orderNo);
+            order.setPayOrderNo(transactionIdentifier);
+            order.setGiveUserId(receiverId);
+            order.setBusinessId(course.getId());
+            order.setAppUserId(userId);
+            order.setTotalAmount(course.getIosPrice());
+            this.save(order);
+            Long orderId = order.getId();
+            clientPlaceOrderVO.setOrderNo(orderNo);
+            clientPlaceOrderVO.setId(orderId);
+            if (balanceFlag.equals(1) && course.getChargeType()
+                    .equals(ChargeTypeEnum.SEPARATE_CHARGE.getCode())) {
+                BigDecimal needPayAmount = handleBalancePayment(appUser, course.getGeneralPrice(),
+                        orderId);
+                if (needPayAmount.compareTo(BigDecimal.ZERO) <= 0) {
+                    clientPlaceOrderVO.setZeroFlag(DisabledEnum.YES.getCode());
+                    // 抵扣后金额为0 为余额支付
+                    order.setPayType(4);
+                    order.setRealPayAmount(course.getGeneralPrice());
+                    this.updateById(order);
+                    return order.getId()+"";
+                }else{
+                    order.setPayType(7);
+                    this.updateById(order);
+                    // 创建支付订单
+                    OrderPaymentRecord paymentRecord = new OrderPaymentRecord();
+                    paymentRecord.setPayAmount(course.getIosPrice());
+                    paymentRecord.setPayOrderNo(transactionIdentifier);
+                    paymentRecord.setOrderId(orderId);
+                    paymentRecord.setPaymentType(PaymentTypeEnum.IOS_PAY.getCode());
+                    paymentRecord.setPaymentStatus(PaymentStatusEnum.TO_BE_PAID.getCode());
+                    orderPaymentRecordService.save(paymentRecord);
+                }
+            } else {
+                order.setPayType(3);
+                this.updateById(order);
+                // 创建支付订单
+                OrderPaymentRecord paymentRecord = new OrderPaymentRecord();
+                paymentRecord.setPayAmount(course.getIosPrice());
+                paymentRecord.setPayOrderNo(transactionIdentifier);
+                paymentRecord.setOrderId(orderId);
+                paymentRecord.setPaymentType(PaymentTypeEnum.IOS_PAY.getCode());
+                paymentRecord.setPaymentStatus(PaymentStatusEnum.TO_BE_PAID.getCode());
+                orderPaymentRecordService.save(paymentRecord);
+            }
+        }
+        else if (orderFrom == 3){
+            // 创建订单
+            String orderNo = OrderUtil.getOrderNoForPrefix("HY");
+            order.setOrderFrom(orderFrom);
+            order.setBizOrderNo(orderNo);
+            order.setAppUserId(userId);
+            order.setTotalAmount(amount);
+            String vipType1 ="";
+            switch (vipType){
+                case 1:
+                    vipType1="月会员";
+                    break;
+                case 2:
+                    vipType1="季会员";
+                    break;
+                case 3:
+                    vipType1="年会员";
+                    break;
+            }
+            order.setBuyContent(vipType1);
+            this.save(order);
+            Long orderId = order.getId();
+
+            order.setPayType(3);
+            this.updateById(order);
+            // 创建支付订单
+            OrderPaymentRecord paymentRecord = new OrderPaymentRecord();
+            paymentRecord.setPayAmount(amount);
+            paymentRecord.setPayOrderNo(transactionIdentifier);
+            paymentRecord.setOrderId(orderId);
+            paymentRecord.setPaymentType(PaymentTypeEnum.IOS_PAY.getCode());
+            paymentRecord.setPaymentStatus(PaymentStatusEnum.TO_BE_PAID.getCode());
+            orderPaymentRecordService.save(paymentRecord);
+        }else {
+            // 充值
+            String wxOpenId = appUser.getWxOpenId();
+            // 创建订单
+            String orderNo = OrderUtil.getOrderNoForPrefix("CZ");
+            order.setOrderFrom(orderFrom);
+            order.setBizOrderNo(orderNo);
+            order.setAppUserId(userId);
+            order.setTotalAmount(amount);
+            order.setBuyContent("充值");
+            this.save(order);
+            Long orderId = order.getId();
+            order.setPayType(3);
+            this.updateById(order);
+            // 创建支付订单
+            OrderPaymentRecord paymentRecord = new OrderPaymentRecord();
+            paymentRecord.setPayAmount(amount);
+            paymentRecord.setPayOrderNo(transactionIdentifier);
+            paymentRecord.setOrderId(orderId);
+            paymentRecord.setPaymentType(PaymentTypeEnum.IOS_PAY.getCode());
+            paymentRecord.setPaymentStatus(PaymentStatusEnum.TO_BE_PAID.getCode());
+            orderPaymentRecordService.save(paymentRecord);
+        }
+        return order.getId()+"";
+    }
+
+    @Override
+    public String refund(Long uid) throws Exception {
+        Order byId = this.getById(uid);
+        OrderPaymentRecord one = orderPaymentRecordService.lambdaQuery()
+                .eq(OrderPaymentRecord::getOrderId, uid)
+                .ne(OrderPaymentRecord::getPaymentType, 3)
+                .ne(OrderPaymentRecord::getPaymentType, 4).one();
+
+        JuHeFuUtil.refund(one.getPayOrderNo(),byId.getBizOrderNo());
+        return null;
+    }
 }

--
Gitblit v1.7.1