Browse Source

完善预约

Gorden 9 months ago
parent
commit
f53eb98594

+ 5 - 0
app/admin/controller/goods/EntityGoodsController.php

@@ -48,6 +48,11 @@ class EntityGoodsController
         return GoodsService::selectAllByCategoryForRuleAddComponent($category);
     }
 
+    public function selectPremisesByGoodsId(Request $request)
+    {
+        return GoodsService::selectPremisesByGoodsId($request->get('goods_id'));
+    }
+
     /**
      * @Desc 商品详情
      * @Author Gorden

+ 84 - 8
app/admin/controller/member/BenefitController.php

@@ -7,6 +7,7 @@ use app\controller\Curd;
 use app\model\Appointment;
 use app\model\Member;
 use app\model\MemberBenefit;
+use app\model\SysUser;
 use support\Db;
 use support\exception\BusinessException;
 use support\Redis;
@@ -108,6 +109,14 @@ class BenefitController extends Curd
         if (!$memberId || !$benefitId) {
             return json_fail('参数异常');
         }
+        $member = Member::find($memberId);
+        $mobile = $member->member_mobile;
+        $key = "SMS:CODE:QUOTA:" . $mobile;
+        $redisCode = Redis::get($key);
+        if ($redisCode != $code) {
+            return json_fail("验证码错误,请重新输入");
+        }
+        Redis::del($key);
 
         $benefit = MemberBenefit::where('member_benefit_id', $benefitId)
             ->where('join_benefit_member_id', $memberId)
@@ -115,14 +124,7 @@ class BenefitController extends Curd
         if ($benefit->member_benefit_limit_count - $benefit->member_benefit_used_count < $nbr) {
             return json_fail('可核销数量不足');
         }
-        // $member = Member::find($memberId);
-        // $mobile = $member->member_mobile;
-        // $key = "SMS:CODE:QUOTA:" . $mobile;
-        // $redisCode = Redis::get($key);
-        // if ($redisCode != $code) {
-        //     return json_fail("验证码错误,请重新输入");
-        // }
-        // Redis::del($key);
+
         if (!$times) {
             $times = date('Y-m-d H:i:s');
         } else {
@@ -168,6 +170,62 @@ class BenefitController extends Curd
         }
     }
 
+    public static function doWriteOff($paramsData)
+    {
+        $benefit = MemberBenefit::where('member_benefit_id', $paramsData['benefit_id'])
+            ->where('join_benefit_member_id', $paramsData['member_id'])
+            ->first();
+        if ($benefit->member_benefit_limit_count - $benefit->member_benefit_used_count < $paramsData['nbr']) {
+            throw new BusinessException('可核销数量不足');
+            // return json_fail('可核销数量不足');
+        }
+
+        if (!$paramsData['times']) {
+            $times = date('Y-m-d H:i:s');
+        } else {
+            $times = date('Y-m-d H:i:s', strtotime($paramsData['times']));
+        }
+
+        try {
+            Db::beginTransaction();
+            // 减额度
+            $benefit->member_benefit_used_count = $benefit->member_benefit_used_count + $paramsData['nbr'];
+            $benefit->save();
+            // 记录核销
+            $params = [
+                'dept_premises_id' => $paramsData['dept_premises_id'],
+                'order_remark'=>$paramsData['remark'],
+                'write_off_member_id' => $paramsData['write_off_member_id'],
+                'join_order_member_id' => $paramsData['member_id']
+            ];
+            $writeOffData = OrderService::generateWriteOffData($params);
+
+            $appointments = Appointment::where('join_appointment_member_benefit_id', $paramsData['benefit_id'])
+                ->where('appointment_status', 'INIT')
+                ->limit($paramsData['nbr'])
+                ->get();
+            foreach ($appointments as $appointment) {
+                Appointment::where('appointment_id', $appointment->appointment_id)->update([
+                    'appointment_status' => 'DONE',
+                    'appointment_datetime' => $times,
+                    'appointment_apply_datetime' => $times,
+                    'appointment_doing_datetime' => $times,
+                    'appointment_done_datetime' => $times,
+                    'appointment_done_json' => json_encode($writeOffData)
+                ]);
+            }
+
+            Db::commit();
+
+            return json_success('核销成功');
+        } catch (\Exception $e) {
+            dump($e->getFile().'---'.$e->getLine());
+            Db::rollBack();
+
+            throw new BusinessException('核销失败');
+        }
+    }
+
 
     public function writeOffList(Request $request)
     {
@@ -192,6 +250,24 @@ class BenefitController extends Curd
             ->where('appointment_status', 'DONE')
             ->get();
 
+        foreach ($quotas as &$quota) {
+            $quota['premises'] = '';
+            $quota['username'] = '';
+            if (!empty($quota['appointment_done_json'])) {
+                $doneJson = json_decode($quota['appointment_done_json'], true);
+                $quota['premises'] = $doneJson['charge']['charge_premises'] ?? '';
+                if (isset($doneJson['charge']['charge_user_id'])) {
+                    $user = SysUser::where('user_id', $doneJson['charge']['charge_user_id'])
+                        ->select('user_id', 'user_name')
+                        ->first();
+                    if ($user) {
+
+                        $quota['username'] = $user->user_name;
+                    }
+                }
+            }
+        }
+
         return json_success('', $quotas);
     }
 

+ 56 - 0
app/admin/controller/member/MemberController.php

@@ -8,6 +8,8 @@ use app\model\Family;
 use app\model\FamilyMember;
 use app\model\Member;
 use app\model\MemberAccount;
+use app\model\MemberBenefit;
+use app\model\MemberQuota;
 use app\model\PayDetail;
 use support\Db;
 use support\Request;
@@ -92,6 +94,60 @@ class MemberController
         return json_success('', $data);
     }
 
+    public function selectMemberAllQuota(Request $request){
+        $memberId = $request->get('member_id','');
+        $person = $request->get('person','');
+        if(!$memberId){
+            return json_fail('参数异常');
+        }
+        $data = [];
+
+        $benefit = MemberBenefit::where('join_benefit_member_id',$memberId)
+            // ->whereColumn('member_benefit_limit_count','>','member_benefit_used_count')
+            ->select('member_benefit_id as id','member_benefit_name as name','member_benefit_limit_count as total','member_benefit_used_count as used')
+            ->get()
+            ->toArray();
+
+
+        foreach($benefit as $item){
+            if ($item['total'] - $item['used'] < $person){
+                $item['disabled'] = true;
+            }
+            $item['cut'] = $item['total'] - $item['used'];
+            $data[] = $item;
+        }
+        
+        $quotas = MemberQuota::where('join_quota_member_id',$memberId)
+            ->selectRaw('join_quota_member_id,join_member_rule_added_component_id,COUNT(*) as total')
+            ->groupBy('join_quota_member_id','join_member_rule_added_component_id')
+            ->get()
+            ->toArray();
+        foreach($quotas as $quota){
+            $usedNum = MemberQuota::where('join_quota_member_id',$quota['join_quota_member_id'])
+                ->where('join_member_rule_added_component_id',$quota['join_member_rule_added_component_id'])
+                ->where('member_quota_status','USED')
+                ->count('*');
+            if($quota['total'] <= $usedNum){
+                continue;
+            }
+            $memberQuota = MemberQuota::where('join_quota_member_id',$quota['join_quota_member_id'])
+                ->where('join_member_rule_added_component_id',$quota['join_member_rule_added_component_id'])
+                ->select('member_quota_id as id','member_quota_name as name')
+                ->first()
+                ->toArray();
+
+            $memberQuota['total'] = $quota['total'];
+            $memberQuota['used'] = $usedNum;
+            if ($memberQuota['total'] - $memberQuota['used'] < $person){
+                $memberQuota['disabled'] = true;
+            }
+            $memberQuota['cut'] = $memberQuota['total'] - $memberQuota['used'];
+            $data[] = $memberQuota;
+        }
+    
+        return json_success('',$data);
+    }
+
     public function list(Request $request)
     {
 

+ 72 - 15
app/admin/controller/member/QuotaController.php

@@ -12,6 +12,7 @@ use app\model\RuleAdded;
 use app\model\RuleAddedComponent;
 use app\model\RulePricing;
 use app\model\SysSerial;
+use app\model\SysUser;
 use support\Db;
 use support\Redis;
 use support\exception\BusinessException;
@@ -50,8 +51,8 @@ class QuotaController extends Curd
             $memberIds = $memberId;
         }
 
-        foreach ($memberIds as &$id){
-            $id = "'".$id."'";
+        foreach ($memberIds as &$id) {
+            $id = "'" . $id . "'";
         }
 
         $rows = MemberQuota::select('join_quota_member_id', 'join_member_rule_added_component_id', Db::raw('MAX(`member_quota_addtimes`) as `new_addtimes`'))
@@ -70,7 +71,7 @@ class QuotaController extends Curd
         $total = MemberQuota::from(Db::raw("({$sql}) t"))->count();
 
         $rows = MemberQuota::from(Db::raw("({$sql}) t"))
-            ->orderBy('new_addtimes','desc')
+            ->orderBy('new_addtimes', 'desc')
             // ->orderByDesc('new_addtimes')
             ->forPage($page, $pageSize)
             ->get()
@@ -205,8 +206,27 @@ class QuotaController extends Curd
         ])->where('join_quota_member_id', $memberId)
             ->where('join_member_rule_added_component_id', $componentId)
             ->where('member_quota_status', 'USED')
-            ->orderBy('member_quota_used_json->charge->charge_write_off_time','desc')
-            ->get();
+            ->orderBy('member_quota_used_json->charge->charge_write_off_time', 'desc')
+            ->get()
+            ->toArray();
+
+        foreach ($quotas as &$quota) {
+            $quota['premises'] = '';
+            $quota['username'] = '';
+            if (!empty($quota['member_quota_used_json'])) {
+                $usedJson = json_decode($quota['member_quota_used_json'], true);
+                $quota['premises'] = $usedJson['charge']['charge_premises'] ?? '';
+                if (isset($usedJson['charge']['charge_user_id'])) {
+                    $user = SysUser::where('user_id', $usedJson['charge']['charge_user_id'])
+                        ->select('user_id', 'user_name')
+                        ->first();
+                    if ($user) {
+
+                        $quota['username'] = $user->user_name;
+                    }
+                }
+            }
+        }
 
         return json_success('', $quotas);
     }
@@ -225,7 +245,7 @@ class QuotaController extends Curd
         $memberId = $params['member_id'] ?? [];
         $componentId = $params['component_id'] ?? [];
         $nbr = $params['nbr'];
-        $times = $params['times'] ??  '';
+        $times = $params['times'] ?? '';
         $code = $params['sms_code'] ?? '';
 
         if (!$memberId || !$componentId) {
@@ -242,14 +262,14 @@ class QuotaController extends Curd
             return json_fail("可核销数量不足");
         }
 
-        // $member = Member::find(current($memberId));
-        // $mobile = $member->member_mobile;
-        // $key = "SMS:CODE:QUOTA:" . $mobile;
-        // $redisCode = Redis::get($key);
-        // if ($redisCode != $code) {
-        //     return json_fail("验证码错误,请重新输入");
-        // }
-        // Redis::del($key);
+        $member = Member::find(current($memberId));
+        $mobile = $member->member_mobile;
+        $key = "SMS:CODE:QUOTA:" . $mobile;
+        $redisCode = Redis::get($key);
+        if ($redisCode != $code) {
+            return json_fail("验证码错误,请重新输入");
+        }
+        Redis::del($key);
 
         if (!$times) {
             $params['times'] = date('Y-m-d H:i:s');
@@ -264,7 +284,7 @@ class QuotaController extends Curd
                 $writeOffData['member_quota_id'] = $quota['member_quota_id'];
 
                 MemberQuota::where('member_quota_id', $quota['member_quota_id'])->update([
-                    'member_quota_status' => 'USED', 
+                    'member_quota_status' => 'USED',
                     'member_quota_used_json' => json_encode($writeOffData)
                 ]);
             }
@@ -276,4 +296,41 @@ class QuotaController extends Curd
         return json_success("核销成功");
     }
 
+    public static function doWriteOff($params){
+        
+        $quotas = MemberQuota::where('join_quota_member_id', $params['member_id'])
+            ->where('join_member_rule_added_component_id', $params['component_id'])
+            ->where('member_quota_status', 'PENDING')
+            ->limit($params['nbr'])
+            ->get()
+            ->toArray();
+        if (count($quotas) < intval($params['nbr'])) {
+            throw new BusinessException('可核销数量不足');
+        }
+        if (!$params['times']) {
+            $params['times'] = date('Y-m-d H:i:s');
+        } else {
+            $params['times'] = date('Y-m-d H:i:s', strtotime($params['times']));
+        }
+
+        try {
+            // 生成核销数据
+            $writeOffData = AddedService::generateWriteOffData($params);
+            foreach ($quotas as $quota) {
+                $writeOffData['member_quota_id'] = $quota['member_quota_id'];
+
+                MemberQuota::where('member_quota_id', $quota['member_quota_id'])->update([
+                    'member_quota_status' => 'USED',
+                    'member_quota_used_json' => json_encode($writeOffData)
+                ]);
+            }
+
+        } catch (\Exception $e) {
+            throw new BusinessException('核销失败');
+            // return json_fail("核销失败");
+        }
+
+        return json_success("核销成功");
+    }
+
 }

+ 55 - 35
app/admin/controller/notify/RechargeController.php

@@ -19,27 +19,27 @@ class RechargeController
      *
      * @return void
      */
