BloggerController.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Requests\Api\PostsRequests\BloggerRequest;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\DB;
  6. class BloggerController extends BaseController
  7. {
  8. //答主获取自己的详情
  9. public function getInfo(Request $request){
  10. $blogger = DB::table('blogger')
  11. ->leftJoin('wx_user','wx_user.id','=','blogger.user_id')
  12. ->select('blogger.*','wx_user.user_avatar','wx_user.user_name')
  13. ->where('blogger.user_id',$request->uid)->first();
  14. if(empty($blogger)){
  15. return $this->fail(200016,[],'您还没有成为答主');
  16. }
  17. /*if($blogger->status != 1){
  18. return $this->fail(200016,[],'您还没有认证答主');
  19. }*/
  20. return $this->success($blogger);
  21. }
  22. //用户获得答主的详情
  23. public function info(Request $request){
  24. $blogger = DB::table('blogger')
  25. ->leftJoin('wx_user','wx_user.id','=','blogger.user_id')
  26. ->select('blogger.*','wx_user.user_avatar','wx_user.user_name')
  27. ->where('blogger.user_id',$request->user_id)->first();
  28. if(empty($blogger)){
  29. return $this->fail(200016,[],'没有找到该答主');
  30. }
  31. /*if($blogger->status != 1){
  32. return $this->fail(200016,[],'您还没有认证答主');
  33. }*/
  34. return $this->success($blogger);
  35. }
  36. //答主设置收费
  37. public function setPrice(BloggerRequest $request){
  38. // 验证
  39. $request->validate('setPrice');
  40. if($request->ask_price <= 0){
  41. return $this->fail(200016,[],'咨询价格最小0元');
  42. }
  43. if($request->sit_price <= 0){
  44. return $this->fail(200016,[],'旁听价格最小0元');
  45. }
  46. if($request->ask_minute <= 0){
  47. return $this->fail(200016,[],'咨询时间最小1分钟');
  48. }
  49. $blogger = DB::table('blogger')->where('user_id',$request->uid)->first();
  50. if(empty($blogger)){
  51. return $this->fail(200016,[],'您还没有成为答主');
  52. }
  53. /*if($blogger->status != 1){
  54. return $this->fail(200016,[],'您还没有认证答主');
  55. }*/
  56. DB::table('blogger')->where('user_id',$request->uid)->update([
  57. 'ask_price' => $request->ask_price,
  58. 'sit_price' => $request->sit_price,
  59. 'ask_minute' => $request->ask_minute,
  60. ]);
  61. return $this->success();
  62. }
  63. //答主设置咨询状态
  64. public function setAskStatus(BloggerRequest $request){
  65. $blogger = DB::table('blogger')->where('user_id',$request->uid)->first();
  66. if(empty($blogger)){
  67. return $this->fail(200016,[],'您还没有成为答主');
  68. }
  69. /*if($blogger->status != 1){
  70. return $this->fail(200016,[],'您还没有认证答主');
  71. }*/
  72. DB::table('blogger')->where('user_id',$request->uid)->update([
  73. 'ask_status' => $request->ask_status,
  74. ]);
  75. return $this->success();
  76. }
  77. //答主所属类型列表
  78. public function typeList(Request $request){
  79. $list = DB::table('blogger_type')->orderBy('sort', 'desc')->orderBy('id', 'desc')->get();
  80. return $this->success($list);
  81. }
  82. //答主列表。 推荐答主列表(随机)、按类型答主列表
  83. public function lists(Request $request){
  84. //分页
  85. $page = $request->page ?? 1;
  86. $limit = $request->limit ?? 10;
  87. $offset = ($page - 1) * $limit;
  88. //按类型搜
  89. $type_id = $request->type_id ?? 0;
  90. //搜索
  91. $keyword = _empty_default_($request->keyword,'');
  92. //
  93. $list = DB::table('blogger')
  94. ->leftJoin('wx_user','wx_user.id','=','blogger.user_id')
  95. ->select('blogger.*','wx_user.user_avatar','wx_user.user_name')
  96. ->where('blogger.status',1)
  97. ->inRandomOrder()->offset($offset)->limit($limit);
  98. if($type_id){
  99. $list = $list->whereRaw('FIND_IN_SET(?,type_ids)',[$type_id]);
  100. }
  101. if($keyword){
  102. $list = $list->where(function($query) use ($keyword) {
  103. $query->orWhere('wx_user.user_name','like','%'.$keyword.'%')
  104. ->orWhere('blogger.info' ,'like','%'.$keyword.'%');
  105. })->reorder('blogger.user_id','desc');
  106. }
  107. $list = $list->get();
  108. return $this->success($list);
  109. }
  110. }