UserService.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace App\Modules\Admin\Services;
  3. use App\Exceptions\ClientException;
  4. use App\Models\User;
  5. use Illuminate\Database\Eloquent\Builder;
  6. class UserService
  7. {
  8. public function paginate($data)
  9. {
  10. $p = User::query()->with("group")->when($data['status'], function (Builder $query) use ($data) {
  11. return $query->where("status", $data['status']);
  12. })->when($data['userinfo'], function (Builder $query) use ($data) {
  13. return $query->where(function (Builder $query) use ($data) {
  14. return $query->where("phone", $data['userinfo'])->orWhere("email", $data['userinfo'])->orWhere("id", $data['userinfo']);
  15. });
  16. })->orderByDesc("id")->paginate($data['page_size']);
  17. return [
  18. "total" => $p->total(),
  19. "page_total" => $p->lastPage(),
  20. "list" => array_map(function (User $u) {
  21. return [
  22. "id" => $u->id,
  23. "phone" => $u->phone,
  24. "email" => $u->email,
  25. "status" => $u->status,
  26. "created_at" => $u->created_at->format("Y-m-d"),
  27. //@TODO kphcdr
  28. "company" => "todo company",
  29. "group_id" => $u->group_id,
  30. "group_name" => $u->group->name,
  31. '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->save();
  54. return true;
  55. }
  56. }