-    public function disposePaySuccess()
-    {
-//        $unix = strtotime(date("Y-m-d H:i",strtotime("-1 minute")).':00');
-        $payDetails = PayDetail::where('pay_category', 'RECHARGE')
-            ->where('pay_status', 'SUCCESS')
-            ->where(function ($query) {
-                $query->whereRaw("JSON_EXTRACT(`pay_extend_json`, '$.notify') IS NULL")
-                    ->orWhereJsonDoesntContain('pay_extend_json->notify', 'success');
-            })
-            ->get()
-            ->toArray();
-        if (!$payDetails) {
-            return;
-        }
+//    public function disposePaySuccess()
+//    {
+////        $unix = strtotime(date("Y-m-d H:i",strtotime("-1 minute")).':00');
+//        $payDetails = PayDetail::where('pay_category', 'RECHARGE')
+//            ->where('pay_status', 'SUCCESS')
+//            ->where(function ($query) {
+//                $query->whereRaw("JSON_EXTRACT(`pay_extend_json`, '$.notify') IS NULL")
+//                    ->orWhereJsonDoesntContain('pay_extend_json->notify', 'success');
+//            })
+//            ->get()
+//            ->toArray();
+//        if (!$payDetails) {
+//            return;
+//        }
+//
+//        foreach ($payDetails as $payDetail) {
+//            $this->paySuccess($payDetail['pay_id']);
+//        }
+//    }
 
-        foreach ($payDetails as $payDetail) {
-            $this->paySuccess($payDetail['pay_id']);
-        }
-    }
 
