订单退款,即刻扣减分销员冻结佣金

This commit is contained in:
pikachu1995@126.com 2023-09-21 18:46:32 +08:00
parent 25582e2958
commit 39e22f5561
5 changed files with 28 additions and 25 deletions

View File

@ -5,9 +5,7 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import cn.lili.event.AfterSaleStatusChangeEvent; import cn.lili.event.AfterSaleStatusChangeEvent;
import cn.lili.event.OrderStatusChangeEvent; import cn.lili.event.OrderStatusChangeEvent;
import cn.lili.modules.distribution.entity.dos.DistributionOrder;
import cn.lili.modules.distribution.entity.enums.DistributionOrderStatusEnum; import cn.lili.modules.distribution.entity.enums.DistributionOrderStatusEnum;
import cn.lili.modules.distribution.mapper.DistributionOrderMapper;
import cn.lili.modules.distribution.service.DistributionOrderService; import cn.lili.modules.distribution.service.DistributionOrderService;
import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
import cn.lili.modules.order.order.entity.dto.OrderMessage; import cn.lili.modules.order.order.entity.dto.OrderMessage;
@ -17,13 +15,10 @@ import cn.lili.modules.system.entity.dto.DistributionSetting;
import cn.lili.modules.system.entity.enums.SettingEnum; import cn.lili.modules.system.entity.enums.SettingEnum;
import cn.lili.modules.system.service.SettingService; import cn.lili.modules.system.service.SettingService;
import cn.lili.timetask.handler.EveryDayExecute; import cn.lili.timetask.handler.EveryDayExecute;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/** /**
* 分销订单入库 * 分销订单入库
* *
@ -78,14 +73,14 @@ public class DistributionOrderExecute implements OrderStatusChangeEvent, EveryDa
//当前时间-结算天数=最终结算时间 //当前时间-结算天数=最终结算时间
dateTime = dateTime.offsetNew(DateField.DAY_OF_MONTH, -distributionSetting.getCashDay()); dateTime = dateTime.offsetNew(DateField.DAY_OF_MONTH, -distributionSetting.getCashDay());
//分销人员订单结算 //分销人员订单结算
distributionOrderService.updateRebate(dateTime,DistributionOrderStatusEnum.WAIT_BILL.name()); distributionOrderService.updateRebate(dateTime, DistributionOrderStatusEnum.WAIT_BILL.name());
} }
@Override @Override
public void afterSaleStatusChange(AfterSale afterSale) { public void afterSaleStatusChange(AfterSale afterSale) {
if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) { if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) {
distributionOrderService.refundOrder(afterSale.getSn()); distributionOrderService.refundOrder(afterSale);
} }
} }

View File

@ -3,6 +3,7 @@ package cn.lili.modules.distribution.service;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.lili.modules.distribution.entity.dos.DistributionOrder; import cn.lili.modules.distribution.entity.dos.DistributionOrder;
import cn.lili.modules.distribution.entity.vos.DistributionOrderSearchParams; import cn.lili.modules.distribution.entity.vos.DistributionOrderSearchParams;
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
import cn.lili.modules.order.order.entity.dos.OrderItem; import cn.lili.modules.order.order.entity.dos.OrderItem;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
@ -47,7 +48,7 @@ public interface DistributionOrderService extends IService<DistributionOrder> {
* *
* @param afterSaleSn 售后单号 * @param afterSaleSn 售后单号
*/ */
void refundOrder(String afterSaleSn); void refundOrder(AfterSale afterSale);
/** /**
* 分销订单状态修改 * 分销订单状态修改

View File

@ -16,6 +16,7 @@ import cn.lili.modules.distribution.entity.vos.DistributionOrderSearchParams;
import cn.lili.modules.distribution.mapper.DistributionOrderMapper; import cn.lili.modules.distribution.mapper.DistributionOrderMapper;
import cn.lili.modules.distribution.service.DistributionOrderService; import cn.lili.modules.distribution.service.DistributionOrderService;
import cn.lili.modules.distribution.service.DistributionService; import cn.lili.modules.distribution.service.DistributionService;
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.Order;
import cn.lili.modules.order.order.entity.dos.OrderItem; import cn.lili.modules.order.order.entity.dos.OrderItem;
import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.modules.order.order.entity.dos.StoreFlow;
@ -189,28 +190,27 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
} }
@Override @Override
public void refundOrder(String afterSaleSn) { public void refundOrder(AfterSale afterSale) {
//判断是否为分销订单 //判断是否为分销订单
StoreFlow storeFlow = storeFlowService.queryOne(StoreFlowQueryDTO.builder().justDistribution(true).refundSn(afterSaleSn).build()); StoreFlow refundStoreFlow = storeFlowService.queryOne(StoreFlowQueryDTO.builder().justDistribution(true).refundSn(afterSale.getSn()).build());
if (storeFlow != null) { if (refundStoreFlow != null) {
//获取收款分销订单 //获取收款分销订单
DistributionOrder distributionOrder = this.getOne(new LambdaQueryWrapper<DistributionOrder>() DistributionOrder distributionOrder = this.getOne(new LambdaQueryWrapper<DistributionOrder>()
.eq(DistributionOrder::getOrderItemSn, storeFlow.getOrderItemSn())); .eq(DistributionOrder::getOrderItemSn, afterSale.getOrderItemSn()));
//分销订单不存在则直接返回 //分销订单不存在则直接返回
if (distributionOrder == null) { if (distributionOrder == null) {
return; return;
} }
if (distributionOrder.getDistributionOrderStatus().equals(DistributionOrderStatusEnum.WAIT_BILL.name())) {
this.update(new LambdaUpdateWrapper<DistributionOrder>() distributionOrder.setSellBackRebate(CurrencyUtil.add(distributionOrder.getSellBackRebate(), refundStoreFlow.getDistributionRebate()));
.eq(DistributionOrder::getOrderItemSn, storeFlow.getOrderItemSn()) distributionOrder.setRebate(CurrencyUtil.sub(distributionOrder.getSellBackRebate(), refundStoreFlow.getDistributionRebate()));
.set(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.CANCEL.name())); if (distributionOrder.getRebate() == 0) {
} distributionOrder.setDistributionOrderStatus(DistributionOrderStatusEnum.REFUND.name());
//如果已结算则创建退款分销订单
else {
//修改分销员提成金额
distributionService.subCanRebate(CurrencyUtil.sub(0, storeFlow.getDistributionRebate()), distributionOrder.getDistributionId());
} }
this.updateById(distributionOrder);
// 修改分销员提成金额
distributionService.subCanRebate(CurrencyUtil.sub(0, refundStoreFlow.getDistributionRebate()), distributionOrder.getDistributionId());
} }
} }
@ -310,7 +310,8 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
* @param distributionList 分销列表 * @param distributionList 分销列表
* @return * @return
*/ */
public Distribution checkDistribution(String distributionId, List<DistributionOrder> list, List<Distribution> distributionList) { public Distribution checkDistribution(String
distributionId, List<DistributionOrder> list, List<Distribution> distributionList) {
//获取所有待结算订单分销人员信息 //获取所有待结算订单分销人员信息
Distribution distribution = distributionList.parallelStream().filter(a -> StrUtil.equals(a.getId(), distributionId)).collect(Collectors.toList()).get(0); Distribution distribution = distributionList.parallelStream().filter(a -> StrUtil.equals(a.getId(), distributionId)).collect(Collectors.toList()).get(0);

View File

@ -23,9 +23,12 @@ public class StoreFlowQueryDTO {
@ApiModelProperty(value = "售后编号") @ApiModelProperty(value = "售后编号")
private String refundSn; private String refundSn;
@ApiModelProperty(value = "售后编号") @ApiModelProperty(value = "订单编号")
private String orderSn; private String orderSn;
@ApiModelProperty(value = "订单货物编号")
private String orderItemSn;
@ApiModelProperty(value = "过滤只看分销订单") @ApiModelProperty(value = "过滤只看分销订单")
private Boolean justDistribution; private Boolean justDistribution;

View File

@ -198,10 +198,13 @@ public class StoreFlowServiceImpl extends ServiceImpl<StoreFlowMapper, StoreFlow
lambdaQueryWrapper.eq(CharSequenceUtil.isNotEmpty(storeFlowQueryDTO.getRefundSn()), lambdaQueryWrapper.eq(CharSequenceUtil.isNotEmpty(storeFlowQueryDTO.getRefundSn()),
StoreFlow::getRefundSn, storeFlowQueryDTO.getRefundSn()); StoreFlow::getRefundSn, storeFlowQueryDTO.getRefundSn());
//售后编号判定 //订单编号判定
lambdaQueryWrapper.eq(CharSequenceUtil.isNotEmpty(storeFlowQueryDTO.getOrderSn()), lambdaQueryWrapper.eq(CharSequenceUtil.isNotEmpty(storeFlowQueryDTO.getOrderSn()),
StoreFlow::getOrderSn, storeFlowQueryDTO.getOrderSn()); StoreFlow::getOrderSn, storeFlowQueryDTO.getOrderSn());
//订单货物编号
lambdaQueryWrapper.eq(CharSequenceUtil.isNotEmpty(storeFlowQueryDTO.getOrderItemSn()),
StoreFlow::getOrderItemSn, storeFlowQueryDTO.getOrderItemSn());
//结算单非空则校对结算单参数 //结算单非空则校对结算单参数
if (storeFlowQueryDTO.getBill() != null) { if (storeFlowQueryDTO.getBill() != null) {
Bill bill = storeFlowQueryDTO.getBill(); Bill bill = storeFlowQueryDTO.getBill();