242 lines
9.2 KiB
PHP
242 lines
9.2 KiB
PHP
<?php
|
|
|
|
namespace app\admin\controller;
|
|
|
|
use app\api\model\Msg;
|
|
use app\common\controller\Backend;
|
|
use app\common\facade\Token;
|
|
use app\common\library\DatabaseRoute;
|
|
use think\facade\Db;
|
|
use think\Http;
|
|
|
|
class Sys extends Backend
|
|
{
|
|
protected array $noNeedLogin = ['*'];
|
|
public function login()
|
|
{
|
|
$data = $this->request->post();
|
|
if(empty($data['username']) || empty($data['password']) || empty($data['uuid']) || empty($data['captcha']) || empty($data['adminType'])){
|
|
$this->n_error('参数不完整');
|
|
}
|
|
$uuid = $data['uuid'];
|
|
$connect = Db::connect(get_slave_connect_name());
|
|
$captcha = $connect->name('sys_captcha')->where(['uuid' => $uuid, 'code' => $data['captcha']])->find();
|
|
if(!$captcha) {
|
|
$this->n_error('验证码错误', [], 500);
|
|
}
|
|
$ext_time = strtotime($captcha['expire_time']);
|
|
if(time() > $ext_time) {
|
|
$this->n_error('验证码已经过期', [], 500);
|
|
}
|
|
$res = $this->auth->login($data['username'], $data['password']);
|
|
if (isset($res) && $res === true) {
|
|
$user = $this->auth->getAdmin();
|
|
if($data['adminType'] == 1 && $user['is_channel'] != null && $user['is_channel'] == 1) {
|
|
$this->n_error('代理账号请登录代理端', [], 500);
|
|
}
|
|
if($data['adminType'] == 2 && $user['is_channel'] == null) {
|
|
$this->n_error('管理员请登录管理端', [], 500);
|
|
}
|
|
$this->n_success([
|
|
'token' => $this->auth->getToken()
|
|
]);
|
|
} else {
|
|
$msg = $this->auth->getError();
|
|
$msg = $msg ?: __('Check in failed, please try again or contact the website administrator~');
|
|
$this->n_error($msg);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 管理员注销
|
|
* @return void
|
|
*/
|
|
public function logout(): void
|
|
{
|
|
if ($this->request->isPost()) {
|
|
$refreshToken = $this->request->post('refreshToken', '');
|
|
if ($refreshToken) Token::delete((string)$refreshToken);
|
|
$this->auth->logout();
|
|
$this->success();
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 邀请好友奖励分页
|
|
* @return void
|
|
*/
|
|
public function invitefriendaward()
|
|
{
|
|
$params = $this->request->get();
|
|
$subQuery = DatabaseRoute::getAllDbData('user_money_details', function ($query) use ($params) {
|
|
return $query->field('user_id, SUM(money) as awardAmount, SUM(IF(title = "签到奖励", 1, 0)) as signInNum')
|
|
->where('classify', 6)->group('user_id');
|
|
})->buildSql();
|
|
|
|
$result = DatabaseRoute::paginateAllDb('tb_user', function ($query) use ($subQuery , $params) {
|
|
$query->alias('t1')
|
|
->field([
|
|
't1.user_id as userId',
|
|
't1.user_name as userName',
|
|
't1.phone',
|
|
't1.avatar',
|
|
'IFNULL(t2.signInNum, 0) as signInNum',
|
|
'IFNULL(t2.awardAmount, 0) as awardAmount'
|
|
])
|
|
->leftJoin("{$subQuery} t2", 't1.user_id = t2.user_id');
|
|
if(!empty($params['keywords'])) {
|
|
$query->where('t1.user_name', $params['keywords'])->whereOr('t1.phone', $params['keywords']);
|
|
}
|
|
$query->order('t2.signInNum', 'desc');
|
|
$query->order('t1.user_id', 'asc');
|
|
return $query;
|
|
}, (int)$params['page'], (int)$params['limit']);
|
|
$this->n_success(['data' => $result]);
|
|
}
|
|
/**
|
|
* 奖励详情
|
|
* @return void
|
|
*/
|
|
public function invitefrienddetail()
|
|
{
|
|
$params = $this->request->get();
|
|
$userId = $params['userId'];
|
|
$result = DatabaseRoute::paginateAllDb('user_money_details', function ($query) use ($params, $userId) {
|
|
$query->alias('t1')
|
|
->field([
|
|
't1.by_user_id AS userId',
|
|
't1.money AS amount',
|
|
't2.phone AS userPhone',
|
|
't1.create_time AS createTime'
|
|
])
|
|
->leftJoin('tb_user t2', 't1.by_user_id = t2.user_id')
|
|
->where('t1.user_id', $userId)
|
|
->where('t1.classify', 6)
|
|
->whereNotNull('t1.by_user_id')
|
|
->whereNotNull('t2.user_id')
|
|
->order('t1.create_time', 'desc')
|
|
->order('t1.by_user_id', 'asc');
|
|
return $query;
|
|
}, (int)$params['page'], (int)$params['limit'], 'createTime');
|
|
$this->successWithData($result);
|
|
}
|
|
|
|
/**
|
|
* 邀请好友奖励-签到人数分页
|
|
* @return void
|
|
*/
|
|
public function signindetailpage()
|
|
{
|
|
$params = $this->request->get();
|
|
$userId = $params['userId'];
|
|
// 先获取总数
|
|
$count = DatabaseRoute::getAllDbData('user_money_details', function ($query) use($userId) {
|
|
return $query->alias('t')
|
|
->field('t.by_user_id')
|
|
->where('t.user_id', $userId)
|
|
->where('t.classify', 6)
|
|
->where('t.title', '签到奖励')
|
|
->group('t.by_user_id');
|
|
})->count();
|
|
$v_db_name = config('think-orm.connections.' . get_slave_connect_name() . '.database');
|
|
$result = DatabaseRoute::paginateAllDbBySqlAutoCount(function () use($userId, $v_db_name) {
|
|
return "select
|
|
t1.by_user_id as userId,
|
|
t1.createTime,
|
|
t2.user_name as userName,
|
|
t2.phone,
|
|
t3.cert_name as realName,
|
|
t3.cert_no as idCardNo,
|
|
t3.bank_name as bankName,
|
|
t3.account_no as bankCardNo,
|
|
t3.mobile,
|
|
t3.province,
|
|
t3.city,
|
|
t3.bank_branch as bankBranch
|
|
from (
|
|
SELECT
|
|
t.by_user_id,
|
|
MIN( t.create_time ) as createTime
|
|
FROM
|
|
" . $v_db_name . ".v_user_money_details t
|
|
WHERE 1=1
|
|
AND t.user_id = ".$userId."
|
|
AND t.classify = 6
|
|
AND t.title = '签到奖励'
|
|
GROUP BY t.by_user_id
|
|
) t1
|
|
LEFT JOIN " . $v_db_name . ".v_tb_user t2 on t1.by_user_id = t2.user_id
|
|
LEFT JOIN " . $v_db_name . ".v_user_info t3 on t1.by_user_id = t3.user_id
|
|
order by t1.createTime desc,t1.by_user_id asc";
|
|
}, $params['page'], $params['limit'], null, $count);
|
|
$this->successWithData($result);
|
|
}
|
|
|
|
/**
|
|
* 抽奖次数查询-分页
|
|
* @return void
|
|
*/
|
|
public function lotterypage()
|
|
{
|
|
$params = $this->request->get();
|
|
$keywords = $params['keywords'];
|
|
$v_db_name = config('think-orm.connections.' . get_slave_connect_name() . '.database');
|
|
$result = DatabaseRoute::paginateAllDb('tb_user', function ($query) use($keywords, $v_db_name) {
|
|
return $query->alias('t1')
|
|
->field([
|
|
't1.user_id as userId',
|
|
't1.avatar',
|
|
't1.user_name as userName',
|
|
't1.phone',
|
|
// 今日解锁订单数
|
|
'(SELECT COUNT(1) FROM '. $v_db_name .'.v_orders WHERE STATUS = 1 AND pay_way = 9 AND user_id = t1.user_id AND pay_time >= DATE_FORMAT(CURDATE(), "%Y-%m-%d 00:00:00") AND pay_time <= DATE_FORMAT(CURDATE(), "%Y-%m-%d 23:59:59")) as todayUnlocked',
|
|
// 今日抽奖次数
|
|
'(SELECT COUNT(1) FROM '. $v_db_name .'.v_disc_spinning_record WHERE user_id = t1.user_id AND DATE_FORMAT(create_time, "%Y-%m-%d") = CURDATE()) as todayDrawCount'
|
|
])
|
|
->where(function ($query) use ($keywords) {
|
|
$query->where('t1.user_name', $keywords)
|
|
->whereOr('t1.phone', $keywords);
|
|
})
|
|
->order('todayUnlocked', 'desc')
|
|
->order('t1.user_id', 'asc');
|
|
}, $params['page'], $params['limit']);
|
|
|
|
$this->n_success(['data' => $result]);
|
|
}
|
|
|
|
/**
|
|
* 抽奖详情-分页
|
|
* @return void
|
|
*/
|
|
public function lotterydetailpage()
|
|
{
|
|
$params = $this->request->get();
|
|
$userId = $params['userId'];
|
|
// 先获取总数
|
|
$count = Db::connect(get_slave_connect_name())->query("select
|
|
count(*) count
|
|
from v_disc_spinning_record t1
|
|
where t1.user_id = ".$userId);
|
|
$count = $count[0]['count'];
|
|
$v_db_name = config('think-orm.connections.' . get_slave_connect_name() . '.database');
|
|
$result = DatabaseRoute::paginateAllDbBySqlAutoCount(function () use($userId, $v_db_name) {
|
|
return "select
|
|
t1.id,
|
|
t1.name,
|
|
t1.number,
|
|
t1.create_time
|
|
from ". $v_db_name .".v_disc_spinning_record t1
|
|
where t1.user_id = " . $userId . "
|
|
order by t1.id desc";
|
|
}, $params['page'], $params['limit'], null, $count);
|
|
$this->successWithData($result);
|
|
}
|
|
|
|
// 发送验证码
|
|
public function sendMsg()
|
|
{
|
|
$get = $this->request->get();
|
|
return $this->ApiDataReturn(Msg::sendMsg($get['phone'], $get['event']));
|
|
}
|
|
} |