From d05d5af8ca4653da834f6fbb8f30f9c8b942997a Mon Sep 17 00:00:00 2001 From: wuhui_zzw <1760308791@qq.com> Date: Mon, 13 Nov 2023 16:26:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=EF=BC=9A=E9=80=80=E6=AC=BE?= =?UTF-8?q?=E5=90=8E=20=E4=BD=BF=E7=94=A8=E7=9A=84=E6=8A=B5=E6=89=A3?= =?UTF-8?q?=E7=A7=AF=E5=88=86=E5=8E=9F=E8=B7=AF=E9=80=80=E8=BF=98(?= =?UTF-8?q?=E5=95=86=E6=88=B7=E7=A7=AF=E5=88=86=E9=80=80=E5=95=86=E6=88=B7?= =?UTF-8?q?=E7=A7=AF=E5=88=86=E3=80=81=E5=B9=B3=E5=8F=B0=E7=A7=AF=E5=88=86?= =?UTF-8?q?=E9=80=80=E5=B9=B3=E5=8F=B0=E7=A7=AF=E5=88=86)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/StoreOrderCreateRepository.php | 22 ++++++++++------- .../order/StoreRefundOrderRepository.php | 24 +++++++++++++++++-- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/app/common/repositories/store/order/StoreOrderCreateRepository.php b/app/common/repositories/store/order/StoreOrderCreateRepository.php index 5858bb0..3a26509 100644 --- a/app/common/repositories/store/order/StoreOrderCreateRepository.php +++ b/app/common/repositories/store/order/StoreOrderCreateRepository.php @@ -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 ]; diff --git a/app/common/repositories/store/order/StoreRefundOrderRepository.php b/app/common/repositories/store/order/StoreRefundOrderRepository.php index 37fdcef..d43eabf 100644 --- a/app/common/repositories/store/order/StoreRefundOrderRepository.php +++ b/app/common/repositories/store/order/StoreRefundOrderRepository.php @@ -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 ]);