2024-03-14 20:50:29 +08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Http\Controllers\DataCenter;
|
|
|
|
|
|
|
|
|
|
use App\Http\Controllers\Controller;
|
2024-07-31 17:58:06 +08:00
|
|
|
use App\Http\Enum\StaticTypeEnum;
|
2024-03-14 20:50:29 +08:00
|
|
|
use App\Http\Resources\DailySalesReportResource;
|
2024-07-31 17:58:06 +08:00
|
|
|
use App\Models\BusinessOrderItem;
|
2024-03-14 20:50:29 +08:00
|
|
|
use App\Models\DailySalesReport;
|
2024-07-31 17:58:06 +08:00
|
|
|
use App\Models\GoodsSku;
|
2024-03-14 20:50:29 +08:00
|
|
|
use App\Utils\FormatUtils;
|
2024-07-31 17:58:06 +08:00
|
|
|
use Carbon\Carbon;
|
2024-03-14 20:50:29 +08:00
|
|
|
use Illuminate\Http\Request;
|
2024-07-31 17:58:06 +08:00
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
|
use Illuminate\Support\Facades\Validator;
|
2024-03-14 20:50:29 +08:00
|
|
|
|
|
|
|
|
class DataCenterController extends Controller
|
|
|
|
|
{
|
|
|
|
|
public function salesReport(Request $request)
|
|
|
|
|
{
|
|
|
|
|
$sort = $request->get('sort', 'sales_num');
|
|
|
|
|
$order = $request->get('sortOrder', 'DESC');
|
2024-03-18 10:32:43 +08:00
|
|
|
if (empty($request->get('date'))) {
|
|
|
|
|
$request->offsetSet('date', date('Y-m-d'));
|
|
|
|
|
}
|
2024-03-14 20:50:29 +08:00
|
|
|
|
|
|
|
|
$dailySalesReports = DailySalesReport::query()
|
|
|
|
|
->filter()
|
|
|
|
|
->orderBy($sort, $order)
|
|
|
|
|
->paginate($request->get('per_page'));
|
|
|
|
|
|
|
|
|
|
foreach ($dailySalesReports as &$dailySalesReport) {
|
|
|
|
|
$dailySalesReport['stock'] = $dailySalesReport['inventory'] + $dailySalesReport['arrived_today_num'];
|
|
|
|
|
$dailySalesReport['goal_rate'] = FormatUtils::getPercent($dailySalesReport['goal_rate'], 1);
|
|
|
|
|
$dailySalesReport['S1_rate'] = FormatUtils::getPercent($dailySalesReport['S1_rate'], 1);
|
|
|
|
|
$dailySalesReport['S2_rate'] = FormatUtils::getPercent($dailySalesReport['S2_rate'], 1);
|
|
|
|
|
$dailySalesReport['S3_rate'] = FormatUtils::getPercent($dailySalesReport['S3_rate'], 1);
|
|
|
|
|
$dailySalesReport['S4_rate'] = FormatUtils::getPercent($dailySalesReport['S4_rate'], 1);
|
|
|
|
|
$dailySalesReport['S5_rate'] = FormatUtils::getPercent($dailySalesReport['S5_rate'], 1);
|
|
|
|
|
$dailySalesReport['S6_rate'] = FormatUtils::getPercent($dailySalesReport['S6_rate'], 1);
|
|
|
|
|
$dailySalesReport['S7_rate'] = FormatUtils::getPercent($dailySalesReport['S7_rate'], 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return DailySalesReportResource::collection($dailySalesReports);
|
|
|
|
|
}
|
2024-07-31 17:58:06 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 销售报表
|
|
|
|
|
* @param Request $request
|
|
|
|
|
* @return void
|
|
|
|
|
*/
|
|
|
|
|
public function skuSalesReport(Request $request)
|
|
|
|
|
{
|
|
|
|
|
//获取所有参数
|
|
|
|
|
$allParams = $request->all();
|
|
|
|
|
//进行校验验证
|
|
|
|
|
$validator = Validator::make($allParams, [
|
|
|
|
|
'type' => 'required|integer', //1表示今日
|
|
|
|
|
'start_day' => 'sometimes|string',
|
|
|
|
|
'end_day' => 'sometimes|string',
|
|
|
|
|
'title' => 'sometimes|string'
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
if ($validator->fails()) {
|
|
|
|
|
//校验失败返回异常
|
|
|
|
|
$this->setValidatorFailResponse($validator->getMessageBag()->getMessages());
|
|
|
|
|
return response($this->res, $this->res['httpCode']);
|
|
|
|
|
}
|
|
|
|
|
if (StaticTypeEnum::TODAY == $allParams->type) {
|
|
|
|
|
//实时统计
|
|
|
|
|
$orderItems = BusinessOrderItem::query()
|
|
|
|
|
->leftJoin("business_orders as b", "business_order_id", "=", "b.id")
|
|
|
|
|
->select("business_order_items.external_sku_id"
|
|
|
|
|
, DB::raw("sum(CASE WHEN b.shipping_status>0 THEN goods_number-already_cancel_number ELSE 0 END) as shipping_num")
|
|
|
|
|
, DB::raw("sum(CASE WHEN b.shipping_status=0 THEN goods_number-already_cancel_number ELSE 0 END) as unshipping_num")
|
|
|
|
|
, DB::raw("sum(goods_number-already_cancel_number) as goods_total"))
|
|
|
|
|
->where("business_order_items.created_at", ">",Carbon::now()->startOfDay()->toDateTimeString())
|
|
|
|
|
->where("business_order_items.cancel_status", "=", 0)
|
|
|
|
|
->groupBy('external_sku_id')
|
|
|
|
|
->orderBy("goods_total","DESC")
|
|
|
|
|
->paginate($request->get('per_page'));
|
|
|
|
|
return $orderItems;
|
|
|
|
|
} else {
|
|
|
|
|
$startTime = Carbon::parse($request->input("start_day"))->toDateTimeString();
|
|
|
|
|
$endTime = Carbon::parse($request->input("end_day"))->endOfDay()->toDateTimeString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2024-03-14 20:50:29 +08:00
|
|
|
}
|