| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 |
- <?php
- // +----------------------------------------------------------------------
- // | ThinkCMF [ WE CAN DO IT MORE SIMPLE ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2013-present http://www.thinkcmf.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
- // +----------------------------------------------------------------------
- // | Author: Powerless < wzxaini9@gmail.com>
- // +----------------------------------------------------------------------
- namespace app\user\controller;
- use cmf\lib\Storage;
- use think\Validate;
- use think\Image;
- use cmf\controller\UserBaseController;
- use app\user\model\UserModel;
- class ProfileController extends UserBaseController
- {
- /**
- * 会员中心首页
- */
- public function center()
- {
- $user = cmf_get_current_user();
- $this->assign($user);
- $userId = cmf_get_current_user_id();
- $userModel = new UserModel();
- $user = $userModel->where('id', $userId)->find();
- $this->assign('user', $user);
- return $this->fetch();
- }
- /**
- * 编辑用户资料
- */
- public function edit()
- {
- $user = cmf_get_current_user();
- $this->assign($user);
- return $this->fetch('edit');
- }
- /**
- * 编辑用户资料提交
- */
- public function editPost()
- {
- if ($this->request->isPost()) {
- $validate = new Validate();
- $validate->rule([
- 'user_nickname' => 'max:32',
- 'sex' => 'between:0,2',
- 'birthday' => 'dateFormat:Y-m-d|after:-88 year|before:-1 day',
- 'user_url' => 'url|max:64',
- 'signature' => 'max:128',
- ]);
- $validate->message([
- 'user_nickname.max' => lang('NICKNAME_IS_TO0_LONG'),
- 'sex.between' => lang('SEX_IS_INVALID'),
- 'birthday.dateFormat' => lang('BIRTHDAY_IS_INVALID'),
- 'birthday.after' => lang('BIRTHDAY_IS_TOO_EARLY'),
- 'birthday.before' => lang('BIRTHDAY_IS_TOO_LATE'),
- 'user_url.url' => lang('URL_FORMAT_IS_WRONG'),
- 'user_url.max' => lang('URL_IS_TO0_LONG'),
- 'signature.max' => lang('SIGNATURE_IS_TO0_LONG'),
- ]);
- $data = $this->request->post();
- if (!$validate->check($data)) {
- $this->error($validate->getError());
- }
- $editData = new UserModel();
- if ($editData->editData($data,[
- 'user_nickname',
- 'sex',
- 'birthday',
- 'user_url',
- 'signature',
- 'more'
- ])) {
- $this->success(lang('EDIT_SUCCESS'), "user/profile/center");
- } else {
- $this->error(lang('NO_NEW_INFORMATION'));
- }
- } else {
- $this->error(lang('ERROR'));
- }
- }
- /**
- * 个人中心修改密码
- */
- public function password()
- {
- $user = cmf_get_current_user();
- $this->assign($user);
- return $this->fetch();
- }
- /**
- * 个人中心修改密码提交
- */
- public function passwordPost()
- {
- if ($this->request->isPost()) {
- $validate = new Validate();
- $validate->rule([
- 'old_password' => 'require|min:6|max:32',
- 'password' => 'require|min:6|max:32',
- 'repassword' => 'require|min:6|max:32',
- ]);
- $validate->message([
- 'old_password.require' => lang('old_password_is_required'),
- 'old_password.max' => lang('old_password_is_too_long'),
- 'old_password.min' => lang('old_password_is_too_short'),
- 'password.require' => lang('password_is_required'),
- 'password.max' => lang('password_is_too_long'),
- 'password.min' => lang('password_is_too_short'),
- 'repassword.require' => lang('repeat_password_is_required'),
- 'repassword.max' => lang('repeat_password_is_too_long'),
- 'repassword.min' => lang('repeat_password_is_too_short'),
- ]);
- $data = $this->request->post();
- if (!$validate->check($data)) {
- $this->error($validate->getError());
- }
- $login = new UserModel();
- $log = $login->editPassword($data);
- switch ($log) {
- case 0:
- $this->success(lang('change_success'));
- break;
- case 1:
- $this->error(lang('password_repeat_wrong'));
- break;
- case 2:
- $this->error(lang('old_password_is_wrong'));
- break;
- default :
- $this->error(lang('ERROR'));
- }
- } else {
- $this->error(lang('ERROR'));
- }
- }
- // 用户头像编辑
- public function avatar()
- {
- $user = cmf_get_current_user();
- $this->assign($user);
- return $this->fetch('avatar');
- }
- // 用户头像上传
- public function avatarUpload()
- {
- $file = $this->request->file('file');
- $validator = validate(['file' => 'fileExt:jpg,jpeg,png']);
- if (!$validator->check(['file' => $file])) {
- if ($this->request->isAjax()) {
- $this->error($validator->getError());
- } else {
- return json_encode([
- 'code' => 0,
- "msg" => $validator->getError(),
- "data" => "",
- "url" => ''
- ]);
- }
- }
- $fileMd5 = $file->md5();
- $fileExt = $file->getOriginalExtension();
- $fileName = $fileMd5 . '.' . $fileExt;
- $date = date('Ymd');
- $avatarDir = WEB_ROOT . 'upload' . DIRECTORY_SEPARATOR . 'avatar' . DIRECTORY_SEPARATOR . $date . DIRECTORY_SEPARATOR;
- $file->move($avatarDir, $fileMd5 . '.' . $fileExt);
- $avatar = 'avatar/' . $date . '/' . $fileName;
- session('avatar', $avatar);
- if ($this->request->isAjax()) {
- $avatarPath = $avatarDir . $fileName;
- $storage = new Storage();
- $result = $storage->upload($avatar, $avatarPath, 'image');
- $userId = cmf_get_current_user_id();
- UserModel::where("id", $userId)->update(["avatar" => $avatar]);
- session('user.avatar', $avatar);
- $this->success("上传成功", null, ['file' => $avatar]);
- } else {
- return json_encode([
- 'code' => 1,
- "msg" => "上传成功",
- "data" => ['file' => $avatar],
- "url" => ''
- ]);
- }
- }
- // 用户头像裁剪
- public function avatarUpdate()
- {
- $avatar = session('avatar');
- if (!empty($avatar)) {
- $w = $this->request->param('w', 0, 'intval');
- $h = $this->request->param('h', 0, 'intval');
- $x = $this->request->param('x', 0, 'intval');
- $y = $this->request->param('y', 0, 'intval');
- $avatarPath = WEB_ROOT . "upload/" . $avatar;
- $avatarImg = Image::open($avatarPath);
- $avatarImg->crop($w, $h, $x, $y)->save($avatarPath);
- $result = true;
- if ($result === true) {
- $storage = new Storage();
- $result = $storage->upload($avatar, $avatarPath, 'image');
- $userId = cmf_get_current_user_id();
- UserModel::where("id", $userId)->update(["avatar" => $avatar]);
- session('user.avatar', $avatar);
- $this->success("头像更新成功!");
- } else {
- $this->error("头像保存失败!");
- }
- }
- }
- /**
- * 绑定手机号或邮箱
- */
- public function binding()
- {
- $user = cmf_get_current_user();
- $this->assign($user);
- return $this->fetch();
- }
- /**
- * 绑定手机号
- */
- public function bindingMobile()
- {
- if ($this->request->isPost()) {
- $validate = new Validate();
- $validate->rule([
- 'username' => 'require|number|unique:user,mobile',
- 'verification_code' => 'require',
- ]);
- $validate->message([
- 'username.require' => '手机号不能为空',
- 'username.number' => '手机号只能为数字',
- 'username.unique' => '手机号已存在',
- 'verification_code.require' => '验证码不能为空',
- ]);
- $data = $this->request->post();
- if (!$validate->check($data)) {
- $this->error($validate->getError());
- }
- $errMsg = cmf_check_verification_code($data['username'], $data['verification_code']);
- if (!empty($errMsg)) {
- $this->error($errMsg);
- }
- $userModel = new UserModel();
- $log = $userModel->bindingMobile($data);
- switch ($log) {
- case 0:
- $this->success('手机号绑定成功');
- break;
- default :
- $this->error('未受理的请求');
- }
- } else {
- $this->error("请求错误");
- }
- }
- /**
- * 绑定邮箱
- */
- public function bindingEmail()
- {
- if ($this->request->isPost()) {
- $validate = new Validate();
- $validate->rule([
- 'username' => 'require|email|unique:user,user_email',
- 'verification_code' => 'require',
- ]);
- $validate->message([
- 'username.require' => '邮箱地址不能为空',
- 'username.email' => '邮箱地址不正确',
- 'username.unique' => '邮箱地址已存在',
- 'verification_code.require' => '验证码不能为空',
- ]);
- $data = $this->request->post();
- if (!$validate->check($data)) {
- $this->error($validate->getError());
- }
- $errMsg = cmf_check_verification_code($data['username'], $data['verification_code']);
- if (!empty($errMsg)) {
- $this->error($errMsg);
- }
- $userModel = new UserModel();
- $log = $userModel->bindingEmail($data);
- switch ($log) {
- case 0:
- $this->success('邮箱绑定成功');
- break;
- default :
- $this->error('未受理的请求');
- }
- } else {
- $this->error("请求错误");
- }
- }
- }
|