|
|
@@ -311,7 +311,7 @@ class BasicPanel extends Controller
|
|
|
->orderby('count', 'desc')
|
|
|
->get()->toArray();
|
|
|
$province_totle_count = 0;
|
|
|
- if(!empty($result)){
|
|
|
+ if (!empty($result)) {
|
|
|
$province_totle_count = array_sum(array_column($result, 'count'));
|
|
|
//计算占比
|
|
|
foreach ($result as $key => $value) {
|
|
|
@@ -388,7 +388,7 @@ class BasicPanel extends Controller
|
|
|
->orderby('count', 'desc')
|
|
|
->get()->toArray();
|
|
|
$city_totle_count = 0;
|
|
|
- if(!empty($result)){
|
|
|
+ if (!empty($result)) {
|
|
|
$city_totle_count = array_sum(array_column($result, 'count'));
|
|
|
//计算占比
|
|
|
foreach ($result as $key => $value) {
|
|
|
@@ -742,4 +742,297 @@ class BasicPanel extends Controller
|
|
|
return json_send(['code' => 'error', 'msg' => '获取失败:' . $e->getMessage()]);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 低价挂网平台分布
|
|
|
+ * @author 唐远望
|
|
|
+ * @version 1.0
|
|
|
+ * @date 2026-02-27
|
|
|
+ *
|
|
|
+ */
|
|
|
+ public function get_low_price_platform_count(request $request, LowPriceGoodsModel $LowPriceGoodsModel)
|
|
|
+ {
|
|
|
+ $request->scene('get_low_price_platform_count')->validate();
|
|
|
+ $admin_company_id = request('admin_company_id', '0');
|
|
|
+ $company_id = request('access_token.company_id', '0');
|
|
|
+ $is_admin = request('access_token.is_admin', '0'); //是否管理员操作 0=是1=否
|
|
|
+
|
|
|
+ //终端类型B端、C端、OTO
|
|
|
+ $terminal_type = request('terminal_type', '');
|
|
|
+ $product_name = request('product_name', ''); //商品名称
|
|
|
+ $yesterdayStart = Carbon::yesterday()->startOfDay()->getTimestamp(); // 昨天开始时间 00:00:00
|
|
|
+ $yesterdayEnd = Carbon::yesterday()->endOfDay()->getTimestamp(); // 昨天结束时间 23:59:59
|
|
|
+ $start_time_string = request('start_time', '');
|
|
|
+ $end_time_string = request('end_time', '');
|
|
|
+ $start_time = $start_time_string ? strtotime($start_time_string . ' 00:00:00') : $yesterdayStart;
|
|
|
+ $end_time = $end_time_string ? strtotime($end_time_string . ' 23:59:59') : $yesterdayEnd;
|
|
|
+ $todayStart = Carbon::today()->startOfDay()->getTimestamp(); // 今天开始时间 00:00:00
|
|
|
+ // if ($start_time > $todayStart || $end_time > $todayStart) return json_send(['code' => 'error', 'msg' => '不支持查询今天或以后时间', 'data' => '']);
|
|
|
+ // 时间条件
|
|
|
+ $map = [];
|
|
|
+ if ($start_time) $map[] = ['insert_time', '>=', $start_time];
|
|
|
+ if ($end_time) $map[] = ['insert_time', '<=', $end_time];
|
|
|
+ // 权限判断
|
|
|
+ if ($is_admin != 1 && $company_id != 0) {
|
|
|
+ $map[] = ['company_id', '=', $company_id];
|
|
|
+ } else {
|
|
|
+ $map[] = ['company_id', '=', $admin_company_id];
|
|
|
+ }
|
|
|
+ if ($product_name) $map[] = ['product_name', 'like', '%' . $product_name . '%'];
|
|
|
+ // 禁止挂网平台分布统计
|
|
|
+ $LowPriceGoodsModel = $LowPriceGoodsModel->query();
|
|
|
+ if ($terminal_type) {
|
|
|
+ $platform = [];
|
|
|
+ switch ($terminal_type) {
|
|
|
+ case '1': //B端:药师帮、1药城、药久久、药易购、药帮忙、熊猫药药
|
|
|
+ $platform = ['0', '5', '6', '7', '8', '9', '10']; //平台0=全部,1=淘宝,2=京东,3=拼多多,4=美团,5=药师帮,6=1药城,7=药久久,8=药易购,9=药帮忙,10=熊猫药药
|
|
|
+ break;
|
|
|
+ case '2': //C端:美团、拼多多、天猫、京东
|
|
|
+ $platform = ['0', '1', '2', '3', '4']; //平台0=全部,1=淘宝,2=京东,3=拼多多,4=美团,5=药师帮,6=1药城,7=药久久,8=药易购,9=药帮忙,10=熊猫药药
|
|
|
+ break;
|
|
|
+ case '3': //OTO:美团买药、淘宝闪送、京东秒送
|
|
|
+ $platform = ['0'];
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ # code...
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('platform', $platform);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ // 假设 LowPriceGoodsModel 中有 platform 字段,表示平台信息
|
|
|
+ // 查询指定时间范围内的数据,并按 platform 分组统计数量
|
|
|
+ $result = $LowPriceGoodsModel->where($map)->where('status', 0)
|
|
|
+ ->select(['platform', DB::raw('count(platform) as count')])
|
|
|
+ ->groupby('platform')
|
|
|
+ ->orderby('count', 'desc')
|
|
|
+ ->get()->toArray();
|
|
|
+ $platform_totle_count = 0;
|
|
|
+ if (!empty($result)) {
|
|
|
+ $platform_totle_count = array_sum(array_column($result, 'count'));
|
|
|
+ foreach ($result as $key => $value) {
|
|
|
+ $result[$key]['percent'] = round(($value['count'] / $platform_totle_count) * 100, 2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $result]);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return json_send(['code' => 'error', 'msg' => '获取失败:' . $e->getMessage()]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 低价挂网平台省份分布
|
|
|
+ * @author 唐远望
|
|
|
+ * @version 1.0
|
|
|
+ * @date 2026-02-27
|
|
|
+ *
|
|
|
+ */
|
|
|
+ public function get_low_price_platform_province_count(request $request, LowPriceGoodsModel $LowPriceGoodsModel)
|
|
|
+ {
|
|
|
+ $request->scene('get_low_price_platform_province_count')->validate();
|
|
|
+ $admin_company_id = request('admin_company_id', '0');
|
|
|
+ $company_id = request('access_token.company_id', '0');
|
|
|
+ $is_admin = request('access_token.is_admin', '0'); //是否管理员操作 0=是1=否
|
|
|
+
|
|
|
+ //终端类型B端、C端、OTO
|
|
|
+ $terminal_type = request('terminal_type', '');
|
|
|
+ $product_name = request('product_name', ''); //商品名称
|
|
|
+ $yesterdayStart = Carbon::yesterday()->startOfDay()->getTimestamp(); // 昨天开始时间 00:00:00
|
|
|
+ $yesterdayEnd = Carbon::yesterday()->endOfDay()->getTimestamp(); // 昨天结束时间 23:59:59
|
|
|
+ $start_time_string = request('start_time', '');
|
|
|
+ $end_time_string = request('end_time', '');
|
|
|
+ $start_time = $start_time_string ? strtotime($start_time_string . ' 00:00:00') : $yesterdayStart;
|
|
|
+ $end_time = $end_time_string ? strtotime($end_time_string . ' 23:59:59') : $yesterdayEnd;
|
|
|
+ $todayStart = Carbon::today()->startOfDay()->getTimestamp(); // 今天开始时间 00:00:00
|
|
|
+ // if ($start_time > $todayStart || $end_time > $todayStart) return json_send(['code' => 'error', 'msg' => '不支持查询今天或以后时间', 'data' => '']);
|
|
|
+ // 时间条件
|
|
|
+ $map = [];
|
|
|
+ if ($start_time) $map[] = ['insert_time', '>=', $start_time];
|
|
|
+ if ($end_time) $map[] = ['insert_time', '<=', $end_time];
|
|
|
+ // 权限判断
|
|
|
+ if ($is_admin != 1 && $company_id != 0) {
|
|
|
+ $map[] = ['company_id', '=', $company_id];
|
|
|
+ } else {
|
|
|
+ $map[] = ['company_id', '=', $admin_company_id];
|
|
|
+ }
|
|
|
+ if ($product_name) $map[] = ['product_name', 'like', '%' . $product_name . '%'];
|
|
|
+ // 禁止挂网平台分布统计
|
|
|
+ $LowPriceGoodsModel = $LowPriceGoodsModel->query();
|
|
|
+ if ($terminal_type) {
|
|
|
+ $platform = [];
|
|
|
+ switch ($terminal_type) {
|
|
|
+ case '1': //B端:药师帮、1药城、药久久、药易购、药帮忙、熊猫药药
|
|
|
+ $platform = ['0', '5', '6', '7', '8', '9', '10']; //平台0=全部,1=淘宝,2=京东,3=拼多多,4=美团,5=药师帮,6=1药城,7=药久久,8=药易购,9=药帮忙,10=熊猫药药
|
|
|
+ break;
|
|
|
+ case '2': //C端:美团、拼多多、天猫、京东
|
|
|
+ $platform = ['0', '1', '2', '3', '4']; //平台0=全部,1=淘宝,2=京东,3=拼多多,4=美团,5=药师帮,6=1药城,7=药久久,8=药易购,9=药帮忙,10=熊猫药药
|
|
|
+ break;
|
|
|
+ case '3': //OTO:美团买药、淘宝闪送、京东秒送
|
|
|
+ $platform = ['0'];
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ # code...
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('platform', $platform);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ // 假设 LowPriceGoodsModel 中有 province 字段,表示省份信息
|
|
|
+ // 查询指定时间范围内的数据,并按 province 分组统计数量
|
|
|
+ $result = $LowPriceGoodsModel->where($map)->where('status', 0)
|
|
|
+ ->select(['province_name', DB::raw('count(province_name) as count')])
|
|
|
+ ->groupby('province_name')
|
|
|
+ ->orderby('count', 'desc')
|
|
|
+ ->get();
|
|
|
+ return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $result]);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return json_send(['code' => 'error', 'msg' => '获取失败:' . $e->getMessage()]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 禁止挂网平台分布
|
|
|
+ * @author 唐远望
|
|
|
+ * @version 1.0
|
|
|
+ * @date 2026-02-27
|
|
|
+ *
|
|
|
+ */
|
|
|
+ public function get_violation_platform_count(request $request, ViolationProductModel $violationProductModel)
|
|
|
+ {
|
|
|
+ $request->scene('get_violation_platform_count')->validate();
|
|
|
+ $admin_company_id = request('admin_company_id', '0');
|
|
|
+ $company_id = request('access_token.company_id', '0');
|
|
|
+ $is_admin = request('access_token.is_admin', '0'); //是否管理员操作 0=是1=否
|
|
|
+ //终端类型B端、C端、OTO
|
|
|
+ $terminal_type = request('terminal_type', '');
|
|
|
+ $product_name = request('product_name', ''); //商品名称
|
|
|
+ $yesterdayStart = Carbon::yesterday()->startOfDay()->getTimestamp(); // 昨天开始时间 00:00:00
|
|
|
+ $yesterdayEnd = Carbon::yesterday()->endOfDay()->getTimestamp(); // 昨天结束时间 23:59:59
|
|
|
+ $start_time_string = request('start_time', '');
|
|
|
+ $end_time_string = request('end_time', '');
|
|
|
+ $start_time = $start_time_string ? strtotime($start_time_string . ' 00:00:00') : $yesterdayStart;
|
|
|
+ $end_time = $end_time_string ? strtotime($end_time_string . ' 23:59:59') : $yesterdayEnd;
|
|
|
+ $todayStart = Carbon::today()->startOfDay()->getTimestamp(); // 今天开始时间 00:00:00
|
|
|
+ // if ($start_time > $todayStart || $end_time > $todayStart) return json_send(['code' => 'error', 'msg' => '不支持查询今天或以后时间', 'data' => '']);
|
|
|
+ // 时间条件
|
|
|
+ $map = [];
|
|
|
+ if ($start_time) $map[] = ['insert_time', '>=', $start_time];
|
|
|
+ if ($end_time) $map[] = ['insert_time', '<=', $end_time];
|
|
|
+ // 权限判断
|
|
|
+ if ($is_admin != 1 && $company_id != 0) {
|
|
|
+ $map[] = ['company_id', '=', $company_id];
|
|
|
+ } else {
|
|
|
+ $map[] = ['company_id', '=', $admin_company_id];
|
|
|
+ }
|
|
|
+ if ($product_name) $map[] = ['product_name', 'like', '%' . $product_name . '%'];
|
|
|
+ // 禁止挂网平台分布统计
|
|
|
+ $violationProductModel = $violationProductModel->query();
|
|
|
+ if ($terminal_type) {
|
|
|
+ $platform = [];
|
|
|
+ switch ($terminal_type) {
|
|
|
+ case '1': //B端:药师帮、1药城、药久久、药易购、药帮忙、熊猫药药
|
|
|
+ $platform = ['0', '5', '6', '7', '8', '9', '10']; //平台0=全部,1=淘宝,2=京东,3=拼多多,4=美团,5=药师帮,6=1药城,7=药久久,8=药易购,9=药帮忙,10=熊猫药药
|
|
|
+ break;
|
|
|
+ case '2': //C端:美团、拼多多、天猫、京东
|
|
|
+ $platform = ['0', '1', '2', '3', '4']; //平台0=全部,1=淘宝,2=京东,3=拼多多,4=美团,5=药师帮,6=1药城,7=药久久,8=药易购,9=药帮忙,10=熊猫药药
|
|
|
+ break;
|
|
|
+ case '3': //OTO:美团买药、淘宝闪送、京东秒送
|
|
|
+ $platform = ['0'];
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ # code...
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ $violationProductModel = $violationProductModel->whereIn('platform', $platform);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ // 假设 ViolationProductModel 中有 platform 字段,表示平台信息
|
|
|
+ // 查询指定时间范围内的数据,并按 platform 分组统计数量
|
|
|
+ $result = $violationProductModel->where($map)->where('status', 0)
|
|
|
+ ->select(['platform', DB::raw('count(platform) as count')])
|
|
|
+ ->groupby('platform')
|
|
|
+ ->orderby('count', 'desc')
|
|
|
+ ->get()->toArray();
|
|
|
+ $platform_totle_count = 0;
|
|
|
+ if (!empty($result)) {
|
|
|
+ $platform_totle_count = array_sum(array_column($result, 'count'));
|
|
|
+ foreach ($result as $key => $value) {
|
|
|
+ $result[$key]['percent'] = round(($value['count'] / $platform_totle_count) * 100, 2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $result]);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return json_send(['code' => 'error', 'msg' => '获取失败:' . $e->getMessage()]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 禁止挂网平台省份分布
|
|
|
+ * @author 唐远望
|
|
|
+ * @version 1.0
|
|
|
+ * @date 2026-02-27
|
|
|
+ *
|
|
|
+ */
|
|
|
+ public function get_violation_platform_province_count(request $request, ViolationProductModel $violationProductModel)
|
|
|
+ {
|
|
|
+ $request->scene('get_violation_platform_province_count')->validate();
|
|
|
+ $admin_company_id = request('admin_company_id', '0');
|
|
|
+ $company_id = request('access_token.company_id', '0');
|
|
|
+ $is_admin = request('access_token.is_admin', '0'); //是否管理员操作 0=是1=否
|
|
|
+ //终端类型B端、C端、OTO
|
|
|
+ $terminal_type = request('terminal_type', '');
|
|
|
+ $product_name = request('product_name', ''); //商品名称
|
|
|
+ $yesterdayStart = Carbon::yesterday()->startOfDay()->getTimestamp(); // 昨天开始时间 00:00:00
|
|
|
+ $yesterdayEnd = Carbon::yesterday()->endOfDay()->getTimestamp(); // 昨天结束时间 23:59:59
|
|
|
+ $start_time_string = request('start_time', '');
|
|
|
+ $end_time_string = request('end_time', '');
|
|
|
+ $start_time = $start_time_string ? strtotime($start_time_string . ' 00:00:00') : $yesterdayStart;
|
|
|
+ $end_time = $end_time_string ? strtotime($end_time_string . ' 23:59:59') : $yesterdayEnd;
|
|
|
+ $todayStart = Carbon::today()->startOfDay()->getTimestamp(); // 今天开始时间 00:00:00
|
|
|
+ // if ($start_time > $todayStart || $end_time > $todayStart) return json_send(['code' => 'error', 'msg' => '不支持查询今天或以后时间', 'data' => '']);
|
|
|
+ // 时间条件
|
|
|
+ $map = [];
|
|
|
+ if ($start_time) $map[] = ['insert_time', '>=', $start_time];
|
|
|
+ if ($end_time) $map[] = ['insert_time', '<=', $end_time];
|
|
|
+ // 权限判断
|
|
|
+ if ($is_admin != 1 && $company_id != 0) {
|
|
|
+ $map[] = ['company_id', '=', $company_id];
|
|
|
+ } else {
|
|
|
+ $map[] = ['company_id', '=', $admin_company_id];
|
|
|
+ }
|
|
|
+ if ($product_name) $map[] = ['product_name', 'like', '%' . $product_name . '%'];
|
|
|
+ // 禁止挂网平台分布统计
|
|
|
+ $violationProductModel = $violationProductModel->query();
|
|
|
+ if ($terminal_type) {
|
|
|
+ $platform = [];
|
|
|
+ switch ($terminal_type) {
|
|
|
+ case '1': //B端:药师帮、1药城、药久久、药易购、药帮忙、熊猫药药
|
|
|
+ $platform = ['0', '5', '6', '7', '8', '9', '10']; //平台0=全部,1=淘宝,2=京东,3=拼多多,4=美团,5=药师帮,6=1药城,7=药久久,8=药易购,9=药帮忙,10=熊猫药药
|
|
|
+ break;
|
|
|
+ case '2': //C端:美团、拼多多、天猫、京东
|
|
|
+ $platform = ['0', '1', '2', '3', '4']; //平台0=全部,1=淘宝,2=京东,3=拼多多,4=美团,5=药师帮,6=1药城,7=药久久,8=药易购,9=药帮忙,10=熊猫药药
|
|
|
+ break;
|
|
|
+ case '3': //OTO:美团买药、淘宝闪送、京东秒送
|
|
|
+ $platform = ['0'];
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ # code...
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ $violationProductModel = $violationProductModel->whereIn('platform', $platform);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ // 假设 ViolationProductModel 中有 platform 字段,表示平台信息
|
|
|
+ // 查询指定时间范围内的数据,并按 platform 分组统计数量
|
|
|
+ $result = $violationProductModel->where($map)->where('status', 0)
|
|
|
+ ->select(['province_name', DB::raw('count(province_name) as count')])
|
|
|
+ ->groupby(['province_name'])
|
|
|
+ ->orderby('count', 'desc')
|
|
|
+ ->get();
|
|
|
+ return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $result]);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return json_send(['code' => 'error', 'msg' => '获取失败:' . $e->getMessage()]);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|