CircleController.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/6/14
  6. * Time: 16:23
  7. */
  8. namespace App\Http\Controllers\V1;
  9. use App\Repositories\Circle\CircleArticleRepository;
  10. use App\Repositories\Circle\CircleRepository;
  11. use App\Traits\UserTrait;
  12. use App\Transformers\Circle\ArticleListTransformer;
  13. use App\Transformers\Circle\DetailTransformer;
  14. use App\Transformers\Circle\QuestionTransformer;
  15. use Illuminate\Http\Request;
  16. use Illuminate\Support\Facades\Log;
  17. use Illuminate\Support\Facades\Redis;
  18. use Illuminate\Support\Facades\Validator;
  19. use Illuminate\Validation\Rule;
  20. use League\Fractal\Manager;
  21. use League\Fractal\Pagination\IlluminatePaginatorAdapter;
  22. use League\Fractal\Resource\Collection;
  23. use League\Fractal\Resource\Item;
  24. class CircleController extends Controller
  25. {
  26. use UserTrait;
  27. public function __construct(CircleRepository $circleRepository,
  28. CircleArticleRepository $circleArticleRepository)
  29. {
  30. $this->circleRepository = $circleRepository;
  31. $this->circleArticleRepository = $circleArticleRepository;
  32. }
  33. /**
  34. * 圈子首页
  35. * @param Request $request
  36. */
  37. public function index(Request $request)
  38. {
  39. $userInfo = $this->getUserInfo();
  40. if ($userInfo) {
  41. $uid = $userInfo['uid'];
  42. } else {
  43. $uid = 0;
  44. }
  45. $validator = Validator::make($request->all(), [
  46. 'id' => 'required|exists:interest_circles'
  47. ]);
  48. if ($validator->fails()) {
  49. return $this->jsonError($validator->errors()->first());
  50. }
  51. $detail = $this->circleRepository->detail($request->all());
  52. if ($detail) {
  53. $fractal = new Manager();
  54. $res = new Item($detail, new DetailTransformer($uid));
  55. $data = $fractal->createData($res)->toArray();
  56. }
  57. return $this->jsonSuccess($data);
  58. }
  59. /**
  60. * 查询圈子问题
  61. * @param Request $request
  62. * @return array
  63. */
  64. public function getQuestion(Request $request)
  65. {
  66. $userInfo = $this->getUserInfo();
  67. if ($userInfo) {
  68. $uid = $userInfo['uid'];
  69. } else {
  70. $uid = 0;
  71. }
  72. $validator = Validator::make($request->all(), [
  73. 'id' => 'required|exists:interest_circles'
  74. ]);
  75. if ($validator->fails()) {
  76. return $this->jsonError($validator->errors()->first());
  77. }
  78. $detail = $this->circleRepository->detail($request->all());
  79. if ($detail) {
  80. $fractal = new Manager();
  81. $res = new Item($detail, new QuestionTransformer($uid));
  82. $data = $fractal->createData($res)->toArray();
  83. }
  84. return $this->jsonSuccess($data);
  85. }
  86. /**
  87. * 加入圈子
  88. * @param Request $request
  89. * @return array
  90. */
  91. public function joinCircle(Request $request)
  92. {
  93. $userInfo = $this->getUserInfo();
  94. if (empty($userInfo)) {
  95. return $this->jsonError('获取用户信息失败');
  96. }
  97. // else{
  98. // $userInfo['uid'] = 268;
  99. // }
  100. $validator = Validator::make($request->all(), [
  101. 'id' => 'required|exists:interest_circles'
  102. ]);
  103. if ($validator->fails()) {
  104. return $this->jsonError($validator->errors()->first());
  105. }
  106. return $this->circleRepository->joinCircle($request->all(), $userInfo);
  107. }
  108. /**
  109. * 退出圈子
  110. * @param Request $request
  111. * @return array
  112. */
  113. public function exitCircle(Request $request)
  114. {
  115. $userInfo = $this->getUserInfo();
  116. if (empty($userInfo)) {
  117. return $this->jsonError('获取用户信息失败');
  118. }
  119. // else{
  120. // $userInfo['uid'] = 268;
  121. // }
  122. $validator = Validator::make($request->all(), [
  123. 'id' => 'required|exists:interest_circles'
  124. ]);
  125. if ($validator->fails()) {
  126. return $this->jsonError($validator->errors()->first());
  127. }
  128. return $this->circleRepository->exitCircle($request->all(), $userInfo);
  129. }
  130. /**
  131. * 精华列表
  132. * @param Request $request
  133. * @return array
  134. */
  135. public function articleList(Request $request)
  136. {
  137. $userInfo = $this->getUserInfo();
  138. if ($userInfo) {
  139. $uid = $userInfo['uid'];
  140. $inviteCode = $userInfo['invite_code'];
  141. }else{
  142. $uid = 0;
  143. $inviteCode = '';
  144. }
  145. $validator = Validator::make($request->all(), [
  146. 'id' => 'required|exists:interest_circles'
  147. ]);
  148. if ($validator->fails()) {
  149. return $this->jsonError($validator->errors()->first());
  150. }
  151. $list = $this->circleArticleRepository->lists($request->all());
  152. $fractal = new Manager();
  153. $resource = new Collection($list, new ArticleListTransformer($uid, $inviteCode));
  154. $resource->setPaginator(new IlluminatePaginatorAdapter($list));
  155. $data = $fractal->createData($resource)->toArray();
  156. return jsonSuccess($data);
  157. }
  158. }