From bfd2e3475e5468beafed01dfa7e8b9208b0a5470 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E4=B8=80=E5=B3=B0?= <1feng.0595@gmail.com> Date: Sat, 14 Oct 2017 00:19:27 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Common/Token.php | 2 +- app/Http/Controllers/Api/UserController.php | 141 +++++----------- .../Controllers/Api/VerifyCodeController.php | 2 +- .../Controllers/Weixin/UserController.php | 66 +++++++- app/Http/Middleware/WxLogin.php | 2 +- app/Http/Model/User.php | 56 ++++++- public/js/md5.min.js | 2 + resources/views/weixin/user/login.blade.php | 26 +-- .../views/weixin/user/register.blade.php | 150 ++++++++++++++++++ routes/web.php | 8 +- 10 files changed, 330 insertions(+), 125 deletions(-) create mode 100644 public/js/md5.min.js create mode 100644 resources/views/weixin/user/register.blade.php diff --git a/app/Common/Token.php b/app/Common/Token.php index ed3eeac..1dee56f 100644 --- a/app/Common/Token.php +++ b/app/Common/Token.php @@ -103,6 +103,6 @@ class Token 'expired_at' => $expired_at )); - return array('access_token'=>$token,'expired_at'=>$expired_at); + return array('access_token'=>$token,'expired_at'=>$expired_at,'uid'=>$uid,'type'=>$type); } } \ No newline at end of file diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index df08208..0380bc3 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -5,6 +5,7 @@ use App\Http\Controllers\Api\CommonController; use Illuminate\Http\Request; use App\Common\ReturnData; use App\Common\Token; +use App\Common\Helper; use App\Http\Model\User; class UserController extends CommonController @@ -86,133 +87,63 @@ class UserController extends CommonController } //注册 - public function register(Request $request) + public function wxRegister(Request $request) { - $mobile = $request->input('mobile', null); - $password = $request->input('password', null); - $community_id = $request->input('community_id', null); - $address = $request->input('address', null); - $type = $request->input('type', null); - $verificationCode = $request->input('verificationCode', null); - $verificationType = $request->input('verificationType', null); //7表示验证码登录 - - $yezhu_mobile = $request->input('yezhu_mobile', null); - - Log::info("注册手机号==========mobile=======".$mobile); + $data['mobile'] = $request->input('mobile',''); + $data['user_name'] = $request->input('user_name',''); + $data['password'] = $request->input('password',''); - if ($mobile==null || $password==null || $verificationCode==null || $verificationType===null || $community_id===null) + if (($data['mobile']=='' && $data['user_name']=='') || $data['password']=='') { - return ReturnCode::create(ReturnCode::PARAMS_ERROR); + return ReturnData::create(ReturnData::PARAMS_ERROR); } - - if (!Helper::isValidMobile($mobile)) + + if (isset($data['mobile']) && !Helper::isValidMobile($data['mobile'])) { - return response(ReturnCode::create(ReturnCode::MOBILE_FORMAT_FAIL)); + return ReturnData::create(ReturnData::MOBILE_FORMAT_FAIL); } - $verifyCode = VerifyCode::isVerify($mobile, $verificationCode, $verificationType); - if(!$verifyCode) - { - return ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE); - } - - if($yezhu_mobile!=null) - { - $yezhu = MallDataManager::userFirst(['mobile'=>$yezhu_mobile,'community_id'=>$community_id]); - if (!$yezhu) - { - return response(ReturnCode::create(ReturnCode::PARAMS_ERROR,'业主不匹配')); - } - } - //判断是否已经注册 - $user = MallDataManager::userFirst(['mobile'=>$mobile]); - if ($user) + if (User::getOneUser(array('mobile'=>$data['mobile']))) { - return response(ReturnCode::create(ReturnCode::MOBILE_EXIST)); + return ReturnData::create(ReturnData::MOBILE_EXIST); } - try + if (User::getOneUser(array('user_name'=>$data['user_name']))) { - DB::beginTransaction(); - //创建用户 - $userdata['mobile'] = $mobile; - $userdata['password'] = $password; - $userdata['verify_mobile'] = 1; - $userdata['name'] = $mobile; - $userdata['nickname'] = $mobile; - $userdata['community_id'] = $community_id; - $userdata['address'] = $address; - $userdata['type'] = $type; - $userid = DB::table('user')->insertGetId($userdata); - - //注册环信用户 - $Easemob = new Easemob(); - $Easemob->imRegister(['username'=>'cuobian'.$userid,'password'=>md5('cuobian'.$userid)]); - - //生成token - if ($user = MallDataManager::userFirst(['mobile'=>$mobile,'password'=>$password])) - { - //获取token - $expired_at = Carbon::now()->addDay()->toDateTimeString(); - $token = Token::generate(Token::TYPE_SHOP, $user->id); - } - - DB::commit(); - $response = ReturnCode::create(ReturnCode::SUCCESS); - $response['data'] = [ - 'id' => $user->id, - 'mobile' => $user->mobile, - 'expired_at' => $expired_at, - 'token' => $token, - ]; + return ReturnData::create(ReturnData::SUCCESS,null,'用户名已存在'); } - catch (Exception $e) - { - DB::rollBack(); - Log::info($e->getMessage()); - return response(ReturnCode::error($e->getCode(), $e->getMessage())); - } - - return response($response); + + //添加用户 + $res = User::wxRegister($data); + + if($res == false) + { + return ReturnData::create(ReturnData::SYSTEM_FAIL); + } + + return ReturnData::create(ReturnData::SUCCESS,$res); } //登录 - public function login(Request $request) + public function wxLogin(Request $request) { - $mobile = $request->input('mobile'); - $password = $request->input('password'); - - if (!$mobile || !$password) - { - return response(ReturnCode::create(ReturnCode::PARAMS_ERROR)); - } + $data['user_name'] = $request->input('user_name',''); + $data['password'] = $request->input('password',''); - if ($user = MallDataManager::userFirst(['mobile'=>$mobile])) + if ($data['user_name']=='' || $data['password']=='') { - //判断密码 - if ($password == $user->password) - { - //获取token - $expired_at = Carbon::now()->addDay()->toDateTimeString(); - $token = Token::generate(Token::TYPE_SHOP, $user->id); - - $response = ReturnCode::success(); - $response['data']=[ - 'id' => $user->id, 'name' => $user->name, 'nickname' => $user->nickname, 'headimg' => (string)$user->head_img, 'token' => $token, 'expired_at' => $expired_at, 'mobile' => $user->mobile, 'hx_name' => 'cuobian'.$user->id, 'hx_pwd' => md5('cuobian'.$user->id) - ]; - - return response($response); - } - else - { - return response(ReturnCode::create(ReturnCode::PASSWORD_NOT_MATCH)); - } + return ReturnData::create(ReturnData::PARAMS_ERROR); } - else + + $res = User::wxLogin($data); + + if ($res === false) { - return response(ReturnCode::create(ReturnCode::USER_NOT_EXIST)); + return ReturnData::create(ReturnData::PARAMS_ERROR,null,'账号或密码错误'); } + + return ReturnData::create(ReturnData::SUCCESS,$res); } //验证码登录 diff --git a/app/Http/Controllers/Api/VerifyCodeController.php b/app/Http/Controllers/Api/VerifyCodeController.php index 91d8b27..4dd0f78 100644 --- a/app/Http/Controllers/Api/VerifyCodeController.php +++ b/app/Http/Controllers/Api/VerifyCodeController.php @@ -16,7 +16,7 @@ class VerifyCodeController extends CommonController } //验证码校验 - public function check(Request $request) + public function verifyCodeCheck(Request $request) { $mobile = $request->input('mobile', null); //手机号码 $verifyCode = $request->input('verifyCode', null); //手机验证码 diff --git a/app/Http/Controllers/Weixin/UserController.php b/app/Http/Controllers/Weixin/UserController.php index 956b05b..9998003 100644 --- a/app/Http/Controllers/Weixin/UserController.php +++ b/app/Http/Controllers/Weixin/UserController.php @@ -232,7 +232,71 @@ class UserController extends CommonController header('Location: '.route('weixin_user'));exit; } - return view('weixin.user.login'); + if($_SERVER['REQUEST_METHOD'] == 'POST') + { + if($_POST['user_name'] == '') + { + $this->error_jump('账号不能为空'); + } + + if($_POST['password'] == '') + { + $this->error_jump('密码不能为空'); + } + + $postdata = array( + 'user_name' => $_POST['user_name'], + 'password' => md5($_POST['password']) + ); + $url = env('APP_API_URL')."/wx_login"; + $res = curl_request($url,$postdata,'POST'); + + if($res['code'] != ReturnCode::SUCCESS_CODE){$this->error_jump('登录失败');} + + $_SESSION['weixin_user_info'] = $res['data']; + + header('Location: '.route('weixin_user'));exit; + } + + return view('weixin.user.login'); + } + + //注册 + public function register(Request $request) + { + if(isset($_SESSION['weixin_user_info'])) + { + if(isset($_SERVER["HTTP_REFERER"])){header('Location: '.$_SERVER["HTTP_REFERER"]);exit;} + header('Location: '.route('weixin_user'));exit; + } + + if($_SERVER['REQUEST_METHOD'] == 'POST') + { + if($_POST['user_name'] == '') + { + $this->error_jump('账号不能为空'); + } + + if($_POST['password'] == '') + { + $this->error_jump('密码不能为空'); + } + + $postdata = array( + 'user_name' => $_POST['user_name'], + 'password' => md5($_POST['password']) + ); + $url = env('APP_API_URL')."/wx_login"; + $res = curl_request($url,$postdata,'POST'); + + if($res['code'] != ReturnCode::SUCCESS_CODE){$this->error_jump('登录失败');} + + $_SESSION['weixin_user_info'] = $res['data']; + + header('Location: '.route('weixin_user'));exit; + } + + return view('weixin.user.register'); } public function logout(Request $request) diff --git a/app/Http/Middleware/WxLogin.php b/app/Http/Middleware/WxLogin.php index bba359b..5c407a8 100644 --- a/app/Http/Middleware/WxLogin.php +++ b/app/Http/Middleware/WxLogin.php @@ -16,7 +16,7 @@ class WxLogin } else { - header('Location: '.route('weixin'));exit; + header('Location: '.route('weixin_login'));exit; } return $next($request); diff --git a/app/Http/Model/User.php b/app/Http/Model/User.php index afb762d..7c74459 100644 --- a/app/Http/Model/User.php +++ b/app/Http/Model/User.php @@ -15,8 +15,8 @@ class User extends BaseModel * * @var array */ - protected $guarded = []; - protected $hidden = ['password']; + protected $guarded = array(); + protected $hidden = array('password','pay_password'); /** * 获取关联到用户的角色 */ @@ -118,14 +118,62 @@ class User extends BaseModel return true; } + //获取一条用户信息 + public static function getOneUser($where) + { + $user = self::where($where)->first(); + if(!$user){return false;} + $user['reciever_address'] = UserAddress::getOne($user->address_id); + + return $user; + } + //获取用户信息 public static function getUserInfo($user_id) { $user = self::where('id', $user_id)->first(); if(!$user){return false;} - $user['reciever_address'] = UserAddress::getOne($user->address_id); - $user['collect_goods_count'] = CollectGoods::where('user_id', $user_id)->count(); + $user->reciever_address = UserAddress::getOne($user->address_id); + $user->collect_goods_count = CollectGoods::where('user_id', $user_id)->count(); return $user; } + + //注册 + public static function wxRegister(array $param) + { + extract($param); //参数 + + if(isset($user_name)){$data['user_name'] = $user_name;} + if(isset($mobile)){$data['mobile'] = $mobile;} + if(isset($password)){$data['password'] = $password;} + + if (isset($data) && $id = self::add($data)) + { + //生成token + return Token::getToken(Token::TYPE_WEIXIN, $id); + } + + return false; + } + + //用户登录 + public static function wxLogin(array $param) + { + extract($param); //参数 + + $user = self::where(array('mobile'=>$user_name,'password'=>$password))->orWhere(array('user_name'=>$user_name,'password'=>$password))->first(); + + if(!$user){return false;} + + $res = self::getUserInfo($user->id); + $token = Token::getToken(Token::TYPE_WEIXIN, $user->id); + + foreach($token as $k=>$v) + { + $res->$k = $v; + } + + return $res; + } } \ No newline at end of file diff --git a/public/js/md5.min.js b/public/js/md5.min.js new file mode 100644 index 0000000..10be3f6 --- /dev/null +++ b/public/js/md5.min.js @@ -0,0 +1,2 @@ +!function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t);return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}"function"==typeof define&&define.amd?define(function(){return A}):"object"==typeof module&&module.exports?module.exports=A:n.md5=A}(this); +//# sourceMappingURL=md5.min.js.map ,https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js \ No newline at end of file diff --git a/resources/views/weixin/user/login.blade.php b/resources/views/weixin/user/login.blade.php index ee8e479..11cff05 100644 --- a/resources/views/weixin/user/login.blade.php +++ b/resources/views/weixin/user/login.blade.php @@ -27,31 +27,36 @@ .adr_add{margin:0 10px;} .adr-form-group{margin-top:10px;} .adr-form-group input[type=text],.adr-form-group input[type=password]{display:block;width:100%;font-size:16px;padding:12px;color:#777;vertical-align:middle;background-color:#fff;background-image:none;border:1px solid #ddd;border-radius:0;box-sizing:border-box;} + +.reg a{color:#2393df;} - + + @include('weixin.common.footer') diff --git a/resources/views/weixin/user/register.blade.php b/resources/views/weixin/user/register.blade.php new file mode 100644 index 0000000..83c4702 --- /dev/null +++ b/resources/views/weixin/user/register.blade.php @@ -0,0 +1,150 @@ + +注册 + + + + +
+
返回
+
注册
+ +
+
+ +
+ + + + + + + +@include('weixin.common.footer') + \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index ea67ee4..90dbe42 100644 --- a/routes/web.php +++ b/routes/web.php @@ -64,7 +64,8 @@ Route::group(['prefix' => 'weixin', 'namespace' => 'Weixin'], function () { Route::get('/goods/{id}', 'GoodsController@goods')->name('weixin_goods_detail'); //商品详情页 Route::get('/goodslist', 'GoodsController@goodslist')->name('weixin_goods_list'); //产品分类页 - Route::get('/login', 'UserController@login')->name('weixin_login'); + Route::any('/login', 'UserController@login')->name('weixin_login'); + Route::any('/register', 'UserController@register')->name('weixin_register'); Route::get('/logout', 'UserController@logout')->name('weixin_user_logout'); //退出 //页面跳转 Route::get('/jump', 'IndexController@jump')->name('weixin_jump'); @@ -119,6 +120,9 @@ Route::group(['prefix' => 'dataapi', 'namespace' => 'Api', 'middleware' => ['web //地区,省市区 Route::get('/region_list', 'RegionController@regionList'); Route::get('/region_detail', 'RegionController@regionDetail'); + //用户 + Route::post('/wx_register', 'UserController@wxRegister'); //注册 + Route::post('/wx_login', 'UserController@wxLogin'); //登录 }); //API接口路由,需token验证 @@ -171,7 +175,7 @@ Route::group(['prefix' => 'dataapi', 'namespace' => 'Api', 'middleware' => ['web Route::post('/feedback_add', 'FeedBackController@feedbackAdd'); //其它 - Route::get('/verifycode_check', 'VerifyCodeController@check'); //验证码校验 + Route::get('/verifycode_check', 'VerifyCodeController@verifyCodeCheck'); //验证码校验 Route::get('/andriod_upgrade', 'IndexController@andriodUpgrade'); //安卓升级 //图片上传 Route::post('/image_upload', 'ImageController@imageUpload'); //普通文件/图片上传