UserService.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace App\Modules\Admin\Services;
  3. use App\Exceptions\ClientException;
  4. use App\Models\User\User;
  5. use Illuminate\Database\Eloquent\Builder;
  6. use Illuminate\Support\Arr;
  7. class UserService
  8. {
  9. public function paginate($params)
  10. {
  11. $p = User::query()->with(["group", "company"])->when($params['status'], function (Builder $query) use ($params) {
  12. return $query->where("status", $params['status']);
  13. })->when($params['userinfo'], function (Builder $query) use ($params) {
  14. return $query->where(function (Builder $query) use ($params) {
  15. return $query->where("phone", $params['userinfo'])->orWhere("email", $params['userinfo'])->orWhere("id", $params['userinfo']);
  16. });
  17. })->orderByDesc("id")->paginate($params['page_size']);
  18. return [
  19. "total" => $p->total(),
  20. "page_total" => $p->lastPage(),
  21. "list" => array_map(function (User $u) {
  22. return [
  23. "id" => $u->id,
  24. "phone" => $u->phone,
  25. "email" => $u->email,
  26. "status" => $u->status,
  27. "created_at" => $u->created_at->format("Y-m-d"),
  28. "company" => optional($u->company)->name,
  29. "group_id" => $u->group_id,
  30. "group_name" => $u->group->name,
  31. 'permissions' => Arr::get($u->extra, 'permissions'),
  32. ];
  33. }, $p->items()),
  34. ];
  35. }
  36. public function changeStatus($data)
  37. {
  38. $u = User::findOrFail($data['id']);
  39. if ($u->id == \Auth::id()) {
  40. throw new ClientException("你不能禁用自己的账号");
  41. }
  42. $u->status = $u->status == User::STATUS_OK ? User::STATUS_STOP : User::STATUS_OK;
  43. $u->save();
  44. return true;
  45. }
  46. public function saveSetting($data)
  47. {
  48. $u = User::findOrFail($data['id']);
  49. $u->group_id = $data['group_id'];
  50. if ($data['password']) {
  51. $u->password = $u->hashPassword($data['password']);
  52. }
  53. $u->extra = array_merge($u->extra ?? [], [
  54. "permissions" => $data['permissions'] ?? [],
  55. ]);
  56. $u->save();
  57. return true;
  58. }
  59. }