海南旅游SAAS
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.
 
 
 

108 lines
3.0 KiB

<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\AdminSetting;
use App\Models\Agent;
use App\Models\User;
use EasyWeChat\Factory;
use EasyWeChat\Kernel\Exceptions\DecryptException;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cache;
/**
* 用户
* Class UserController
* @package App\Http\Controllers\Api
*/
class UserController extends Controller
{
//获取用户信息
public function info()
{
$user = User::find($this->user_id);
return $this->success($user);
}
//解密用户信息
public function profile(Request $request)
{
$formData = $request->only(['iv', 'encryptedData']);
$request->validate([
'iv' => 'required',
'encryptedData' => 'required',
], [
'*.required' => '参数缺失'
]);
$agent = Agent::query()->find($this->agent_id); //代理商数据
$session = Cache::get('session_key_' . $this->user_id);
if (!$session) {
return $this->error('无效的session,请重新登录');
}
// 如果有appsecret,使用原来的逻辑,否则使用第三方平台逻辑
if ($agent['appsecret']) {
$config = config('wechat.mini_program.default');
$config = array_merge($config, [
'app_id' => $agent->appid,
'secret' => $agent->appsecret,
]);
$app = Factory::miniProgram($config);
} else {
$setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']);
$config = [
'app_id' => $setting['service_appid'],
'secret' => $setting['service_appsecret'],
'token' => $setting['service_token'],
'aes_key' => $setting['service_aeskey'],
];
$app = Factory::miniProgram($config);
}
try {
$decryptedData = $app->encryptor->decryptData($session, $formData['iv'], $formData['encryptedData']);
$user = User::find($this->user_id);
if (!empty($decryptedData['nickName'])) {
$user->nickname = $decryptedData['nickName'];
}
if (!empty($decryptedData['avatarUrl'])) {
$user->avatar = $decryptedData['avatarUrl'];
}
if (!empty($decryptedData['purePhoneNumber'])) {
$user->mobile = $decryptedData['purePhoneNumber'];
}
$user->unionid = $decryptedData['unionId'] ?? '';
$user->country = $decryptedData['country'] ?? '';
$user->province = $decryptedData['province'] ?? '';
$user->city = $decryptedData['city'] ?? '';
$user->gender = $decryptedData['gender'] ?? 0;
$user->language = $decryptedData['language'] ?? '';
$user->save();
} catch (\Exception | DecryptException $e) {
return $this->error($e->getMessage());
}
$user->token = request()->header('Authentication');
return $this->success($user);
}
public function bindingMobile(Request $request)
{
$request->validate([
'mobile' => 'required|int|between:10000000000,19999999999',
], [
'*.required' => '参数异常'
]);
$userId = $this->user_id;
$user = User::find($userId);
$user->mobile = Request('mobile',0);
if ($user->save()) {
return $this->success($user);
} else {
return $this->error('绑定失败',407);
}
}
}