123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- <?php
- namespace 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);
- }
- }
|