FeedbackController.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Api\Repositories\WxFeedbackRepositories;
  4. use App\Jobs\UserInputSafeCheckJob;
  5. use App\Models\WxFeedback;
  6. use App\Wen\Utils\UserUtils;
  7. use App\Wen\Utils\Utils;
  8. use Illuminate\Http\Request;
  9. class FeedbackController extends BaseController
  10. {
  11. /**
  12. * 用户反馈
  13. * @param Request $request
  14. * @return \Illuminate\Http\JsonResponse
  15. */
  16. public function addFeedback(Request $request)
  17. {
  18. $uid = $request->uid;
  19. _limit_user('add:feedback', $uid, 10);
  20. $feedback_type = $request->feedback_type;
  21. $feedback_content = strip_tags($request->feedback_content);
  22. if(strpos(strtolower($feedback_content), '<script') !== false){
  23. return $this->fail(200004);
  24. }
  25. $image_urls = $request->image_urls;
  26. $image_urls__ = [];
  27. if($image_urls){
  28. foreach ($image_urls as $img_item){
  29. $image_urls__[] = $img_item['url'];
  30. }
  31. }
  32. $contact = $request->contact;
  33. if(_empty_($feedback_content)){
  34. $this->fail(200001);
  35. }
  36. $r = WxFeedbackRepositories::add($uid, $feedback_type, $feedback_content, $image_urls__, $contact);
  37. if($r){
  38. UserInputSafeCheckJob::dispatch($uid, $feedback_content);
  39. if($image_urls__){
  40. Utils::image_state_change($image_urls__, 1);
  41. }
  42. UserUtils::add_user_experience($uid, 9);
  43. return $this->success($r);
  44. }else{
  45. return $this->fail(200002);
  46. }
  47. }
  48. /*
  49. * 获取用户的反馈列表
  50. */
  51. public function feedbacked(Request $request){
  52. $uid = $request->uid;
  53. $feedBacked = WxFeedback::where('user_id', $uid)->orderBy('id', 'desc')->get();
  54. $res = [];
  55. if($feedBacked){
  56. $feedBacked->map(function ($v) use (&$res) {
  57. $imgs = $v->feedback_imgs ? explode(',', $v->feedback_imgs) : [];
  58. if($imgs){
  59. for ($i = 0; $i < count($imgs); $i++){
  60. $imgs[$i] = ['url' => $imgs[$i]];
  61. }
  62. }
  63. $res[] = [
  64. 'id' => $v->id,
  65. 'content' => $v->feedback_content,
  66. 'reply' => $v->feedback_reply,
  67. 'imgs' => $imgs,
  68. 'replay_default' => '您的反馈我们已收到,客服人员会尽快处理并给您答复,到时会有站内im通知,请注意查看',
  69. 'is_solve' => $v->is_solve,
  70. 'created_at' => $v->created_at,
  71. 'updated_at' => $v->updated_at,
  72. 'state' => _empty_($v->feedback_reply) ? 0 : 1,
  73. 'stateName' => _empty_($v->feedback_reply) ? '待处理' : '已答复'
  74. ];
  75. });
  76. }
  77. if(_empty_($res)){
  78. return $this->fail(200003);
  79. }
  80. return $this->success($res);
  81. }
  82. /*
  83. * 更新解决状态
  84. */
  85. public function resolve(Request $request){
  86. $id = $request->id;
  87. $resolve = $request->resolve;
  88. $uid = $request->uid;
  89. if(_empty_($id) || $resolve === null){
  90. return $this->fail(200001);
  91. }
  92. $WxFeedback = WxFeedback::where([
  93. ['id', '=', $id], ['user_id', '=', $uid]
  94. ])->first();
  95. if( $WxFeedback ){
  96. if($WxFeedback->is_solve == 0){
  97. $r = WxFeedback::where([
  98. ['id', '=', $id], ['user_id', '=', $uid]
  99. ])->update(['is_solve' => $resolve ? 1 : 2]);
  100. if($r){
  101. return $this->success();
  102. }
  103. }else{
  104. return $this->fail(200010);
  105. }
  106. return $this->fail(200002);
  107. }else{
  108. return $this->fail(200003);
  109. }
  110. }
  111. }