-    /*
     public function paySuccess(Request $request)
     {
         $data = $request->post();
@@ -49,22 +49,37 @@ class RechargeController
         if (!$data['pay_id']) {
             return json_fail('参数异常');
         }
-
-        $payDetail = PayDetail::find($data['pay_id']);
-        if (!$payDetail || $payDetail->pay_status != 'SUCCESS') {
-            return json_fail("支付状态异常");
+        try {
+            _syslog("APP充值","APP充值成功");
+            return $this->disposePaySuccess($data['pay_id']);
+        }catch (\Exception $e){
+            _syslog("APP充值","APP充值失败");
+            return json_fail("处理失败");
         }
-     */
 
-    public function paySuccess($id)
-    {
-        if (!$id) {
-            return json_fail('参数异常');
-        }
+//    public function paySuccess($id)
+//    {
+//        if (!$id) {
+//            return json_fail('参数异常');
+//        }
+//
+//        $payDetail = PayDetail::find($id);
+//        if ($payDetail->pay_status != 'SUCCESS') {
+//            return json_fail("支付状态异常");
+//        }
+    }
 
-        $payDetail = PayDetail::find($id);
-        if ($payDetail->pay_status != 'SUCCESS') {
-            return json_fail("支付状态异常");
+    /**
+     * @param $payId
+     * @return \support\Response
+     * @throws BusinessException
+     */
+    public function disposePaySuccess($payId){
+
+        $payDetail = PayDetail::find($payId);
+        if (!$payDetail || $payDetail->pay_status != 'SUCCESS') {
+            throw new BusinessException("支付状态异常");
+//            return json_fail("支付状态异常");
         }
         $extendJson = [];
         if (!empty($payDetail->pay_extend_json)) {
@@ -82,7 +97,9 @@ class RechargeController
             // 赠送比例
             $objectJson = json_decode($payDetail->join_pay_object_json, true);
             if (!isset($objectJson['order_id'])) {
-                return json_fail("支付数据异常");
+
+                throw new BusinessException("支付数据异常");
+//                return json_fail("");
             }
             $addedNbr = RechargeService::disposeOrder($objectJson['order_id']);
             // 赠送金额累加到 账户表 member_account_added
@@ -111,11 +128,14 @@ class RechargeController
         } catch (BusinessException $e) {
             dump($e->getMessage());
             Db::rollBack();
-            return json_fail('处理失败');
+
+            throw new BusinessException("处理失败");
+//            return json_fail('处理失败');
         } catch (\Exception $e) {
             dump($e->getMessage());
             Db::rollBack();
-            return json_fail('处理失败');
+            throw new BusinessException("处理失败");
+//            return json_fail('处理失败');
         }
     }
 }

