ZhengshuController.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. namespace App\Http\Controllers\Api\Dwbs;
  3. use App\Http\Controllers\Controller;
  4. use App\Repositories\Enums\Dwbs\DayTypeEnum;
  5. use App\Repositories\Models\Base\User;
  6. use App\Repositories\Models\Dwbs\Ranking;
  7. use App\Repositories\Models\Dwbs\StatisticalResource;
  8. use App\Services\Dwbs\ZhengshuService;
  9. use Carbon\Carbon;
  10. use Illuminate\Http\Request;
  11. /**
  12. * 荣誉殿堂
  13. */
  14. class ZhengshuController extends Controller
  15. {
  16. /**
  17. * @var ZhengshuService
  18. */
  19. private $service;
  20. /**
  21. * ZhengshuController constructor.
  22. *
  23. * @param ZhengshuService $zhengshuService
  24. */
  25. public function __construct(ZhengshuService $service)
  26. {
  27. parent::__construct();
  28. // $this->middleware('checkUserPermission');
  29. $this->service = $service;
  30. }
  31. /**
  32. * 列表
  33. * @param Request $request
  34. *
  35. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  36. * @throws \Prettus\Repository\Exceptions\RepositoryException
  37. */
  38. public function index(Request $request)
  39. {
  40. $lists = $this->service->handleList($request);
  41. return $this->response->success($lists);
  42. }
  43. /**
  44. * 详情
  45. * @param Request $request
  46. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  47. */
  48. public function show(Request $request)
  49. {
  50. $this->validate($request, ['id' => 'required|integer']);
  51. $model = $this->service->handleProfile($request->get('id'));
  52. return $this->response->success($model);
  53. }
  54. /**
  55. * 我的证书
  56. * @param Request $request
  57. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  58. */
  59. public function meZhengshu(Request $request)
  60. {
  61. $user_id = login_user_id();
  62. // User::refreshUserTag($user_id);
  63. $user = User::query()->where('id', $user_id)->first();
  64. $tag = $user['tag'];
  65. $tag_star = $user['tag_star'];
  66. $xuefen = $user['xuefen'];
  67. return $this->response->success(compact('tag_star', 'tag', 'xuefen'));
  68. }
  69. /**
  70. * 排行榜数据
  71. * @param Request $request
  72. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  73. * @throws \Illuminate\Validation\ValidationException
  74. */
  75. public function resources(Request $request)
  76. {
  77. $this->validateData($request, ['type' => 'required|in:1,2'], ['type' => '类型']);
  78. $type = $request->get('type');
  79. $model = StatisticalResource::query()->where('type', $type);
  80. $user = login_user();
  81. $user_id = $user['id'];
  82. $group_id = $user['group_id'];
  83. $day = Carbon::now()->subWeek()->startOfWeek()->toDateString();
  84. $week = $model->clone()->where('group_id', $group_id)->where('day', $day)->where('day_type', DayTypeEnum::week)->orderByDesc('id')->select(['id', 'path', 'day'])->first();
  85. if (!$week) {
  86. $week = $model->clone()->where('group_id', 0)->where('day', $day)->where('day_type', DayTypeEnum::week)->orderByDesc('id')->select(['id', 'path', 'day'])->first();
  87. }
  88. $day = Carbon::now()->subMonth()->startOfMonth()->toDateString();
  89. $month = $model->clone()->where('group_id', $group_id)->where('day', $day)->where('day_type', DayTypeEnum::month)->orderByDesc('id')->select(['id', 'path', 'day'])->first();
  90. if (!$month) {
  91. $month = $model->clone()->where('group_id', 0)->where('day', $day)->where('day_type', DayTypeEnum::month)->orderByDesc('id')->select(['id', 'path', 'day'])->first();
  92. }
  93. $day = Carbon::now()->subQuarter()->startOfQuarter()->toDateString();
  94. $quarter = $model->clone()->where('group_id', $group_id)->where('day', $day)->where('day_type', DayTypeEnum::quarter)->orderByDesc('id')->select(['id', 'path', 'day'])->first();
  95. if (!$quarter) {
  96. $quarter = $model->clone()->where('group_id', 0)->where('day', $day)->where('day_type', DayTypeEnum::quarter)->orderByDesc('id')->select(['id', 'path', 'day'])->first();
  97. }
  98. $day = Carbon::now()->subYear()->startOfYear()->toDateString();
  99. $year = $model->clone()->where('group_id', $group_id)->where('day', $day)->where('day_type', DayTypeEnum::year)->orderByDesc('id')->select(['id', 'path', 'day'])->first();
  100. if (!$year) {
  101. $year = $model->clone()->where('group_id', 0)->where('day', $day)->where('day_type', DayTypeEnum::year)->orderByDesc('id')->select(['id', 'path', 'day'])->first();
  102. }
  103. $week = null;
  104. $month = null;
  105. $quarter = null;
  106. $year = null;
  107. return $this->response->success(compact('week', 'month', 'quarter', 'year'));
  108. }
  109. }