Panda há 3 meses atrás
pai
commit
e1f8f46b43

+ 13 - 1
application/admin/view/hotel_canteen_room/add.html

@@ -3,7 +3,7 @@
     <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Canteen_id')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input id="c-canteen_id" data-rule="required" data-source="hotel/canteen/index" class="form-control selectpage" name="row[canteen_id]" type="text" value="">
+            <input id="c-canteen_id" data-rule="required" data-source="hotel_canteen/index" class="form-control selectpage" name="row[canteen_id]" type="text" value="">
         </div>
     </div>
     <div class="form-group">
@@ -27,6 +27,18 @@
         </div>
     </div>
     <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Price')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-price" data-rule="required" class="form-control" step="0.01" name="row[price]" type="number" value="0.00">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Original_price')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-original_price" data-rule="required" class="form-control" step="0.01" name="row[original_price]" type="number" value="0.00">
+        </div>
+    </div>
+    <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Weigh')}:</label>
         <div class="col-xs-12 col-sm-8">
             <input id="c-weigh" data-rule="required" class="form-control" name="row[weigh]" type="number" value="0">

+ 13 - 1
application/admin/view/hotel_canteen_room/edit.html

@@ -3,7 +3,7 @@
     <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Canteen_id')}:</label>
         <div class="col-xs-12 col-sm-8">
-            <input id="c-canteen_id" data-rule="required" data-source="hotel/canteen/index" class="form-control selectpage" name="row[canteen_id]" type="text" value="{$row.canteen_id|htmlentities}">
+            <input id="c-canteen_id" data-rule="required" data-source="hotel_canteen/index" class="form-control selectpage" name="row[canteen_id]" type="text" value="{$row.canteen_id|htmlentities}">
         </div>
     </div>
     <div class="form-group">
@@ -27,6 +27,18 @@
         </div>
     </div>
     <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Price')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-price" data-rule="required" class="form-control" step="0.01" name="row[price]" type="number" value="{$row.price|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Original_price')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-original_price" data-rule="required" class="form-control" step="0.01" name="row[original_price]" type="number" value="{$row.original_price|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
         <label class="control-label col-xs-12 col-sm-2">{:__('Weigh')}:</label>
         <div class="col-xs-12 col-sm-8">
             <input id="c-weigh" data-rule="required" class="form-control" name="row[weigh]" type="number" value="{$row.weigh|htmlentities}">

+ 1 - 1
application/api/controller/Hotel.php

@@ -193,7 +193,7 @@ class Hotel extends Api
         return $this->success('获取成功',$list);
     }
 
-    // 订单取消  2:79 - 10 = 69    4:65 - 10 = 55  6:50 - 10 = 40
+    // 订单取消
     public function applyCancel()
     {
         $params = $this->request->param();

+ 43 - 35
application/api/controller/HotelCanteen.php

@@ -5,6 +5,8 @@ namespace app\api\controller;
 use addons\epay\library\Service;
 use app\common\controller\Api;
 use app\common\model\HotelCanteenModel;
+use app\common\model\HotelCanteenOrderModel;
+use app\common\model\HotelCanteenRoomModel;
 use app\common\model\HotelModel;
 use app\common\model\HotelOrderModel;
 use app\common\model\HotelRoomModel;
@@ -34,12 +36,18 @@ class HotelCanteen extends Api
         }
         $query    = HotelCanteenModel::field($field);
 
