123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- <?php
- namespace App\Http\Controllers\Api\Dwbs;
- use App\Http\Controllers\Controller;
- use App\Repositories\Enums\Dwbs\DayTypeEnum;
- use App\Repositories\Models\Base\Auth;
- use App\Repositories\Models\Base\User;
- use App\Services\Dwbs\RankingService;
- use Carbon\Carbon;
- use Illuminate\Http\Request;
- /**
- * 排行榜
- */
- class RankingController extends Controller
- {
- /**
- * @var RankingService
- */
- private $service;
- /**
- * RankingController constructor.
- *
- * @param RankingService $rankingService
- */
- public function __construct(RankingService $service)
- {
- parent::__construct();
- // $this->middleware('checkUserPermission');
- $this->service = $service;
- }
- /**
- * 获取排行榜数据
- * @param Request $request
- * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
- * @throws \Illuminate\Validation\ValidationException
- */
- public function index(Request $request)
- {
- $this->validateData($request, [
- 'type' => "required|in:1,2,3,4"
- ], [
- 'type' => '排行榜类型'
- ]);
- $type = $request->get('type', 1);
- $user = login_user();
- switch ($type) {
- case 1:
- //实时排行榜
- $data = $this->service->handleRanking($user);
- break;
- case 2:
- //昨天排行榜
- $day = Carbon::now()->addDays(-1)->toDateString();
- $data = $this->service->handleWeekRanking($user, $day, DayTypeEnum::day);
- break;
- case 3:
- //上周
- $day = Carbon::now()->addWeeks(-1)->startOfWeek()->toDateString();
- $data = $this->service->handleWeekRanking($user, $day, DayTypeEnum::week);
- break;
- case 4:
- //上月
- $day = Carbon::now()->addMonths(-1)->startOfMonth()->toDateString();
- $data = $this->service->handleWeekRanking($user, $day, DayTypeEnum::month);
- break;
- }
- return $this->response->success($data);
- }
- /**
- * 弹框展示状态
- * @param Request $request
- * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
- * @throws \Illuminate\Validation\ValidationException
- */
- public function showStatus(Request $request)
- {
- $data = $this->validateData($request, [
- 'xuefen_record_id' => 'required|integer'
- ], [
- 'xuefen_record_id' => '获得学分 id'
- ]);
- $user_id = login_user_id();
- //是否有新获得的学分
- $xuefen_record_id = $request->get('xuefen_record_id', 0);
- $addXuefenStatus = false;
- if ($xuefen_record_id) {
- $addXuefenStatus = $this->service->handleIsNoRead($xuefen_record_id, $user_id);
- } else {
- $addXuefenStatus = $this->service->handleNewIsRead($user_id);
- }
- //排名是否上升
- $rankingStatus = false;
- if (!$addXuefenStatus) {
- $rankingStatus = $this->service->handleIsUpRanking($user_id);
- }
- //学分是否上升
- $xuefenStatus = false;
- if (!$addXuefenStatus && !$rankingStatus) {
- $xuefenStatus = $this->service->handleIsUpDayXuefen($user_id);
- }
- //是否长时间没有卖货
- $timeOutStatus = ['status' => false];
- if (!$addXuefenStatus && !$rankingStatus && !$xuefenStatus) $timeOutStatus = $this->service->handleTimeOutNoOrder($user_id);
- return $this->response->success([
- 'addXuefenStatus' => $addXuefenStatus,
- 'rankingStatus' => $rankingStatus,
- 'xuefenStatus' => $xuefenStatus,
- 'timeOutStatus' => $timeOutStatus,
- ]);
- }
- }
|