123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- <?php
- namespace App\Http\Controllers\Admin\Dwbs;
- use App\Http\Controllers\Controller;
- use App\Repositories\Enums\ResponseCodeEnum;
- use App\Repositories\Models\Dwbs\Good;
- use App\Repositories\Models\Dwbs\OrderGood;
- 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 \Prettus\Repository\Exceptions\RepositoryException
- */
- public function index(Request $request)
- {
- $lists = $this->service->handleList($request);
- return $this->response->success($lists);
- }
- /**
- * 获取商品数量对比统计
- * @param Request $request
- * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
- * @throws \Illuminate\Validation\ValidationException
- */
- public function goodNumsStatistics(Request $request)
- {
- $data = $this->validateData($request, [
- 'start_date' => 'nullable|date',
- 'end_date' => 'nullable|date',
- 'good_ids' => 'nullable|array'
- ], [
- 'start_date' => '开始日期',
- 'end_date' => '结束日期',
- 'good_ids' => '产品'
- ]);
- if (empty($data['start_date'])) {
- $start_date = Carbon::now()->addMonths(-1);
- } else {
- $start_date = Carbon::parse($data['start_date']);
- }
- if (empty($data['end_date'])) {
- $end_date = Carbon::now();
- } else {
- $end_date = Carbon::parse($data['end_date']);
- }
- $good_ids = false;
- if (!empty($data['good_ids'])) $good_ids = $data['good_ids'];
- $oldGoods = Good::getNames();
- $goods = [];
- foreach ($oldGoods as $good) {
- if ($good_ids && !in_array($good['id'], $good_ids)) continue;
- $goods[] = $good;
- }
- $days = $start_date->diffInDays($end_date, false);
- if (!$days) {
- abort(ResponseCodeEnum::SERVICE_OPERATION_ERROR, '起止时间不合法');
- return;
- }
- $statistics = [];
- for ($i = 0; $i < $days; $i++) {
- $day = $end_date->clone()->subDays($i)->toDateString();
- $dayGoodNums = [];
- foreach ($goods as $good) {
- $dayNums = OrderGood::adminBbyDayGetGoodNums($day, $good['id']);
- $dayGoodNums[$good->id] = $dayNums['nums'] ?? 0;
- }
- $statistics[] = [
- 'day' => $day,
- 'nums' => $dayGoodNums
- ];
- }
- return $this->response->success(compact('statistics', 'goods'));
- }
- }
|