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']; } }); } }