Browse Source

套包订单核销

gorden 6 months ago
parent
commit
5e46b7495d

+ 21 - 14
app/admin/controller/order/PackagesController.php

@@ -227,21 +227,28 @@ class PackagesController extends Curd
 
         Db::beginTransaction();
         try {
-            // 减额度
+            // 减额度 加使用量
             $benefit->member_benefit_used_count = $benefit->member_benefit_used_count + $nbr;
-            // 用完了
-//            if ($benefit->member_benefit_limit_count <= $benefit->member_benefit_used_count) {
-//                $benefit->member_benefit_status = 'DONE';
-//                if (!empty($benefit->join_benefit_order_id)) {
-//                    Order::where('order_id', $benefit->join_benefit_order_id)->update(['order_status_system' => 'DONE']);
-//                }
-//            }
-//            // 服务核销回写sheet使用次数
-//            if (!empty($benefit->join_benefit_goods_id) && !empty($benefit->join_benefit_order_id)) {
-//                OrderSheet::where('join_sheet_goods_id', $benefit->join_benefit_goods_id)
-//                    ->where('join_sheet_order_id', $benefit->join_benefit_order_id)
-//                    ->update(['order_sheet_used_num' => $benefit->member_benefit_used_count]);
-//            }
+            // 此权益用完了
+            if ($benefit->member_benefit_limit_count <= $benefit->member_benefit_used_count) {
+                // 套包和套包里的产品是否用完了
+                $result = OrderService::checkPackageBenefit($benefit);
+                $benefit->member_benefit_status = 'DONE';
+                if (!empty($benefit->join_benefit_order_id) && $result['order'] === true) {
+                    Order::where('order_id', $benefit->join_benefit_order_id)->update([
+                        'order_is_complete' => 'Y',
+                        'order_status_system' => 'DONE'
+                    ]);
+                }
+                // sheet
+                if (!empty($benefit->join_benefit_order_id) && $result['sheet'] === true) {
+                    $sheet = OrderSheet::where('join_sheet_goods_id', $benefit->join_benefit_package_id)
+                        ->where('join_sheet_order_id', $benefit->join_benefit_order_id)
+                        ->first();
+                    $sheet->order_sheet_used_num = $sheet->order_sheet_num;
+                    $sheet->save();
+                }
+            }
 
             $benefit->save();
             // 记录核销

+ 34 - 0
app/admin/service/order/OrderService.php

@@ -7,6 +7,7 @@ use app\model\CouponGoods;
 use app\model\GoodsRunning;
 use app\model\GoodsSku;
 use app\model\Member;
+use app\model\MemberBenefit;
 use app\model\Order;
 use app\model\OrderSheet;
 use app\model\PayDetail;
@@ -844,6 +845,39 @@ class OrderService
         }
     }
 
+    /**
+     * @Desc
+     * @Author Gorden
+     * @Date 2024/9/11 11:11
+     *
+     * @param MemberBenefit $benefit
+     * @return false[]|true[]
+     */
+    public static function checkPackageBenefit(MemberBenefit $benefit)
+    {
+        $result = ['sheet' => true, 'order' => true];
+        // 除此权益外,套包的其他权益是否用完了  where('join_benefit_package_id', $benefit->join_benefit_package_id)
+        $benefits = MemberBenefit::where('join_benefit_order_id', $benefit->join_benefit_order_id)
+            ->where('member_benefit_id', '<>', $benefit->member_benefit_id)
+            ->get()
+            ->toArray();
+        foreach ($benefits as $benefitItem) {
+            if ($benefitItem['join_benefit_package_id'] == $benefit->join_benefit_package_id) {
+                if ($benefitItem['member_benefit_limit_count'] > $benefitItem['member_benefit_used_count']) {
+                    return ['sheet' => false, 'order' => false];
+                }
+            }
+        }
+        foreach ($benefits as $benefitItem) {
+            if ($benefitItem['member_benefit_limit_count'] > $benefitItem['member_benefit_used_count']) {
+                $result['order'] = false;
+                return $result;
+            }
+        }
+
+        return $result;
+    }
+
 
     public static $couponClassify = [
         'wipe' => '抹零',

+ 1 - 0
route/admin.php

@@ -959,6 +959,7 @@ Route::group('/admin', function () {
         // 套包订单
         Route::group('/packages', function () {
             Route::get('/list', [\app\admin\controller\order\PackagesController::class, 'select']);
+            Route::post('/writeOff',[\app\admin\controller\order\PackagesController::class, 'writeOff']);
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);