| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 | <?phpnamespace app\admin\api;use app\admin\model\User;/** * Description of UserApi * * @author sgq */class UserApi {    public static function getOne($id) {        $res = User::findOrEmpty($id);        if ($res["companyId"]) {            $company = \app\common\api\CompanyApi::getOne($res["companyId"]);            $res["companyName"] = $company["name"];        }        if ($res["roleid"]) {            $role = RoleApi::getOne($res["roleid"]);            $res["roleName"] = $role["name"];        }        if ($res["avatar"]) {            $res["originalAvatar"] = $res["avatar"];            $res["avatar"] = getStoragePath($res["avatar"]);        }        return $res;    }    public static function getList($params) {        $where = [];        $limit = $params["limit"] ?: 10;        $offset = $params["offset"] ?: 0;        $order = $params["order"] ?: "desc";        if ($params["name"]) {            $where[] = ["u.name", "like", "%" . $params["name"] . "%"];        }        if ($params["account"]) {            $where[] = ["u.account", "like", "%" . $params["account"] . "%"];        }        if ($params["sex"]) {            $where[] = ["u.sex", "=", $params["sex"]];        }        if ($params["phone"]) {            $where[] = ["u.phone", "like", "%" . $params["phone"] . "%"];        }        if ($params["status"]) {            $where[] = ["u.status", "=", $params["status"]];        }        if ($params["companyId"]) {            $where[] = ["u.companyId", "=", $params["companyId"]];        }        $count = User::alias("u")->where($where)->count();        $list = User::alias("u")                        ->field("u.*,c.name as companyName,r.name as roleName")                        ->leftJoin("sys_company c", "c.id=u.companyId")                        ->leftJoin("sys_role r", "r.id=u.roleId")                        ->where($where)                        ->limit($offset, $limit)->order("u.name " . $order)->select()->toArray();        return ["total" => $count, "rows" => $list];    }    public static function create($params) {        $data["account"] = $params["account"];        $data["name"] = $params["name"];        $data["type"] = $params["type"];        $data["birthday"] = $params["birthday"];        $data["sex"] = $params["sex"];        $salt = self::getSalt(5);        $data["salt"] = $salt;        $data["status"] = 1;        $data["password"] = self::getPwd($params["password"], $salt);        $data["companyId"] = $params["companyId"];        $data["roleid"] = $params["roleid"];        $data["phone"] = $params["phone"];        $data["email"] = $params["email"];        $data["createTime"] = date("Y-m-d H:i:s");        $data["createUser"] = session("user")["uid"];        if (User::insert($data))            return 10001;        return 10009;    }    public static function update($params) {        $id = $params["id"];        $user = self::getOne($id);        if (!$user || $user["status"] == 3)            return 10002;        $roleIds = explode(",", $user["roleid"]);        if (in_array(1, $roleIds) && !self::isAdmin(session("user")["uid"]))            return 10003;        $data["id"] = $id;        if ($params["account"]) {            $data["account"] = $params["account"];        }        if ($params["type"]) {            $data["type"] = $params["type"];        }        if ($params["companyId"]) {            $data["companyId"] = $params["companyId"];        }        if ($params["avatar"] && $user["avatar"] != $params["avatar"]) {            $data["avatar"] = $params["avatar"];        }        $data["name"] = $params["name"];        $data["birthday"] = $params["birthday"];        $data["sex"] = $params["sex"];        $data["phone"] = $params["phone"];        $data["email"] = $params["email"];        $data["updateTime"] = date("Y-m-d H:i:s");        $data["updateUser"] = session("user")["uid"];        if (User::update($data))            return 10001;        return 10009;    }    public static function setRole($id, $roleIds) {        if (self::isDelete($id))            return 10002;        if (self::isAdmin($id) && !self::isAdmin(session("user")["uid"]))            return 10003;        $data["id"] = $id;        $data["roleid"] = $roleIds;        $data["updateTime"] = date("Y-m-d H:i:s");        $data["updateUser"] = session("user")["uid"];        if (User::update($data))            return 10001;        return 10009;    }    /**     * 重置密码     * @param type $id     * @param type $password     * @return boolean     */    public static function reset($id, $password) {        if (self::isDelete($id))            return 10002;        if (self::isAdmin($id) && !self::isAdmin(session("user")["uid"]))            return 10003;        $data["id"] = $id;        $data["password"] = $password;        if (User::update($data))            return 10001;        return 10009;    }    /**     * 删除用户     * @param type $id     * @return boolean     */    public static function delete($id) {        if (self::isDelete($id))            return 10002;        if (self::isAdmin($id) && !self::isAdmin(session("user")["uid"]))            return 10003;        $data["id"] = $id;        $data["status"] = 3;        $data["updateTime"] = date("Y-m-d H:i:s");        $data["updateUser"] = session("user")["uid"];        if (User::update($data))            return 10001;        return 10009;    }    public static function setPwd($id, $old_password, $new_password) {        $user = self::getOne($id);        if (!$user || $user["status"] == 3)            return 10002;        $roleIds = explode(",", $user["roleid"]);        if (in_array(1, $roleIds) && !self::isAdmin(session("user")["uid"]))            return 10003;        if (self::getPwd($old_password, $user["salt"]) != $user["password"])            return 10004;        $data["id"] = $id;        $data["password"] = self::getPwd($new_password, $user["salt"]);        $data["updateTime"] = date("Y-m-d H:i:s");        $data["updateUser"] = session("user")["uid"];        if (User::update($data))            return 10001;        return 10009;    }    /**     * 冻结解冻用户     * @param type $id     * @return boolean     */    public static function setFreeze($id, $status) {        if (self::isDelete($id))            return 10002;        if (self::isAdmin($id) && !self::isAdmin(session("user")["uid"]))            return 10003;        $data["id"] = $id;        $data["status"] = $status;        $data["updateTime"] = date("Y-m-d H:i:s");        $data["updateUser"] = session("user")["uid"];        if (User::update($data))            return 10001;        return 10009;    }    /**     * 检查删除     * @param type $id     * @return boolean     */    public static function isDelete($id) {        $user = self::getOne($id);        if (!$user || $user["status"] == 3)            return true;        return false;    }    /**     * 检查是不是管理员     * @param type $id     * @return boolean     */    public static function isAdmin($id) {        $user = self::getOne($id);        $roleIds = explode(",", $user["roleid"]);        if (in_array(1, $roleIds))            return true;        return false;    }    /**     * 生成管理员密码     * @return type     */    public static function getPwd($password, $salt) {        $salt = hash("md5", $salt, true);        $password = simple_hash("md5", $password, $salt, 1024);        return $password;    }    /**     * 生成加密盐     * @param type $length     * @return type     */    public static function getSalt($length) {        $bytes = random_bytes($length);        return substr(bin2hex($bytes), 0, $length);    }}
 |