UserService.php 2.3 KB

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