优化分销
parent
b517325b5f
commit
0918976250
|
|
@ -389,7 +389,7 @@ class AfterSaleService
|
||||||
'reason' => '售后退款',
|
'reason' => '售后退款',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
} elseif (in_array($afterSale->type, [AfterSale::TYPE_CHANGE])) {//换货流程
|
} elseif ($afterSale->isChange()) {//换货流程
|
||||||
$qty = $afterSale->num;
|
$qty = $afterSale->num;
|
||||||
|
|
||||||
if ($qty > $afterSaleProduct->quantity) {
|
if ($qty > $afterSaleProduct->quantity) {
|
||||||
|
|
@ -397,11 +397,49 @@ class AfterSaleService
|
||||||
}
|
}
|
||||||
|
|
||||||
$salesValue = bcmul($afterSaleProduct->sales_value, $qty, 2);
|
$salesValue = bcmul($afterSaleProduct->sales_value, $qty, 2);
|
||||||
|
}
|
||||||
|
|
||||||
$vipDiscountAmount = 0;
|
$afterSale->update([
|
||||||
|
'sales_value' => $salesValue,
|
||||||
|
'state' => AfterSale::STATE_FINISH,
|
||||||
|
'remarks' => $remarks,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$afterSale->logs()->create([
|
||||||
|
'name' => '财务审核',
|
||||||
|
'desc' => $remarks,
|
||||||
|
]);
|
||||||
|
|
||||||
|
// 1.先扣除预收益(可能会将店铺降级为粉丝)
|
||||||
|
// 2.生成分销任务
|
||||||
|
// 3.生成新订单
|
||||||
|
|
||||||
|
if (bccomp($afterSale->sales_value, '0', 2) === 1) {
|
||||||
|
$order->user->userInfo->incrPreGrowthValue(bcmul($afterSale->sales_value, '-1', 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 非赠品售后单,且售后单类型是换货、退款、退款退货
|
||||||
|
if (! $afterSaleProduct->isGift()
|
||||||
|
&& in_array($afterSale->type, [
|
||||||
|
AfterSale::TYPE_REFUND_AND_RETURN,
|
||||||
|
AfterSale::TYPE_REFUND,
|
||||||
|
AfterSale::TYPE_CHANGE,
|
||||||
|
])
|
||||||
|
) {
|
||||||
|
DistributionPreIncomeJob::create([
|
||||||
|
'jobable_id' => $afterSale->id,
|
||||||
|
'jobable_type' => $afterSale->getMorphClass(),
|
||||||
|
'remarks' => $afterSale->isChange() ? '订单换货' : '订单退货',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果是换货单
|
||||||
|
if ($afterSale->isChange()) {
|
||||||
// 如果订单享受了会员折扣,则需计算会员折扣
|
// 如果订单享受了会员折扣,则需计算会员折扣
|
||||||
|
$vipDiscountAmount = 0;
|
||||||
|
|
||||||
if ($afterSaleProduct->vip_discount_amount > 0) {
|
if ($afterSaleProduct->vip_discount_amount > 0) {
|
||||||
$vipDiscountAmount = bcmul(($afterSaleProduct->sell_price-$afterSaleProduct->vip_price), $afterSale->num);
|
$vipDiscountAmount = bcmul(($afterSaleProduct->sell_price - $afterSaleProduct->vip_price), $qty);
|
||||||
}
|
}
|
||||||
|
|
||||||
//复制一个订单(存商品价格,支付价格为0;)
|
//复制一个订单(存商品价格,支付价格为0;)
|
||||||
|
|
@ -414,7 +452,7 @@ class AfterSaleService
|
||||||
$changeOrder->reduced_amount = 0;
|
$changeOrder->reduced_amount = 0;
|
||||||
$changeOrder->shipping_fee = 0;
|
$changeOrder->shipping_fee = 0;
|
||||||
$changeOrder->total_amount = 0;
|
$changeOrder->total_amount = 0;
|
||||||
$changeOrder->sales_value = $salesValue;
|
$changeOrder->sales_value = $afterSale->sales_value;
|
||||||
|
|
||||||
// 收货地址
|
// 收货地址
|
||||||
$changeOrder->consignee_name = $order->consignee_name;
|
$changeOrder->consignee_name = $order->consignee_name;
|
||||||
|
|
@ -454,35 +492,6 @@ class AfterSaleService
|
||||||
'shipping_state' => Order::SHIPPING_STATE_PROCESSING,
|
'shipping_state' => Order::SHIPPING_STATE_PROCESSING,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
$afterSale->logs()->create([
|
|
||||||
'name' => '财务审核',
|
|
||||||
'desc' => $remarks,
|
|
||||||
]);
|
|
||||||
|
|
||||||
$afterSale->update([
|
|
||||||
'sales_value' => $salesValue,
|
|
||||||
'state' => AfterSale::STATE_FINISH,
|
|
||||||
'remarks' => $remarks,
|
|
||||||
]);
|
|
||||||
|
|
||||||
// 非赠品售后单,且售后单类型是换货、退款、退款退货
|
|
||||||
if (! $afterSaleProduct->isGift()
|
|
||||||
&& in_array($afterSale->type, [
|
|
||||||
AfterSale::TYPE_REFUND_AND_RETURN,
|
|
||||||
AfterSale::TYPE_REFUND,
|
|
||||||
AfterSale::TYPE_CHANGE,
|
|
||||||
])
|
|
||||||
) {
|
|
||||||
DistributionPreIncomeJob::create([
|
|
||||||
'jobable_id' => $afterSale->id,
|
|
||||||
'jobable_type' => $afterSale->getMorphClass(),
|
|
||||||
'remarks' => $afterSale->isChange() ? '订单换货' : '订单退货',
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bccomp($afterSale->sales_value, '0', 2) === 1) {
|
|
||||||
$order->user->userInfo->incrPreGrowthValue(bcmul($afterSale->sales_value, '-1', 2));
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
throw new BizException('该售后订单状态异常');
|
throw new BizException('该售后订单状态异常');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -230,26 +230,26 @@ class DistributionPreIncomeJobService
|
||||||
// 下单用户信息
|
// 下单用户信息
|
||||||
$user = $order->user->userInfo;
|
$user = $order->user->userInfo;
|
||||||
// 总销售值
|
// 总销售值
|
||||||
$totalSalesValue = 0;
|
$totalSalesValue = $order->sales_value;
|
||||||
// 总差价
|
// 总差价
|
||||||
$totalDiffPrice = 0;
|
$totalDiffPrice = 0;
|
||||||
|
|
||||||
foreach ($order->products as $product) {
|
if ($order->vip_discount_count === 0) {
|
||||||
// 赠品不算成长值和差价
|
foreach ($order->products as $product) {
|
||||||
if ($product->isGift()) {
|
// 赠品不算成长值和差价
|
||||||
continue;
|
if ($product->isGift()) {
|
||||||
}
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// 如果订单商品有会员价,并且没有会员折扣时,才计算总差价
|
// 如果订单商品有会员价,并且没有会员折扣时,才计算总差价
|
||||||
if (! is_null($product->vip_price) && $product->vip_discount_amount === 0) {
|
if (! is_null($product->vip_price) && $product->vip_discount_amount === 0) {
|
||||||
$diffPrice = $product->sell_price - $product->vip_price;
|
$diffPrice = $product->sell_price - $product->vip_price;
|
||||||
|
|
||||||
if ($diffPrice > 0) {
|
if ($diffPrice > 0) {
|
||||||
$totalDiffPrice = bcadd($totalDiffPrice, bcmul(bcdiv($diffPrice, '100'), $product->quantity));
|
$totalDiffPrice = bcadd($totalDiffPrice, bcmul(bcdiv($diffPrice, '100'), $product->quantity));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$totalSalesValue = bcadd($totalSalesValue, bcmul($product->sales_value, $product->quantity));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 分销配置
|
// 分销配置
|
||||||
|
|
@ -423,6 +423,8 @@ class DistributionPreIncomeJobService
|
||||||
|
|
||||||
$lastAgent = $agent;
|
$lastAgent = $agent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$user->incrPreGrowthValue($totalSalesValue, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
DistributionPreIncomeLog::insert($preIncomeLogs);
|
DistributionPreIncomeLog::insert($preIncomeLogs);
|
||||||
|
|
|
||||||
|
|
@ -89,9 +89,6 @@ class PayService
|
||||||
'status' => Order::STATUS_PAID,
|
'status' => Order::STATUS_PAID,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// 增加用户的预成长值
|
|
||||||
$payable->user->userInfo->incrPreGrowthValue($payable->sales_value, false);
|
|
||||||
|
|
||||||
DistributionPreIncomeJob::create([
|
DistributionPreIncomeJob::create([
|
||||||
'jobable_id' => $payable->id,
|
'jobable_id' => $payable->id,
|
||||||
'jobable_type' => $payable->getMorphClass(),
|
'jobable_type' => $payable->getMorphClass(),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue