Login.php 9.7 KB

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