123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- <?php
- /**
- * Created on 2020/8/17 14:25
- * Create by Wpeishi
- */
- namespace App\Http\Controllers\Api\V1;
- use App\Exceptions\ApiException;
- use App\Helpers\NumberHelper;
- use App\Http\Controllers\Api\Controller;
- use App\Models\OrderRecord;
- use App\Models\SmsLog;
- use App\Models\User;
- use App\Services\User\UserCenterService;
- use Dingo\Api\Http\Request;
- use Illuminate\Support\Facades\Cache;
- use Overtrue\EasySms\EasySms;
- /**
- * 用户个人中心
- * Created on 2020/8/27 15:05
- * Create by Wpeishi
- */
- class UserCenterController extends Controller
- {
- private $request;
- private $centerService;
- public function __construct(Request $request, UserCenterService $centerService)
- {
- $this->request = $request;
- $this->centerService = $centerService;
- }
- /**
- * 修改用户信息
- * 修改真实姓名 修改微信名称 修改学校
- * @return array
- */
- public function setUserInfo()
- {
- $update_data = array();
- if (isset($this->request->real_name))
- $update_data['real_name'] = $real_name = $this->request->real_name;
- if (isset($this->request->nick_name))
- $update_data['nick_name'] = $nick_name = $this->request->nick_name;
- if (isset($this->request->school))
- $update_data['school'] = $school = $this->request->school;
- if (isset($this->request->avatar_url))
- $update_data['avatar_url'] = $avatar_url = $this->request->avatar_url;
- if (isset($this->request->gender))
- $update_data['gender'] = $gender = $this->request->gender;
- if (isset($this->request->birthday))
- $update_data['birthday'] = $birthday = $this->request->birthday;
- if (isset($this->request->country))
- $update_data['country'] = $country = $this->request->country;
- if (isset($this->request->province))
- $update_data['province'] = $province = $this->request->province;
- if (isset($this->request->city))
- $update_data['birthday'] = $school = $this->request->city;
- try {
- $user = $this->auth->user();
- if (isset($this->request->phone)) {
- $verifyData = self::verificationCode($this->request);
- $update_data['phone'] = $this->request->phone;
- Cache::forget($this->request->verification_key);
- $user_data = User::query()->where('phone', $this->request->phone)->first();
- if ($user_data) {
- return apiJsonError('手机号已经存在');
- }
- $order_data = OrderRecord::query()->where('phone', $this->request->phone)->first();
- if ($order_data and $order_data->status == 1) {
- $update_data['user_type'] = 1;
- $update_data['become_member_time'] = $order_data->created_at;
- }
- }
- if (count($update_data)) {
- $this->centerService->setUserInfo($user, $update_data);
- }
- return apiJsonMsg('用户信息更新成功');
- } catch (ApiException $apiException) {
- return apiJsonMsg($apiException->getMessage());
- }
- }
- /**
- * 接口解密、手机号-wechat
- * @param Request $request
- * @return array
- */
- public function decrypt(Request $request)
- {
- $user = $this->auth->user();
- $app = \EasyWeChat::miniProgram();
- $decryptedData = $app->encryptor->decryptData($user->session_key, $request->iv, $request->encryptedData);
- if ($decryptedData['purePhoneNumber']) {
- $update_data['phone'] = $decryptedData['purePhoneNumber'];
- $this->centerService->setUserInfo($user, $update_data);
- }
- return apiJson($decryptedData);
- }
- /**
- * 修改手机号,校验验证码
- * @param Request $request
- * @return array
- */
- public function setPhone(Request $request)
- {
- $user = $this->auth->user();
- try {
- self::verificationCode($request);
- $update_data['phone'] = $school = $request->phone;
- $this->centerService->setUserInfo($user, $update_data);
- // 清除验证码缓存
- Cache::forget($request->verification_key);
- return apiJsonMsg('用户信息更新成功');
- } catch (ApiException $apiException) {
- return apiJsonError($apiException->getMessage());
- }
- }
- /**
- * 校验验证码是否正确
- * @param $request
- * @return mixed
- */
- public static function verificationCode($request)
- {
- $verifyData = Cache::get($request->verification_key);
- if (!$verifyData) {
- throw new ApiException('验证码已失效');
- }
- if ($verifyData['code'] != $request->verification_code) {
- throw new ApiException('验证码错误');
- }
- return $verifyData;
- }
- }
|