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.
		
		
		
		
		
			
		
			
				
					
					
						
							95 lines
						
					
					
						
							2.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							95 lines
						
					
					
						
							2.5 KiB
						
					
					
				
								<?php
							 | 
						|
								
							 | 
						|
								namespace App\Http\Controllers\Api;
							 | 
						|
								use App\Http\Controllers\Controller;
							 | 
						|
								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); //代理商数据
							 | 
						|
										$config = config('wechat.mini_program.default');
							 | 
						|
										$config = array_merge($config, [
							 | 
						|
											'app_id' => $agent->appid,
							 | 
						|
											'secret' => $agent->appsecret,
							 | 
						|
										]);
							 | 
						|
								
							 | 
						|
										$session = Cache::get('session_key_' . $this->user_id);
							 | 
						|
										if (!$session) {
							 | 
						|
											return $this->error('无效的session,请重新登录');
							 | 
						|
										}
							 | 
						|
								
							 | 
						|
										$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);
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								}
							 |