From 73b874c72ad55eb9eef21c36160ac0de58f0189e Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Thu, 05 Feb 2026 10:30:43 +0800
Subject: [PATCH] 优化名片

---
 admin/app/common/service/order/OrderCompleteService.php |   78 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 77 insertions(+), 1 deletions(-)

diff --git a/admin/app/common/service/order/OrderCompleteService.php b/admin/app/common/service/order/OrderCompleteService.php
index 0ab9d79..cdb66e5 100644
--- a/admin/app/common/service/order/OrderCompleteService.php
+++ b/admin/app/common/service/order/OrderCompleteService.php
@@ -2,16 +2,20 @@
 
 namespace app\common\service\order;
 
+use app\common\model\plus\coupon\UserCoupon as UserCouponModel;
+use app\common\model\plus\team\Apply as teamApplyModel;
 use app\common\library\helper;
 use app\common\model\plus\bonus\Order as BonusOrderModel;
 use app\common\model\settings\Setting;
 use app\common\model\supplier\Capital as SupplierCapitalModel;
 use app\common\model\supplier\Supplier as SupplierModel;
+use app\common\model\user\ActivationCode;
 use app\common\model\user\User as UserModel;
 use app\common\model\settings\Setting as SettingModel;
 use app\common\model\plus\agent\Order as AgentOrderModel;
 use app\common\model\plus\team\Order as TeamOrderModel;
 use app\common\model\user\PointsLog as PointsLogModel;
+use app\common\model\user\ConsumptionLog as ConsumptionLogModel;
 use app\common\enum\order\OrderTypeEnum;
 use app\common\model\order\OrderSettled as OrderSettledModel;
 use app\supplier\model\store\Order as StoreOrderModel;
@@ -22,7 +26,7 @@
 use app\common\model\plus\shareholder\Setting as ShareholderSettingModel;
 use app\common\model\plus\shareholder\Bonus as ShareholderBonusModel;
 use app\common\model\plus\vip\Order as VipOrderModel;
-
+use app\common\model\plus\operations\Order as OperationsOrderModel;
 /**
  * 已完成订单结算服务类
  */
@@ -78,7 +82,36 @@
         }
         // 发放分销商佣金,发放团队分红
         foreach ($orderList as $order) {
+            // 赠送等级积分给用户
+            $user = UserModel::detail($order['user_id']);
+            if ($order['is_newcomer']==1){
+                $points = $order['pay_price'];
+                if($order['supplier']['gift_type']==10){
+                    $user->setIncPoints($points, '新人专区购买商品专享订单奖励积分');
+                }else{
+                    $user->setIncConsumption($points, '新人专区购买商品专享订单奖励消费券');
+                }
+            }
+            if ($order['product_type']==10){
+                $points = $order['pay_price'];
+                $user->setIncPoints($points, '品牌专区购买商品专享订单奖励积分',0,true,1);
+            }
+            (new teamApplyModel())->becomeTeamByAgent($order['user_id'],70,$order['app_id']);
+            //生成激活码
+            (new ActivationCode())->generateCodes($order);
+            foreach ($order['product'] as $product){
+                //赠送优惠券
+                if ($product['open_coupon'] && $product['open_coupons']) {
+                    $open_coupons=$product['open_coupons'];
+                    if(!is_array($open_coupons)){
+                        $open_coupons=json_decode($open_coupons,1);
+                    }
+                    (new UserCouponModel)->addUserCardCoupon($open_coupons, $user,$order['order_id']);
+                }
+            }
             AgentOrderModel::grantMoney($order, $this->orderType);
+            // 发放运营中心佣金
+            OperationsOrderModel::grantMoney($order, $this->orderType);
             // 发放团队分红 by yj
 			TeamOrderModel::grantMoney($order, $this->orderType);
             // 发放会员分红
@@ -113,6 +146,8 @@
         $this->setIncUserExpend($orderList);
         // 处理订单赠送的积分
         $this->setGiftPointsBonus($orderList);
+        // 处理订单赠送的消费券
+        $this->setGiftConsumptionBonus($orderList);
         // 将订单设置为已结算
         $this->model->onBatchUpdate($orderIds, ['is_settled' => 1,'settled_time' => time(),'is_settled_team' => 1]);
         // 供应商结算
@@ -292,6 +327,47 @@
         }
         return true;
     }
+    /**
+     * 处理订单赠送的消费券
+    */
+    private function setGiftConsumptionBonus($orderList)
+    {
+        // 计算用户所得消费券
+        $userData = [];
+        $logData = [];
+        foreach ($orderList as $order) {
+            // 计算用户所得消费券
+            $pointsBonus = $order['consumption_bonus'];
+            if ($pointsBonus <= 0) continue;
+            // 减去订单退款的积分
+            foreach ($order['product'] as $product) {
+                if (
+                    !empty($product['refund'])
+                    && $product['refund']['type']['value'] == 10      // 售后类型:退货退款
+                    && $product['refund']['is_agree']['value'] == 10  // 商家审核:已同意
+                ) {
+                    $pointsBonus -= $product['consumption_bonus'];
+                }
+            }
+            // 计算用户所得积分
+            !isset($userData[$order['user_id']]) && $userData[$order['user_id']] = 0;
+            $userData[$order['user_id']] += $pointsBonus;
+            // 整理用户积分变动明细
+            $logData[] = [
+                'user_id' => $order['user_id'],
+                'value' => $pointsBonus,
+                'describe' => "订单赠送:{$order['order_no']}",
+                'app_id' => $order['app_id'],
+            ];
+        }
+        if (!empty($userData)) {
+            // 累积到会员表记录
+            $this->UserModel->onBatchIncConsumption($userData);
+            // 批量新增积分明细记录
+            (new ConsumptionLogModel)->onBatchAdd($logData);
+        }
+        return true;
+    }
 
     /**
      * 累积用户实际消费金额

--
Gitblit v1.9.2