BloggerController.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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')->where('user_id',$request->uid)->first();
  11. $blogger = json_decode(json_encode($blogger),true);
  12. if(empty($blogger)){
  13. //拼装一个答主数据
  14. $blogger = [
  15. 'id' => 0,
  16. 'user_id' => $request->uid,
  17. 'ask_price' => 0,
  18. 'sit_price' => 0,
  19. 'ask_minute' => 0,
  20. 'ask_status' => 0,
  21. 'status' => 0,
  22. 'order_number' => 0,
  23. 'order_eva_score' => 0,
  24. 'type_ids' => '',
  25. 'info' => '',
  26. 'created_at' => '',
  27. 'updated_at' => '',
  28. ];
  29. }
  30. $userinfo = DB::table('wx_user')->select('user_avatar','user_name')->where('id',$request->uid)->first();
  31. $blogger['user_avatar'] = $userinfo->user_avatar;
  32. $blogger['user_name'] = $userinfo->user_name;
  33. return $this->success($blogger);
  34. }
  35. //用户获得答主的详情
  36. public function info(Request $request){
  37. $blogger = DB::table('blogger')
  38. ->leftJoin('wx_user','wx_user.id','=','blogger.user_id')
  39. ->select('blogger.*','wx_user.user_avatar','wx_user.user_name')
  40. ->where('blogger.user_id',$request->user_id)->first();
  41. if(empty($blogger)){
  42. return $this->fail(200016,[],'没有找到该答主');
  43. }
  44. /*if($blogger->status != 1){
  45. return $this->fail(200016,[],'您还没有认证答主');
  46. }*/
  47. return $this->success($blogger);
  48. }
  49. //答主设置收费
  50. public function setPrice(BloggerRequest $request){
  51. // 验证
  52. $request->validate('setPrice');
  53. if($request->ask_price <= 0){
  54. return $this->fail(200016,[],'咨询价格最小0元');
  55. }
  56. if($request->sit_price <= 0){
  57. return $this->fail(200016,[],'旁听价格最小0元');
  58. }
  59. if($request->ask_minute <= 0){
  60. return $this->fail(200016,[],'咨询时间最小1分钟');
  61. }
  62. $blogger = DB::table('blogger')->where('user_id',$request->uid)->first();
  63. if(empty($blogger)){
  64. return $this->fail(200016,[],'您还没有成为答主');
  65. }
  66. /*if($blogger->status != 1){
  67. return $this->fail(200016,[],'您还没有认证答主');
  68. }*/
  69. DB::table('blogger')->where('user_id',$request->uid)->update([
  70. 'ask_price' => $request->ask_price,
  71. 'sit_price' => $request->sit_price,
  72. 'ask_minute' => $request->ask_minute,
  73. ]);
  74. return $this->success();
  75. }
  76. //答主设置咨询状态
  77. public function setAskStatus(BloggerRequest $request){
  78. $blogger = DB::table('blogger')->where('user_id',$request->uid)->first();
  79. if(empty($blogger)){
  80. return $this->fail(200016,[],'您还没有成为答主');
  81. }
  82. /*if($blogger->status != 1){
  83. return $this->fail(200016,[],'您还没有认证答主');
  84. }*/
  85. DB::table('blogger')->where('user_id',$request->uid)->update([
  86. 'ask_status' => $request->ask_status,
  87. ]);
  88. return $this->success();
  89. }
  90. //答主所属类型列表
  91. public function typeList(Request $request){
  92. $list = DB::table('blogger_type')->orderBy('sort', 'desc')->orderBy('id', 'desc')->get();
  93. return $this->success($list);
  94. }
  95. //答主列表。 推荐答主列表(随机)、按类型答主列表
  96. public function lists(Request $request){
  97. //分页
  98. $page = $request->page ?? 1;
  99. $limit = $request->limit ?? 10;
  100. $offset = ($page - 1) * $limit;
  101. //按类型搜
  102. $type_id = $request->type_id ?? 0;
  103. //搜索
  104. $keyword = _empty_default_($request->keyword,'');
  105. //
  106. $list = DB::table('blogger')
  107. ->leftJoin('wx_user','wx_user.id','=','blogger.user_id')
  108. ->select('blogger.*','wx_user.user_avatar','wx_user.user_name')
  109. ->where('blogger.status',1)
  110. ->inRandomOrder()->offset($offset)->limit($limit);
  111. if($type_id){
  112. $list = $list->whereRaw('FIND_IN_SET(?,type_ids)',[$type_id]);
  113. }
  114. if($keyword){
  115. $list = $list->where(function($query) use ($keyword) {
  116. $query->orWhere('wx_user.user_name','like','%'.$keyword.'%')
  117. ->orWhere('blogger.info' ,'like','%'.$keyword.'%');
  118. })->reorder('blogger.user_id','desc');
  119. }
  120. $list = $list->get();
  121. return $this->success($list);
  122. }
  123. }