-        if (!empty($params['lng']) && !empty($params['lng']) && $params['sort_type'] == 1){
-            $query->order('distance asc');
+        if (!empty($params['lng']) && !empty($params['lng'])){
+            if ($params['sort_distance'] == 1){
+                $query->order('distance asc');
+            }else{
+                $query->order('distance desc');
+            }
         }
 
-        if ($params['sort_type'] == 2){
+        if ($params['sort_price'] == 1){
             $query->order('price asc');
+        }else{
+            $query->order('price desc');
         }
 
         $list = $query->where('status', 1)
@@ -62,7 +70,7 @@ class HotelCanteen extends Api
         if (!empty($params['lng']) && !empty($params['lng'])){
             $field[] = "(st_distance(point ({$params['lng']}, {$params['lat']}),point(lng,lat))*111195) as distance";
         }
-        $query    = HotelModel::field($field);
+        $query    = HotelCanteenModel::field($field);
 
         $query->where('id', $params['id']);
 
@@ -74,29 +82,18 @@ class HotelCanteen extends Api
         $info['distance'] = distance_ext($info['distance'] ?? -1);
 
         // 房间列表
-        $info['room_list'] = HotelRoomModel::where('hotel_id',$info['id'])->where('status',1)->order('weigh desc')->order('id desc')->select();
+        $info['room_list'] = HotelCanteenRoomModel::where('canteen_id',$info['id'])->where('status',1)->order('weigh desc')->order('id desc')->select();
 
         return $this->success('success', $info);
     }
 
-    // 详情
-    public function room_info()
-    {
-        $params = $this->request->param();
-        $info = HotelRoomModel::where('id',$params['id'])->where('status',1)->find();
-        return $this->success('success', $info);
-    }
-
     public function apply()
     {
         $params = $this->request->param();
         if (empty($params['room_id'])) {
             return $this->error('参数缺失');
         }
-        if (empty($params['start_date'])) {
-            return $this->error('参数缺失');
-        }
-        if (empty($params['end_date'])) {
+        if (empty($params['get_to_time'])) {
             return $this->error('参数缺失');
         }
         if (empty($params['name'])) {
@@ -105,35 +102,38 @@ class HotelCanteen extends Api
         if (empty($params['phone'])) {
             return $this->error('参数缺失');
         }
+        if (empty($params['sex'])) {
+            return $this->error('参数缺失');
+        }
         $user_id = $this->auth->id;
-        $info = HotelRoomModel::with([
-            'hotel'=>function ($query) {
+        $info = HotelCanteenRoomModel::with([
+            'canteen'=>function ($query) {
                 $query->field(['id','name','image','images','price','original_price']);
             }
         ])->where('id',$params['room_id'])->where('status',1)->find();
         if (!$info) {
-            return $this->error('房间不存在');
+            return $this->error('餐桌不存在');
         }
-        if (empty($info['hotel'])) {
-            return $this->error('酒店信息有误');
+        if (empty($info['canteen'])) {
+            return $this->error('餐厅信息有误');
         }
 
         // 开始报名
         $data = [
-            'hotel_id' => $info['hotel_id'],
+            'canteen_id' => $info['canteen_id'],
             'room_id' => $info['id'],
             'user_id' => $user_id,
             'name' => $params['name'],
             'phone' => $params['phone'],
-            'start_date' => $params['start_date'],
-            'end_date' => $params['end_date'],
-            'days' => (int)((strtotime($params['end_date']) - strtotime($params['start_date'])) / 86400),
+            'get_to_time' => strtotime($params['get_to_time']),
+            'sex' => $params['sex'],
+            'remark' => $params['remark'] ?? '',
             'order_no' => createUniqueNo('H', $user_id),
             'pay_amount' => bcmul($info['price'], 1, 2),
             'status' => 1,
             'create_time' => time()
         ];
-        if (!Db::name('hotel_order')->insertGetId($data)) {
+        if (!Db::name('hotel_canteen_order')->insertGetId($data)) {
             return $this->error('订单创建失败');
         }
 
@@ -146,7 +146,10 @@ class HotelCanteen extends Api
         $params = $this->request->param();
         $user_id = $this->auth->id;
 
-        $query = HotelOrderModel::with([
+        $query = HotelCanteenOrderModel::with([
+            'canteen'=>function ($query) {
+                $query->field(['id','name','image']);
+            },
             'room'=>function ($query) {
                 $query->field(['id','name','image']);
             }
@@ -154,10 +157,10 @@ class HotelCanteen extends Api
 
         switch ($params['status']){
             case 1:
-                $query->where('start_date','<',date('Y-m-d'))->where('status',1);
+                $query->where('get_to_time','<',time())->where('status',1);
                 break;
             case 2:
-                $query->where('start_date','>=',date('Y-m-d'))->where('status',1);
+                $query->where('get_to_time','>=',time())->where('status',1);
                 break;
             case 3:
                 $query->where('status',0);
@@ -169,10 +172,15 @@ class HotelCanteen extends Api
         $list = $query->order('id','desc')->autopage()->select();
         foreach ($list as $key=>$val){
             if ($val['status'] == 1){
-
+                if ($val['get_to_time'] < time()){
+                    $list[$key]['status_txt'] = '待用餐';
+                }else{
+                    $list[$key]['status_txt'] = '已完成';
+                }
             }else{
                 $list[$key]['status_txt'] = '已取消';
             }
+            $list[$key]['get_to_time'] = date('Y-m-d H:i');
         }
         return $this->success('获取成功',$list);
     }
@@ -183,14 +191,14 @@ class HotelCanteen extends Api
         $params = $this->request->param();
         $user_id = $this->auth->id;
 
-        $order = HotelOrderModel::where('user_id',$user_id)->where('id',$params['order_id'])->where('status',1)->find();
+        $order = HotelCanteenOrderModel::where('user_id',$user_id)->where('id',$params['order_id'])->where('status',1)->find();
         if (!$order){
             return $this->error('订单不存在或已取消');
         }
-        if (date('Y-m-d H:i:s') > ($order['start_date'] . ' 12:00:00')){
-            return $this->error('订单已入住,无法取消');
+        if (time() > $order['get_to_time']){
+            return $this->error('已到预约时间,无法取消');
         }
-        if (!HotelOrderModel::where('user_id',$user_id)->where('id',$params['order_id'])->where('status',1)->update(['status'=>0])){
+        if (!HotelCanteenOrderModel::where('user_id',$user_id)->where('id',$params['order_id'])->where('status',1)->update(['status'=>0])){
             return $this->error('操作失败');
         }
         return $this->success('操作成功');

+ 45 - 0
application/common/model/HotelCanteenOrderModel.php

@@ -0,0 +1,45 @@
+<?php
+
+namespace app\common\model;
+
+use think\Db;
+use think\Model;
+
+/**
+ * 群组
+ */
+class HotelCanteenOrderModel extends Model
+{
+    // 表名
+    protected $name = 'hotel_canteen_order';
+    // 开启自动写入时间戳字段
+    protected $autoWriteTimestamp = false;
+    // 定义时间戳字段名
+    protected $createTime = false;
+    protected $updateTime = false;
+    protected $deleteTime = false;
+
+    public function getImageAttr($value, $data)
+    {
+        return cdnurl($value);
+    }
+
+    public function getImagesAttr($value, $data)
+    {
+        $value = explode(',',$value);
+        foreach ($value as &$v){
+            $v = cdnurl($v);
+        }
+        return $value;
+    }
+
+    public function canteen()
+    {
+        return $this->hasOne(HotelCanteenModel::class, 'id', 'canteen_id');
+    }
+
+    public function room()
+    {
+        return $this->hasOne(HotelCanteenRoomModel::class, 'id', 'room_id');
+    }
+}

+ 1 - 1
application/common/model/HotelCanteenRoomModel.php

@@ -11,7 +11,7 @@ use think\Model;
 class HotelCanteenRoomModel extends Model
 {
     // 表名
-    protected $name = 'hotel_room';
+    protected $name = 'hotel_canteen_room';
     // 开启自动写入时间戳字段
     protected $autoWriteTimestamp = false;
     // 定义时间戳字段名