123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Administrator
- * Date: 2020-09-07
- * Time: 11:39
- */
- namespace api\js\controller;
- use api\js\model\UserModel;
- use cmf\controller\RestBaseController;
- use think\Db;
- class LoginController extends RestBaseController
- {
- /**
- * 账号登录
- */
- public function login()
- {
- $validate = new \think\Validate([
- 'mobile' => 'require',
- 'password' => 'require'
- ]);
- $validate->message([
- 'mobile.require' => '请输入您的手机号',
- 'password.require' => '请输入您的密码!'
- ]);
- $data = $this->request->param();
- if (!$validate->check($data)) {
- $this->error($validate->getError());
- }
- $type = $data['type'];
- unset($data['type']);
- $findUserWhere = [];
- if (cmf_check_mobile($data['mobile'])) {
- $findUserWhere['mobile'] = $data['mobile'];
- } else {
- $this->error('手机号格式错误');
- }
- if ($type == 1) {
- $findUserWhere['user_type'] = 2;
- }
- if ($type == 2) {
- $findUserWhere['user_type'] = 3;
- }
- $findUser = UserModel::name("user")->where($findUserWhere)->find();
- if (empty($findUser)) {
- $this->error("用户不存在!");
- } else {
- switch ($findUser['user_status']) {
- case 0:
- $this->error('您的账户已停用!');
- case 2:
- $this->error('账户还没有验证成功!');
- }
- if (!cmf_compare_password($data['password'], $findUser['user_pass'])) {
- $this->error("密码不正确!");
- }
- }
- if (empty($this->deviceType) && (empty($data['device_type']) || !in_array($data['device_type'], $this->allowedDeviceTypes))) {
- $this->error("请求错误,未知设备!");
- } else if (!empty($data['device_type'])) {
- $this->deviceType = $data['device_type'];
- }
- $findUserToken = Db::name("user_token")
- ->where('user_id', $findUser['id'])
- ->where('device_type', $this->deviceType)
- ->find();
- $currentTime = time();
- $expireTime = $currentTime + 24 * 3600 * 180;
- $token = md5(uniqid()) . md5(uniqid());
- if (empty($findUserToken)) {
- $result = Db::name("user_token")->insert([
- 'token' => $token,
- 'user_id' => $findUser['id'],
- 'expire_time' => $expireTime,
- 'create_time' => $currentTime,
- 'device_type' => $this->deviceType
- ]);
- } else {
- $result = Db::name("user_token")
- ->where('user_id', $findUser['id'])
- ->where('device_type', $this->deviceType)
- ->update([
- 'token' => $token,
- 'expire_time' => $expireTime,
- 'create_time' => $currentTime
- ]);
- }
- if (empty($result)) {
- $this->error("登录失败!");
- }
- Db::name('user')->where('id', $findUser['id'])->update(['last_login_ip' => get_client_ip(), 'last_login_time' => time()]);
- unset($findUser['user_pass']);
- $this->success("登录成功!", ['token' => $token, 'id' => $findUser['id']]);
- }
- public function wechatLogin()
- {
- $validate = new \think\Validate(['openid' => 'require']);
- $validate->message(['openid' => '微信授权失败!']);
- $data = $this->request->param();
- if (!$validate->check($data)) $this->error($validate->getError());
- $findUserWhere = [];
- if ($data['type'] == 1) $findUserWhere['user_type'] = 2;
- else if ($data['type'] == 2) $findUserWhere['user_type'] = 3;
- $findUser = UserModel::name("user")->where('user_type', $findUserWhere['user_type'])
- ->where('openid', $data['openid'])->find();
- if (empty($findUser)) $this->error("用户不存在!");
- else {
- switch ($findUser['user_status']) {
- case 0:
- $this->error('您的账户已停用!');
- case 2:
- $this->error('账户还没有验证成功!');
- }
- }
- if (empty($this->deviceType) && (empty($data['device_type']) || !in_array($data['device_type'], $this->allowedDeviceTypes))) {
- $this->error("请求错误,未知设备!");
- } else if (!empty($data['device_type'])) {
- $this->deviceType = $data['device_type'];
- }
- $findUserToken = Db::name("user_token")
- ->where('user_id', $findUser['id'])
- ->where('device_type', $this->deviceType)
- ->find();
- $currentTime = time();
- $expireTime = $currentTime + 24 * 3600 * 180;
- $token = md5(uniqid()) . md5(uniqid());
- if (empty($findUserToken)) {
- $result = Db::name("user_token")->insert([
- 'token' => $token,
- 'user_id' => $findUser['id'],
- 'expire_time' => $expireTime,
- 'create_time' => $currentTime,
- 'device_type' => $this->deviceType
- ]);
- } else {
- $result = Db::name("user_token")
- ->where('user_id', $findUser['id'])
- ->where('device_type', $this->deviceType)
- ->update([
- 'token' => $token,
- 'expire_time' => $expireTime,
- 'create_time' => $currentTime
- ]);
- }
- if (empty($result)) {
- $this->error("登录失败!");
- }
- Db::name('user')->where('id', $findUser['id'])->update(['last_login_ip' => get_client_ip(), 'last_login_time' => time()]);
- $this->success("登录成功!", ['token' => $token, 'id' => $findUser['id']]);
- }
- }
|