has('start_time') && $request->has('end_time')) { $start_time = $request->input('start_time'); $end_time = $request->input('end_time'); if ($start_time && $end_time) { $end_times = strtotime($end_time . ' 23:59:59'); $start_times = strtotime($start_time . ' 00:00:00'); if ($start_times && $end_times) { $whereArr[] = " enter_time BETWEEN {$start_times} and {$end_times}"; } } } if ($request->has('license_plate')) { $license_plate = $request->input('license_plate'); if ($license_plate) { $license_plate_id = ParkingLicensePlate::getValueId( $license_plate ); if ($license_plate_id) { $whereArr[] = " license_plate_id = {$license_plate_id}"; } else { $whereArr[] = " id = 0"; } } } $where = $whereArr ? ' WHERE ' . implode(' AND ', $whereArr) : ''; // 分页 $page = $request->input('page', 1); $perPage = $request->input('per_page', 10); $havingArr = []; if ($request->has('min_count') && $request->has('max_count')) { $min_count = $request->input('min_count'); $max_count = $request->input('max_count'); if (is_numeric($min_count) && is_numeric($max_count)) { $havingArr[] = "(parking_frequency >= {$min_count} AND parking_frequency <= {$max_count})"; } } if ($request->has('min_times') && $request->has('max_times')) { $min_times = $request->input('min_times'); $max_times = $request->input('max_times'); if (is_numeric($min_times) && is_numeric($max_times)) { $havingArr[] = "(parking_duration >= {$min_times} AND parking_duration <= {$max_times})"; } } $having = $havingArr ? " HAVING " . implode(' AND ', $havingArr) : ''; $total = 0; $all = DB::select($select . $from . $where . $group . $having); if ($all) { $total = count($all); } $offset = ($page - 1) * $perPage; $limit = " LIMIT {$offset}, {$perPage}"; $items = DB::select( $select . $from . $where . $group . $having . $limit ); foreach ($items as &$item) { $license_plate = ParkingLicensePlate::getNumber( $item->license_plate_id ); $item->license_plate = $license_plate; unset($item->license_plate_id); } return $this->responseService->success([ 'items' => $items, 'total' => $total, 'page' => $page, 'per_page' => $perPage, 'last_page' => ceil($total / $perPage) ]); } catch (Exception $e) { $m_prefix = __('exception.exception_handler.resource'); return $this->responseService->systemError( $m_prefix . ':' . $e->getMessage() ); } } /** * @return BinaryFileResponse */ public function export(): BinaryFileResponse { return Excel::download( new ParkingBehaviorExport(), __('exports.parking_behavior.list') . time() . '.xlsx' ); } } /* 网站开发 帮我开发一个后台管理系统,使用后端语言PHP版本大于8.0,前端语言使用vue3,实现前后端分离,用于管理【管理内容】。 登录要求:包含登录页, 页面要求:1.登录后页面左边展示菜单,右边显示内容,默认展示首页内容,首页显示今日营业数据总览 2.第1个菜单酒水菜品菜单管理,其中包含二级菜单:分类管理、商品列表。分类管理增删改查菜品分类如大类目增加啤酒、洋酒、小吃,商品列表内容有:新增商品(商品名字、数量、价格、类型)、列表筛选(上架、下架、商品名称搜索、类型选择)、列表(显示商品列表、名称、价格、上架时间、状态等) 3.第2个菜单会员管理页面,其中包含二级菜单:会员信息、会员等级管理、充值配置、充值记录、消费记录 4.财务管理,其中包含二级菜单:数据概览(今日营收、本月总营收、营收趋势(每日k线)、收入明细(显示最新支付数据:项目、支付时间、金额、支付方式))、营业明细(列表展示今日销售酒水,支付方式、支付时间等) 5.人员管理,新增工作人员(新增或删除操作人员,设置不同的权限、不同岗位的工作人员,可修改员工里面不可查看)、操作记录(记录操作人员新增、删除、修改员工密码的操作记录)、员工销售管理(统计员工销售酒水业绩) */