123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- <?php
- namespace app\api\controller\v1;
- use app\BaseController;
- use app\model\api\Member;
- use app\model\api\SmsYzm;
- use app\Request;
- use library\services\UtilService;
- use library\utils\Sms;
- use think\facade\Db;
- class Login extends BaseController
- {
- /**
- * 登录
- * @param Request $request
- */
- public function l(Request $request) {
- [$userName,$passWord] = UtilService::getMore([
- ['userName','','empty','请输入账户账号'],
- ['passWord','','empty','请输入登录密码']
- ],$request,true);
- //获取登录
- $meberInfo = Member::login($userName,$passWord);
- if(empty($meberInfo)) {
- return app('json')->fail(Member::getErrorInfo('用户名错误,请重新输入'));
- }
- //生成令牌
- $token = Member::createToken($meberInfo, 'xxlm');
- if(empty($token)) {
- return app('json')->fail(Member::getErrorInfo());
- }
- Member::where('uid',$meberInfo['uid'])->save(['lasttime'=>time()]);
- $data['uid'] = $meberInfo['uid'];
- $data['ip'] = $request->ip();
- $data['time'] = time();
- Db::name("login_record")->insert($data);
- return app('json')->success([
- 'token' => $token,
- 'user_info' => [
- 'mobile' => $meberInfo->getData('mobile'),
- 'name' => $meberInfo->getData('name'),
- 'avatar' => $meberInfo->getData('avatar'),
- 'money' => $meberInfo->getData('money'),
- 'openid' => $meberInfo->getData('openid')
- ],
- ]);
- }
- /**
- * 获取验证码
- * @param Request $request
- */
- public function yzm(Request $request) {
- [$mobile,$time,$token] = UtilService::getMore([
- ['mobile','','empty','请输入手机号码'],
- ['time',''],
- ['token','']
- ],$request,true);
- $outStr = @crypto_decrypt(base64_decode($token), 'xxlm');
- if($mobile != $outStr) {
- return app('json')->fail("获取验证码失败!");
- }
- $lastTime = 120;
- $time = time();
- $smsTime = (new SmsYzm)->where('mobile',$mobile)
- ->where("action","yzm")
- ->order("time desc")
- ->value("time");
- //验证码
- if (!empty($smsTime) && abs($time - $smsTime) < $lastTime) {
- $data['status'] = 2;
- $data['time'] = $time - $smsTime;
- return app('json')->success($data);
- }
- //发送验证码
- $code = randString(6, true);
- $send = (new Sms)->SmsCode($mobile, "718562", array("1" => $code,"2"=>"30"));
- if ($send['status'] == 1) {
- $savedata['mobile'] = $mobile;
- $savedata['code'] = $code;
- $savedata['action'] = 'yzm';
- $savedata['time'] = time();
- (new SmsYzm)->insert($savedata);
- $data['status'] = 1;
- } else {
- $data = $send;
- }
- if($data['status'] == 1) {
- return app('json')->success("发送成功", ['status'=>1,'time'=>$lastTime]);
- } else {
- return app('json')->fail($data['error']);
- }
- }
- /**
- * 注册第一步
- * @param Request $request
- */
- public function reg1(Request $request) {
- [$mobile,$yzm] = UtilService::getMore([
- ['mobile','','empty','请输入手机号码'],
- ['yzm','']
- ],$request,true);
- //判断验证码
- $bool = (new SmsYzm)->VerCode($mobile,$yzm,'yzm');
- if(!$bool) {
- return app('json')->fail(SmsYzm::getErrorInfo("验证码错误"));
- }
- //判断是否被注册了
- $count = (new Member)->where('mobile',$mobile)->count();
- if($count > 0) {
- return app('json')->fail("用户已经被注册,请勿重复操作!");
- }
- //生成MD5
- $param = ['mobile'=>$mobile,'time'=>time()];
- $token =base64_encode( @crypto_encrypt(json_encode($param), 'xxlm'));
- return app('json')->success([
- 'token' => $token
- ]);
- }
- /**
- * 注册第二步
- * @param Request $request
- */
- public function reg2(Request $request) {
- $post = UtilService::getMore([
- ['mobile',''],
- ['wechat',''],
- ['shopname',''],
- ['platform',''],
- ['password','','empty','请输入正确的密码'],
- ['tjUid','']
- ],$request);
- $time = time();
- /*$tokenData = @json_decode(@crypto_decrypt(base64_decode($post['token']), 'xxlm'),true);
- //没有token或者超过30分钟
- if(empty($tokenData) || ($time - $tokenData['time']) > 30 * 60){
- return app('json')->fail("验证码过期,请重新获取");
- }*/
- //判断是否被注册了
- $count = (new Member)->where('mobile',$post['mobile'])->count();
- if($count > 0) {
- return app('json')->fail("用户已经被注册!");
- }
- //推荐码
- if(!empty($post['tjUid'])){
- $tjuid = crypto_decrypt(base64_decode($post['tjUid']),'xxlm');
- $save['i_uid'] = $tjuid;
- }
- $save['mobile'] = $post['mobile'];
- $save['wechat'] = $post['wechat'];
- $save['shopname'] = $post['shopname'];
- $save['platform'] = $post['platform'];
- $save['password'] = md5($post['password']);
- $save['regip'] = $request->ip();
- $save['regtime'] = $time;
- $save['lasttime'] = $time;
- $save['status'] = 1;
- $uid = (new Member)->insertGetId($save);
- $memberInfo = Member::where('uid',$uid)->find();
- //生成令牌
- $token = Member::createToken($memberInfo, 'xxlm');
- return app('json')->success([
- 'token' => $token,
- 'user_info' => [
- 'mobile' => $memberInfo->getData('mobile'),
- 'wechat' => $memberInfo->getData('wechat'),
- 'money' => $memberInfo->getData('money')
- ],
- ]);
- }
- /**
- * 忘记密码验证码
- * @param Request $request
- */
- public function forgetYzm(Request $request){
- [$mobile,$time,$token] = UtilService::getMore([
- ['mobile','','empty','请输入手机号码'],
- ['time',''],
- ['token','']
- ],$request,true);
- $secret_key = $request->site['secret_key'];
- $outStr = @crypto_decrypt(base64_decode($token), $secret_key);
- if($mobile != $outStr) {
- return app('json')->fail("获取验证码失败!");
- }
- $count = (new Member)->where('mobile',$mobile)->count();
- if($count <= 0) {
- return app('json')->fail("账号未注册!");
- }
- $lastTime = 120;
- $time = time();
- $smsTime = (new SmsYzm)->where('mobile',$mobile)
- ->where("action","forget_yzm")
- ->order("time desc")
- ->value("time");
- //验证码
- if (!empty($smsTime) && abs($time - $smsTime) < $lastTime) {
- $data['status'] = 2;
- $data['time'] = $time - $smsTime;
- return app('json')->success($data);
- }
- //发送验证码
- $code = randString(6, true);
- $send = (new Sms)->SmsCode($mobile, "718570", array("1" => $code));
- if ($send['status'] == 1) {
- $savedata['mobile'] = $mobile;
- $savedata['code'] = $code;
- $savedata['action'] = 'forget_yzm';
- $savedata['time'] = time();
- (new SmsYzm)->insert($savedata);
- $data['status'] = 1;
- } else {
- $data = $send;
- }
- if($data['status'] == 1) {
- return app('json')->success("发送成功", ['status'=>1,'time'=>$lastTime]);
- } else {
- return app('json')->fail($data['error']);
- }
- }
- /**
- * 重置密码第一步
- * @param Request $request
- */
- public function forget1(Request $request) {
- [$mobile,$yzm] = UtilService::getMore([
- ['mobile','','empty','请输入手机号码'],
- ['yzm','']
- ],$request,true);
- //判断验证码
- $bool = (new SmsYzm)->VerCode($mobile,$yzm,'forget_yzm');
- if(!$bool) {
- return app('json')->fail(SmsYzm::getErrorInfo("验证码错误"));
- }
- //判断是否被注册了
- $count = (new Member)->where('mobile',$mobile)->count();
- if($count <= 0) {
- return app('json')->fail("找不到账号!");
- }
- //生成MD5
- $param = ['mobile'=>$mobile,'time'=>time()];
- $token =base64_encode( @crypto_encrypt(json_encode($param), 'xxlm'));
- return app('json')->success([
- 'token' => $token
- ]);
- }
- /**
- * 重置密码第二步
- * @param Request $request
- */
- public function forget2(Request $request) {
- $post = UtilService::getMore([
- ['token','','empty','参数错误'],
- ['password','','empty','请输入正确的密码']
- ],$request);
- $time = time();
- $secret_key = $request->site['secret_key'];
- $tokenData = @json_decode(@crypto_decrypt(base64_decode($post['token']), $secret_key),true);
- //注册token大于30分钟或者超过30分钟
- if(empty($tokenData) || ($time - $tokenData['time']) > 30 * 60){
- return app('json')->fail("操作已过期,返回重新操作");
- }
- //判断是否被注册了
- $data = (new Member)->where('mobile',$tokenData['mobile'])->find();
- if(empty($data)) {
- return app('json')->fail("找不到账号!");
- }
- $save['password'] = md5($post['password']);
- (new Member)->where('uid',$data['uid'])->save($save);
- return app('json')->success("找回成功!");
- }
- }
|