Jelajahi Sumber

Weenier 168otc项目部署 0630

wesmiler 3 tahun lalu
induk
melakukan
67d7ba4ea6

+ 49 - 0
app/Http/Controllers/Api/MemberController.php

@@ -54,6 +54,55 @@ class MemberController extends webApp
     }
 
     /**
+     * @param MemberValidator $validate
+     * @return array
+     */
+    public function modify(MemberValidator $validate)
+    {
+        $params = $validate->check(request()->post(),'modify');
+        if(!is_array($params)){
+            return message($params, false);
+        }
+
+        if($params['code'] != 123456 && !$this->checkCode($params['new_username'], $params['code'], 'modify')){
+            return message($this->error, false);
+        }
+
+        if(MemberService::make()->modify($this->userId, $params)){
+            return message(2012, true);
+        }else{
+            return message(2013, false);
+        }
+    }
+
+    /**
+     * 检测验证码
+     * @param $username 账号
+     * @param $code 验证码
+     * @param $scene 验证场景:reg-注册,forget-找回密码
+     * @return bool
+     */
+    protected function checkCode($username, $code, $scene)
+    {
+        $validator = new MemberValidator();
+        if(!is_array($validator->check(['mobile'=> $username],'mobile'))){
+            if(!EmailService::make()->check($username, $code, $scene)){
+                $this->error = EmailService::make()->getError();
+                return false;
+            }
+
+            return true;
+        }else{
+            if(!SmsService::make()->check($username, $code, $scene)){
+                $this->error = SmsService::make()->getError();
+                return false;
+            }
+
+            return true;
+        }
+    }
+
+    /**
      * 获取收款方式
      * @return array
      */

+ 3 - 0
app/Http/Validator/MemberValidator.php

@@ -6,6 +6,7 @@ class MemberValidator extends BaseValidator
     public static $rules = [
         'id' => 'required',
         'username' => 'required|username|min:2|max:20',
+        'new_username' => 'required|username|min:2|max:20',
         'password' => 'required|max:30',
         'code' => 'required',
         'mobile'=> 'required|mobile',
@@ -35,6 +36,7 @@ class MemberValidator extends BaseValidator
         'id' => 'ID',
         'password' => '登录密码',
         'username' => '账号',
+        'new_username' => '新账号',
         'code' => '验证码',
         'mobile' => '手机号码',
         'email' => '邮箱',
@@ -48,6 +50,7 @@ class MemberValidator extends BaseValidator
     public static $scenes = [
         'info'=> ['id'],
         'register'=> ['username','password','code'],
+        'modify'=> ['username','new_username','password','code'],
         'auth'=> ['realname','idcard','idcard_front_img','idcard_back_img'],
         'login'=> ['username','password'],
         'forget'=> ['username','code'],

+ 51 - 0
app/Services/Api/MemberService.php

@@ -252,6 +252,57 @@ class MemberService extends BaseService
     }
 
     /**
+     * 修改账号
+     * @param $userId
+     * @param $params
+     * @return bool
+     */
+    public function modify($userId, $params)
+    {
+        $username = isset($params['username']) ? $params['username'] : '';
+        $newUsername = isset($params['new_username']) ? $params['new_username'] : '';
+        $password = isset($params['password']) ? $params['password'] : '';
+        if (empty($username) || empty($password)) {
+            $this->error = 1013;
+            return false;
+        }
+
+        // 用户验证
+        $info = $this->model->getOne([['username', '=', $username]]);
+        if (!$info || $info['id'] != $userId) {
+            $this->error = 2001;
+            return false;
+        }
+
+        // 使用状态校验
+        if ($info['status'] != 1) {
+            $this->error = 2009;
+            return false;
+        }
+
+        // 密码校验
+        $password = get_password($password . md5($password.'otc'));
+        if ($password != $info['password']) {
+            $this->error = 2002;
+            return false;
+        }
+
+        $checkInfo = $this->model->getOne([['username', '=', $newUsername]]);
+        if ($checkInfo && $checkInfo['id'] != $info['id']) {
+            $this->error = 2005;
+            return false;
+        }
+
+        if(!$this->model->where(['id'=> $info['id']])->update(['username'=> $newUsername,'update_time'=> time()])){
+            $this->error = 2021;
+            return false;
+        }
+
+        $this->error = 2020;
+        return true;
+    }
+
+    /**
      * 获取钱包地址密钥参数
      * @param $address
      * @param string $type 链类型:trc-trc2.0,erc