UserApi.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. <?php
  2. namespace app\admin\api;
  3. use app\admin\model\User;
  4. /**
  5. * Description of UserApi
  6. *
  7. * @author sgq
  8. */
  9. class UserApi {
  10. public static function getOne($id) {
  11. $res = User::findOrEmpty($id);
  12. if ($res["companyId"]) {
  13. $company = \app\common\api\CompanyApi::getOne($res["companyId"]);
  14. $res["companyName"] = $company["name"];
  15. }
  16. if ($res["roleid"]) {
  17. $role = RoleApi::getOne($res["roleid"]);
  18. $res["roleName"] = $role["name"];
  19. }
  20. if ($res["avatar"]) {
  21. $res["originalAvatar"] = $res["avatar"];
  22. $res["avatar"] = getStoragePath($res["avatar"]);
  23. }
  24. return $res;
  25. }
  26. public static function getList($params) {
  27. $where = [];
  28. $limit = $params["limit"] ?: 10;
  29. $offset = $params["offset"] ?: 0;
  30. $order = $params["order"] ?: "desc";
  31. if ($params["name"]) {
  32. $where[] = ["u.name", "like", "%" . $params["name"] . "%"];
  33. }
  34. if ($params["account"]) {
  35. $where[] = ["u.account", "like", "%" . $params["account"] . "%"];
  36. }
  37. if ($params["sex"]) {
  38. $where[] = ["u.sex", "=", $params["sex"]];
  39. }
  40. if ($params["phone"]) {
  41. $where[] = ["u.phone", "like", "%" . $params["phone"] . "%"];
  42. }
  43. if ($params["status"]) {
  44. $where[] = ["u.status", "=", $params["status"]];
  45. }
  46. if ($params["companyId"]) {
  47. $where[] = ["u.companyId", "=", $params["companyId"]];
  48. }
  49. $count = User::alias("u")->where($where)->count();
  50. $list = User::alias("u")
  51. ->field("u.*,c.name as companyName,r.name as roleName")
  52. ->leftJoin("sys_company c", "c.id=u.companyId")
  53. ->leftJoin("sys_role r", "r.id=u.roleId")
  54. ->where($where)
  55. ->limit($offset, $limit)->order("u.name " . $order)->select()->toArray();
  56. return ["total" => $count, "rows" => $list];
  57. }
  58. public static function create($params) {
  59. $data["account"] = $params["account"];
  60. $data["name"] = $params["name"];
  61. $data["type"] = $params["type"];
  62. $data["birthday"] = $params["birthday"];
  63. $data["sex"] = $params["sex"];
  64. $salt = self::getSalt(5);
  65. $data["salt"] = $salt;
  66. $data["status"] = 1;
  67. $data["password"] = self::getPwd($params["password"], $salt);
  68. $data["companyId"] = $params["companyId"];
  69. $data["roleid"] = $params["roleid"];
  70. $data["phone"] = $params["phone"];
  71. $data["email"] = $params["email"];
  72. $data["createTime"] = date("Y-m-d H:i:s");
  73. $data["createUser"] = session("user")["uid"];
  74. if (User::insert($data))
  75. return 10001;
  76. return 10009;
  77. }
  78. public static function update($params) {
  79. $id = $params["id"];
  80. $user = self::getOne($id);
  81. if (!$user || $user["status"] == 3)
  82. return 10002;
  83. $roleIds = explode(",", $user["roleid"]);
  84. if (in_array(1, $roleIds) && !self::isAdmin(session("user")["uid"]))
  85. return 10003;
  86. $data["id"] = $id;
  87. if ($params["account"]) {
  88. $data["account"] = $params["account"];
  89. }
  90. if ($params["type"]) {
  91. $data["type"] = $params["type"];
  92. }
  93. if ($params["companyId"]) {
  94. $data["companyId"] = $params["companyId"];
  95. }
  96. if ($params["avatar"] && $user["avatar"] != $params["avatar"]) {
  97. $data["avatar"] = $params["avatar"];
  98. }
  99. $data["name"] = $params["name"];
  100. $data["birthday"] = $params["birthday"];
  101. $data["sex"] = $params["sex"];
  102. $data["phone"] = $params["phone"];
  103. $data["email"] = $params["email"];
  104. $data["updateTime"] = date("Y-m-d H:i:s");
  105. $data["updateUser"] = session("user")["uid"];
  106. if (User::update($data))
  107. return 10001;
  108. return 10009;
  109. }
  110. public static function setRole($id, $roleIds) {
  111. if (self::isDelete($id))
  112. return 10002;
  113. if (self::isAdmin($id) && !self::isAdmin(session("user")["uid"]))
  114. return 10003;
  115. $data["id"] = $id;
  116. $data["roleid"] = $roleIds;
  117. $data["updateTime"] = date("Y-m-d H:i:s");
  118. $data["updateUser"] = session("user")["uid"];
  119. if (User::update($data))
  120. return 10001;
  121. return 10009;
  122. }
  123. /**
  124. * 重置密码
  125. * @param type $id
  126. * @param type $password
  127. * @return boolean
  128. */
  129. public static function reset($id, $password) {
  130. if (self::isDelete($id))
  131. return 10002;
  132. if (self::isAdmin($id) && !self::isAdmin(session("user")["uid"]))
  133. return 10003;
  134. $data["id"] = $id;
  135. $data["password"] = $password;
  136. if (User::update($data))
  137. return 10001;
  138. return 10009;
  139. }
  140. /**
  141. * 删除用户
  142. * @param type $id
  143. * @return boolean
  144. */
  145. public static function delete($id) {
  146. if (self::isDelete($id))
  147. return 10002;
  148. if (self::isAdmin($id) && !self::isAdmin(session("user")["uid"]))
  149. return 10003;
  150. $data["id"] = $id;
  151. $data["status"] = 3;
  152. $data["updateTime"] = date("Y-m-d H:i:s");
  153. $data["updateUser"] = session("user")["uid"];
  154. if (User::update($data))
  155. return 10001;
  156. return 10009;
  157. }
  158. public static function setPwd($id, $old_password, $new_password) {
  159. $user = self::getOne($id);
  160. if (!$user || $user["status"] == 3)
  161. return 10002;
  162. $roleIds = explode(",", $user["roleid"]);
  163. if (in_array(1, $roleIds) && !self::isAdmin(session("user")["uid"]))
  164. return 10003;
  165. if (self::getPwd($old_password, $user["salt"]) != $user["password"])
  166. return 10004;
  167. $data["id"] = $id;
  168. $data["password"] = self::getPwd($new_password, $user["salt"]);
  169. $data["updateTime"] = date("Y-m-d H:i:s");
  170. $data["updateUser"] = session("user")["uid"];
  171. if (User::update($data))
  172. return 10001;
  173. return 10009;
  174. }
  175. /**
  176. * 冻结解冻用户
  177. * @param type $id
  178. * @return boolean
  179. */
  180. public static function setFreeze($id, $status) {
  181. if (self::isDelete($id))
  182. return 10002;
  183. if (self::isAdmin($id) && !self::isAdmin(session("user")["uid"]))
  184. return 10003;
  185. $data["id"] = $id;
  186. $data["status"] = $status;
  187. $data["updateTime"] = date("Y-m-d H:i:s");
  188. $data["updateUser"] = session("user")["uid"];
  189. if (User::update($data))
  190. return 10001;
  191. return 10009;
  192. }
  193. /**
  194. * 检查删除
  195. * @param type $id
  196. * @return boolean
  197. */
  198. public static function isDelete($id) {
  199. $user = self::getOne($id);
  200. if (!$user || $user["status"] == 3)
  201. return true;
  202. return false;
  203. }
  204. /**
  205. * 检查是不是管理员
  206. * @param type $id
  207. * @return boolean
  208. */
  209. public static function isAdmin($id) {
  210. $user = self::getOne($id);
  211. $roleIds = explode(",", $user["roleid"]);
  212. if (in_array(1, $roleIds))
  213. return true;
  214. return false;
  215. }
  216. /**
  217. * 生成管理员密码
  218. * @return type
  219. */
  220. public static function getPwd($password, $salt) {
  221. $salt = hash("md5", $salt, true);
  222. $password = simple_hash("md5", $password, $salt, 1024);
  223. return $password;
  224. }
  225. /**
  226. * 生成加密盐
  227. * @param type $length
  228. * @return type
  229. */
  230. public static function getSalt($length) {
  231. $bytes = random_bytes($length);
  232. return substr(bin2hex($bytes), 0, $length);
  233. }
  234. }