解决分销佣金冻结错误
This commit is contained in:
parent
d8155b2c15
commit
100d5d3317
@ -52,8 +52,8 @@ public class DistributionCashBuyerController {
|
||||
@ApiImplicitParam(name = "price", value = "申请金额", required = true, paramType = "query", dataType = "double")
|
||||
})
|
||||
@PostMapping
|
||||
public ResultMessage<Object> cash(@Max(value = 1000, message = "充值金额单次最多允许提现1000元")
|
||||
@Min(value = 1, message = "充值金额单次最少提现金额为1元")
|
||||
public ResultMessage<Object> cash(@Max(value = 1000, message = "提现金额单次最多允许提现1000元")
|
||||
@Min(value = 1, message = "提现金额单次最少提现金额为1元")
|
||||
@NotNull @ApiIgnore Double price) {
|
||||
if (distributionCashService.cash(price)) {
|
||||
return ResultUtil.success();
|
||||
|
@ -67,6 +67,7 @@ public class DistributionOrderExecute implements OrderStatusChangeEvent, EveryDa
|
||||
.eq(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.WAIT_BILL.name())
|
||||
.le(DistributionOrder::getSettleCycle, new DateTime())
|
||||
.set(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.WAIT_CASH.name()));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -45,7 +45,7 @@ public class DistributionOrder {
|
||||
|
||||
@CreatedDate
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@ApiModelProperty(value = "创建时间", hidden = true)
|
||||
private Date createTime;
|
||||
@ -91,21 +91,21 @@ public class DistributionOrder {
|
||||
@ApiModelProperty(value = "商品数量")
|
||||
private Integer num;
|
||||
|
||||
public DistributionOrder(StoreFlow storeFlow){
|
||||
distributionOrderStatus=DistributionOrderStatusEnum.WAIT_BILL.name();
|
||||
memberId=storeFlow.getMemberId();
|
||||
memberName=storeFlow.getMemberName();
|
||||
rebate=storeFlow.getDistributionRebate();
|
||||
storeId=storeFlow.getStoreId();
|
||||
storeName=storeFlow.getStoreName();
|
||||
orderSn=storeFlow.getOrderSn();
|
||||
orderItemSn=storeFlow.getOrderItemSn();
|
||||
goodsId=storeFlow.getGoodsId();
|
||||
goodsName=storeFlow.getGoodsName();
|
||||
skuId=storeFlow.getSkuId();
|
||||
specs=storeFlow.getSpecs();
|
||||
image=storeFlow.getImage();
|
||||
num= storeFlow.getNum();
|
||||
public DistributionOrder(StoreFlow storeFlow) {
|
||||
distributionOrderStatus = DistributionOrderStatusEnum.WAIT_BILL.name();
|
||||
memberId = storeFlow.getMemberId();
|
||||
memberName = storeFlow.getMemberName();
|
||||
rebate = storeFlow.getDistributionRebate();
|
||||
storeId = storeFlow.getStoreId();
|
||||
storeName = storeFlow.getStoreName();
|
||||
orderSn = storeFlow.getOrderSn();
|
||||
orderItemSn = storeFlow.getOrderItemSn();
|
||||
goodsId = storeFlow.getGoodsId();
|
||||
goodsName = storeFlow.getGoodsName();
|
||||
skuId = storeFlow.getSkuId();
|
||||
specs = storeFlow.getSpecs();
|
||||
image = storeFlow.getImage();
|
||||
num = storeFlow.getNum();
|
||||
}
|
||||
|
||||
}
|
@ -16,18 +16,19 @@ public interface DistributionMapper extends BaseMapper<Distribution> {
|
||||
/**
|
||||
* 修改分销员可提现金额
|
||||
*
|
||||
* @param canRebate 提现金额
|
||||
* @param commissionFrozen 分销金额
|
||||
* @param distributionId 分销员ID
|
||||
*/
|
||||
@Update("UPDATE li_distribution set can_rebate = can_rebate+#{canRebate} WHERE id = #{distributionId}")
|
||||
void subCanRebate(Double canRebate, String distributionId);
|
||||
@Update("UPDATE li_distribution set commission_frozen = (commission_frozen+#{commissionFrozen}) , rebate_total=(rebate_total+#{commissionFrozen}) WHERE id = #{distributionId}")
|
||||
void subCanRebate(Double commissionFrozen, String distributionId);
|
||||
|
||||
/**
|
||||
* 添加可提现金额
|
||||
* 添加分销金额
|
||||
*
|
||||
* @param canRebate 提现金额
|
||||
* @param commissionFrozen 分销金额
|
||||
* @param distributionId 分销员ID
|
||||
*/
|
||||
@Update("UPDATE li_distribution set can_rebate = (can_rebate+#{canRebate}) , rebate_total=(rebate_total+#{canRebate}) , distribution_order_count=(distribution_order_count+1) WHERE id = #{distributionId}")
|
||||
void addCanRebate(Double canRebate, String distributionId);
|
||||
@Update("UPDATE li_distribution set commission_frozen = (commission_frozen+#{commissionFrozen}) , rebate_total=(rebate_total+#{commissionFrozen}) , distribution_order_count=(distribution_order_count+1) WHERE id = #{distributionId}")
|
||||
void addCanRebate(Double commissionFrozen, String distributionId);
|
||||
|
||||
}
|
@ -20,7 +20,9 @@ public interface DistributionOrderMapper extends BaseMapper<DistributionOrder> {
|
||||
* @param settleCycle 时间
|
||||
*/
|
||||
@Update("UPDATE li_distribution AS d " +
|
||||
"SET d.can_rebate =(d.can_rebate +(SELECT SUM( dorder.rebate ) FROM li_distribution_order AS dorder WHERE dorder.distribution_id = d.id AND dorder.distribution_order_status=#{distributionOrderStatus} AND dorder.settle_cycle< #{settleCycle} ))")
|
||||
"SET d.can_rebate =(d.can_rebate +(SELECT SUM( dorder.rebate ) " +
|
||||
"SET d.commission_frozen =(d.commission_frozen -(SELECT SUM( dorder.rebate ) " +
|
||||
"FROM li_distribution_order AS dorder WHERE dorder.distribution_id = d.id AND dorder.distribution_order_status=#{distributionOrderStatus} AND dorder.settle_cycle< #{settleCycle} ))")
|
||||
void rebate(String distributionOrderStatus, DateTime settleCycle);
|
||||
|
||||
}
|
@ -73,7 +73,6 @@ public class DistributionCashServiceImpl extends ServiceImpl<DistributionCashMap
|
||||
}
|
||||
//将提现金额存入冻结金额,扣减可提现金额
|
||||
distribution.setCanRebate(CurrencyUtil.sub(distribution.getCanRebate(), applyMoney));
|
||||
distribution.setCommissionFrozen(CurrencyUtil.add(distribution.getCommissionFrozen(), applyMoney));
|
||||
distributionService.updateById(distribution);
|
||||
//提现申请记录
|
||||
DistributionCash distributionCash = new DistributionCash("D" + SnowFlake.getId(), distribution.getId(), applyMoney, distribution.getMemberName());
|
||||
@ -127,12 +126,6 @@ public class DistributionCashServiceImpl extends ServiceImpl<DistributionCashMap
|
||||
//审核通过
|
||||
if (result.equals(WithdrawStatusEnum.VIA_AUDITING.name())) {
|
||||
memberWithdrawalMessage.setStatus(WithdrawStatusEnum.VIA_AUDITING.name());
|
||||
//审核通过需要校验冻结金额不足情况
|
||||
if (distribution.getCommissionFrozen() < distributorCash.getPrice()) {
|
||||
throw new ServiceException(ResultCode.WALLET_WITHDRAWAL_INSUFFICIENT);
|
||||
}
|
||||
//分销员佣金解冻
|
||||
distribution.setCommissionFrozen(CurrencyUtil.sub(distribution.getCommissionFrozen(), distributorCash.getPrice()));
|
||||
//分销记录操作
|
||||
distributorCash.setDistributionCashStatus(WithdrawStatusEnum.VIA_AUDITING.name());
|
||||
distributorCash.setPayTime(new Date());
|
||||
@ -140,8 +133,6 @@ public class DistributionCashServiceImpl extends ServiceImpl<DistributionCashMap
|
||||
memberWalletService.increase(distributorCash.getPrice(), distribution.getMemberId(), "分销[" + distributorCash.getSn() + "]佣金提现到余额[" + distributorCash.getPrice() + "]", DepositServiceTypeEnum.WALLET_COMMISSION.name());
|
||||
} else {
|
||||
memberWithdrawalMessage.setStatus(WithdrawStatusEnum.FAIL_AUDITING.name());
|
||||
//分销员佣金解冻
|
||||
distribution.setCommissionFrozen(CurrencyUtil.sub(distribution.getCommissionFrozen(), distributorCash.getPrice()));
|
||||
//分销员可提现金额退回
|
||||
distribution.setCanRebate(CurrencyUtil.add(distribution.getCanRebate(), distributorCash.getPrice()));
|
||||
distributorCash.setDistributionCashStatus(WithdrawStatusEnum.FAIL_AUDITING.name());
|
||||
|
@ -72,7 +72,7 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
||||
/**
|
||||
* 1.查看订单是否为分销订单
|
||||
* 2.查看店铺流水计算分销总佣金
|
||||
* 3.修改分销员的分销总金额、可提现金额
|
||||
* 3.修改分销员的分销总金额、冻结金额
|
||||
*
|
||||
* @param orderSn 订单编号
|
||||
*/
|
||||
@ -102,15 +102,36 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
||||
//设置结算天数(解冻日期)
|
||||
Setting setting = settingService.get(SettingEnum.DISTRIBUTION_SETTING.name());
|
||||
DistributionSetting distributionSetting = JSONUtil.toBean(setting.getSettingValue(), DistributionSetting.class);
|
||||
DateTime dateTime = new DateTime();
|
||||
//默认解冻1天
|
||||
dateTime.offsetNew(DateField.DAY_OF_MONTH, distributionSetting.getCashDay());
|
||||
distributionOrder.setSettleCycle(dateTime);
|
||||
if (distributionSetting.getCashDay().equals(0)) {
|
||||
distributionOrder.setSettleCycle(new DateTime());
|
||||
} else {
|
||||
DateTime dateTime = new DateTime();
|
||||
dateTime.offsetNew(DateField.DAY_OF_MONTH, distributionSetting.getCashDay());
|
||||
distributionOrder.setSettleCycle(dateTime);
|
||||
}
|
||||
|
||||
//添加分销订单
|
||||
this.save(distributionOrder);
|
||||
}
|
||||
//如果包含分销商品则记录会员的分销总额
|
||||
if (rebate != 0.0) {
|
||||
distributionService.addRebate(rebate, order.getDistributionId());
|
||||
|
||||
//记录会员的分销总额
|
||||
if (rebate != 0.0) {
|
||||
distributionService.addRebate(rebate, order.getDistributionId());
|
||||
|
||||
//如果天数写0则立即进行结算
|
||||
if (distributionSetting.getCashDay().equals(0)) {
|
||||
//计算分销提佣
|
||||
this.baseMapper.rebate(DistributionOrderStatusEnum.WAIT_BILL.name(), new DateTime());
|
||||
|
||||
//修改分销订单状态
|
||||
this.update(new LambdaUpdateWrapper<DistributionOrder>()
|
||||
.eq(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.WAIT_BILL.name())
|
||||
.le(DistributionOrder::getSettleCycle, new DateTime())
|
||||
.set(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.WAIT_CASH.name()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -145,7 +166,7 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
||||
|
||||
//如果包含分销商品则记录会员的分销总额
|
||||
if (rebate != 0.0) {
|
||||
distributionService.addRebate(CurrencyUtil.sub(0, rebate), order.getDistributionId());
|
||||
distributionService.subCanRebate(CurrencyUtil.sub(0, rebate), order.getDistributionId());
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user