Browse Source

修复仅用积分时订单退款失败

sj
sj 2 years ago
parent
commit
8525c5399e
  1. 3
      zsw-bxg/src/main/java/co/yixiang/modules/activity/rest/StoreCouponController.java
  2. 17
      zsw-bxg/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java
  3. 9
      zsw-bxg/src/main/java/co/yixiang/modules/sales/service/impl/StoreAfterSalesServiceImpl.java

3
zsw-bxg/src/main/java/co/yixiang/modules/activity/rest/StoreCouponController.java

@ -98,6 +98,9 @@ public class StoreCouponController {
@PreAuthorize("@ss.hasAnyPermissions('admin','YXSTORECOUPON_ALL','YXSTORECOUPON_EDIT')")
public ResponseEntity giveOut(@Validated @RequestBody CouponGive couponGive){
Long couponId = couponGive.getCouponId();
if (couponGive.getUserIds().isEmpty()){
throw new YshopException("未选择任何会员");
}
couponGive.getUserIds().forEach(yxUser -> {
//用户的券记录
storeCouponUserService.addUserCoupon(yxUser.getUid(),Math.toIntExact(couponId));

17
zsw-bxg/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java

@ -715,7 +715,7 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<StoreOrderMapper, Y
YxStoreOrder storeOrder = new YxStoreOrder();
//修改状态
storeOrder.setId(orderQueryVo.getId());
if (ShopCommonEnum.AGREE_2.getValue().equals(type)) {//同意退款
if (ShopCommonEnum.AGREE_2.getValue().equals(type)) {//拒绝退款
storeOrder.setRefundStatus(OrderInfoEnum.REFUND_STATUS_0.getValue());
yxStoreOrderMapper.updateById(storeOrder);
StoreAfterSales storeAfterSales = storeAfterSalesService.lambdaQuery()
@ -759,9 +759,20 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<StoreOrderMapper, Y
storeOrder.setRefundStatus(OrderInfoEnum.REFUND_STATUS_2.getValue());
storeOrder.setRefundPrice(price);
yxStoreOrderMapper.updateById(storeOrder);
orderStatusService.create(orderQueryVo.getId(), OrderLogEnum.ORDER_EDIT.getValue(), "退款给用户:" + orderQueryVo.getPayIntegral() + "分");
orderStatusService.create(orderQueryVo.getId(), OrderLogEnum.ORDER_EDIT.getValue(), "退款给用户:" + orderQueryVo.getPayIntegral() + "积分分");
this.retrunStock(orderQueryVo.getOrderId());
//增加判断,如果商品仅使用了积分,也对退款记录做出改变
if (orderQueryVo.getPayPrice().compareTo(BigDecimal.ZERO)==0){ //如果只使用了积分,付款为0
StoreAfterSales storeAfterSales = storeAfterSalesService.lambdaQuery()
.eq(StoreAfterSales::getUserId, orderQueryVo.getUid())
.eq(StoreAfterSales::getOrderCode, orderQueryVo.getOrderId()).one();
if (ObjectUtil.isNotNull(storeAfterSales)) {
storeAfterSalesService.lambdaUpdate()
.eq(StoreAfterSales::getId, storeAfterSales.getId())
.set(StoreAfterSales::getState, AfterSalesStatusEnum.STATUS_3.getValue())
.update();
}
}
}
orderStatusService.create(orderQueryVo.getId(), OrderLogEnum.REFUND_ORDER_SUCCESS.getValue(), "退款给用户:" + price + "元");

9
zsw-bxg/src/main/java/co/yixiang/modules/sales/service/impl/StoreAfterSalesServiceImpl.java

@ -94,7 +94,12 @@ public class StoreAfterSalesServiceImpl extends BaseServiceImpl<StoreAfterSalesM
//商品优惠前总金额
BigDecimal totalAmountOfGoods = NumberUtil.mul(cartInfo.getTruePrice(), cartInfo.getCartNum());
//商品优惠总金额
BigDecimal commodityDiscountAmount = NumberUtil.mul(NumberUtil.div(totalAmountOfGoods, NumberUtil.sub(yxStoreOrder.getTotalPrice(), yxStoreOrder.getPayPostage())), yxStoreOrder.getCouponPrice());
BigDecimal commodityDiscountAmount;
if (totalAmountOfGoods.compareTo(BigDecimal.ZERO)==0){
commodityDiscountAmount=new BigDecimal(0);
}else {
commodityDiscountAmount = NumberUtil.mul(NumberUtil.div(totalAmountOfGoods, NumberUtil.sub(yxStoreOrder.getTotalPrice(), yxStoreOrder.getPayPostage())), yxStoreOrder.getCouponPrice());
}
//商品优惠后总金额
totalPrice = NumberUtil.add(totalPrice, NumberUtil.sub(totalAmountOfGoods, commodityDiscountAmount));
@ -147,7 +152,7 @@ public class StoreAfterSalesServiceImpl extends BaseServiceImpl<StoreAfterSalesM
storeAfterSalesStatus.setOperator(nickname);
storeAfterSalesStatusMapper.insert(storeAfterSalesStatus);
//如果订单未发货,直接调用退款方法(发货审核通过后进行退款需要通知及退款审核)
if (yxStoreOrder.getStatus().equals(OrderInfoEnum.STATUS_0)){
if (status.equals(OrderInfoEnum.STATUS_0.getValue())){
yxStoreOrderService.orderRefund(yxStoreOrder.getOrderId(),yxStoreOrder.getPayPrice(),
ShopCommonEnum.AGREE_1.getValue());
}else {

Loading…
Cancel
Save