You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
3.5 KiB
PHP
131 lines
3.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Http\Requests\EditUserInput;
|
|
use App\Models\User;
|
|
use App\Models\UserAccount;
|
|
use App\Models\UserPerson;
|
|
use App\Models\UserToken;
|
|
use Illuminate\Http\Request;
|
|
use WeiXin;
|
|
use Yo;
|
|
use Login;
|
|
use Illuminate\Support\Str;
|
|
|
|
class UserController extends Controller
|
|
{
|
|
public function update(EditUserInput $request)
|
|
{
|
|
Login::admin([19]);
|
|
$id = $request->post('id');
|
|
$nickname = $request->post('nickname');
|
|
$avatar = $request->post('avatar');
|
|
$dev = $request->post('dev');
|
|
$pay = $request->post('pay');
|
|
$status = $request->post('status');
|
|
$user = User::where('id', $id)->where('del', 2)->first();
|
|
if (!$user) Yo::error_echo(100000, ['用户']);
|
|
$user->nickname = $nickname;
|
|
$user->avatar = $avatar ?? '';
|
|
$user->dev = $dev;
|
|
$user->pay = $pay;
|
|
$user->status = $status;
|
|
$user->save();
|
|
return Yo::update_echo($id);
|
|
}
|
|
|
|
public function info(Request $request)
|
|
{
|
|
Login::user();
|
|
$id = $request->post('id');
|
|
|
|
$user_person = UserPerson::where('user', Login::$info->id)
|
|
->where('del', 2)->where('default', 1)->first();
|
|
if (!$user_person) {
|
|
$user_person = UserPerson::where('user', Login::$info->id)
|
|
->where('del', 2)->orderBy('id', 'desc')->first();
|
|
}
|
|
if (!$user_person) {
|
|
$user_person = [
|
|
'id' => 0,
|
|
'name' => '',
|
|
'phone' => ''
|
|
];
|
|
}
|
|
return Yo::echo([
|
|
'info' => [
|
|
'id' => Login::$info->id,
|
|
'nickname' => Login::$info->nickname,
|
|
'avatar' => Login::$info->avatar,
|
|
'person' => $user_person,
|
|
'dev' => Login::$info->dev,
|
|
]
|
|
]);
|
|
}
|
|
|
|
public function admin_list()
|
|
{
|
|
Login::admin([19]);
|
|
$status = request()->post('status');
|
|
$user_list = User::select('*')
|
|
->selectRaw("IFNULL((select account from user_accounts where users.id = user_accounts.user and type = 1 and del = 2),'') as openid")
|
|
->where(function ($query) use ($status) {
|
|
if ($status != 0) $query->where('status', $status);
|
|
})
|
|
->where('del', 2)
|
|
->paginate(15);
|
|
return Yo::echo($user_list);
|
|
}
|
|
|
|
public function status()
|
|
{
|
|
Login::user();
|
|
return Yo::echo();
|
|
}
|
|
|
|
public function create_token($user, $type = 1)
|
|
{
|
|
if ($user->status != 1) Yo::error_echo(100002);
|
|
if ($user->del != 2) Yo::error_echo(100002);
|
|
$token = Str::orderedUuid();
|
|
$user_token = new UserToken();
|
|
$user_token->user = $user->id;
|
|
$user_token->token = $token;
|
|
// $type 1-微信登录
|
|
$user_token->type = $type;
|
|
$user_token->save();
|
|
return $token;
|
|
}
|
|
|
|
public function login()
|
|
{
|
|
$code = request()->post('code');
|
|
$wx_login_info = WeiXin::codeLogin($code);
|
|
if (!isset($wx_login_info['openid'])) Yo::error_echo(100002);
|
|
$user_account = UserAccount::where('account', $wx_login_info['openid'])->where('del', '2')->where('type', '1')->first();
|
|
if (!$user_account) {
|
|
$user = new User();
|
|
$user->nickname = '';
|
|
$user->avatar = '';
|
|
$user->status = 1;
|
|
$user->save();
|
|
$user->nickname = '用户#' . $user->id;
|
|
$user->save();
|
|
$user_account = new UserAccount();
|
|
$user_account->user = $user->id;
|
|
$user_account->account = $wx_login_info['openid'];
|
|
$user_account->type = 1;
|
|
} else {
|
|
$user = User::find($user_account->user);
|
|
if (!$user) Yo::error_echo(100002);
|
|
}
|
|
$user = User::find($user->id);
|
|
$user_account->secret = $wx_login_info['session_key'];
|
|
$user_account->save();
|
|
return Yo::echo([
|
|
'token' => $this->create_token($user)
|
|
]);
|
|
}
|
|
}
|