UserService.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2017~2021 LARAVEL研发中心
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://www.laravel.cn
  8. // +----------------------------------------------------------------------
  9. // | Author: laravel开发员 <laravel.qq.com>
  10. // +----------------------------------------------------------------------
  11. namespace App\Services\Common;
  12. use App\Models\UserModel;
  13. use App\Services\BaseService;
  14. /**
  15. * 用户管理-服务类
  16. * @author laravel开发员
  17. * @since 2020/11/11
  18. * Class UserService
  19. * @package App\Services\Common
  20. */
  21. class UserService extends BaseService
  22. {
  23. /**
  24. * 构造函数
  25. * @author laravel开发员
  26. * @since 2020/11/11
  27. * UserService constructor.
  28. */
  29. public function __construct()
  30. {
  31. $this->model = new UserModel();
  32. }
  33. /**
  34. * 获取用户列表
  35. * @return array
  36. * @since 2020/11/11
  37. * @author laravel开发员
  38. */
  39. public function getList()
  40. {
  41. $param = request()->all();
  42. // 查询条件
  43. $map = [];
  44. // 用户账号
  45. $username = getter($param, "username");
  46. if ($username) {
  47. $map[] = ["username", 'like', "%{$username}%"];
  48. }
  49. // 用户姓名
  50. $realname = getter($param, "realname");
  51. if ($realname) {
  52. $map[] = ['realname', 'like', "%{$realname}%"];
  53. }
  54. // 用户性别
  55. $gender = getter($param, "gender");
  56. if ($gender) {
  57. $map[] = ['gender', '=', $gender];
  58. }
  59. return parent::getList($map); // TODO: Change the autogenerated stub
  60. }
  61. /**
  62. * 添加或编辑用户
  63. * @return array
  64. * @since 2020/11/11
  65. * @author laravel开发员
  66. */
  67. public function edit()
  68. {
  69. // 请求参数
  70. $data = request()->all();
  71. // 用户名
  72. $username = trim($data['username']);
  73. // 密码
  74. $password = trim($data['password']);
  75. // 添加时设置密码
  76. if (empty($data['id'])) {
  77. $data['password'] = get_password($password . $username);
  78. // 用户名重复性验证
  79. $count = $this->model
  80. ->where("username", '=', $username)
  81. ->where("mark", "=", 1)
  82. ->count();
  83. if ($count > 0) {
  84. return message("系统中已存在相同的用户名", false);
  85. }
  86. } else {
  87. // 用户名重复性验证
  88. $count = $this->model
  89. ->where("username", '=', $username)
  90. ->where("id", "<>", $data['id'])
  91. ->where("mark", "=", 1)
  92. ->count();
  93. if ($count > 0) {
  94. return message("系统中已存在相同的用户名", false);
  95. }
  96. }
  97. // 头像处理
  98. $avatar = isset($data['avatar']) ? trim($data['avatar']) : '';
  99. if (strpos($avatar, "temp")) {
  100. $data['avatar'] = save_image($avatar, 'user');
  101. } else {
  102. $data['avatar'] = str_replace(IMG_URL, "", $data['avatar']);
  103. }
  104. $error = "";
  105. $result = $this->model->edit($data, $error);
  106. if (!$result) {
  107. return message($error, false);
  108. }
  109. // 删除已存在的用户角色关系数据
  110. $userRoleService = new UserRoleService();
  111. $userRoleService->deleteUserRole($result);
  112. // 插入用户角色关系数据
  113. $userRoleService->insertUserRole($result, $data['role_ids']);
  114. return message();
  115. }
  116. /**
  117. * 获取用户信息
  118. * @param $userId 用户ID
  119. * @return array
  120. * @author laravel开发员
  121. * @since 2020/11/10
  122. */
  123. public function getUserInfo($userId)
  124. {
  125. $userInfo = $this->model->getInfo($userId);
  126. $userInfo['roles'] = [];
  127. $userInfo['authorities'] = [];
  128. // 权限节点列表
  129. $menuService = new MenuService();
  130. $permissionList = $menuService->getPermissionsList($userId);
  131. $userInfo['permissionList'] = $permissionList;
  132. return message("操作成功", true, $userInfo);
  133. }
  134. /**
  135. * 更新个人资料
  136. * @author laravel开发员
  137. * @since 2020/11/11
  138. */
  139. public function updateUserInfo($userId)
  140. {
  141. // 参数
  142. $param = request()->all();
  143. // 个人信息
  144. $data = [
  145. 'id' => $userId,
  146. 'realname' => $param['realname'],
  147. 'nickname' => $param['nickname'],
  148. 'gender' => $param['gender'],
  149. 'mobile' => $param['mobile'],
  150. 'email' => $param['email'],
  151. 'intro' => $param['intro'],
  152. ];
  153. // 头像处理
  154. $avatar = isset($param['avatar']) ? $param['avatar'] : "";
  155. if (strpos($avatar, "data:image") !== false) {
  156. $expData = explode(';', $avatar);
  157. $fileInfo = explode('/', $expData[0]);
  158. $fileExt = $fileInfo[1] == 'jpeg' ? 'jpg' : $fileInfo[1];
  159. // 文件存储路径
  160. $filePath = create_image_path("user", $fileExt);
  161. // 获取图片流
  162. $item = explode(',', $avatar);
  163. file_put_contents(ATTACHMENT_PATH . $filePath, base64_decode($item[1]));
  164. $data['avatar'] = $filePath;
  165. } else {
  166. $data['avatar'] = str_replace(IMG_URL, "", $param['avatar']);
  167. }
  168. $result = $this->model->edit($data);
  169. if (!$result) {
  170. return message("更新资料信息失败", false);
  171. }
  172. return message("更新资料信息成功");
  173. }
  174. /**
  175. * 更新密码
  176. * @param $userId 用户ID
  177. * @return array
  178. * @author laravel开发员
  179. * @since 2020/11/14
  180. */
  181. public function updatePwd($userId)
  182. {
  183. // 获取参数
  184. $param = request()->all();
  185. // 原始密码
  186. $oldPassword = trim(getter($param, "oldPassword"));
  187. if (!$oldPassword) {
  188. return message("旧密码不能为空", false);
  189. }
  190. // 新密码
  191. $newPassword = trim(getter($param, "newPassword"));
  192. if (!$newPassword) {
  193. return message("新密码不能为空", false);
  194. }
  195. $userInfo = $this->model->getInfo($userId);
  196. if (!$userInfo) {
  197. return message("用户信息不存在", false);
  198. }
  199. if ($userInfo['password'] != get_password($oldPassword . $userInfo['username'])) {
  200. return message("旧密码输入不正确", false);
  201. }
  202. // 设置新密码
  203. $userInfo['password'] = get_password($newPassword . $userInfo['username']);
  204. $result = $this->model->edit($userInfo);
  205. if (!$result) {
  206. return message("修改失败", false);
  207. }
  208. return message("修改成功");
  209. }
  210. /**
  211. * 重置密码
  212. * @return array
  213. * @since 2020/11/14
  214. * @author laravel开发员
  215. */
  216. public function resetPwd()
  217. {
  218. // 获取参数
  219. $param = request()->all();
  220. // 用户ID
  221. $userId = getter($param, "id");
  222. if (!$userId) {
  223. return message("用户ID不能为空", false);
  224. }
  225. $userInfo = $this->model->getInfo($userId);
  226. if (!$userInfo) {
  227. return message("用户信息不存在", false);
  228. }
  229. // 设置新密码
  230. $userInfo['password'] = get_password("123456" . $userInfo['username']);
  231. $result = $this->model->edit($userInfo);
  232. if (!$result) {
  233. return message("重置密码失败", false);
  234. }
  235. return message("重置密码成功");
  236. }
  237. }