Browse Source

临时门店和套餐库存

zhangxiaobin 1 year ago
parent
commit
f750e69264

+ 1 - 0
application/admin/lang/zh-cn/package.php

@@ -9,6 +9,7 @@ return [
     'Images'            => '主图',
     'Price'             => '套餐价格',
     'Oldprice'          => '原价',
+    'Num'               => '库存数量',
     'Content'           => '套餐详情',
     'Content_images'    => '套餐图集',
     'Weigh'             => '权重排序',

+ 6 - 0
application/admin/view/package/add.html

@@ -51,6 +51,12 @@
         </div>
     </div>
     <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Num')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-num" class="form-control" step="1" name="row[num]" type="number" value="1">
+        </div>
+    </div>
+    <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
         <div class="col-xs-12 col-sm-8">
             <textarea id="c-content" class="form-control" rows="5" name="row[content]" cols="50"></textarea>

+ 6 - 0
application/admin/view/package/edit.html

@@ -51,6 +51,12 @@
         </div>
     </div>
     <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Num')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-num" class="form-control" step="1" name="row[num]" type="number" value="{$row.num|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
         <div class="col-xs-12 col-sm-8">
             <textarea id="c-content" class="form-control" rows="5" name="row[content]" cols="50">{$row.content|htmlentities}</textarea>

+ 5 - 2
application/api/controller/Package.php

@@ -26,6 +26,7 @@ class Package extends Api
         $where = [
             'p.company_id' => $companyId,
             'p.status'     => 1,
+            'p.num'        => ['gt',0],
         ];
         if (!empty($servicetypeId)) {
             $where['servicetype_id'] = $servicetypeId;
@@ -33,7 +34,7 @@ class Package extends Api
         if(!empty($keyword)){
             $where['p.title|p.info'] = ['LIKE','%'.$keyword.'%'];
         }
-        $field = 'p.id,p.company_id,p.title,p.info,p.images,p.price,p.oldprice,type.title as servicetype_title';
+        $field = 'p.id,p.company_id,p.title,p.info,p.images,p.price,p.oldprice,p.num,type.title as servicetype_title';
         $list = Db::name('package')->alias('p')
             ->field($field)
             ->join('servicetype type','p.servicetype_id = type.id','LEFT')
@@ -48,10 +49,12 @@ class Package extends Api
     public function getInfo()
     {
         $id = input('id',0);
+        $where['p.id'] = $id;
+        $where['p.num'] = ['gt',0];
         $info = Db::name('package')->alias('p')
             ->field('p.*,type.title as servicetype_title')
             ->join('servicetype type','p.servicetype_id = type.id','LEFT')
-            ->where('p.id',$id)->find();
+            ->where($where)->find();
         $info = info_domain_image($info,['images','content_images']);
         $this->success(1,$info);
     }

+ 2 - 0
application/api/controller/PreOrder.php

@@ -32,6 +32,7 @@ class PreOrder extends Api
             $st = 'servicetype';
             $o  = 'order';
             $where[$po.'.user_id'] = $this->auth->id;
+            $where[$po.'.company_id'] = $this->auth->company_id;
             if ($preOrderStatus != '') {
                 $where[$po.'.pre_order_status'] = $preOrderStatus;
             }
@@ -178,6 +179,7 @@ class PreOrder extends Api
             $st = 'servicetype';
             $o  = 'order';
             $where[$po.'.user_id'] = $this->auth->id;
+            $where[$po.'.company_id'] = $this->auth->company_id;
             $where[$po.'.id'] = $id;
             $field = $po.'.id,name,mobile,address,remark,'.$po.'.car_id,'.$po.'.car_number,pre_time,order_time,'.
                 $po.'.cancel_time,'.$po.'.cancel_reason,'.$po.'.createtime,'.$po.'.servicetype_id,'.$st.

+ 3 - 3
application/api/controller/company/Package.php

@@ -43,7 +43,7 @@ class Package extends Apic
         if($this->auth->type != 1){
             $this->error('只有门店老板才能设置');
         }
-        $field = ['title','info','servicetype_id','images','price','oldprice','content','content_images'];
+        $field = ['title','info','servicetype_id','images','price','oldprice','num','content','content_images'];
         $data = request_post_hub($field);
 
         $data['company_id'] = $this->auth->company_id;
@@ -89,13 +89,13 @@ class Package extends Apic
         }
         $id = input('id','');
 
-        $check = Db::name('package')->where('id',$id)->where('company_id',$this->auth->company_id)->find();
+        $check = Db::name('package')->where('id',$id)->where('company_id',$this->auth->company_id)->lock(ture)->find();
         if(empty($check)){
             $this->error('不存在的套餐');
         }
 
         //
-        $field = ['title','info','servicetype_id','images','price','oldprice','content','content_images'];
+        $field = ['title','info','servicetype_id','images','price','oldprice','num','content','content_images'];
         $data = request_post_hub($field);
         $data['updatetime'] = time();
 

+ 2 - 2
application/common/library/Auth.php

@@ -119,9 +119,9 @@ class Auth
                 $this->setError('Account is locked');
                 return false;
             }
-            /*if ($user['company_id'] == 0 && $user['temp_company_id'] != 0) {
+            if ($user['company_id'] == 0 && $user['temp_company_id'] != 0) {
                 $user['company_id'] = $user['temp_company_id'];
-            }*/
+            }
             $this->_user = $user;
             $this->_logined = true;
             $this->_token = $token;

+ 6 - 2
application/common/service/OrderService.php

@@ -182,8 +182,7 @@ class OrderService
             //生成订单
             $time = time();
             $packageWhere['id'] = $packageId;
-            $package = Db::name('package')->where($packageWhere)->find();
-
+            $package = Db::name('package')->where($packageWhere)->lock(true)->find();
             $userWhere['id'] = $userId;
             $user = Db::name('user')->where($userWhere)->find();
             $userCarWhere['id'] = $carId;
@@ -224,6 +223,11 @@ class OrderService
             if (!$orderRes) {
                 throw new Exception('生成订单失败');
             }
+            $newNum = $package['num'] - 1;
+            $packageRes = Db::name('package')->where($packageWhere)->update(['num'=>$newNum]);
+            if (!$packageRes) {
+                throw new Exception('扣减库存失败');
+            }
             $result['data'] = [
                 'order_id' => $orderRes,
                 'pay_order_id' => $payOrderId,

+ 1 - 0
public/assets/js/backend/package.js

@@ -39,6 +39,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         {field: 'images', title: __('Images'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images},
                         {field: 'price', title: __('Price'), operate:'BETWEEN'},
                         {field: 'oldprice', title: __('Oldprice'), operate:'BETWEEN'},
+                        {field: 'num', title: __('Num'), operate:'BETWEEN'},
                         {field: 'weigh', title: __('Weigh'), operate: false},
                         {field: 'status', title: __('Status'), searchList: {"1":__('Status 1'),"0":__('Status 0')}, formatter: Table.api.formatter.status},
                         {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},