AskController.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Requests\Api\PostsRequests\AskRequest;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\DB;
  6. class AskController extends BaseController
  7. {
  8. //发起一个咨询
  9. public function createNew(AskRequest $request){
  10. // 验证
  11. $request->validate('createnew');
  12. //
  13. $question = trim($request->question);
  14. if(mb_strlen($question) > 300){
  15. return $this->fail(200016,[],'咨询内容不能超过300字');
  16. }
  17. //
  18. $images = trim($request->images);
  19. $images = trim($images,',');
  20. if(count(explode(',',$images)) > 9){
  21. return $this->fail(200016,[],'咨询图片最大9张');
  22. }
  23. //验证答主
  24. if($request->uid == $request->blogger_user_id){
  25. return $this->fail(200016,[],'不能咨询自己');
  26. }
  27. $blogger = DB::table('blogger')->where('user_id',$request->blogger_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. //
  35. $data = [
  36. 'user_id' => $request->uid,
  37. 'blogger_user_id' => $request->blogger_user_id,
  38. 'question' => $question,
  39. 'images' => $images,
  40. 'createtime' => time(),
  41. 'ask_price' => $blogger->ask_price,
  42. 'sit_price' => $blogger->sit_price,
  43. 'ask_minute' => $blogger->ask_minute,
  44. 'is_hidden' => $request->is_hidden,
  45. 'is_public' => $request->is_public,
  46. ];
  47. DB::table('ask_order')->insert($data);
  48. return $this->success();
  49. }
  50. //评价此次咨询
  51. public function evaluate(AskRequest $request){
  52. // 验证
  53. $request->validate('evaluate');
  54. //
  55. $eva_content = trim($request->eva_content);
  56. if(mb_strlen($eva_content) > 100){
  57. return $this->fail(200016,[],'咨询内容不能超过100字');
  58. }
  59. //
  60. $score = $request->eva_score;
  61. if($score < 0){
  62. $score = 0;
  63. }
  64. if($score > 5){
  65. $score = 5;
  66. }
  67. //
  68. $order_id = _empty_default_($request->order_id,0);
  69. $order = DB::table('ask_order')->where('id',$order_id)->where('user_id',$request->uid)->where('status','>',0)->first();
  70. if(empty($order)){
  71. return $this->fail(200016,[],'没有找到该咨询');
  72. }
  73. if($order->status != 20){
  74. return $this->fail(200016,[],'咨询还没有结束');
  75. }
  76. if(!empty($order->eva_content)){
  77. return $this->fail(200016,[],'已经评价过了');
  78. }
  79. //
  80. $update = [
  81. 'eva_score' => $request->eva_score,
  82. 'eva_content' => $request->eva_content,
  83. ];
  84. DB::table('ask_order')->where('id',$order_id)->update($update);
  85. return $this->success();
  86. }
  87. //旁听
  88. public function sit(Request $request){
  89. $order_id = _empty_default_($request->order_id,0);
  90. $order = DB::table('ask_order')->where('id',$order_id)->first();
  91. if(empty($order)){
  92. return $this->fail(200016,[],'没有找到该咨询');
  93. }
  94. if($order->status != 20){
  95. return $this->fail(200016,[],'咨询还没有结束');
  96. }
  97. if($order->is_public != 1){
  98. return $this->fail(200016,[],'咨询没有公开');
  99. }
  100. if($order->user_id == $request->uid){
  101. return $this->fail(200016,[],'不需要旁听自己咨询的内容');
  102. }
  103. if($order->blogger_user_id == $request->uid){
  104. return $this->fail(200016,[],'不需要旁听自己回答的内容');
  105. }
  106. //是否需要支付
  107. $need_pay = 1;
  108. //检查旁听订单
  109. $sit_order = DB::table('ask_sit_order')->where('order_id',$order_id)->where('sit_user_id',$request->uid)->first();
  110. if($sit_order){
  111. if($sit_order->status == 10){
  112. return $this->fail(200016,[],'已经旁听过了');
  113. }else{
  114. //去支付即可
  115. }
  116. }else{
  117. $data = [
  118. 'order_id' => $order_id,
  119. 'sit_user_id' => $request->uid,
  120. 'createtime' => time(),
  121. 'sit_price' => $order->sit_price,
  122. ];
  123. if($order->sit_price == 0){
  124. $need_pay = 0; //零元不需要支付
  125. $data['status'] = 10;
  126. $data['paytime'] = time();
  127. }
  128. DB::table('ask_sit_order')->insert($data);
  129. }
  130. if($need_pay == 1){
  131. return $this->success('支付拉起'); //支付拉起
  132. }else{
  133. return $this->success();
  134. }
  135. }
  136. //答主的主页
  137. //咨询首页
  138. //首页轮播
  139. //推荐答主列表
  140. //某个提问的旁听详情
  141. //我购买的旁听列表
  142. //我发起的咨询
  143. //所有问答列表
  144. //答主的评价列表
  145. //
  146. //
  147. //
  148. //
  149. //
  150. //
  151. //
  152. //
  153. }