|
@@ -324,7 +324,7 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
}
|
|
|
//会员余额支付
|
|
|
if (orderGoods.getPayType().equals(PayType.BALANCE.getCode())) {
|
|
|
- RechargeCardPayDTO rechargeCardPayDTO = new RechargeCardPayDTO(orderGoods.getAppUserId(), orderGoods.getId(), orderGoods.getSourceType(), orderGoods.getOrgId(), orderGoods.getOrderNo(), orderGoods.getPayAmount(), OrderType.goods.getCode());
|
|
|
+ RechargeCardPayDTO rechargeCardPayDTO = new RechargeCardPayDTO(orderGoods.getAppUserId(), orderGoods.getId(), orderGoods.getSourceType(), orderGoods.getOrgId(), orderGoods.getOrderNo(), orderGoods.getPayAmount(), orderGoods.getGoodsType());
|
|
|
rechargePasswordCardService.orderPayByBalance(rechargeCardPayDTO);
|
|
|
this.handlePaySuccessUpdateOrderStatus(orderGoods.getOrderNo(), null);
|
|
|
orderPayResultVO = OrderPayResultVO.paySuccess(orderGoods.getOrderNo());
|
|
@@ -371,10 +371,32 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+ if (orderGoods.getPayType().equals(PayType.CASH.getCode())) {
|
|
|
+ orderGoods.setCashPayAmount(orderGoods.getPayAmount());
|
|
|
+ } else if (orderGoods.getPayType().equals(PayType.BALANCE.getCode())) {
|
|
|
+ orderGoods.setMemberPayAmount(orderGoods.getPayAmount());
|
|
|
+ } else if (orderGoods.getPayType().equals(PayType.WECHAT.getCode())) {
|
|
|
+ orderGoods.setWxPayAmount(orderGoods.getPayAmount());
|
|
|
+ } else if (orderGoods.getPayType().equals(PayType.ALIPAY.getCode())) {
|
|
|
+ orderGoods.setAliPayAmount(orderGoods.getPayAmount());
|
|
|
+ }
|
|
|
orderGoods.setPayStatus(PayStatus.HAS_PAY.getCode());
|
|
|
orderGoods.setPayTime(DateUtils.getNowDate());
|
|
|
orderGoods.buildUpdateData();
|
|
|
this.updateById(orderGoods);
|
|
|
+ //如果是组合支付,则扣除会员余额
|
|
|
+ if (orderGoods.getPayType().equals(PayType.COMBINE.getCode())) {
|
|
|
+ if (orderGoods.getMemberPayAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ //如果支付金额大于0,则扣除会员余额
|
|
|
+ /**
|
|
|
+ * goods("1", "商品订单"),
|
|
|
+ * life("2", "生活服务"),
|
|
|
+ * car("3", "汽车美容"),*
|
|
|
+ */
|
|
|
+ RechargeCardPayDTO rechargeCardPayDTO = new RechargeCardPayDTO(orderGoods.getAppUserId(), orderGoods.getId(), orderGoods.getSourceType(), orderGoods.getOrgId(), orderGoods.getOrderNo(), orderGoods.getMemberPayAmount(), orderGoods.getGoodsType());
|
|
|
+ rechargePasswordCardService.orderPayByBalance(rechargeCardPayDTO);
|
|
|
+ }
|
|
|
+ }
|
|
|
// 减库存
|
|
|
List<OrderGoodsSku> orderGoodsSkus = this.handleMinusStock(orderGoods);
|
|
|
// 出库记录
|
|
@@ -502,9 +524,14 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
if (!orderGoods.getOrderStatus().equals(OrderGoodsStatusType.NO_PAY.getCode())) {
|
|
|
throw new ServiceException("订单状态不正确支付");
|
|
|
}
|
|
|
+ orderGoods.setMemberPayAmount(BigDecimal.ZERO);
|
|
|
+ orderGoods.setCashPayAmount(BigDecimal.ZERO);
|
|
|
+ orderGoods.setWxPayAmount(BigDecimal.ZERO);
|
|
|
+ orderGoods.setAliPayAmount(BigDecimal.ZERO);
|
|
|
OrderPayResultVO orderPayResultVO = new OrderPayResultVO();
|
|
|
if (orderGoods.getPayType().equals(PayType.CASH.getCode()) && OrderSourceType.OFFLINE.getCode().equals(orderGoods.getOrderSource())) {
|
|
|
orderGoods.setPayType(PayType.CASH.getCode());
|
|
|
+ this.updateById(orderGoods);
|
|
|
this.handlePaySuccessUpdateOrderStatus(orderGoods.getOrderNo(), null);
|
|
|
orderPayResultVO = OrderPayResultVO.paySuccess(orderGoods.getOrderNo());
|
|
|
orderPayResultVO.setOrderId(orderGoods.getId());
|
|
@@ -530,7 +557,9 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
}
|
|
|
//会员余额支付
|
|
|
if (orderGoods.getPayType().equals(PayType.BALANCE.getCode())) {
|
|
|
- RechargeCardPayDTO rechargeCardPayDTO = new RechargeCardPayDTO(orderGoods.getAppUserId(), orderGoods.getId(), orderGoods.getSourceType(), orderGoods.getOrgId(), orderGoods.getOrderNo(), orderGoods.getPayAmount(), OrderType.goods.getCode());
|
|
|
+ orderGoods.setPayType(PayType.BALANCE.getCode());
|
|
|
+ this.updateById(orderGoods);
|
|
|
+ RechargeCardPayDTO rechargeCardPayDTO = new RechargeCardPayDTO(orderGoods.getAppUserId(), orderGoods.getId(), orderGoods.getSourceType(), orderGoods.getOrgId(), orderGoods.getOrderNo(), orderGoods.getPayAmount(), orderGoods.getGoodsType());
|
|
|
rechargePasswordCardService.orderPayByBalance(rechargeCardPayDTO);
|
|
|
this.handlePaySuccessUpdateOrderStatus(orderGoods.getOrderNo(), null);
|
|
|
orderPayResultVO = OrderPayResultVO.paySuccess(orderGoods.getOrderNo());
|
|
@@ -539,6 +568,8 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
}
|
|
|
//微信或者支付宝小程序支付
|
|
|
if (orderGoods.getPayType().equals(PayType.WECHAT.getCode()) || orderGoods.getPayType().equals(PayType.ALIPAY.getCode())) {
|
|
|
+ orderGoods.setPayType(orderGoods.getPayType());
|
|
|
+ this.updateById(orderGoods);
|
|
|
orderPayResultVO.setAppPayRespVO(payService.appPay(PayOrderAppDTO.buildGoodsOrderPayData(orderGoods, orderGoodsPayDTO.getOrderSource())));
|
|
|
orderPayResultVO.setPayResult(100);
|
|
|
return orderPayResultVO;
|
|
@@ -556,6 +587,7 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
}
|
|
|
if (otherPayType.equals(PayType.CASH.getCode())) {
|
|
|
orderGoods.setCashPayAmount(CurrencyUtil.sub(orderGoodsPayDTO.getPayAmount(), orderGoodsPayDTO.getMemberPayAmount()));
|
|
|
+ this.updateById(orderGoods);
|
|
|
this.handlePaySuccessUpdateOrderStatus(orderGoods.getOrderNo(), null);
|
|
|
orderPayResultVO = OrderPayResultVO.paySuccess(orderGoods.getOrderNo());
|
|
|
orderPayResultVO.setOrderId(orderGoods.getId());
|
|
@@ -714,7 +746,7 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
}
|
|
|
// 超过3个月不能退单
|
|
|
if ((DateUtils.getNowDate().compareTo(DateUtils.addMonths(orderGoods.getCreateTime(), 3))) > 0) {
|
|
|
- throw new GlobalException("订单已经超过退单时间,不能操作退单");
|
|
|
+ throw new GlobalException("订单已经超过3个月时间,不能操作退单");
|
|
|
}
|
|
|
if (OrderGoodsStatusType.NO_PAY.getCode().equals(orderGoods.getOrderStatus())) {
|
|
|
throw new GlobalException("订单未支付,不能操作退单");
|
|
@@ -734,6 +766,10 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
orderGoodsRefund.setRefundNo(orderNoUtils.getGoodsOrderNo());
|
|
|
orderGoodsRefund.setGoodsType(orderGoods.getGoodsType());
|
|
|
orderGoodsRefund.setRefundAmount(orderGoods.getRefundAmount());
|
|
|
+ orderGoodsRefund.setAliRefundAmount(orderGoods.getAliPayAmount());
|
|
|
+ orderGoodsRefund.setCashRefundAmount(orderGoods.getCashPayAmount());
|
|
|
+ orderGoodsRefund.setWxRefundAmount(orderGoods.getWxPayAmount());
|
|
|
+ orderGoodsRefund.setMemberRefundAmount(orderGoods.getMemberPayAmount());
|
|
|
orderGoodsRefund.setRefundApplyTime(DateUtils.getNowDate());
|
|
|
orderGoodsRefund.setRefundReason(orderGoodsRefundDTO.getRefundReason());
|
|
|
orderGoodsRefund.setRefundStatus(OrderRefundStatus.REFUND_APPLYING.getCode());
|
|
@@ -768,24 +804,52 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
//暂不执行
|
|
|
delayQueueCache.addDelayJob(delayMessage, RefundQueryTimesEnum.getDelayTime(delayMessage.getPollingNum()));
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
-// // 退款内容
|
|
|
-// appUserBillMstrService.refundRecord(ConsumeOrderDTO.buildOrderGoodsRefundData(orderGoods), new RefundBaseDTO(orderNoUtils.getGoodsOrderNo()));
|
|
|
+ //组合退款
|
|
|
+ if (orderGoods.getPayType().equals(PayType.COMBINE.getCode())) {
|
|
|
+ if (orderGoodsRefund.getCashRefundAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ //退款成功
|
|
|
+ refundSuccess(orderGoodsRefund.getRefundNo(), orderGoodsRefund.getOrderNo());
|
|
|
+ }
|
|
|
+ if (orderGoodsRefund.getWxRefundAmount().compareTo(BigDecimal.ZERO) > 0 || orderGoodsRefund.getAliRefundAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ //执行微信退款逻辑
|
|
|
+ BigDecimal refundAmount = orderGoodsRefund.getWxRefundAmount().add(orderGoodsRefund.getAliRefundAmount());
|
|
|
+ String payType = orderGoodsRefund.getWxRefundAmount().compareTo(BigDecimal.ZERO) > 0 ? PayType.WECHAT.getCode() : PayType.ALIPAY.getCode();
|
|
|
+ PayRefundDTO payRefundDTO = new PayRefundDTO(payType, orderGoods.getOrderNo(), refundAmount, orderGoodsRefund.getRefundNo(), orderGoods.getOutTradeOrderNo(), orderGoodsRefundDTO.getRefundReason());
|
|
|
+ payRefundDTO.setTotalAmount(refundAmount);
|
|
|
+ payRefundDTO.setStoreId(orderGoods.getOrgId());
|
|
|
+ RefundResponseDTO refundResponse = payService.refundApply(payRefundDTO);
|
|
|
+ if (refundResponse.getRefundResult().equals(PayResult.fail.getCode())) {
|
|
|
+ orderGoodsRefund.setRefundStatus(OrderRefundStatus.ERROR.getCode());
|
|
|
+ orderGoodsRefund.setRemark(refundResponse.getPayMsg());
|
|
|
+ orderGoodsRefundService.updateById(orderGoodsRefund);
|
|
|
+ orderGoods.setRefundStatus(OrderRefundStatus.ERROR.getCode());
|
|
|
+ baseMapper.updateById(orderGoods);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public R refundSuccess(String refundNo, String orderNo) {
|
|
|
- if (StrUtil.isNotBlank(refundNo)) {
|
|
|
- OrderGoodsRefund orderGoodsRefund = orderGoodsRefundService.getOrderClothRefundByRefundNo(refundNo);
|
|
|
- orderGoodsRefund.setRefundStatus(OrderRefundStatus.REFUND_SUCCESS.getCode());
|
|
|
- orderGoodsRefund.setRefundTime(DateUtils.getNowDate());
|
|
|
- orderGoodsRefundService.updateById(orderGoodsRefund);
|
|
|
- if (orderNo == null) {
|
|
|
- orderNo = orderGoodsRefund.getOrderNo();
|
|
|
- }
|
|
|
+ OrderGoodsRefund orderGoodsRefund = orderGoodsRefundService.getOrderClothRefundByRefundNo(refundNo);
|
|
|
+ orderGoodsRefund.setRefundStatus(OrderRefundStatus.REFUND_SUCCESS.getCode());
|
|
|
+ orderGoodsRefund.setRefundTime(DateUtils.getNowDate());
|
|
|
+
|
|
|
+ if (orderGoodsRefund.getPayType().equals(PayType.CASH.getCode())) {
|
|
|
+ orderGoodsRefund.setCashRefundAmount(orderGoodsRefund.getRefundAmount());
|
|
|
+ } else if (orderGoodsRefund.getPayType().equals(PayType.BALANCE.getCode())) {
|
|
|
+ orderGoodsRefund.setMemberRefundAmount(orderGoodsRefund.getRefundAmount());
|
|
|
+ } else if (orderGoodsRefund.getPayType().equals(PayType.WECHAT.getCode())) {
|
|
|
+ orderGoodsRefund.setWxRefundAmount(orderGoodsRefund.getRefundAmount());
|
|
|
+ } else if (orderGoodsRefund.getPayType().equals(PayType.ALIPAY.getCode())) {
|
|
|
+ orderGoodsRefund.setAliRefundAmount(orderGoodsRefund.getRefundAmount());
|
|
|
+ }
|
|
|
+
|
|
|
+ orderGoodsRefundService.updateById(orderGoodsRefund);
|
|
|
+ if (orderNo == null) {
|
|
|
+ orderNo = orderGoodsRefund.getOrderNo();
|
|
|
}
|
|
|
|
|
|
OrderGoods orderGoods = this.getOne(new QueryWrapper<OrderGoods>().lambda().eq(OrderGoods::getOrderNo, orderNo));
|
|
@@ -806,6 +870,17 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
orderGoods.setRefundStatus(OrderRefundStatus.REFUND_SUCCESS.getCode());
|
|
|
baseMapper.updateById(orderGoods);
|
|
|
|
|
|
+ //如果是组合支付,退会员余额
|
|
|
+ if (orderGoods.getPayType().equals(PayType.COMBINE.getCode())) {
|
|
|
+ if (orderGoodsRefund.getMemberRefundAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ //如果支付金额大于0,则扣除会员余额
|
|
|
+ Boolean res = rechargePasswordCardService.orderRefundByBalance(orderGoodsRefund.getOrderNo(), orderGoodsRefund.getMemberRefundAmount());
|
|
|
+ if (res) {
|
|
|
+ throw new ServiceException("会员余额退款失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 处理销量 - 扣商品销量
|
|
|
List<OrderGoodsSku> list = orderGoodsSkuService.list(new QueryWrapper<OrderGoodsSku>().lambda().eq(OrderGoodsSku::getOrderId, orderGoods.getId()));
|
|
|
if (CollUtil.isNotEmpty(list)) {
|