User.php 4.3 KB

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