| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 | <?phpnamespace 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, $info;    public function __construct($username, $password, $usertype) {        $this->username = $username;        $this->password = $password;        $this->usertype = $usertype;        switch ($usertype) {            case 2:                //企业                $user = Enterprise::where(['username' => $username])->findOrEmpty();                break;            case 3:                //个人                $user = Person::where('username', $username)->findOrEmpty();                break;            default:                //管理员                $user = User::where(['account' => $username])->findOrEmpty();                break;        }        $this->info = $user;        return $this;    }    public function getRole() {        $role = Role::find($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();    }    /**     * 检查密码     * @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'] == 1 || $this->info['checkState'] == 4){                    return "账号需要后台管理人员审核通过后才能登陆,请耐心等待!";                }                if($this->info['checkState'] == 2){                    return "账号审核不通过,原因是:{$this->info['checkMsg']}";                }                return false;                break;            case 3:                return false;                break;        }    }    /**     * 设置冻结与否     * @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() {        $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']                ]);                break;            case 2:                session("user", [                    "uid" => $user["id"],                    "account" => $user["username"],                    "name" => $user["name"],                    "avatar" => $user["headPortrait"],                    "rolename" => "企业用户",                    "usertype" => $this->usertype,                    "type" => $user["type"]                ]);                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"]                ]);                break;        }    }}
 |