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.

138 lines
3.7 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('id', $id)
->where('user', Login::$info->id)
->where('del', 2)->first();
if (!$user_person) {
$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),
'id'=>$user->id
]);
}
}