123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- <?php
- namespace app\common\api;
- use app\admin\model\User;
- use app\admin\model\Enterprise;
- use app\admin\model\Person;
- use app\admin\model\Role;
- const MAX_ERROR_TIMES = 5;
- const FREEZETIME = 5;
- const FREEZE_NO = 1;
- const FREEZE_YES = 2;
- /**
- * Description of UserApi
- *
- * @author sgq
- */
- class UserApi {
- protected $username, $password, $usertype;
- public $info;
- public function __construct($username, $password, $usertype) {
- $this->username = $username;
- $this->password = $password;
- $this->usertype = $usertype;
- $where = [];
- switch ($usertype) {
- case 2:
- //企业
- $name1 = str_replace(["(", ")"], ["(", ")"], $username);
- $name2 = str_replace(["(", ")"], ["(", ")"], $username);
- $where[] = ["username", "in", [$name1, $name2]];
- $where[] = ["delete", "=", 0];
- $user = Enterprise::where($where)->findOrEmpty();
- break;
- case 3:
- //个人
- $user = Person::where('username', $username)->findOrEmpty();
- break;
- default:
- //管理员
- $where[] = ["account", "=", $username];
- $where[] = ["status", "<>", 3];
- $user = User::where($where)->findOrEmpty();
- break;
- }
- $this->info = $user;
- return $this;
- }
- public function getRole() {
- $role = Role::findOrEmpty($this->info["roleid"]);
- return $role->toArray();
- }
- public function getCompany() {
- $company = \app\common\model\Company::findOrEmpty($this->info["companyId"])->toArray();
- return $company;
- }
- /**
- * 返回用户信息
- * @return type
- */
- public function getUserInfo() {
- return $this->info->toArray();
- }
- public function checkPwd() {
- if ($this->_checkPwd()) {
- return true;
- } else {
- if ($this->usertype == 2 && in_array($this->info["source"], [1, 2])) {
- //source3是新系统注册,企业号登录密码不正确时,验证一下是不是聚财账号
- if ($this->info["source"] == 1) {
- if (!$this->info["jUsername"]) {
- return false;
- }
- }
- try {
- $res = JucaiApi::login($this->username, $this->password, 1);
- $resObj = json_decode($res);
- if ($resObj->state == 1) {
- return true;
- }
- return false;
- } catch (think\exception $e) {
- return false;
- }
- }
- return false;
- }
- }
- /**
- * 检查密码
- * @return type
- */
- public function _checkPwd() {
- switch ($this->usertype) {
- case 1:
- $salt = hash("md5", $this->info["salt"], true);
- $password = simple_hash("md5", $this->password, $salt, 1024);
- break;
- case 2:
- case 3:
- $password = hash("md5", $this->password);
- break;
- }
- return $password == $this->info["password"];
- }
- public function checkState() {
- switch ($this->usertype) {
- case 1:
- return false;
- break;
- case 2:
- if ($this->info['active'] != 1) {
- return "账号被冻结, 冻结原因为: {$this->info['activeMsg']}";
- }
- if ($this->info["checkState"] == 3) {
- return false;
- } else if ($this->info["checkState"] == 6) {
- //6是初审状态,待复审
- return "您的账号正在审核中,请耐心等待!";
- } else if (in_array($this->info['checkState'], [1, 4])) {
- return "账号需要后台管理人员审核通过后才能登陆,请耐心等待!";
- } else if (in_array($this->info['checkState'], [2, 5])) {
- $temp = [];
- $temp['uid'] = $this->info['id'];
- $temp['msg'] = "账号审核不通过,原因是:{$this->info['checkMsg']}";
- session('temp', $temp);
- return "账号审核不通过,原因是:{$this->info['checkMsg']}";
- } else {
- return "账户状态未知,登录失败";
- }
- break;
- case 3:
- if ($this->info['active'] == 2) {
- return "账号被冻结, 冻结原因为: {$this->info['activeMsg']}";
- }
- return false;
- }
- }
- /**
- * 设置冻结与否
- * @param type $freezetype
- */
- public function setFreeze($freezetype = FREEZE_NO) {
- $this->info->freeze = $freezetype;
- if ($freezetype == FREEZE_NO) {
- $this->info->errorCount = null;
- $this->info->freezeTime = null;
- } else {
- $this->info->freezeTime = strtotime(sprintf("+%d minutes", FREEZETIME));
- }
- $this->info->save();
- }
- public function setSession() {
- session('temp', null);
- session("isCaptcha", null);
- session('login_fail', null);
- $user = $this->getUserInfo();
- switch ($this->usertype) {
- case 1:
- session("user", [
- "uid" => $user["id"],
- "roleid" => $user["roleid"],
- "companyId" => $user["companyId"],
- "companyName" => $this->getCompany()["name"],
- "account" => $user["account"],
- "name" => $user["name"],
- "avatar" => $user["avatar"],
- "sex" => $user["sex"],
- "rolename" => $this->getRole()["name"],
- "usertype" => $this->usertype,
- "type" => $user['type']
- ]);
- $loginData = [];
- $loginData["logname"] = "登录日志";
- $loginData["userid"] = $user["id"];
- $loginData["createtime"] = date("Y-m-d H:i:s");
- $loginData["succeed"] = "成功";
- $loginData["ip"] = get_client_ip();
- \think\facade\Db::table("sys_login_log")->insert($loginData);
- break;
- case 2:
- session("user", [
- "uid" => $user["id"],
- "account" => $user["username"],
- "name" => $user["name"],
- "avatar" => $user["headPortrait"],
- "rolename" => "企业用户",
- "usertype" => $this->usertype,
- "type" => $user["type"],
- "isGeneral" => $user["isGeneral"],
- "medicalCommunityId" => $user["medicalCommunityId"]
- ]);
- break;
- case 3:
- session("user", [
- "uid" => $user["id"],
- "account" => $user["username"],
- "name" => $user["name"],
- "avatar" => $user["headPortrait"],
- "sex" => $user["sex"],
- "rolename" => "个人用户",
- "usertype" => $this->usertype,
- "type" => $user["type"],
- "idCard" => $user["idCard"],
- "phone" => $user["phone"],
- "address" => $user["address"],
- "email" => $user["email"]
- ]);
- break;
- }
- }
- }
|