租房掌柜微信小程序Api以及小程序前端模板
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

233 lines
8.7 KiB

<?php
// +----------------------------------------------------------------------
// | ThinkAdmin
// +----------------------------------------------------------------------
// | 版权所有 2014~2019 广州楚才信息科技有限公司 [ http://www.cuci.cc ]
// +----------------------------------------------------------------------
// | 官方网站: http://demo.thinkadmin.top
// +----------------------------------------------------------------------
// | 开源协议 ( https://mit-license.org )
// +----------------------------------------------------------------------
// | gitee 代码仓库:https://gitee.com/zoujingli/ThinkAdmin
// | github 代码仓库:https://github.com/zoujingli/ThinkAdmin
// +----------------------------------------------------------------------
namespace app\index\controller;
use think\App;
use think\Db;
/**
* 订单管理
* Class Index
* @package app\index\controller
*/
class Order extends Base
{
private $table = 'CloudOrder';
private $table_tenant_order = 'CloudOrderRoom';
private $table_room = 'CloudHouseRoom';
private $table_member = 'CloudMember';
public function __construct(App $app = null)
{
parent::__construct($app);
parent::auth();
}
/**
* 获取订单列表
*/
public function index()
{
//判断当前用户是否为管理员
if (!MEMBER['is_manager']) {
$_where = 'user_id = ' . USER_ID;
} else {
$_where = '';
}
$count = Db::name($this->table)->where($_where)->count();
$page = $this->request->param('page', 1);
$pagesize = $this->request->param('pagesize', 10);
$pages = ceil($count / $pagesize); //总页数
$_result = Db::name($this->table)->where($_where)->page($page, $pagesize)->order('id', "DESC")->select();
$_data['list'] = $_result;
$_data['pages'] = $pages;
self::formatData($_data['list']);
return send_http_status(200, $_data);
}
/**
* 统计房源所有收入或者该房间收入
* @param string $room_id 指定房间id 不指定默认所有房
* @param string $id 指定房源id
* @return float
*/
public function orderAmount($room_id = '', $house_id = '')
{
$_where['user_id'] = USER_ID;
$_where['status'] = 1;
if ($room_id) {
$_where['room_id'] = $room_id;
}
$_db = Db::name($this->table_tenant_order)->where($_where);
if ($house_id) {
//查询此房源下面的子房间数据
$id_arr = Db::name($this->table_room)->where('house_id', $house_id)->column('id');
if (empty($id_arr)) {
return 0;
}
$_db->where('room_id', 'in', implode(',', $id_arr));
}
$count = $_db->sum('price');
return $count;
}
/**
* 获取租户订单
*/
public function tenant()
{
$_where['user_id'] = USER_ID;
$phone = $this->request->param('phone', '');
$room_id = $this->request->param('room_id', '');
if ($phone) {
$_where['phone'] = $phone;
}
if ($room_id) {
$_where['room_id'] = $room_id;
}
$_where['is_del'] = 0;
$count = Db::name($this->table_tenant_order)->where($_where)->count();
$page = $this->request->param('page', 1);
$pagesize = $this->request->param('pagesize', 10);
$pages = ceil($count / $pagesize); //总页数
$_result = Db::name($this->table_tenant_order)->where($_where)->page($page, $pagesize)->order('id', "DESC")->select();
$_data['list'] = $_result;
$_data['pages'] = $pages;
self::formatData($_data['list']);
return send_http_status(200, $_data);
}
/**
* 新增vip开通订单
*/
public function add()
{
$_data = $this->request->post();
$config = config('vip_level');
//添加房源数据
$_data = array_filter($_data);
$_data['status'] = 0;
$_data['price'] = !empty($_data['vip_level']) ? $config[$_data['vip_level']]['price'] : '0';
$_data['create_time'] = $_data['update_time'] = time();
$_data['user_id'] = USER_ID;
$affected = Db::name($this->table)->strict(false)->insert($_data);
if ($affected) {
return send_http_status(200);
}
return send_http_status(51008);
}
/**
* 修改订单状态
*/
public function edit()
{
//判断当前用户是否为管理员
if (!MEMBER['is_manager']) {
return send_http_status(414);
}
$_data = $this->request->post();
if (!isset($_data['id']) || !is_numeric($_data['id'])) {
return send_http_status(51005);
}
$_data = array_filter($_data);
$_data['update_time'] = time();
$affected = Db::name($this->table)->strict(false)->update($_data);
if ($affected) {
//如果订单修改成功,且为审核通过 执行会员状态更新
if ($_data['status'] == 1) {
//查询当前订单等级
$_order = Db::name($this->table)->where('id', $_data['id'])->find();
$_member['vip_time'] = $_member['update_time'] = time();
$_member['vip_endtime'] = strtotime('+1 year');
$_member['vip_level'] = $_order['vip_level'];
$_member['id'] = $_order['user_id'];
Db::name($this->table_member)->strict(false)->update($_member);
}
return send_http_status(200);
}
return send_http_status(51009);
}
/**
* 修改租户订单状态
*/
public function tenantEdit()
{
$_data = $this->request->post();
if (!isset($_data['id']) || !is_numeric($_data['id'])) {
return send_http_status(51005);
}
$_data = array_filter($_data);
$_data['update_time'] = time();
$affected = Db::name($this->table_tenant_order)->strict(false)->update($_data);
if ($affected) {
//如果订单修改成功,且为审核通过 执行当前房自动续费
if ($_data['status'] == 1) {
//查询订单中增加的确认日期
$_order = Db::name($this->table_tenant_order)->where('status', 1)->field('room_id,rent_type')->find($_data['id']);
if (empty($_order)) {
return send_http_status(51013);
}
//先查询此房的开始及结束日期
$_room = Db::name($this->table_room)->where('is_del', 0)->find($_order['room_id']);
if (!$_room) {
return send_http_status(51015);
}
$month = $_order['rent_type']; //增加的月数
//判断原房间 结束日期是否为空或者是否已过期
// $second = $_room['end_time'] + ($month * 30 * 24 * 60 * 60); //把月时间换成秒单位 并添加到现有有时间戳
$second = $_room['end_time'];
$now_month = strtotime('+' . $month . ' month'); //以当前时间往后累计指定的$month
$end_time = empty($_room['end_time']) || $_room['end_time'] < time() ? $now_month : $second;
//增加此房间的到期日期
$start_end_time = [
'id' => $_order['room_id'],
'start_time' => time(),
'end_time' => $end_time,
];
// if (!Db::name($this->table_room)->update($start_end_time)) {
// return send_http_status(51014);
// }
//修改定时任务提醒
// $this->crontab_room($start_end_time, $month);
}
return send_http_status(200);
}
return send_http_status(51009);
}
static private function formatData(&$data)
{
if (!$data) {
return;
}
$vip_level = config('vip_level');
$pay_type = config('pay_type');
array_walk($data, function (&$v, &$k) use ($vip_level, $pay_type) {
!empty($v['create_time']) ? $v['create_time'] = date('Y-m-d', $v['create_time']) : $v['create_time'] = '';
!empty($v['update_time']) ? $v['update_time'] = date('Y-m-d', $v['update_time']) : $v['update_time'] = '';
!empty($v['start_time']) ? $v['start_time'] = date('Y-m-d', $v['start_time']) : $v['start_time'] = '';
!empty($v['end_time']) ? $v['end_time'] = date('Y-m-d', $v['end_time']) : $v['end_time'] = '';
//支付方式
if (isset($v['price'])) {
$v['pay_type'] = $pay_type[$v['pay_type']]['name'];
}
});
}
}