ZhengshuController.php 4.7 KB

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