添加:退款后 使用的抵扣积分原路退还(商户积分退商户积分、平台积分退平台积分)
This commit is contained in:
parent
e0ddbe1a48
commit
d05d5af8ca
|
|
@ -806,20 +806,24 @@ class StoreOrderCreateRepository extends StoreOrderRepository
|
|||
// 抵扣需要的积分
|
||||
$productIntegral = (int)ceil(bcdiv($productIntegralPrice, $integralMoney, 3));
|
||||
if ($productIntegral > 0 && ($productIntegral <= $integralInfo['mer_integral'] || $productIntegral <= $integralInfo['convert_integral'])) {
|
||||
// 默认使用商户积分抵扣
|
||||
$integralInfo['mer_integral'] = (float)bcsub($integralInfo['mer_integral'], $productIntegral, 2);
|
||||
$integralInfo['use_integral_type'] = 'mer_integral';
|
||||
// 商户积分不足 使用平台积分抵扣
|
||||
if($integralInfo['mer_integral'] < 0) {
|
||||
// 将商户积分加回来
|
||||
$integralInfo['mer_integral'] = bcadd($integralInfo['mer_integral'], $productIntegral, 2);
|
||||
// 判断:使用的积分类型
|
||||
if($useMerIntegral){
|
||||
// 使用商户积分抵扣
|
||||
$integralInfo['mer_integral'] = (float)bcsub($integralInfo['mer_integral'], $productIntegral, 2);
|
||||
$integralInfo['use_integral_type'] = 'mer_integral';
|
||||
// 判断:积分不足 不使用积分抵扣
|
||||
if($integralInfo['mer_integral'] < 0) continue;
|
||||
}else if($usePlatformIntegral) {
|
||||
// 使用平台积分抵扣
|
||||
$integralInfo['convert_integral'] = bcsub($integralInfo['convert_integral'], $productIntegral, 2);// 减少转换后的积分
|
||||
$productIntegral = bcmul($productIntegral, $integralInfo['convert_rate'],2);// 刷新使用积分(使用平台积分,需要根据比例刷新平台积分减少数量)
|
||||
$integralInfo['integral'] = bcsub($integralInfo['integral'], $productIntegral, 2);// 减少未转化的平台积分
|
||||
$integralInfo['use_integral_type'] = 'platform_integral';
|
||||
// 判断:积分不足 不使用积分抵扣
|
||||
if($integralInfo['convert_integral'] < 0) continue;
|
||||
}
|
||||
|
||||
|
||||
// 使用多少积分抵扣了多少金额
|
||||
$cart['integral'] = [
|
||||
'use' => $productIntegral,
|
||||
|
|
@ -1338,7 +1342,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository
|
|||
'type' => 'deduction',
|
||||
'number' => $order['use_mer_integral'],
|
||||
'balance' => $user->integral,
|
||||
'mark' => '购买商品使用'.$order['use_mer_integral'].'平台积分抵扣'.floatval($order['use_mer_integral_price']).'元',
|
||||
'mark' => '购买商品使用'.$order['use_mer_integral'].'商户积分抵扣'.floatval($order['use_mer_integral_price']).'元',
|
||||
'mer_id' => 0,
|
||||
'status' => 1
|
||||
];
|
||||
|
|
@ -1352,7 +1356,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository
|
|||
'type' => 'deduction',
|
||||
'number' => $order['use_mer_integral'],
|
||||
'balance' => $user->integral,
|
||||
'mark' => '购买商品使用'.$order['use_mer_integral'].'平台积分抵扣'.floatval($order['use_mer_integral_price']).'元',
|
||||
'mark' => '购买商品使用'.$order['use_mer_integral'].'商户积分抵扣'.floatval($order['use_mer_integral_price']).'元',
|
||||
'mer_id' => $order['mer_id'],
|
||||
'status' => 1
|
||||
];
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ use app\common\repositories\BaseRepository;
|
|||
use app\common\repositories\store\product\ProductRepository;
|
||||
use app\common\repositories\system\merchant\FinancialRecordRepository;
|
||||
use app\common\repositories\system\merchant\MerchantRepository;
|
||||
use app\common\repositories\user\IntegralRepository;
|
||||
use app\common\repositories\user\UserBillRepository;
|
||||
use app\common\repositories\user\UserRepository;
|
||||
use crmeb\jobs\SendSmsJob;
|
||||
|
|
@ -29,6 +30,7 @@ use think\db\exception\DbException;
|
|||
use think\db\exception\ModelNotFoundException;
|
||||
use think\exception\ValidateException;
|
||||
use think\facade\Db;
|
||||
use think\facade\Log;
|
||||
use think\facade\Queue;
|
||||
use think\facade\Route;
|
||||
use think\Model;
|
||||
|
|
@ -1315,17 +1317,35 @@ class StoreRefundOrderRepository extends BaseRepository
|
|||
}
|
||||
|
||||
//退回积分
|
||||
// Log::info('订单退款 - 退回积分:'.var_export([
|
||||
// '应退积分' => $refundOrder->integral,
|
||||
// '订单id' => $refundOrder->refund_order_id,
|
||||
// '商户id' => $refundOrder->mer_id,
|
||||
// $refundOrder->order
|
||||
// ],1));
|
||||
if ($refundOrder->integral > 0) {
|
||||
$make = app()->make(UserRepository::class);
|
||||
$make->update($refundOrder->uid, ['integral' => Db::raw('integral+' . $refundOrder->integral)]);
|
||||
$userIntegral = $make->get($refundOrder->uid)->integral;
|
||||
$make1 = app()->make(UserBillRepository::class);
|
||||
// 判断:根据订单抵扣使用积分 退还平台积分或者商户积分
|
||||
if((float)$refundOrder->order->use_mer_integral > 0){
|
||||
// 使用的商户积分
|
||||
app()->make(IntegralRepository::class)->changeIntegral((int)$refundOrder->uid,(int)$refundOrder->mer_id,(float)sprintf('%.2f',$refundOrder->integral));
|
||||
$mark = '订单退款,返还' . intval($refundOrder->integral) . '商户积分';
|
||||
}else{
|
||||
// 使用的平台积分
|
||||
app()->make(IntegralRepository::class)->changeIntegral((int)$refundOrder->uid,(int)0,(float)sprintf('%.2f',$refundOrder->integral));
|
||||
$mark = '订单退款,返还' . intval($refundOrder->integral) . '平台积分';
|
||||
}
|
||||
|
||||
|
||||
$make1->incBill($refundOrder->uid, 'integral', 'refund', [
|
||||
'link_id' => $refundOrder->order_id,
|
||||
'status' => 1,
|
||||
'title' => '订单退款',
|
||||
'number' => $refundOrder->integral,
|
||||
'mark' => '订单退款,返还' . intval($refundOrder->integral) . '积分',
|
||||
'mark' => $mark,
|
||||
'balance' => $userIntegral
|
||||
]);
|
||||
$make1->incBill($refundOrder->uid, 'mer_integral', 'refund', [
|
||||
|
|
@ -1333,7 +1353,7 @@ class StoreRefundOrderRepository extends BaseRepository
|
|||
'status' => 1,
|
||||
'title' => '订单退款',
|
||||
'number' => $refundOrder->integral,
|
||||
'mark' => '订单退款,返还' . intval($refundOrder->integral) . '积分',
|
||||
'mark' => $mark,
|
||||
'balance' => $userIntegral,
|
||||
'mer_id' => $refundOrder->mer_id
|
||||
]);
|
||||
|
|
|
|||
Loading…
Reference in New Issue