Login.php 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. <?php
  2. namespace app\mobile\controller;
  3. use app\common\service\SmsService;
  4. use app\mobile\MobileBaseController;
  5. use app\common\model\UserAuths as UserAuthsModel;
  6. use app\common\model\Broker as BrokerModel;
  7. use app\common\model\User as UserModel;
  8. use app\common\model\Agent as AgentModel;
  9. use app\common\model\BrokerForm as BrokerFormModel;
  10. use chuanglan\Chuanglan;
  11. class Login extends MobileBaseController
  12. {
  13. public function login()
  14. {
  15. return redirect('https://www.jucai.gov.cn/api/auth/wechat_auth?url=' . urlencode(url('/mobile/login/wechatBack')));
  16. }
  17. /**
  18. * 微信回调
  19. */
  20. public function wechatBack()
  21. {
  22. $param = input('param.');
  23. $unionid = $param['unionid'];
  24. $userauths = UserAuthsModel::where(['identifier' => $unionid, 'identitytype' => "weixin"])->find();
  25. //登录成功
  26. if (!empty($userauths)) {
  27. $user = UserModel::where(['id' => $userauths->userid])->find();
  28. session('mobile.user.id', $user['id']);
  29. //非经济人
  30. $broker = BrokerModel::where('userid', $user['id'])->find();
  31. if (empty($broker)) {
  32. return redirect('/mobile/login/broker');
  33. }
  34. session('mobile.broker.id', $broker['id']);
  35. return redirect('/mobile/my/index');
  36. }
  37. session('mobile.user.unionid', $param['unionid']);
  38. if (!empty($param['nickname'])) {
  39. session('mobile.user.nickname', $param['nickname']);
  40. }
  41. if (!empty($param['avatar'])) {
  42. session('mobile.user.avatar', $param['avatar']);
  43. }
  44. return redirect('/mobile/login/mobile');
  45. }
  46. /**
  47. * 手机号注册
  48. */
  49. public function mobile()
  50. {
  51. $unionid = session('mobile.user.unionid');
  52. if (empty($unionid)) {
  53. return redirect('/mobile/login/login');
  54. }
  55. return view('login/mobile');
  56. }
  57. public function mobilePost()
  58. {
  59. $param = input('post.');
  60. empty($param['mobile']) && page_result(1, '请输入手机号');
  61. empty($param['verify']) && page_result(1, '请输入验证码');
  62. //验证码校验
  63. $verify_expire = session('mobile.login.verify_expire');
  64. if ($verify_expire < time()) {
  65. session('mobile.login.verify', null);
  66. session('mobile.login.verify_expire', null);
  67. page_result(1, '验证码已过期');
  68. }
  69. $verify = session('mobile.login.verify');
  70. if ($verify != $param['verify']) {
  71. page_result(1, '验证码不正确');
  72. }
  73. //手机号
  74. $unionid = session('mobile.user.unionid');
  75. $userauths = UserAuthsModel::where(['identifier' => $param['mobile'], 'identitytype' => "mobile"])->find();
  76. if (!empty($userauths)) {
  77. $password = md5(time() . mt_rand(100000, 999999));
  78. $this->authsRegister($userauths->userid, "weixin", $unionid, $password);
  79. $this->authsRegister($userauths->userid, "mobile", $param['mobile'], $password);
  80. session('mobile.user.id', $userauths->userid);
  81. //非经济人
  82. $broker = BrokerModel::where('userid', $userauths->userid)->find();
  83. if (empty($broker)) {
  84. return page_result(0, '', ['url' => '/mobile/login/broker']);
  85. }
  86. session('mobile.broker.id', $broker['id']);
  87. page_result(0, '', ['url' => '/mobile/my/index']);
  88. }
  89. //登录注册
  90. $nickname = session('mobile.user.nickname') ?? '';
  91. $avatar = session('mobile.user.avatar') ?? '';
  92. $data = [
  93. 'groupsid' => 7,
  94. 'nickname' => $nickname,
  95. 'avatar' => $avatar,
  96. 'realname' => $nickname,
  97. 'mobile' => $param['mobile'],
  98. 'status' => 2,
  99. 'bankcard' => [],
  100. 'emp_time' => [],
  101. 'com_cate' => [],
  102. 'work_place' => [],
  103. 'user_tags' => [],
  104. 'skill_cert' => [],
  105. 'createtime' => time(),
  106. 'workexperience' => '',
  107. 'eduexperience' => '',
  108. 'broker_channel' => 2,
  109. 'education' => '',
  110. ];
  111. $user = UserModel::create($data);
  112. $password = md5(time() . mt_rand(100000, 999999));
  113. $this->authsRegister($user->id, "weixin", $unionid, $password);
  114. $this->authsRegister($user->id, "mobile", $param['mobile'], $password);
  115. session('mobile.user.id', $user->userid);
  116. return page_result(0, '', ['url' => '/mobile/login/broker']);
  117. }
  118. public function sendSms()
  119. {
  120. $mobile = input('mobile');
  121. $ismobile = preg_match('/^1[3456789]{1}[0-9]{9}$/', $mobile);
  122. if (!$ismobile) {
  123. page_result(1, "请填入正确的手机号");
  124. }
  125. /*$userauths = UserAuthsModel::where(['identifier' => $mobile, 'identitytype' => "mobile"])->findOrEmpty();
  126. if (!$userauths->isEmpty()) {
  127. page_result(1, "该手机号已注册");
  128. }*/
  129. $smscode = mt_rand(100000, 999999);
  130. $sms = new SmsService();
  131. $res = $sms->send($mobile, 'verification_code', ['code' => $smscode]);
  132. /*$sms = new Chuanglan();
  133. $res = $sms->send($mobile, ['message' => "尊敬的用户,您的短信验证码为{$smscode},5分钟内有效。若非本人操作请忽略。"]);*/
  134. if ($res['code'] == 0) {
  135. session('mobile.login.verify', $smscode);
  136. session('mobile.login.verify_expire', time() + 300);
  137. } else {
  138. page_result(1, '发送失败,请联系管理员');
  139. }
  140. page_result();
  141. }
  142. public function broker()
  143. {
  144. $unionid = session('mobile.user.unionid');
  145. $user_id = session('mobile.user.id');
  146. if (empty($unionid) || empty($user_id)) {
  147. return redirect('/mobile/login/login');
  148. }
  149. $broker = BrokerModel::where('userid', $user_id)->find();
  150. if (!empty($broker)) {
  151. return redirect('/mobile/my/index');
  152. }
  153. $broker_form = BrokerFormModel::where('userid', $user_id)->find();
  154. if (!empty($broker_form)) {
  155. return redirect('/mobile/login/brokerTip');
  156. }
  157. $agent_list = AgentModel::where('type', 2)->where('status', 1)->field('title as text,id as value')->select();
  158. return view('login/broker', ['agent_list' => $agent_list]);
  159. }
  160. public function brokerPost()
  161. {
  162. $user_id = session('mobile.user.id');
  163. empty($user_id) && page_result(401, '请先登录');
  164. $broker_form = BrokerFormModel::where('userid', $user_id)->find();
  165. if (!empty($broker_form)) {
  166. return page_result(1, '请不要重复申请');
  167. }
  168. $param = input('post.');
  169. empty($param['title']) && page_result(1, '请输入姓名');
  170. empty($param['mobile']) && page_result(1, '请输入手机号');
  171. empty($param['agent_id']) && page_result(1, '请选择门店');
  172. empty($param['region']) && page_result(1, '请输入区域');
  173. $agent = AgentModel::where([
  174. ['id', '=', $param['agent_id']],
  175. ['type', '=', 2],
  176. ['status', '=', 1],
  177. ])->find();
  178. if (empty($agent)) {
  179. page_result(1, '门店不存在');
  180. }
  181. $user_id = session('mobile.user.id');
  182. BrokerFormModel::create([
  183. 'userid' => $user_id,
  184. 'workerid' => $agent['workerid'],
  185. 'agentid' => $agent['id'],
  186. 'title' => $param['title'],
  187. 'avatar' => '',
  188. 'mobile' => $param['mobile'],
  189. 'province' => $agent['province'],
  190. 'city' => $agent['city'],
  191. 'district' => $agent['district'],
  192. 'town' => '',
  193. 'village' => '',
  194. 'region' => $param['region'],
  195. 'createtime' => time(),
  196. 'type' => 3,
  197. ]);
  198. page_result(0, '', ['url' => '/mobile/login/brokerTip']);
  199. }
  200. public function brokerTip()
  201. {
  202. $user_id = session('mobile.user.id');
  203. if (empty($user_id)) {
  204. return redirect('/mobile/login/login');
  205. }
  206. $broker = BrokerModel::where('userid', $user_id)->find();
  207. if (!empty($broker)) {
  208. session('mobile.broker.id', $broker['id']);
  209. return redirect('/mobile/my/index');
  210. }
  211. return view('login/broker_tip');
  212. }
  213. public function login1()
  214. {
  215. session('mobile.user.id', 293);
  216. session('mobile.broker.id', 19);
  217. $back_url = '/mobile/my/index';
  218. if (session('?back_url')) {
  219. $back_url = session('back_url');
  220. session('back_url', null);
  221. }
  222. return redirect($back_url);
  223. }
  224. /**
  225. * 登出
  226. */
  227. public function logout()
  228. {
  229. session('mobile.user.id', null);
  230. session('mobile.broker.id', null);
  231. return '退出';
  232. }
  233. public function authsRegister($userid, $identitytype, $identifier, $password)
  234. {
  235. $userauths = UserAuthsModel::where(['userid' => $userid, 'identitytype' => $identitytype])->findOrEmpty();
  236. if (!empty($identifier) && $userauths->isEmpty()) {
  237. $userauths = new UserAuthsModel();
  238. $userauths->save([
  239. 'userid' => $userid,
  240. 'identitytype' => $identitytype,
  241. 'identifier' => $identifier,
  242. 'password' => $password,
  243. 'logintime' => time(),
  244. 'loginip' => $_SERVER['SERVER_ADDR'],
  245. ]);
  246. } elseif (!empty($identifier) && $identifier !== $userauths->identifier) {
  247. $userauths->identifier = $identifier;
  248. $userauths->password = $password;
  249. $userauths->save();
  250. }
  251. return true;
  252. }
  253. }