| | |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public ClientPlaceOrderVO placeOrder(Long targetId, Integer orderFrom, Long receiverId, |
| | | 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(); |
| | |
| | | AppUser appUser = getAppUserById(userId); |
| | | ClientPlaceOrderVO clientPlaceOrderVO = new ClientPlaceOrderVO(); |
| | | Order order = new Order(); |
| | | order.setPayType(payType); |
| | | // 购买冥想音频 |
| | | if (orderFrom == 1) { |
| | | Meditation meditation = remoteMeditationService.getMeditationById(targetId, |
| | |
| | | String wxOpenId = appUser.getWxOpenId(); |
| | | // 创建订单 |
| | | String orderNo = OrderUtil.getOrderNoForPrefix("MX"); |
| | | order.setOrderFrom(orderFrom); |
| | | order.setBizOrderNo(orderNo); |
| | | order.setBusinessId(meditation.getId()); |
| | | order.setAppUserId(userId); |
| | | order.setRealPayAmount(meditation.getGeneralPrice()); |
| | | order.setPayType(payType); |
| | | order.setTotalAmount(meditation.getGeneralPrice()); |
| | | order.setGiveUserId(receiverId); |
| | | this.save(order); |
| | | Long orderId = order.getId(); |
| | | 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.setTotalAmount(meditation.getGeneralPrice()); |
| | | order.setGiveUserId(receiverId); |
| | | this.save(order); |
| | | }else{ |
| | | order = this.getById(orderId); |
| | | } |
| | | |
| | | Long orderId9 = order.getId(); |
| | | clientPlaceOrderVO.setOrderNo(orderNo); |
| | | clientPlaceOrderVO.setId(orderId); |
| | | clientPlaceOrderVO.setId(orderId9); |
| | | // 如果冥想音频价格设定为单独收费,且需要使用余额抵扣 |
| | | if (balanceFlag.equals(1) && meditation.getChargeType().equals(ChargeTypeEnum.SEPARATE_CHARGE.getCode())) { |
| | | BigDecimal needPayAmount = handleBalancePayment(appUser, |
| | | meditation.getGeneralPrice(), |
| | | orderId); |
| | | orderId9); |
| | | if (needPayAmount.compareTo(BigDecimal.ZERO) <= 0) { |
| | | clientPlaceOrderVO.setZeroFlag(DisabledEnum.YES.getCode()); |
| | | // 抵扣后金额为0 为余额支付 |
| | |
| | | this.updateById(order); |
| | | // 创建支付订单 |
| | | createPayment(payType, orderNo, needPayAmount, meditationTitle, detailDescription, |
| | | wxOpenId, orderId, clientPlaceOrderVO); |
| | | wxOpenId, orderId9, clientPlaceOrderVO); |
| | | } else { |
| | | // 创建支付订单 |
| | | createPayment(payType, orderNo, meditation.getGeneralPrice(), meditationTitle, |
| | | detailDescription, wxOpenId, orderId, clientPlaceOrderVO); |
| | | detailDescription, wxOpenId, orderId9, clientPlaceOrderVO); |
| | | } |
| | | } |
| | | else if (orderFrom == 2){ |
| | |
| | | |
| | | // 创建订单 |
| | | String orderNo = OrderUtil.getOrderNoForPrefix("KC"); |
| | | order.setOrderFrom(orderFrom); |
| | | order.setBizOrderNo(orderNo); |
| | | order.setGiveUserId(receiverId); |
| | | order.setBusinessId(course.getId()); |
| | | order.setAppUserId(userId); |
| | | order.setRealPayAmount(course.getGeneralPrice()); |
| | | order.setTotalAmount(course.getGeneralPrice()); |
| | | this.save(order); |
| | | Long orderId = order.getId(); |
| | | if (orderId==null){ |
| | | order.setOrderFrom(orderFrom); |
| | | order.setBizOrderNo(orderNo); |
| | | order.setGiveUserId(receiverId); |
| | | order.setBusinessId(course.getId()); |
| | | order.setAppUserId(userId); |
| | | order.setRealPayAmount(course.getGeneralPrice()); |
| | | order.setTotalAmount(course.getGeneralPrice()); |
| | | this.save(order); |
| | | }else{ |
| | | order = this.getById(orderId); |
| | | } |
| | | Long orderId8 = order.getId(); |
| | | clientPlaceOrderVO.setOrderNo(orderNo); |
| | | clientPlaceOrderVO.setId(orderId); |
| | | clientPlaceOrderVO.setId(orderId8); |
| | | |
| | | if (balanceFlag.equals(1) && course.getChargeType() |
| | | .equals(ChargeTypeEnum.SEPARATE_CHARGE.getCode())) { |
| | | BigDecimal needPayAmount = handleBalancePayment(appUser, course.getGeneralPrice(), |
| | | orderId); |
| | | orderId8); |
| | | |
| | | if (needPayAmount.compareTo(BigDecimal.ZERO) <= 0) { |
| | | clientPlaceOrderVO.setZeroFlag(DisabledEnum.YES.getCode()); |
| | |
| | | } |
| | | // 创建支付订单 |
| | | createPayment(payType, orderNo, needPayAmount, courseTitle, description, |
| | | wxOpenId, orderId, clientPlaceOrderVO); |
| | | wxOpenId, orderId8, clientPlaceOrderVO); |
| | | } else { |
| | | // 创建支付订单 |
| | | createPayment(payType, orderNo, course.getGeneralPrice(), courseTitle, |
| | | description, wxOpenId, orderId, clientPlaceOrderVO); |
| | | description, wxOpenId, orderId8, clientPlaceOrderVO); |
| | | } |
| | | } |
| | | else if (orderFrom == 3){ |
| | |
| | | } |
| | | order.setBuyContent(vipType1); |
| | | this.save(order); |
| | | Long orderId = order.getId(); |
| | | Long orderId7 = order.getId(); |
| | | clientPlaceOrderVO.setOrderNo(orderNo); |
| | | clientPlaceOrderVO.setId(orderId); |
| | | clientPlaceOrderVO.setId(orderId7); |
| | | // 创建支付订单 |
| | | createPayment(payType, orderNo, amount, "购买会员", |
| | | vipType1, wxOpenId, orderId, clientPlaceOrderVO); |
| | | vipType1, wxOpenId, orderId7, clientPlaceOrderVO); |
| | | |
| | | }else { |
| | | // 充值 |
| | |
| | | order.setPayType(payType); |
| | | order.setBuyContent("充值"); |
| | | this.save(order); |
| | | Long orderId = order.getId(); |
| | | Long orderId6 = order.getId(); |
| | | clientPlaceOrderVO.setOrderNo(orderNo); |
| | | clientPlaceOrderVO.setId(orderId); |
| | | clientPlaceOrderVO.setId(orderId6); |
| | | // 创建支付订单 |
| | | createPayment(payType, orderNo, amount, "充值余额", |
| | | "充值余额", wxOpenId, orderId, clientPlaceOrderVO); |
| | | "充值余额", wxOpenId, orderId6, clientPlaceOrderVO); |
| | | } |
| | | return clientPlaceOrderVO; |
| | | } |