当前位置: 首页 > news >正文

预约记录关联查询接口说明

功能概述

新增了一个接口,通过业主姓名关联 ownerinfo 表和 appointment 表,筛选出与当前巡逻员相同车场(community)的数据,返回 appointment 表中的记录。

🌟 主要特性

  • 关联查询: 通过车牌号关联 ownerinfoappointment
  • 权限过滤: 巡逻员只能查看自己负责社区的数据
  • 多维搜索: 支持车牌号、业主姓名、电话号码搜索
  • 分页支持: 支持分页查询,提高性能
  • 数据丰富: 返回预约信息和业主信息的完整数据

📊 接口详情

后端接口

URL: GET /api/violations/appointment-records-by-owner

参数:

{"keyword": "搜索关键词(车牌号或业主姓名)", // 可选"page": 1,                               // 页码,默认1"size": 50                              // 每页数量,默认50
}

响应数据:

{"code": 200,"message": "成功","data": [{"appointmentId": 123,"plateNumber": "京A12345","arriveDate": "2025-01-31 10:00:00","leaveDate": "2025-01-31 12:00:00","parkingSpace": "A-001","appointmentStatus": "confirmed","appointmentCreatedAt": "2025-01-30 15:30:00","ownerId": 456,"ownerName": "张三","ownerPhone": "13800138000","community": "阳光花园","parkingDuration": 2.0  // 停车时长(小时)}]
}

前端 API 调用

import { appointmentAnalysisApi } from '@/api/violation-api.js';// 查询预约记录
const result = await appointmentAnalysisApi.getAppointmentRecordsByOwner({keyword: '京A12345',page: 1,size: 20
});

🔧 实现细节

后端实现

  1. Controller 层 (ViolationsController.java)
    • 新增 getAppointmentRecordsByOwner 接口方法
    • 处理参数验证和异常处理
    • 记录详细的操作日志
  1. Service 层 (ViolationsService.java & ViolationsServiceImpl.java)
    • 实现业务逻辑
    • 权限控制:巡逻员只能查看自己负责社区的数据
    • 数据关联查询和格式化
  1. SQL 查询逻辑
SELECT DISTINCT a.id as appointment_id, a.plate_number, a.arrive_date, a.leave_date, a.parking_space, a.status as appointment_status, a.created_at as appointment_created_at, o.id as owner_id, o.name as owner_name, o.phone as owner_phone, o.community,TIMESTAMPDIFF(HOUR, a.arrive_date, a.leave_date) as parking_hours 
FROM appointment a 
INNER JOIN ownerinfo o ON a.plate_number = o.plate_number 
WHERE 1=1 AND o.community = '当前巡逻员小区'  -- 🔒 严格的小区权限过滤AND (a.community IS NULL OR a.community = '' OR a.community = '当前巡逻员小区')  -- 🔒 appointment表小区一致性检查AND o.isaudit = '是'  -- 🔍 只查询已审核的业主AND (a.plate_number LIKE '%关键词%' OR o.name LIKE '%关键词%' OR o.phone LIKE '%关键词%')  -- 🔍 搜索条件
ORDER BY a.created_at DESC 
LIMIT 50 OFFSET 0;  -- 📄 分页

前端实现

  1. API 封装 (violation-api.js)
    • 新增 getAppointmentRecordsByOwner 方法
    • 统一参数处理和错误处理
  1. 测试页面 (appointment-owner-test.vue)
    • 完整的测试界面
    • 搜索功能和分页控制
    • 详细的数据展示和状态反馈

🔐 权限控制

  • 巡逻员权限: 严格限制只能查看自己负责小区的预约记录
  • 其他角色: 可以查看所有小区的预约记录(根据实际需求调整)

🔒 严格的小区权限控制逻辑:

  1. 巡逻员身份验证
    • 从 Token 中解析用户角色
    • 如果是巡逻员,从 patrolinfo 表获取其负责的小区
    • 如果巡逻员没有小区信息,直接返回空结果
  1. 小区数据过滤
    • 在 SQL 查询中强制添加 o.community = '巡逻员小区' 条件
    • 额外检查 appointment 表的小区字段(如果存在)
    • 只查询已审核的业主数据 o.isaudit = '是'
  1. 双重保险机制
    • SQL 级别的小区过滤
    • 业务层的二次过滤确认
    • 确保 100% 的数据都与巡逻员小区一致

📱 使用方式

1. 测试接口

访问测试页面:/pages/test/appointment-owner-test

2. 集成到现有功能

// 在违规录入页面中使用
const searchOwnerRecords = async (keyword) => {try {const records = await appointmentAnalysisApi.getAppointmentRecordsByOwner({keyword: keyword,page: 1,size: 20});// 处理返回的数据console.log('预约记录:', records);} catch (error) {console.error('查询失败:', error);}
};
http://www.dtcms.com/a/450040.html

相关文章:

  • 免得做网站云浮新增病例详情
  • <从零基础到精通JavaScript>1.1 JavaScript 运行环境
  • 青浦专业网站建设企业网站最下面的那栏叫啥
  • 每日一个C语言知识:C 数据类型
  • 实验二十 GaussDB逻辑备份恢复实验
  • 中英文网站制作wordpress表
  • 开源 网站开发框架seo是一种利用搜索引擎
  • 怎样建设网站空间网站开发中英文版如何写
  • 网站设计怎么收费注册安全工程师条件
  • 5. 逆矩阵
  • 济源专业网站建设(制作网站)网络技术学习网站
  • Redis过期策略与内存淘汰机制解析
  • Transformer(四)---解码器部分实现、输出部分实现及模型搭建
  • 网站开发毕业设计任务书注册推广赚钱一个30元
  • 邯郸网络广播电视台北京网站seo技术厂家
  • leetcode 695 岛屿的最大面积
  • LLaVA-NeXT-Interleave论文阅读
  • 邢台企业网站制作公司中建国际建设有限公司网站
  • 长春火车站防疫要求做网站都要用到框架吗
  • 集合进阶 - HashMap 篇
  • 从原图到线图再到反推:网络图几何与拓扑的结合分析
  • Lua下载和安装教程(附安装包)
  • JAVA实验课程第五次作业分析与代码示例
  • 龙口网站制作公司深圳知名设计公司有哪些
  • 网站数据修改网页界面设计的起源
  • 东莞建设网站官网住房和城乡wordpress 如何修改like和dislike
  • Gopher二次编码原因解析
  • 【ARM汇编语言基础】-数据处理指令(七)
  • 汇编与反汇编
  • 福州建设网站shopee怎么注册开店