From 04102f7237efefa744090ed7c25f7b5d0807b679 Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Thu, 05 Feb 2026 18:11:57 +0800
Subject: [PATCH] 完成运营中心提现和运营中心权限管理

---
 admin/app/api/service/order/settled/OrderSettledService.php |   48 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 35 insertions(+), 13 deletions(-)

diff --git a/admin/app/api/service/order/settled/OrderSettledService.php b/admin/app/api/service/order/settled/OrderSettledService.php
index 2abfee4..40cdde3 100644
--- a/admin/app/api/service/order/settled/OrderSettledService.php
+++ b/admin/app/api/service/order/settled/OrderSettledService.php
@@ -12,6 +12,7 @@
 use app\common\enum\order\OrderPayTypeEnum;
 use app\common\enum\order\OrderSourceEnum;
 use app\common\enum\order\OrderTypeEnum;
+use app\common\enum\supplier\SupplierType;
 use app\common\model\settings\Setting as SettingModel;
 use app\api\service\coupon\ProductDeductService;
 use app\common\model\store\Store as StoreModel;
@@ -112,7 +113,7 @@
             // 设置订单商品总金额(不含优惠折扣)
             $this->setOrderTotalPrice($supplier['productList']);
             $orderTotalPrice += $this->orderData['order_total_price'];
-            // 设置订单商品总结算金额(不含优惠折扣)
+            // 设置订单商品总结算金额
             $this->setOrderSettlementPrice($supplier['productList']);
             $settlementPrice += $this->orderData['settlement_price'];
             // 先计算商品满减
@@ -146,7 +147,7 @@
                 $this->setOrderCouponMoney($couponList, $this->orderData['coupon_id'], $supplier['productList']);
             }
             // 计算可用积分抵扣
-            $this->setOrderPoints($supplier['productList']);
+            $this->setOrderPoints($supplier['productList'],$supplier['supplier']);
             $totalPointsMoney += $this->orderData['points_money'];
             $totalPoints += $this->orderData['points_num'];
             // 计算可用消费券抵扣
@@ -179,7 +180,7 @@
                 }
                 $this->orderData['store_id'] = $this->params['supplier'][$supplier['shop_supplier_id']]['store_id'];
             }
