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.
|
|
<?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); } }}
|