+ 8 - 1
app/admin/controller/order/PayDetailController.php

@@ -2,6 +2,7 @@
 
 namespace app\admin\controller\order;
 
+use app\admin\controller\notify\RechargeController;
 use app\controller\Curd;
 use app\model\Goods;
 use app\model\GoodsSku;
@@ -109,11 +110,17 @@ class PayDetailController extends Curd
         }
 
         try {
+            Db::beginTransaction();
             $data = $this->insertRechargeInput($request);
-            $this->doInsert($data);
+            $payDetailId = $this->doInsert($data);
+            (new RechargeController)->disposePaySuccess($payDetailId);
+
+            Db::commit();
         } catch (BusinessException $customException) {
+            Db::rollBack();
             return json_fail($customException->getMessage());
         } catch (\Exception $e) {
+            Db::rollBack();
             dump($e->getMessage());
             return json_fail('数据写入失败11');
         }

+ 1 - 1
app/admin/controller/order/WholeController.php

@@ -425,7 +425,7 @@ class WholeController extends Curd
                 'appointment_addtimes' => time(),
                 'appointment_done_datetime'=>$params['order_status_system'] == 'DONE' ? date('Y-m-d H:i:s') : '',
                 'appointment_remark' => $params['order_remark'] ?? '',
-                'appointment_done_json' => $params['order_status_system'] == 'DONE' && $writeOffDate ? json_encode($writeOffDate) : []
+                'appointment_done_json' => $params['order_status_system'] == 'DONE' && $writeOffDate ? json_encode($writeOffDate) : '[]'
             ];
             Appointment::insert($data);
         } catch (\Exception $e) {

+ 1 - 0
app/admin/controller/sys_manage/NewsController.php

@@ -33,6 +33,7 @@ class NewsController extends Curd
     public function select(Request $request): Response
     {
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
+//        $where['content_category'] = ['in',['NEWS','FINANCE','APARTMENT']];
         $where['content_category'] = 'NEWS';
         $order = $request->get('order', 'desc');
         $field = $field ?? 'content_addtimes';

+ 26 - 7
app/admin/service/goods/GoodsService.php

@@ -119,6 +119,25 @@ class GoodsService
         return json_success('', $goods);
     }
 
+    public static function selectPremisesByGoodsId($goodsId)
+    {
+        $goods = Goods::where('goods_id', $goodsId)
+            ->select('goods_id', 'goods_attribute_json')
+            ->first();
+            $premisses = [];
+        if (!empty($goods->goods_attribute_json)) {
+            $attributeJson = json_decode($goods->goods_attribute_json, true);
+            if(isset($attributeJson['premisses'])){
+                $premisses = SysDept::whereIn('dept_id',$attributeJson['premisses'])
+                ->select('dept_id','dept_name')
+                    ->get()
+                    ->toArray();
+            }
+        }
+
+        return json_success('',$premisses);
+    }
+
     public static function select(Request $request, $classify = "GOODS")
     {
         $page = $request->get('page', 1);
@@ -403,7 +422,7 @@ class GoodsService
             ->when($goodsClassify != '', function ($query) use ($goodsClassify) {
                 $query->where('goods_classify', $goodsClassify);
             })
-            ->select('goods_id', 'goods_name', 'goods_sales_price', 'join_goods_category_id','goods_attribute_json')
+            ->select('goods_id', 'goods_name', 'goods_sales_price', 'join_goods_category_id', 'goods_attribute_json')
             ->get()
             ->toArray();
 
@@ -428,12 +447,12 @@ class GoodsService
                 $good['sku'] = [];
             }
             $good['premisses'] = [];
-            if(!empty($good['goods_attribute_json'])){
-                $attributeJson = json_decode($good['goods_attribute_json'],true);
-                if (isset($attributeJson['premisses'])){
-                    $premisses = SysDept::whereIn('dept_id',$attributeJson['premisses'])
-                    ->select('dept_id','dept_name')
-                    ->get();
+            if (!empty($good['goods_attribute_json'])) {
+                $attributeJson = json_decode($good['goods_attribute_json'], true);
+                if (isset($attributeJson['premisses'])) {
+                    $premisses = SysDept::whereIn('dept_id', $attributeJson['premisses'])
+                        ->select('dept_id', 'dept_name')
+                        ->get();
                     $good['premisses'] = $premisses;
                 }
             }

+ 1 - 0
app/admin/service/notify/RechargeService.php

@@ -102,6 +102,7 @@ class RechargeService
         $diff = $added->rule_added_goods_diff;
 
         $components = RuleAddedComponent::where('join_component_rule_added_id', $addedId)->get()->toArray();
+        dump($diff,$components);
         switch ($diff) {
             case "SUM":
                 self::diffSum($memberId, $components);

+ 40 - 11
app/admin/service/order/AppointmentService.php

@@ -2,6 +2,8 @@
 
 namespace app\admin\service\order;
 
+use app\admin\controller\member\BenefitController;
+use app\admin\controller\member\QuotaController;
 use app\model\Appointment;
 use app\model\Goods;
 use app\model\GoodsSku;
@@ -10,9 +12,11 @@ use app\model\MemberAccount;
 use app\model\MemberBenefit;
 use app\model\MemberCert;
 use app\model\MemberInfo;
+use app\model\MemberQuota;
 use app\model\Order;
 use app\model\OrderSheet;
 use app\model\PayDetail;
+use app\model\SysDept;
 use app\model\SysSerial;
 use support\Db;
 use support\Request;
@@ -236,8 +240,8 @@ class AppointmentService
 
             Appointment::insert($data);
 
-            // 如果预约成,生成订单
-            if ($params['appointment_status'] == 'PENDING') {
+            // 如果预约已完成,生成订单
+            if ($params['appointment_status'] == 'DONE') {
                 $sku = GoodsSku::find($params['join_appointment_goods_sku_id']);
                 $orderId = 'OD' . date('YmdHis') . random_string(6, 'up');
                 $order = [
@@ -380,12 +384,12 @@ class AppointmentService
                 'settlement_mode' => $params['settlement_mode'] ?? '',
             ];
             // 如果是完成状态
-            if ($params['appointment_status'] == 'DONE' && $appointment->appointment_status != 'DONE') {
-                if (empty($params['appointment_done_datetime'])) {
-                    $data['appointment_done_datetime'] = date('Y-m-d H:i:s');
-                }
-                MemberBenefit::where('member_benefit_id', $appointment->join_appointment_member_benefit_id)->increment('member_benefit_used_count');
-            }
+            // if ($params['appointment_status'] == 'DONE' && $appointment->appointment_status != 'DONE') {
+            //     if (empty($params['appointment_done_datetime'])) {
+            //         $data['appointment_done_datetime'] = date('Y-m-d H:i:s');
+            //     }
+            //     MemberBenefit::where('member_benefit_id', $appointment->join_appointment_member_benefit_id)->increment('member_benefit_used_count');
+            // }
             if (!empty($params['join_appointment_member_id'])) {
                 $member = Member::with([
                     'cert' => function ($query) {
@@ -406,8 +410,8 @@ class AppointmentService
 
             Appointment::where('appointment_id', $appointmentId)->update($data);
 
-            // 如果预约成功,没有生成过订单,生成订单
-            if ($params['appointment_status'] == 'PENDING' && empty($appointment->join_appointment_order_id)) {
+            // 如果服务结束,没有生成过订单,生成订单
+            if ($params['appointment_status'] == 'DONE' && empty($appointment->join_appointment_order_id)) {
                 $sku = GoodsSku::find($params['join_appointment_goods_sku_id']);
                 $orderId = 'OD' . date('YmdHis') . random_string(6, 'up');
                 $order = [
@@ -486,6 +490,31 @@ class AppointmentService
                     // 更新订单状态
                     Order::where('order_id', $orderId)->update(['order_status_system' => 'CONFIRM', 'order_status_payment' => 'SUCCESS']);
                     OrderSheet::where('join_sheet_order_id', $orderId)->update(['order_sheet_status' => 'CONFIRM']);
+                } else if($params['settlement_mode'] == 'QUOTA' && !empty($params['quota_id'])){
+                    $premisesName = SysDept::where('dept_id',$params['premises'])->value('dept_name');
+                    $paramsData = [
+                        'member_id'=>$params['join_appointment_member_id'],
+                        'nbr'=>$params['person'],
+                        'times'=>date('Y-m-d H:i:s'),
+                        'write_off_member_id' => $params['write_off_member_id'],
+                        'remark'=>$params['appointment_remark'],
+                        'dept_premises_id'=>$premisesName
+                    ];
+                    $quotaType = substr($params['quota_id'],0,2);
+                    if($quotaType == 'MQ'){
+                        $quota = MemberQuota::where('member_quota_id',$params['quota_id'])
+                        ->select('member_quota_id','join_member_rule_added_component_id')
+                        ->first()
+                        ->toArray();
+                        $paramsData['component_id'] = $quota['join_member_rule_added_component_id'];
+
+                        QuotaController::doWriteOff($paramsData);
+                    }else if($quotaType == 'BF'){
+                        $paramsData['benefit_id'] = $params['quota_id'];
+
+                        // dump($paramsData);
+                        BenefitController::doWriteOff($paramsData);
+                    }
                 }
             }
 
@@ -493,7 +522,7 @@ class AppointmentService
             return json_success("数据更新成功");
         } catch (\Exception $e) {
             Db::rollBack();
-            dump($e->getMessage());
+            dump($e->getFile().'--'.$e->getLine());
             return json_fail("数据更新失败");
         }
     }

+ 1 - 1
process/Task.php

@@ -14,7 +14,7 @@ class Task
         // 每分钟执行一次
         new Crontab('0 */1 * * * *', function () {
             // 充值成功,更新会员等级
-            (new RechargeController)->disposePaySuccess();
+//            (new RechargeController)->disposePaySuccess();
             // 商品自动上架
 //            GoodsService::checkListing();
             // 商品自动下架

+ 2 - 0
route/admin.php

@@ -39,6 +39,7 @@ Route::group('/admin', function () {
             Route::get('/selectAll', [\app\admin\controller\goods\EntityGoodsController::class, 'selectAll']);
             Route::get('/selectAllByGoodsName', [\app\admin\controller\goods\EntityGoodsController::class, 'selectAllByGoodsName']);
             Route::get('/selectAllByCategoryForRuleAddComponent', [\app\admin\controller\goods\EntityGoodsController::class, 'selectAllByCategoryForRuleAddComponent']);
+            Route::get('/getPremises', [\app\admin\controller\goods\EntityGoodsController::class, 'selectPremisesByGoodsId']);   
             Route::get('/list', [\app\admin\controller\goods\EntityGoodsController::class, 'select']);
             Route::get('/info', [\app\admin\controller\goods\EntityGoodsController::class, 'info']);
             Route::post('/add', [\app\admin\controller\goods\EntityGoodsController::class, 'insert']);
@@ -563,6 +564,7 @@ Route::group('/admin', function () {
             Route::get('/selectList', [\app\admin\controller\member\MemberController::class, 'selectList']);
             Route::get('/selectWriteOffMember', [\app\admin\controller\member\MemberController::class, 'selectWriteOffMember']);
             Route::get('/selectFamilyMemberList', [\app\admin\controller\member\MemberController::class, 'selectFamilyMemberList']);
+            Route::get('/selectMemberAllQuota', [\app\admin\controller\member\MemberController::class, 'selectMemberAllQuota']);
             Route::get('/balanceInfo', [\app\admin\controller\member\MemberController::class, 'balanceInfo']);
             Route::get('/pointInfo', [\app\admin\controller\member\MemberController::class, 'pointInfo']);
             Route::get('/list', [\app\admin\controller\member\MemberController::class, 'list']);