解决分销佣金冻结错误
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")
|
@ApiImplicitParam(name = "price", value = "申请金额", required = true, paramType = "query", dataType = "double")
|
||||||
})
|
})
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public ResultMessage<Object> cash(@Max(value = 1000, message = "充值金额单次最多允许提现1000元")
|
public ResultMessage<Object> cash(@Max(value = 1000, message = "提现金额单次最多允许提现1000元")
|
||||||
@Min(value = 1, message = "充值金额单次最少提现金额为1元")
|
@Min(value = 1, message = "提现金额单次最少提现金额为1元")
|
||||||
@NotNull @ApiIgnore Double price) {
|
@NotNull @ApiIgnore Double price) {
|
||||||
if (distributionCashService.cash(price)) {
|
if (distributionCashService.cash(price)) {
|
||||||
return ResultUtil.success();
|
return ResultUtil.success();
|
||||||
|
@ -67,6 +67,7 @@ public class DistributionOrderExecute implements OrderStatusChangeEvent, EveryDa
|
|||||||
.eq(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.WAIT_BILL.name())
|
.eq(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.WAIT_BILL.name())
|
||||||
.le(DistributionOrder::getSettleCycle, new DateTime())
|
.le(DistributionOrder::getSettleCycle, new DateTime())
|
||||||
.set(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.WAIT_CASH.name()));
|
.set(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.WAIT_CASH.name()));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -16,18 +16,19 @@ public interface DistributionMapper extends BaseMapper<Distribution> {
|
|||||||
/**
|
/**
|
||||||
* 修改分销员可提现金额
|
* 修改分销员可提现金额
|
||||||
*
|
*
|
||||||
* @param canRebate 提现金额
|
* @param commissionFrozen 分销金额
|
||||||
* @param distributionId 分销员ID
|
* @param distributionId 分销员ID
|
||||||
*/
|
*/
|
||||||
@Update("UPDATE li_distribution set can_rebate = can_rebate+#{canRebate} WHERE id = #{distributionId}")
|
@Update("UPDATE li_distribution set commission_frozen = (commission_frozen+#{commissionFrozen}) , rebate_total=(rebate_total+#{commissionFrozen}) WHERE id = #{distributionId}")
|
||||||
void subCanRebate(Double canRebate, String distributionId);
|
void subCanRebate(Double commissionFrozen, String distributionId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加可提现金额
|
* 添加分销金额
|
||||||
*
|
*
|
||||||
* @param canRebate 提现金额
|
* @param commissionFrozen 分销金额
|
||||||
* @param distributionId 分销员ID
|
* @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}")
|
@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 canRebate, String distributionId);
|
void addCanRebate(Double commissionFrozen, String distributionId);
|
||||||
|
|
||||||
}
|
}
|
@ -20,7 +20,9 @@ public interface DistributionOrderMapper extends BaseMapper<DistributionOrder> {
|
|||||||
* @param settleCycle 时间
|
* @param settleCycle 时间
|
||||||
*/
|
*/
|
||||||
@Update("UPDATE li_distribution AS d " +
|
@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);
|
void rebate(String distributionOrderStatus, DateTime settleCycle);
|
||||||
|
|
||||||
}
|
}
|
@ -73,7 +73,6 @@ public class DistributionCashServiceImpl extends ServiceImpl<DistributionCashMap
|
|||||||
}
|
}
|
||||||
//将提现金额存入冻结金额,扣减可提现金额
|
//将提现金额存入冻结金额,扣减可提现金额
|
||||||
distribution.setCanRebate(CurrencyUtil.sub(distribution.getCanRebate(), applyMoney));
|
distribution.setCanRebate(CurrencyUtil.sub(distribution.getCanRebate(), applyMoney));
|
||||||
distribution.setCommissionFrozen(CurrencyUtil.add(distribution.getCommissionFrozen(), applyMoney));
|
|
||||||
distributionService.updateById(distribution);
|
distributionService.updateById(distribution);
|
||||||
//提现申请记录
|
//提现申请记录
|
||||||
DistributionCash distributionCash = new DistributionCash("D" + SnowFlake.getId(), distribution.getId(), applyMoney, distribution.getMemberName());
|
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())) {
|
if (result.equals(WithdrawStatusEnum.VIA_AUDITING.name())) {
|
||||||
memberWithdrawalMessage.setStatus(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.setDistributionCashStatus(WithdrawStatusEnum.VIA_AUDITING.name());
|
||||||
distributorCash.setPayTime(new Date());
|
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());
|
memberWalletService.increase(distributorCash.getPrice(), distribution.getMemberId(), "分销[" + distributorCash.getSn() + "]佣金提现到余额[" + distributorCash.getPrice() + "]", DepositServiceTypeEnum.WALLET_COMMISSION.name());
|
||||||
} else {
|
} else {
|
||||||
memberWithdrawalMessage.setStatus(WithdrawStatusEnum.FAIL_AUDITING.name());
|
memberWithdrawalMessage.setStatus(WithdrawStatusEnum.FAIL_AUDITING.name());
|
||||||
//分销员佣金解冻
|
|
||||||
distribution.setCommissionFrozen(CurrencyUtil.sub(distribution.getCommissionFrozen(), distributorCash.getPrice()));
|
|
||||||
//分销员可提现金额退回
|
//分销员可提现金额退回
|
||||||
distribution.setCanRebate(CurrencyUtil.add(distribution.getCanRebate(), distributorCash.getPrice()));
|
distribution.setCanRebate(CurrencyUtil.add(distribution.getCanRebate(), distributorCash.getPrice()));
|
||||||
distributorCash.setDistributionCashStatus(WithdrawStatusEnum.FAIL_AUDITING.name());
|
distributorCash.setDistributionCashStatus(WithdrawStatusEnum.FAIL_AUDITING.name());
|
||||||
|
@ -72,7 +72,7 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
|||||||
/**
|
/**
|
||||||
* 1.查看订单是否为分销订单
|
* 1.查看订单是否为分销订单
|
||||||
* 2.查看店铺流水计算分销总佣金
|
* 2.查看店铺流水计算分销总佣金
|
||||||
* 3.修改分销员的分销总金额、可提现金额
|
* 3.修改分销员的分销总金额、冻结金额
|
||||||
*
|
*
|
||||||
* @param orderSn 订单编号
|
* @param orderSn 订单编号
|
||||||
*/
|
*/
|
||||||
@ -102,15 +102,36 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
|||||||
//设置结算天数(解冻日期)
|
//设置结算天数(解冻日期)
|
||||||
Setting setting = settingService.get(SettingEnum.DISTRIBUTION_SETTING.name());
|
Setting setting = settingService.get(SettingEnum.DISTRIBUTION_SETTING.name());
|
||||||
DistributionSetting distributionSetting = JSONUtil.toBean(setting.getSettingValue(), DistributionSetting.class);
|
DistributionSetting distributionSetting = JSONUtil.toBean(setting.getSettingValue(), DistributionSetting.class);
|
||||||
DateTime dateTime = new DateTime();
|
|
||||||
//默认解冻1天
|
//默认解冻1天
|
||||||
|
if (distributionSetting.getCashDay().equals(0)) {
|
||||||
|
distributionOrder.setSettleCycle(new DateTime());
|
||||||
|
} else {
|
||||||
|
DateTime dateTime = new DateTime();
|
||||||
dateTime.offsetNew(DateField.DAY_OF_MONTH, distributionSetting.getCashDay());
|
dateTime.offsetNew(DateField.DAY_OF_MONTH, distributionSetting.getCashDay());
|
||||||
distributionOrder.setSettleCycle(dateTime);
|
distributionOrder.setSettleCycle(dateTime);
|
||||||
this.save(distributionOrder);
|
|
||||||
}
|
}
|
||||||
//如果包含分销商品则记录会员的分销总额
|
|
||||||
|
//添加分销订单
|
||||||
|
this.save(distributionOrder);
|
||||||
|
|
||||||
|
//记录会员的分销总额
|
||||||
if (rebate != 0.0) {
|
if (rebate != 0.0) {
|
||||||
distributionService.addRebate(rebate, order.getDistributionId());
|
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) {
|
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