jh-admin/addon/store/shopapi/controller/Reserve.php

201 lines
6.7 KiB
PHP

<?php
/**
* ThinkShop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.cdcloudshop.com
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
* =========================================================
*/
namespace addon\store\shopapi\controller;
use addon\store\model\Reserve as ReserveModel;
/**
* 预约控制器
* Class Sysorder
* @package addon\shop\siteapi\controller
*/
class Reserve extends BaseStoreApi
{
public function count()
{
$res = [];
$condition = [
['site_id', '=', $this->site_id],
];
$res['all'] = model("reserve")->getCount($condition);
$condition = [
['site_id', '=', $this->site_id],
['reserve_state', '=', 'wait_confirm']
];
$res['wait_confirm'] = model("reserve")->getCount($condition);
$condition = [
['site_id', '=', $this->site_id],
['reserve_state', '=', 'wait_to_store']
];
$res['wait_to_store'] = model("reserve")->getCount($condition);
$condition = [
['site_id', '=', $this->site_id],
['reserve_state', '=', 'cancelled']
];
$res['cancelled'] = model("reserve")->getCount($condition);
return $this->response($this->success($res));
}
/**
* 列表
* @return false|string
*/
public function lists()
{
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$search_text = input('search_text', '');
$reserve_state = input('reserve_state', 'all');
$start = input('start_time', 0);
$end = input('end_time', 0);
$store_id = !empty(input('store_id', 0)) ? input('store_id', 0) : $this->store_id;
$condition = [
['noy.site_id', '=', $this->site_id]
];
if ($reserve_state != 'all') {
$condition[] = ['noy.reserve_state', '=', $reserve_state];
}
if (!empty($search_text)) {
$condition[] = ['nm.mobile|nm.nickname', 'like', '%' . $search_text . '%'];
}
if (!empty($store_id)) {
$condition[] = ['noy.store_id', 'in', $store_id];
}
if ($start && $end) {
$condition[] = ['noy.reserve_time', 'between', [$start, $end]];
} else {
if ($start && !$end) {
$condition[] = ['noy.reserve_time', '>=', $start];
} else {
if (!$start && $end) {
$condition[] = ['noy.reserve_time', '<=', $end];
}
}
}
$field = 'noy.store_id, noy.member_id, noy.remark, noy.reserve_id, noy.reserve_name, noy.reserve_state_name, noy.reserve_state, noy.reserve_time, noy.reserve_item, noy.create_time, noy.source, nm.headimg, nm.nickname, nm.mobile, os.store_name, noy.name, noy.phone, noy.people_num';
$reserve_model = new ReserveModel();
$result = $reserve_model->getReservePageList($condition, $page, $page_size, 'noy.create_time desc', $field);
if (!empty($result['data']['list'])) {
foreach ($result['data']['list'] as $k => $item) {
$result['data']['list'][$k]['item'] = $reserve_model->getReserveItemList([
[
'oyi.reserve_id', '=', $item['reserve_id']
]
], 'g.goods_name,g.goods_id,g.sku_id,ys.username,oyi.reserve_user_id', 'reserve_item_id desc', 'oyi',
[['goods g', 'g.sku_id = oyi.reserve_goods_sku_id', 'right'],
['user ys', 'oyi.reserve_user_id = ys.uid', 'left']
])['data'];
}
}
return $this->response($result);
}
/**
* 确认预约
* @return array|false|string
*/
public function confirm()
{
$reserve_id = input('reserve_id', 0);
$reserve_model = new ReserveModel();
return $this->response($reserve_model->confirmReserve($reserve_id, $this->site_id));
}
/**
* 取消预约
* @return array|false|string
*/
public function cancel()
{
$reserve_id = input('reserve_id', 0);
$reserve_model = new ReserveModel();
return $this->response($reserve_model->cancelReserve($reserve_id, $this->site_id));
}
/**
* 删除预约
* @return array|false|string
*/
public function deleteReserve()
{
$reserve_id = input('reserve_id', 0);
$reserve_model = new ReserveModel();
return $this->response($reserve_model->deleteReserve($reserve_id, $this->site_id));
}
/**
* 确认到店
* @return array|false|string
*/
public function confirmToStore()
{
$reserve_id = input('reserve_id', 0);
$reserve_model = new ReserveModel();
return $this->response($reserve_model->confirmToStore($reserve_id, $this->site_id));
}
/**
* 确认完成
* @return array|false|string
*/
public function complete()
{
$reserve_id = input('reserve_id', 0);
$reserve_model = new ReserveModel();
return $this->response($reserve_model->confirmComplete($reserve_id, $this->site_id));
}
/**
* 预约详情
* @return mixed|void
*/
public function detail()
{
$reserve_id = input('reserve_id', 0);
$model = new ReserveModel();
$info = $model->getReserveInfo([
['reserve_id', '=', $reserve_id],
['oy.site_id', '=', $this->site_id]
], 'oy.*, nm.headimg, nm.nickname, nm.mobile,os.store_name', 'oy', [
['member nm', 'oy.member_id = nm.member_id', 'left'],
['store os', 'oy.store_id = os.store_id', 'left']
])['data'];
if (empty($info)) {
$this->error('未获取到预约信息');
return;
}
$info['item'] = $model->getReserveItemList([
[
'oyi.reserve_id', '=', $reserve_id
]
], 'g.goods_name,sku.service_length,g.goods_id,g.sku_id,g.price,ys.username,oyi.reserve_user_id', 'reserve_item_id desc', 'oyi',
[
['goods g', 'g.sku_id = oyi.reserve_goods_sku_id', 'right'],
['goods_sku sku', 'sku.sku_id = oyi.reserve_goods_sku_id', 'right'],
['user ys', 'oyi.reserve_user_id = ys.uid', 'left']
])['data'];
return $this->response($this->success($info));
}
}