From a5b1657c6790a3ebffe89fd2101dead4bfcf7e9a Mon Sep 17 00:00:00 2001 From: wuhui_zzw <1760308791@qq.com> Date: Tue, 2 Jan 2024 10:10:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E8=B4=AD=E4=B9=B0?= =?UTF-8?q?=E5=95=86=E5=93=81=E6=95=B0=E9=87=8F=E4=B8=8D=E4=B8=BA=E4=B8=80?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=95=86=E5=93=81=E4=BD=BF=E7=94=A8=E7=A7=AF?= =?UTF-8?q?=E5=88=86=E8=AE=A1=E7=AE=97=E9=94=99=E8=AF=AF(=E5=A7=8B?= =?UTF-8?q?=E7=BB=88=E5=8F=AA=E6=8A=B5=E6=89=A3=E4=BA=86=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E7=9A=84=E5=95=86=E5=93=81)=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=EF=BC=9A=E8=B4=AD=E4=B9=B0=E7=A7=AF=E5=88=86=E5=95=86?= =?UTF-8?q?=E5=93=81=E6=97=B6=E8=B1=86=E8=B1=86=E7=A7=AF=E5=88=86=E7=9A=84?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/PointsOrderCreateRepository.php | 56 ++++++++++--------- .../order/StoreOrderCreateRepository.php | 55 +++++++++--------- .../LegumesLogRepository.php | 14 ++++- .../platformCommission/GiveWeightValueJob.php | 2 +- .../UseLegumesIntegralJob.php | 8 +-- 5 files changed, 74 insertions(+), 61 deletions(-) diff --git a/app/common/repositories/store/order/PointsOrderCreateRepository.php b/app/common/repositories/store/order/PointsOrderCreateRepository.php index ef272c7..b64c78b 100644 --- a/app/common/repositories/store/order/PointsOrderCreateRepository.php +++ b/app/common/repositories/store/order/PointsOrderCreateRepository.php @@ -5,6 +5,7 @@ namespace app\common\repositories\store\order; use app\common\dao\store\order\StoreOrderDao; use app\common\model\store\platformCommission\LegumesLog; use app\common\repositories\store\coupon\StoreCouponUserRepository; +use app\common\repositories\store\platformCommission\LegumesLogRepository; use app\common\repositories\store\product\ProductAssistSkuRepository; use app\common\repositories\store\product\ProductAttrValueRepository; use app\common\repositories\store\product\ProductGroupSkuRepository; @@ -29,12 +30,16 @@ class PointsOrderCreateRepository $address = $this->validateAddress($user,$addressId); [$merchantCartList,$order_model,$order_extend,$order_type] = $this->validateCartList($cartId,$user,$address); $successData = $this->validateMerchantList($user,$merchantCartList); + // 获取用户可用豆豆积分 + $holdLegumesIntegral = app()->make(LegumesLogRepository::class)->getHoldLegumesIntegral((int)$user->uid); + + return $successData + [ 'key' => $key, 'order_type' => $order_type, 'order_model' => $order_model, 'order_extend' => $order_extend, - 'true_integral' => (int)$user->integral, + 'true_integral' => $holdLegumesIntegral,//(int)$user->integral,// TODO:2024-1-2 可用积分由用户普通积分修改为豆豆积分 'address' => $address, ]; } @@ -152,10 +157,8 @@ class PointsOrderCreateRepository // 判断:当前商户积分是否充足 // $holdMerIntegral = app()->make(IntegralRepository::class)->getMerIntegral((int)$user->uid,(int)$merchantCart['mer_id']);// 用户持有的该商户积分总数 // if($holdMerIntegral < $total_integral) throw new ValidateException("积分不足,剩余{$holdMerIntegral}商户积分"); - $legumesModel = (new LegumesLog())->where('uid', (int)$user->uid)->where('status', 1); - $totalGetIntegral = $legumesModel->sum('get_integral');// 总获取积分 - $totalUseIntegral = $legumesModel->sum('use_integral');// 总已使用积分 - $hold_legumes_integral = (float)sprintf("%.2f",$totalGetIntegral - $totalUseIntegral);// 持有可使用积分 + // 获取用户可用豆豆积分 + $hold_legumes_integral = app()->make(LegumesLogRepository::class)->getHoldLegumesIntegral((int)$user->uid); if($hold_legumes_integral < $total_integral) throw new ValidateException("积分不足,剩余{$hold_legumes_integral}可用积分"); unset($cart); @@ -381,28 +384,29 @@ class PointsOrderCreateRepository 'product_type' => $cart['product_type'] ]; $orderProduct[] = [ - 'order_id' => $_order->order_id, - 'cart_id' => $cart['cart_id'], - 'uid' => $user->uid, - 'product_id' => $cart['product_id'], - 'activity_id' => $cart['source'] >= 2 ? $cart['source_id'] : $cart['product_id'], - 'total_price' => $cart['total_price'], - 'product_price' => $productPrice, - 'extension_one' => 0, - 'extension_two' => 0, - 'postage_price' => 0, - 'svip_discount' => 0, - 'cost' => $cart['cost'], - 'coupon_price' => 0, + 'order_id' => $_order->order_id, + 'cart_id' => $cart['cart_id'], + 'uid' => $user->uid, + 'product_id' => $cart['product_id'], + 'activity_id' => $cart['source'] >= 2 ? $cart['source_id'] : $cart['product_id'], + 'total_price' => $cart['total_price'], + 'product_price' => $productPrice, + 'extension_one' => 0, + 'extension_two' => 0, + 'postage_price' => 0, + 'svip_discount' => 0, + 'cost' => $cart['cost'], + 'coupon_price' => 0, 'platform_coupon_price' => 0, - 'product_sku' => $cart['productAttr']['unique'], - 'product_num' => $cart['cart_num'], - 'refund_num' => $cart['cart_num'], - 'integral_price' => 0, - 'integral' => $cart['integral'] , - 'integral_total' => $cart['integral'] , - 'product_type' => $cart['product_type'], - 'cart_info' => json_encode($order_cart) + 'product_sku' => $cart['productAttr']['unique'], + 'product_num' => $cart['cart_num'], + 'refund_num' => $cart['cart_num'], + 'integral_price' => 0, + 'integral' => $cart['integral'], + 'integral_total' => $cart['integral'], + 'product_type' => $cart['product_type'], + 'cart_info' => json_encode($order_cart), + 'use_legumes_integral' => $cart['integral'], ]; } $userMerchantRepository->getInfo($user->uid, $order['mer_id']); diff --git a/app/common/repositories/store/order/StoreOrderCreateRepository.php b/app/common/repositories/store/order/StoreOrderCreateRepository.php index 5b5f72b..a12fdfd 100644 --- a/app/common/repositories/store/order/StoreOrderCreateRepository.php +++ b/app/common/repositories/store/order/StoreOrderCreateRepository.php @@ -3,6 +3,7 @@ namespace app\common\repositories\store\order; use app\common\model\store\platformCommission\LegumesLog; +use app\common\repositories\store\platformCommission\LegumesLogRepository; use app\common\repositories\system\config\ConfigValueRepository; use app\jobs\store\platformCommission\UseLegumesIntegralJob; use crmeb\jobs\SendSmsJob; @@ -759,10 +760,8 @@ class StoreOrderCreateRepository extends StoreOrderRepository // 豆豆积分相关处理 $order_use_legumes_integral = 0;// 使用的豆豆积分(总) $order_use_legumes_integral_price = 0;// 使用的豆豆积分抵扣的金额 - $legumesModel = (new LegumesLog())->where('uid', (int)$uid)->where('status', 1); - $totalGetIntegral = $legumesModel->sum('get_integral');// 总获取积分 - $totalUseIntegral = $legumesModel->sum('use_integral');// 总已使用积分 - $hold_legumes_integral = (float)sprintf("%.2f",$totalGetIntegral - $totalUseIntegral);// 持有可使用积分 + // 获取用户可用豆豆积分 + $hold_legumes_integral = app()->make(LegumesLogRepository::class)->getHoldLegumesIntegral((int)$uid); foreach ($merchantCartList as &$merchantCart) { // 获取用户在当前店铺的积分 || 平台积分 @@ -819,7 +818,8 @@ class StoreOrderCreateRepository extends StoreOrderRepository if((int)$cart['product']['integral_deduction_type'] == 1) $productIntegralPrice = (float)$cart['product']['integral_deduction_money']; else $productIntegralPrice = (float)min(bcmul(bcmul($this->cartByPrice($cart), $cart['cart_num'], 2), min(bcdiv($cart['product']['integral_rate'], 100, 4), 1), 2), $cart['true_price']); } - + // 实际抵扣金额 * 购买数量 + $productIntegralPrice = bcmul($productIntegralPrice, $cart['cart_num'], 2); // 判断:当前商品是否可以参与积分抵扣 $isParticipation = $merchantCart['order']['true_price'] > 0 && $cart['product_type'] == 0 && $integralFlag && $productIntegralPrice > 0; if($isParticipation) $is_has_integral_use = 1;// 是否存在积分使用情况 只要存在一个则存在 @@ -1516,29 +1516,30 @@ class StoreOrderCreateRepository extends StoreOrderRepository } $orderProduct[] = [ - 'order_id' => $_order->order_id, - 'cart_id' => $cart['cart_id'], - 'uid' => $uid, - 'product_id' => $cart['product_id'], - 'activity_id' => $cart['source'] >= 2 ? $cart['source_id'] : $cart['product_id'], - 'total_price' => $cart['total_price'], - 'product_price' => $productPrice, - 'extension_one' => $extension_one, - 'extension_two' => $extension_two, - 'postage_price' => $cart['postage_price'], - 'svip_discount' => $cart['svip_discount'], - 'cost' => $cart['cost'], - 'coupon_price' => $cart['coupon_price'], + 'order_id' => $_order->order_id, + 'cart_id' => $cart['cart_id'], + 'uid' => $uid, + 'product_id' => $cart['product_id'], + 'activity_id' => $cart['source'] >= 2 ? $cart['source_id'] : $cart['product_id'], + 'total_price' => $cart['total_price'], + 'product_price' => $productPrice, + 'extension_one' => $extension_one, + 'extension_two' => $extension_two, + 'postage_price' => $cart['postage_price'], + 'svip_discount' => $cart['svip_discount'], + 'cost' => $cart['cost'], + 'coupon_price' => $cart['coupon_price'], 'platform_coupon_price' => $cart['platform_coupon_price'], - 'product_sku' => $cart['productAttr']['unique'], - 'product_num' => $cart['cart_num'], - 'refund_num' => $cart['cart_num'], - 'integral_price' => $cart['integral']['price'] ?? 0, - 'integral' => $cart['integral'] ? bcdiv($cart['integral']['use'], $cart['cart_num'], 0) : 0, - 'integral_total' => $cart['integral'] ? $cart['integral']['use'] : 0, - 'product_type' => $cart['product_type'], - 'cart_info' => json_encode($order_cart), - 'refund_switch' => $cart['refund_switch'], + 'product_sku' => $cart['productAttr']['unique'], + 'product_num' => $cart['cart_num'], + 'refund_num' => $cart['cart_num'], + 'integral_price' => $cart['integral']['price'] ?? 0, + 'integral' => $cart['integral'] ? bcdiv($cart['integral']['use'],$cart['cart_num'],0) : 0, + 'integral_total' => $cart['integral'] ? $cart['integral']['use'] : 0, + 'product_type' => $cart['product_type'], + 'cart_info' => json_encode($order_cart), + 'refund_switch' => $cart['refund_switch'], + 'use_legumes_integral' => $cart['integral'] ? $cart['integral']['use'] : 0 ]; } diff --git a/app/common/repositories/store/platformCommission/LegumesLogRepository.php b/app/common/repositories/store/platformCommission/LegumesLogRepository.php index f0263f1..8995def 100644 --- a/app/common/repositories/store/platformCommission/LegumesLogRepository.php +++ b/app/common/repositories/store/platformCommission/LegumesLogRepository.php @@ -79,6 +79,18 @@ class LegumesLogRepository extends BaseRepository{ return $list; } - + /** + * Common: 获取用户可用积分 + * Author: wu-hui + * Time: 2024/01/02 9:57 + * @param $uid + * @return float + */ + public function getHoldLegumesIntegral($uid):float{ + $legumesModel = $this->dao->getSearch([])->where('uid', (int)$uid)->where('status', 1); + $totalGetIntegral = $legumesModel->sum('get_integral');// 总有效积分 + $totalUseIntegral = $legumesModel->sum('use_integral');// 总已使用积分 + return (float)sprintf("%.2f",$totalGetIntegral - $totalUseIntegral);// 持有可使用积分 + } } diff --git a/app/jobs/store/platformCommission/GiveWeightValueJob.php b/app/jobs/store/platformCommission/GiveWeightValueJob.php index 4729be9..341053e 100644 --- a/app/jobs/store/platformCommission/GiveWeightValueJob.php +++ b/app/jobs/store/platformCommission/GiveWeightValueJob.php @@ -27,7 +27,7 @@ class GiveWeightValueJob implements JobInterface{ $userList = app()->make(WeightValueRepository::class)->getUserHoldList($data['uid']); $orderIds = StoreOrder::where('group_order_id',$data['group_order_id'])->column('order_id');// 获取订单id $productList = StoreOrderProduct::whereIn('order_id',$orderIds) - ->field('order_product_id,order_id,product_id,(product_price + integral + integral_price) as product_price') + ->field('order_product_id,order_id,product_id,(product_price + use_legumes_integral) as product_price') ->select() ->toArray();// 获取当前订单中所有商品 $updateData = []; diff --git a/app/jobs/store/platformCommission/UseLegumesIntegralJob.php b/app/jobs/store/platformCommission/UseLegumesIntegralJob.php index 656440a..85afa5d 100644 --- a/app/jobs/store/platformCommission/UseLegumesIntegralJob.php +++ b/app/jobs/store/platformCommission/UseLegumesIntegralJob.php @@ -47,15 +47,11 @@ class UseLegumesIntegralJob implements JobInterface{ // 修改成功信息 if($updateData){ LegumesLog::batchUpdate(array_values($updateData)); + // 获取用户可用豆豆积分 + $hold_legumes_integral = app()->make(LegumesLogRepository::class)->getHoldLegumesIntegral((int)$orderInfo['uid']); // 添加用户账单信息变更记录 - $legumesModel = (new LegumesLog())->where('uid', (int)$orderInfo['uid'])->where('status', 1); - $totalGetIntegral = $legumesModel->sum('get_integral');// 总获取积分 - $totalUseIntegral = $legumesModel->sum('use_integral');// 总已使用积分 - $hold_legumes_integral = (float)sprintf("%.2f",$totalGetIntegral - $totalUseIntegral);// 持有可使用积分 if($orderInfo['order_type'] == 20) $mark = '兑换积分商品消耗'.$orderInfo['use_legumes_integral'].'积分'; else $mark = '购买商品使用'.$orderInfo['use_legumes_integral'].'积分抵扣'.floatval($orderInfo['use_legumes_integral_price']).'元'; - - $bills[] = [ 'uid' => $orderInfo['uid'], 'link_id' => $orderInfo['order_id'],