-		 
+
             // 处理配送方式
             if ($this->orderData['delivery'] == DeliveryTypeEnum::EXPRESS) {
                 $this->setOrderExpress($supplier['productList']);
@@ -342,7 +343,7 @@
     private function setOrderSettlementPrice($productList)
     {
         // 订单商品的总金额(不含优惠券折扣)
-        $this->orderData['settlement_price'] = helper::number2(helper::getArrayColumnSum($productList, 'settlement_price'));
+        $this->orderData['settlement_price'] = helper::number2(helper::getArrayColumnSum($productList, 'total_settlement_price'));
     }
 
     /**
@@ -624,14 +625,14 @@
         // 积分兑换扣除用户积分
         if ($commomOrder['force_points']) {
             $describe = "用户积分兑换消费:{$this->model['order_no']}";
-            $this->user->setIncPoints(-$commomOrder['points_num'], $describe);
+            $this->user->setIncPoints(-$commomOrder['points_num'], $describe,0,true,($supplier['supplier']['supplier_type'] == SupplierType::GROUPBUYING?1:0));
         } else {
             // 积分抵扣情况下扣除用户积分
             if ($commomOrder['is_allow_points'] && $commomOrder['is_real_use_points'] && $commomOrder['points_num'] > 0) {
                 $describe = "用户消费:{$this->model['order_no']}";
-                $this->user->setIncPoints(-$commomOrder['points_num'], $describe);
+                $this->user->setIncPoints(-$commomOrder['points_num'], $describe,0,true,($supplier['supplier']['supplier_type'] == SupplierType::GROUPBUYING?1:0));
             }
-            // 积分抵扣情况下扣除用户积分
+            // 消费券抵扣情况下扣除用户消费券
             if ($commomOrder['is_allow_consumption'] && $commomOrder['is_real_use_consumption'] && $commomOrder['consumption_num'] > 0) {
                 $describe = "用户消费:{$this->model['order_no']}";
                 $this->user->setIncConsumption(-$commomOrder['consumption_num'], $describe);
@@ -763,6 +764,12 @@
         // 订单商品列表
         $productList = [];
         foreach ($supplier['productList'] as $product) {
+            $product_type = 0;
+            if ($product['is_brand'] == 1) {
+                $product_type = 10;
+            }else if ($supplier['supplier']['supplier_type'] == SupplierType::GROUPBUYING) {
+                $product_type = 20;
+            }
             $item = [
                 'order_id' => $status,
                 'user_id' => $this->user['user_id'],
@@ -772,6 +779,8 @@
                 'image_id' => $product['image'][0]['image_id'],
                 'deduct_stock_type' => $product['deduct_stock_type'],
                 'spec_type' => $product['spec_type'],
+                'open_coupon' => $product['open_coupon'],
+                'open_coupons' => $product['open_coupons'],
                 'spec_sku_id' => $product['product_sku']['spec_sku_id'],
                 'product_sku_id' => $product['product_sku']['product_sku_id'],
                 'product_attr' => $product['product_sku']['product_attr'],
@@ -794,6 +803,7 @@
                 'consumption_bonus' => isset($product['consumption_bonus'])?$product['consumption_bonus']:0,
                 'total_num' => $product['total_num'],
                 'total_price' => $product['total_price'],
+                'total_settlement_price' => $product['total_settlement_price'],
                 'total_pay_price' => $product['total_pay_price'],
                 'supplier_money' => $product['supplier_money'],
                 'is_agent' => $product['is_agent'],
@@ -818,6 +828,12 @@
                 'is_viewpoint_money' => $product['is_viewpoint_money'],
                 'viewpoint_money' => $product['viewpoint_money'],
                 'deduction_price' => empty($product['deduction_price']) ? 0 : $product['deduction_price'],//券商品的抵扣金额 by yj 2024.1.10
+                'product_type' => $product_type,
+                'is_activation_code' => $product['is_activation_code'],
+                'activation_code_num' => $product['product_sku']['activation_code_num'],
+                'activation_code_exchange' => $product['activation_code_exchange'],
+                'is_gift_pack' => $product['is_gift_pack'],
+                'vip_order_num' => $product['vip_order_num'],
             ];
             // 记录订单商品来源id
             $item['product_source_id'] = isset($product['product_source_id']) ? $product['product_source_id'] : 0;
@@ -837,13 +853,16 @@
     /**
      * 计算订单可用积分抵扣
      */
-    private function setOrderPoints($productList)
+    private function setOrderPoints($productList,$supplier)
     {
         $this->orderData['points_money'] = 0;
         // 积分抵扣总数量
         $this->orderData['points_num'] = 0;
         // 允许积分抵扣
         $this->orderData['is_allow_points'] = false;
+
+        // 只有团购类商品允许使用品牌积分
+        $points=$supplier['supplier_type']==SupplierType::GROUPBUYING?$this->user['points']:$this->user['points']-$this->user['brand_points'];
         // 积分商城兑换
         if (isset($this->settledRule['force_points']) && $this->settledRule['force_points']) {
             // 积分抵扣金额,商品价格-兑换金额
@@ -852,7 +871,7 @@
             $this->orderData['points_num'] = $productList[0]['points_num'];
             // 允许积分抵扣
             $this->orderData['is_allow_points'] = true;
-            if ($this->user['points'] < $productList[0]['points_num']) {
+            if ($points < $productList[0]['points_num']) {
                 $this->error = '积分不足,去多赚点积分吧!';
                 return false;
             }
@@ -873,7 +892,7 @@
         // 订单最多可抵扣的积分总数量
         $maxPointsNumCount = helper::getArrayColumnSum($productList, 'max_points_num');
         // 实际可抵扣的积分数量
-        $actualPointsNum = min($maxPointsNumCount, $this->user['points']);
+        $actualPointsNum = min($maxPointsNumCount, $points);
         if ($actualPointsNum < 1) {
             $this->orderData['points_money'] = 0;
             // 积分抵扣总数量
@@ -908,7 +927,7 @@
                 $product['max_points_num'] = $product['points_num'];
             } else {
                 // 商品不允许积分抵扣
-                if (!$product['is_points_discount']) continue;
+                if (!$product['is_points_discount']||$product['is_vip']||$product['is_newcomer']||$product['is_repurchase']) continue;
                 // 积分抵扣比例
                 $deductionRatio = helper::bcdiv($setting['discount']['max_money_ratio'], 100);
                 // 最多可抵扣的金额
@@ -1153,8 +1172,11 @@
         $service = new FullDeductService;
         $completed = $service->setProductFullreduceMoney($productListTemp, $reduce['reduced_price']);
         // 分配订单商品优惠券抵扣金额
-        foreach ($productList as $key => &$product) {
-            $product['fullreduce_money'] = $completed[$key]['fullreduce_money'] / 100;
+        if ($completed){
+            // 分配订单商品优惠券抵扣金额
+            foreach ($productList as $key => &$product) {
+                $product['fullreduce_money'] = $completed[$key]['fullreduce_money'] / 100;
+            }
         }
         return true;
     }

--
Gitblit v1.9.2