MemberMobileService.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: 芸众商城 www.yunzshop.com
  5. * Date: 17/2/22
  6. * Time: 下午4:12
  7. */
  8. namespace app\frontend\modules\member\services;
  9. use app\common\models\MemberShopInfo;
  10. use app\common\services\Session;
  11. use app\frontend\models\Member;
  12. use app\frontend\modules\member\models\MemberModel;
  13. use Illuminate\Contracts\Encryption\DecryptException;
  14. use Illuminate\Support\Facades\Redis;
  15. class MemberMobileService extends MemberService
  16. {
  17. public function login()
  18. {
  19. $mobile = \YunShop::request()->mobile;
  20. $password = \YunShop::request()->password;
  21. $uniacid = \YunShop::app()->uniacid;
  22. $redirect_url = request()->yz_redirect;
  23. if (\Request::isMethod('post') && MemberService::validate($mobile, $password)) {
  24. $has_mobile = MemberModel::checkMobile($uniacid, $mobile);
  25. if (!empty($has_mobile)) {
  26. $password = md5($password. $has_mobile->salt);
  27. $member_info = MemberModel::getUserInfo($uniacid, $mobile, $password)->first();
  28. } else {
  29. return show_json(7, "用户不存在");
  30. }
  31. $remain_time = $this->getLoginLimit($mobile);
  32. if($remain_time){
  33. return show_json(6, "账号锁定中,请".$remain_time."分钟后再登录");
  34. }
  35. if(!empty($member_info)){
  36. MemberService::countReset($mobile);
  37. $member_info = $member_info->toArray();
  38. //生成分销关系链
  39. Member::createRealtion($member_info['uid']);
  40. $this->save(array_add($member_info,'password',$password), $uniacid);
  41. $yz_member = MemberShopInfo::getMemberShopInfo($member_info['uid']);
  42. if (!empty($yz_member)) {
  43. $yz_member = $yz_member->toArray();
  44. $data = MemberModel::userData($member_info, $yz_member);
  45. } else {
  46. $data = $member_info;
  47. }
  48. $data['redirect_url'] = base64_decode($redirect_url);
  49. return show_json(1, $data);
  50. } {
  51. if ($password != $member_info['password']) {
  52. $error_count = $this->setLoginLimit($mobile);
  53. if ($error_count > 0) {
  54. return show_json(6, "密码错误!你还剩" . $error_count . "次机会");
  55. } else {
  56. return show_json(6, "密码错误次数已达5次,您的账号已锁定,请30分钟之后登录!");
  57. }
  58. }
  59. return show_json(6, "手机号或密码错误");
  60. }
  61. } else {
  62. return show_json(6,"手机号或密码错误");
  63. }
  64. }
  65. /**
  66. * 验证登录状态
  67. *
  68. * @return bool
  69. */
  70. public function checkLogged()
  71. {
  72. $member = null;
  73. $member_id = \YunShop::app()->getMemberId();
  74. if ($member_id) {
  75. $member = Member::getMemberByUid($member_id)->first();
  76. if ($member) {
  77. return true;
  78. }
  79. }
  80. if (isset($_COOKIE['Yz-appToken'])) {
  81. try {
  82. $yz_token = decrypt($_COOKIE['Yz-appToken']);
  83. list($mobile, $uid , $md5_password) = explode('\t', $yz_token);
  84. } catch (DecryptException $e) {
  85. return false;
  86. }
  87. $member = Member::getMemberByUid($uid)->first();
  88. if ($member && $md5_password == md5($member['password'])) {
  89. Session::set('member_id', $member->uid);
  90. return true;
  91. }
  92. }
  93. return false;
  94. }
  95. }