UserController.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. namespace App\Http\Controllers\V1;
  3. use App\Models\User;
  4. use App\Models\UserFeedback;
  5. use App\Models\UserInfo;
  6. use App\Services\Api\SortService;
  7. use Carbon\Carbon;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Support\Facades\Auth;
  10. use Illuminate\Support\Facades\Validator;
  11. class UserController extends Controller
  12. {
  13. public function __construct()
  14. {
  15. $this->user = auth('api')->user();
  16. $this->userId = $this->user ? $this->user->id : 0;
  17. //如果用户被删除,会自动退出登录
  18. if (!empty($this->user->deleted_at)) {
  19. $this->user->online = 0;
  20. $this->user->save();
  21. auth('api')->logout();
  22. }
  23. }
  24. //问题反馈
  25. public function feedback(Request $request)
  26. {
  27. $content = $request->input('content');
  28. $file_url = $request->input('file_url', '');
  29. $validator = Validator::make($request->all(), [
  30. 'content' => 'required|min:2|max:200',
  31. ]);
  32. if($validator->fails()){
  33. return $this->error($validator->errors()->first());
  34. }
  35. $feedback = new UserFeedback();
  36. $feedback->user_id = $this->userId;
  37. $feedback->content = $content;
  38. $feedback->file = !empty($file_url) ? json_encode($file_url) : '';
  39. $feedback->save();
  40. return $this->success();
  41. }
  42. //按照首字母进行分组排序,类似手机通讯录(注意:get()后面直接 ->toArray()在数据为空的时候导致报错)
  43. public function groupByInitial(Request $request)
  44. {
  45. $keyword = $request->input('keyword', '');
  46. $list = User::query()
  47. ->select('id', 'name', 'avatar')
  48. ->when($keyword, function ($query, $keyword){
  49. $query->where('name', 'like', '%'.$keyword.'%');
  50. })
  51. ->whereNotNull('name')
  52. ->whereNull('deleted_at')
  53. ->get();
  54. if($list->isNotEmpty()){
  55. $list = $list->toArray();
  56. $list = SortService::getResultList($list);
  57. }else{
  58. $list = [];
  59. }
  60. return $this->success($list);
  61. }
  62. public function info()
  63. {
  64. $user = auth('api')->user();
  65. $user = User::with(['account'])->where('id', $user->id)->first();
  66. return $this->success($user);
  67. }
  68. public function update(Request $request)
  69. {
  70. try
  71. {
  72. $req = $request->all();
  73. $app = $this->getUniFactory(\user()->info->platform);
  74. /* @var User $user*/
  75. $user = User::with(['info'])->find(\user()->id);
  76. $res = $app->login($req['code']);
  77. $user->remember_token = $res['session_key'];
  78. $decryptedData = $app->decryptData($user->remember_token, $req['iv'], $req['encryptedData']);
  79. if (isset($decryptedData['nickName'])) {
  80. $user->nickname = $decryptedData['nickName'];
  81. $user->avatar = $decryptedData['avatarUrl'];
  82. }else{
  83. $user->mobile = $decryptedData['phoneNumber'];
  84. }
  85. $user->save();
  86. return $this->success($user);
  87. }catch (\Exception $e){
  88. return $this->error($e->getMessage());
  89. }
  90. }
  91. // h5 绑定
  92. public function h5Bind()
  93. {
  94. }
  95. // h5 解绑
  96. public function h5ReBind()
  97. {
  98. }
  99. // 微信小程序 绑定
  100. public function miniProgramBind()
  101. {
  102. }
  103. // 微信小程序 解绑
  104. public function miniProgramReBind()
  105. {
  106. }
  107. // 手机号 绑定
  108. public function smsBind()
  109. {
  110. }
  111. // 手机号 解绑
  112. public function smsReBind()
  113. {
  114. }
  115. }