User.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. <?php
  2. namespace App\Module\User\Logic;
  3. use App\Module\User\Dto\UserDto;
  4. use App\Module\User\Dto\UserInfoDto;
  5. use App\Module\User\Enums\Status;
  6. use App\Module\User\Enums\Status2;
  7. use Illuminate\Pagination\LengthAwarePaginator;
  8. class User
  9. {
  10. /**
  11. * 用户列表
  12. *
  13. * @param $w
  14. * @param $page
  15. * @param $limit
  16. * @return LengthAwarePaginator
  17. */
  18. static public function list1($w, $page, $limit)
  19. {
  20. $q = \App\Module\User\Models\User::query()->with([
  21. 'hospital','hospital_auth','consumer'
  22. ]);
  23. if($w['only_consumer']??""){
  24. $q = $q->where('is_consumer','=',1);
  25. }
  26. if($w['username']??""){
  27. $q = $q->where('username','like',"%{$w['username']}%");
  28. }
  29. if($w['name']??""){
  30. $q = $q->where('name','like',"%{$w['name']}%");
  31. }
  32. if($w['phone']??""){
  33. $q = $q->where('phone','=',$w['phone']);
  34. }
  35. if($w['email']??""){
  36. $q = $q->where('phone','=',$w['email']);
  37. }
  38. if($w['user_id']??""){
  39. $q = $q->where('id','=',$w['user_id']);
  40. }
  41. return $q->paginate($limit, [ '*' ], '', $page);
  42. }
  43. /**
  44. * 获取单条信息
  45. *
  46. * @param int $id 用户ID
  47. * @return \App\Module\User\Models\User|null 用户模型或null
  48. */
  49. static public function info($id)
  50. {
  51. $q = \App\Module\User\Models\User::query();
  52. $info = $q->find($id);
  53. return $info;
  54. }
  55. /**
  56. * 获取用户详细信息
  57. *
  58. * @param int $id 用户ID
  59. * @param bool $create 如果不存在是否创建
  60. * @return \App\Module\User\Models\UserInfo|null 用户详细信息模型或null
  61. */
  62. static public function infoinfo($id, $create = false)
  63. {
  64. $q = \App\Module\User\Models\UserInfo::query();
  65. $info = $q->find($id);
  66. if(!$info && $create){
  67. $info = self::infoCreate($id);
  68. }
  69. return $info;
  70. }
  71. /**
  72. * 创建用户详细信息
  73. *
  74. * @param int $user_id 用户ID
  75. * @return \App\Module\User\Models\UserInfo 用户详细信息模型
  76. */
  77. static public function infoCreate($user_id)
  78. {
  79. $info = self::info($user_id);
  80. $model = new \App\Module\User\Models\UserInfo();
  81. $model->user_id = $user_id;
  82. $model->status = Status::Hidden;
  83. $model->nickname = '用户**'.substr($info->username, -4);
  84. $model->avatar = '0';
  85. $model->google2fa_secret = '';
  86. $model->save();
  87. return $model;
  88. }
  89. /**
  90. * 编辑用户
  91. *
  92. * @param $id
  93. * @param $password
  94. * @return null
  95. */
  96. static public function edit($id, $password)
  97. {
  98. /**
  99. * @var \App\Module\User\Models\User $user
  100. */
  101. $user = \App\Module\User\Models\User::query()->find($id);
  102. if ($user) {
  103. $user->password = password_hash($password, PASSWORD_DEFAULT);
  104. $user->save();
  105. return $user;
  106. }
  107. return null;
  108. }
  109. /**
  110. * 删除
  111. *
  112. * @param $id
  113. * @return bool|null
  114. */
  115. static public function delete($id)
  116. {
  117. /**
  118. * @var \App\Module\User\Models\User $user
  119. */
  120. $user = \App\Module\User\Models\User::query()->find($id);
  121. if ($user) {
  122. return $user->delete();
  123. }
  124. return null;
  125. }
  126. /**
  127. * 批量删除
  128. *
  129. * @param $ids
  130. * @return true|null
  131. */
  132. static public function delete_batch($ids)
  133. {
  134. /**
  135. * @var \App\Module\User\Models\User $user
  136. */
  137. $users = \App\Module\User\Models\User::query()->findMany($ids);
  138. if ($users) {
  139. foreach ($users as $user){
  140. $user->delete();
  141. }
  142. return true;
  143. }
  144. return null;
  145. }
  146. /**
  147. * 编辑数据
  148. *
  149. * @param $id
  150. * @param $data
  151. * @return void
  152. */
  153. static public function edit_data($id,$data)
  154. {
  155. if(!$data){
  156. return [];
  157. }
  158. /**
  159. * @var \App\Module\User\Models\User $user
  160. */
  161. $user = \App\Module\User\Models\User::query()->find($id);
  162. foreach ($data as $k=> $m){
  163. $user->$k = $m;
  164. }
  165. $user->save();
  166. }
  167. }