|
@@ -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('操作成功');
|