订单退款,即刻扣减分销员冻结佣金
This commit is contained in:
parent
25582e2958
commit
39e22f5561
@ -5,9 +5,7 @@ import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.event.AfterSaleStatusChangeEvent;
|
||||
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.mapper.DistributionOrderMapper;
|
||||
import cn.lili.modules.distribution.service.DistributionOrderService;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
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.service.SettingService;
|
||||
import cn.lili.timetask.handler.EveryDayExecute;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
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());
|
||||
//分销人员订单结算
|
||||
distributionOrderService.updateRebate(dateTime,DistributionOrderStatusEnum.WAIT_BILL.name());
|
||||
distributionOrderService.updateRebate(dateTime, DistributionOrderStatusEnum.WAIT_BILL.name());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterSaleStatusChange(AfterSale afterSale) {
|
||||
if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) {
|
||||
distributionOrderService.refundOrder(afterSale.getSn());
|
||||
distributionOrderService.refundOrder(afterSale);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@ package cn.lili.modules.distribution.service;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.lili.modules.distribution.entity.dos.DistributionOrder;
|
||||
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 com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
@ -47,7 +48,7 @@ public interface DistributionOrderService extends IService<DistributionOrder> {
|
||||
*
|
||||
* @param afterSaleSn 售后单号
|
||||
*/
|
||||
void refundOrder(String afterSaleSn);
|
||||
void refundOrder(AfterSale afterSale);
|
||||
|
||||
/**
|
||||
* 分销订单状态修改
|
||||
|
@ -16,6 +16,7 @@ import cn.lili.modules.distribution.entity.vos.DistributionOrderSearchParams;
|
||||
import cn.lili.modules.distribution.mapper.DistributionOrderMapper;
|
||||
import cn.lili.modules.distribution.service.DistributionOrderService;
|
||||
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.OrderItem;
|
||||
import cn.lili.modules.order.order.entity.dos.StoreFlow;
|
||||
@ -189,28 +190,27 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refundOrder(String afterSaleSn) {
|
||||
public void refundOrder(AfterSale afterSale) {
|
||||
//判断是否为分销订单
|
||||
StoreFlow storeFlow = storeFlowService.queryOne(StoreFlowQueryDTO.builder().justDistribution(true).refundSn(afterSaleSn).build());
|
||||
if (storeFlow != null) {
|
||||
|
||||
StoreFlow refundStoreFlow = storeFlowService.queryOne(StoreFlowQueryDTO.builder().justDistribution(true).refundSn(afterSale.getSn()).build());
|
||||
if (refundStoreFlow != null) {
|
||||
//获取收款分销订单
|
||||
DistributionOrder distributionOrder = this.getOne(new LambdaQueryWrapper<DistributionOrder>()
|
||||
.eq(DistributionOrder::getOrderItemSn, storeFlow.getOrderItemSn()));
|
||||
.eq(DistributionOrder::getOrderItemSn, afterSale.getOrderItemSn()));
|
||||
//分销订单不存在,则直接返回
|
||||
if (distributionOrder == null) {
|
||||
return;
|
||||
}
|
||||
if (distributionOrder.getDistributionOrderStatus().equals(DistributionOrderStatusEnum.WAIT_BILL.name())) {
|
||||
this.update(new LambdaUpdateWrapper<DistributionOrder>()
|
||||
.eq(DistributionOrder::getOrderItemSn, storeFlow.getOrderItemSn())
|
||||
.set(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.CANCEL.name()));
|
||||
}
|
||||
//如果已结算则创建退款分销订单
|
||||
else {
|
||||
//修改分销员提成金额
|
||||
distributionService.subCanRebate(CurrencyUtil.sub(0, storeFlow.getDistributionRebate()), distributionOrder.getDistributionId());
|
||||
|
||||
distributionOrder.setSellBackRebate(CurrencyUtil.add(distributionOrder.getSellBackRebate(), refundStoreFlow.getDistributionRebate()));
|
||||
distributionOrder.setRebate(CurrencyUtil.sub(distributionOrder.getSellBackRebate(), refundStoreFlow.getDistributionRebate()));
|
||||
if (distributionOrder.getRebate() == 0) {
|
||||
distributionOrder.setDistributionOrderStatus(DistributionOrderStatusEnum.REFUND.name());
|
||||
}
|
||||
this.updateById(distributionOrder);
|
||||
|
||||
// 修改分销员提成金额
|
||||
distributionService.subCanRebate(CurrencyUtil.sub(0, refundStoreFlow.getDistributionRebate()), distributionOrder.getDistributionId());
|
||||
}
|
||||
}
|
||||
|
||||
@ -310,7 +310,8 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
||||
* @param distributionList 分销列表
|
||||
* @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);
|
||||
|
||||
|
@ -23,9 +23,12 @@ public class StoreFlowQueryDTO {
|
||||
@ApiModelProperty(value = "售后编号")
|
||||
private String refundSn;
|
||||
|
||||
@ApiModelProperty(value = "售后编号")
|
||||
@ApiModelProperty(value = "订单编号")
|
||||
private String orderSn;
|
||||
|
||||
@ApiModelProperty(value = "订单货物编号")
|
||||
private String orderItemSn;
|
||||
|
||||
@ApiModelProperty(value = "过滤只看分销订单")
|
||||
private Boolean justDistribution;
|
||||
|
||||
|
@ -198,10 +198,13 @@ public class StoreFlowServiceImpl extends ServiceImpl<StoreFlowMapper, StoreFlow
|
||||
lambdaQueryWrapper.eq(CharSequenceUtil.isNotEmpty(storeFlowQueryDTO.getRefundSn()),
|
||||
StoreFlow::getRefundSn, storeFlowQueryDTO.getRefundSn());
|
||||
|
||||
//售后编号判定
|
||||
//订单编号判定
|
||||
lambdaQueryWrapper.eq(CharSequenceUtil.isNotEmpty(storeFlowQueryDTO.getOrderSn()),
|
||||
StoreFlow::getOrderSn, storeFlowQueryDTO.getOrderSn());
|
||||
|
||||
//订单货物编号
|
||||
lambdaQueryWrapper.eq(CharSequenceUtil.isNotEmpty(storeFlowQueryDTO.getOrderItemSn()),
|
||||
StoreFlow::getOrderItemSn, storeFlowQueryDTO.getOrderItemSn());
|
||||
//结算单非空,则校对结算单参数
|
||||
if (storeFlowQueryDTO.getBill() != null) {
|
||||
Bill bill = storeFlowQueryDTO.getBill();
|
||||
|
Loading…
x
Reference in New Issue
Block a user