| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php
- namespace App\Module\AppGame\Handler\User;
- use App\Module\AppGame\Handler\BaseHandler;
- use App\Module\User\Models\UserInfo;
- use App\Module\User\Services\UserService;
- use Google\Protobuf\Internal\Message;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- use Uraus\Kku\Request\RequestUserEditInfo;
- use Uraus\Kku\Response\ResponseUserEditinfo;
- use UCore\Exception\LogicException;
- /**
- * 处理用户修改资料请求
- */
- class EditinfoHandler extends BaseHandler
- {
- /**
- * 是否需要登录
- *
- * @var bool
- */
- protected bool $need_login = true;
- /**
- * 处理修改用户资料请求
- *
- * @param RequestUserEditinfo $data 修改用户资料请求数据
- * @return ResponseUserEditinfo 修改用户资料响应
- */
- public function handle(Message $data): Message
- {
- // 创建响应对象
- $response = new ResponseUserEditinfo();
- // 获取请求参数
- $avatar = $data->getAvatar();
- $nickname = $data->getNickname();
- // 验证参数
- if (empty($nickname)) {
- throw new LogicException('昵称不能为空');
- }
- // 验证昵称长度
- if (mb_strlen($nickname) > 20) {
- throw new LogicException('昵称长度不能超过20个字符');
- }
- // 开始事务
- DB::beginTransaction();
- try {
- // 获取用户信息
- $userInfo = UserInfo::where('user_id', $this->user_id)->first();
- if (!$userInfo) {
- // 如果用户信息不存在,创建一个新的
- $userInfo = new UserInfo();
- $userInfo->user_id = $this->user_id;
- }
- // 更新用户信息
- $userInfo->nickname = $nickname;
- // 只有当头像ID不为0时才更新头像
- if ($avatar > 0) {
- $userInfo->avatar = $avatar;
- }
- // 保存用户信息
- $userInfo->save();
- // 提交事务
- DB::commit();
- // 记录日志
- Log::info('用户修改资料成功', [
- 'user_id' => $this->user_id,
- 'nickname' => $nickname,
- 'avatar' => $avatar
- ]);
- } catch (\Exception $e) {
- // 回滚事务
- DB::rollBack();
- throw $e;
- }
- return $response;
- }
- }
|