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.
238 lines
8.5 KiB
238 lines
8.5 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 Member extends Base
|
|
{
|
|
private $table = 'CloudMember';
|
|
private $table_house = 'CloudHouse';
|
|
private $table_room = 'CloudHouseRoom';
|
|
|
|
public function __construct(App $app = null)
|
|
{
|
|
parent::__construct($app);
|
|
parent::auth();
|
|
}
|
|
|
|
/**
|
|
* 设置保洁
|
|
*/
|
|
public function setClean(){
|
|
$param = $this->request->param();
|
|
Db::name($this->table)->update(['id'=>$param['id'],'is_clean'=>$param['is_clean']]);
|
|
}
|
|
|
|
/**
|
|
* 获取管理用户列表
|
|
*/
|
|
public function index()
|
|
{
|
|
//判断当前用户是否为管理员
|
|
if (!MEMBER['is_manager']) {
|
|
return send_http_status(414);
|
|
}
|
|
$_where = 'status =1';
|
|
$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);
|
|
}
|
|
|
|
/**
|
|
* 绑定用户手机号
|
|
*/
|
|
public function bindPhone()
|
|
{
|
|
$iv = $this->request->param('iv');
|
|
$encryptedData = $this->request->param('encryptedData');
|
|
$code = $this->request->param('code');
|
|
//获取小程序appid配置
|
|
$config = config('appid');
|
|
$crypt = \We::WeMiniCrypt($config);
|
|
//通过code获取 opendi及session_key
|
|
$_session = $crypt->session($code);
|
|
if (is_array($_session)) {
|
|
//解密用户数据
|
|
$_data = $crypt->decode($iv, $_session['session_key'], $encryptedData);
|
|
if (isset($_data['phoneNumber']) && !empty($_data['phoneNumber'])) {
|
|
//通过openid修改用户手机号
|
|
$affected = Db::name($this->table)->where('openid', $_session['openid'])->update(['phone' => $_data['phoneNumber']]);
|
|
if ($affected > -1) {
|
|
return send_http_status(200);
|
|
}
|
|
}
|
|
}
|
|
return send_http_status(51007);
|
|
}
|
|
|
|
/**
|
|
* 用户资料修改
|
|
*/
|
|
public function modify()
|
|
{
|
|
$_data = $this->request->post();
|
|
//添加房源数据
|
|
$_data = array_filter($_data);
|
|
$safe_data['pay_info'] = !empty($_data['pay_info']) ? $_data['pay_info'] : '';
|
|
$safe_data['phone'] = $_data['phone'];
|
|
$safe_data['qrcode'] = $_data['qrcode'];
|
|
$safe_data['truename'] = $_data['truename'];
|
|
$safe_data['card_number'] = $_data['card_number'];
|
|
$safe_data['update_time'] = time();
|
|
$safe_data['id'] = USER_ID;
|
|
$affected = Db::name($this->table)->strict(false)->update($safe_data);
|
|
if ($affected) {
|
|
$_member = Db::name($this->table)->find(USER_ID);
|
|
if (!empty($_member['qrcode'])) {
|
|
$_member['imgList'] = explode(',', $_member['qrcode']);
|
|
}
|
|
return send_http_status(200, $_member);
|
|
}
|
|
return send_http_status(413);
|
|
}
|
|
|
|
/**
|
|
* 会员详情
|
|
* @param string $id 会员id
|
|
* @return \type|void
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
* @throws \think\exception\DbException
|
|
*/
|
|
public function view($id = '')
|
|
{
|
|
if (!$id) {
|
|
return;
|
|
}
|
|
//获取房源详情
|
|
$_data['member'] = Db::name($this->table)->find($id);
|
|
if ($_data['member']) {
|
|
//查询所有房源数据
|
|
$_data['house_count'] = Db::name($this->table_house)->where('is_del', 0)->where('user_id', $_data['member']['id'])->count();
|
|
$_data['room_count'] = Db::name($this->table_room)->where('is_del', 0)->where('user_id', $_data['member']['id'])->count();
|
|
$_data['vip_level'] = config('vip_level');
|
|
}
|
|
|
|
self::formatViewData($_data['member']);
|
|
return send_http_status(200, $_data);
|
|
}
|
|
|
|
/**
|
|
* 获取用户信息
|
|
* @param string $id
|
|
* @return \type
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
* @throws \think\exception\DbException
|
|
*/
|
|
public function getInfo($id = '')
|
|
{
|
|
//先查询openid是否存在
|
|
$_result = Db::name($this->table)->where('id', $id)->find();
|
|
if ($_result) {
|
|
$_result['imgList'] = !empty($_result['qrcode']) ? explode(',', $_result['qrcode']) : '';
|
|
self::formatViewData($_result);
|
|
return send_http_status(200, $_result);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 修改会员等级
|
|
* @param string $user_id 被修改的用户id
|
|
* @param int $level 修改等级
|
|
* @return \type
|
|
* @throws \think\Exception
|
|
* @throws \think\exception\PDOException
|
|
*/
|
|
public function level($user_id = '', $level = 0)
|
|
{
|
|
if (!$user_id || !is_numeric($user_id) || !in_array($level, [0, 1, 2, 3])) {
|
|
return send_http_status(51005);
|
|
}
|
|
//判断当前用户是否为管理员
|
|
if (!MEMBER['is_manager']) {
|
|
return send_http_status(414);
|
|
}
|
|
$affected = Db::name($this->table)->where('id', $user_id)->update(['vip_level' => $level, 'vip_time' => time()]);
|
|
return send_http_status(200);
|
|
}
|
|
|
|
|
|
/**
|
|
* 修改会员状态
|
|
* @param string $user_id 被修改的用户id
|
|
* @return \type
|
|
* @throws \think\Exception
|
|
* @throws \think\exception\PDOException
|
|
*/
|
|
public function del($id = '')
|
|
{
|
|
if (!$id || !is_numeric($id)) {
|
|
return send_http_status(51003);
|
|
}
|
|
//判断当前用户是否为管理员
|
|
if (!MEMBER['is_manager']) {
|
|
return send_http_status(414);
|
|
}
|
|
$affected = Db::name($this->table)->where('id', $id)->update(['status' => 0]);
|
|
return send_http_status(200);
|
|
}
|
|
|
|
static private function formatData(&$data)
|
|
{
|
|
if (!$data) {
|
|
return;
|
|
}
|
|
$vip_level = config('vip_level');
|
|
array_walk($data, function (&$v, &$k) use ($vip_level) {
|
|
!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['vip_time']) ? $v['vip_time'] = date('Y-m-d', $v['vip_time']) : $v['vip_time'] = '';
|
|
isset($v['sex']) ? $v['sex'] = config('sex')[$v['sex']] : '';
|
|
//列表封面
|
|
if (isset($v['vip_level'])) {
|
|
$v['vip_level_color'] = $vip_level[$v['vip_level']]['color'];
|
|
$v['vip_level'] = $vip_level[$v['vip_level']]['name'];
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
static private function formatViewData(&$data)
|
|
{
|
|
!empty($data['create_time']) ? $data['create_time'] = date('Y-m-d', $data['create_time']) : $data['create_time'] = '';
|
|
!empty($data['update_time']) ? $data['update_time'] = date('Y-m-d', $data['update_time']) : $data['update_time'] = '';
|
|
!empty($data['vip_time']) ? $data['vip_time'] = date('Y-m-d', $data['vip_time']) : $data['vip_time'] = '';
|
|
!empty($data['vip_endtime']) ? $data['vip_endtime'] = date('Y-m-d', $data['vip_endtime']) : $data['vip_endtime'] = '';
|
|
$data['vip_level_str'] = config('vip_level')[$data['vip_level']]['name'];
|
|
$data['vip_level_color'] = config('vip_level')[$data['vip_level']]['color'];
|
|
}
|
|
|
|
}
|
|
|