# 法律咨询平台系统 - 数据库表结构分析 ## 一、表结构概览 ### 核心用户表(2个) 1. `lawyer_user` - 律师用户表(✅ 已完成) 2. `life_user` - 客户端用户表(✅ 已存在) ### 基础配置表(1个) 3. `lawyer_legal_problem_scenario` - 法律问题场景表(✅ 已完成) ### 核心业务表(4个) 4. `lawyer_consultation_order` - 咨询订单表(✅ 已完成) 5. `lawyer_chat_session` - 聊天会话表(✅ 已完成) 6. `lawyer_chat_message` - 聊天消息表(✅ 已完成) 7. `lawyer_service_area` - 律师服务领域关联表(✅ 已完成) ### 扩展功能表(5个) 8. `lawyer_img` - 律师图片表(✅ 已完成) 9. `lawyer_common_question` - 常见问题表(✅ 已完成) 10. `lawyer_consultation_review` - 咨询评价表(✅ 已完成) 11. `lawyer_payment_transaction` - 支付交易表(✅ 已完成) 12. `lawyer_ai_interaction_log` - AI交互日志表(✅ 已完成) 13. `lawyer_user_search_history` - 用户搜索历史表(✅ 已完成) --- ## 二、详细表结构分析 ### 1. `lawyer_user` - 律师用户表 - **状态**: ✅ 已创建实体类、Mapper、Service、Controller、XML、SQL - **用途**: 存储律师用户的基本信息、认证信息、服务信息等 - **关键字段**: - `id` (主键) - `phone` (手机号, 唯一) - `name` (姓名) - `lawyer_certificate_no` (律师执业证号) - `law_firm` (所属律师事务所名称) - `certification_status` (资质认证状态) - `consultation_fee` (咨询收费标准) - `agency_fee` (代理收费标准) - `service_score` (服务评分) - `service_count` (服务次数) - **关联关系**: - **一对多**: 一个律师可以有多个图片 (`lawyer_img`) - **一对多**: 一个律师可以有多个服务领域 (`lawyer_service_area`) - **一对多**: 一个律师可以有多个咨询订单 (`lawyer_consultation_order`) - **一对多**: 一个律师可以有多个聊天会话 (`lawyer_chat_session`) - **一对多**: 一个律师可以收到多个评价 (`lawyer_consultation_review`) --- ### 2. `lawyer_legal_problem_scenario` - 法律问题场景表 - **状态**: ✅ 已创建实体类、Mapper、Service、Controller、XML、SQL - **用途**: 存储法律问题分类的树形结构(一级分类7个,二级分类14个,三级分类30个) - **关键字段**: - `id` (主键) - `code` (编号, 如: L1, L1-01, L1-01-01) - `name` (名称) - `parent_id` (父类主键) - `parent_code` (父类编号) - `parentName` (父类名称) - `sort_order` (排序字段) - `status` (状态) - **关联关系**: - **自关联**: 树形结构,通过 `parent_id` 关联自身 - **一对多**: 一个法律问题场景可以关联多个律师服务领域 (`lawyer_service_area`) - **一对多**: 一个法律问题场景可以有多个咨询订单 (`lawyer_consultation_order`) - **一对多**: 一个法律问题场景可以有多个常见问题 (`lawyer_common_question`) - **一对多**: 一个法律问题场景可以关联多个AI交互日志 (`lawyer_ai_interaction_log`) --- ### 8. `lawyer_img` - 律师图片表 - **状态**: ✅ 已创建实体类、Mapper、Service、Controller、XML、SQL - **用途**: 存储律师相关的图片(头像、执业证、身份证、案例图片等) - **关键字段**: - `id` (主键) - `lawyer_id` (律师用户ID, FK -> lawyer_user) - `img_type` (图片类型: 0:其他, 1:头像, 2:执业证照片, 3:身份证正面, 4:身份证反面, 5:案例图片, 6:相册图片, 7:资质证书, 8:荣誉证书, 9:工作照片) - `img_url` (图片链接) - `img_description` (图片描述) - `img_sort` (图片排序) - `business_id` (业务ID) - **关联关系**: - **多对一**: 多个图片属于一个律师 (`lawyer_user`) --- ### 7. `lawyer_service_area` - 律师服务领域关联表 - **状态**: ✅ 已创建实体类、Mapper、Service、Controller、XML、SQL - **用途**: 律师与法律问题场景的多对多关联表(律师擅长哪些领域) - **关键字段**: - `id` (主键) - `lawyer_user_id` (律师用户ID, FK -> lawyer_user) - `problem_scenar_id` (法律问题场景ID, FK -> lawyer_legal_problem_scenario) - `sort_order` (排序, 数值越小越靠前) - `status` (状态) - **唯一索引**: UK(lawyer_user_id, problem_scenar_id) - **关联关系**: - **多对一**: 多个关联记录属于一个律师 (`lawyer_user`) - **多对一**: 多个关联记录关联一个法律问题场景 (`lawyer_legal_problem_scenario`) - **作用**: 实现律师与法律问题场景的多对多关系 --- ### 4. `lawyer_consultation_order` - 咨询订单表(核心业务表) - **状态**: ✅ 已创建实体类、Mapper、Service、Controller、XML、SQL - **用途**: 记录用户与律师之间的咨询订单,是整个业务的核心 - **关键字段**: - `id` (主键) - `order_number` (订单编号, 唯一, 如: LAW2023071500123) - `client_user_id` (客户端用户ID, FK -> life_user) - `lawyer_user_id` (律师用户ID, FK -> lawyer_user) - `problem_scenar_id` (法律问题场景ID, FK -> lawyer_legal_problem_scenario) - `problem_description` (问题描述) - `order_amount` (订单金额, 单位:分) - `consultation_fee` (咨询费用, 单位:分) - `start_time` (咨询开始时间) - `end_time` (咨询结束时间) - `order_status` (订单状态: 0:待支付, 1:已支付, 2:进行中, 3:已完成, 4:已取消) - `payment_status` (支付状态: 0:未支付, 1:已支付) - `payment_time` (支付时间) - `validity_period` (订单有效期) - `rating` (用户评分, 1-5星) - `comment` (用户评价内容) - **关联关系**: - **多对一**: 多个订单属于一个客户端用户 (`life_user`) - **多对一**: 多个订单属于一个律师 (`lawyer_user`) - **多对一**: 多个订单关联一个法律问题场景 (`lawyer_legal_problem_scenario`) - **一对多**: 一个订单可以有一个聊天会话 (`lawyer_chat_session`) - **一对多**: 一个订单可以有多条聊天消息 (`lawyer_chat_message`) - **一对多**: 一个订单可以有多笔支付交易 (`lawyer_payment_transaction`) - **一对一**: 一个订单可以有一个评价 (`lawyer_consultation_review`) --- ### 5. `lawyer_chat_session` - 聊天会话表 - **状态**: ✅ 已创建实体类、Mapper、Service、Controller、XML、SQL - **用途**: 管理咨询会话,关联订单和消息 - **关键字段**: - `id` (主键) - `consultation_order_id` (咨询订单ID, FK -> lawyer_consultation_order) - `client_user_id` (客户端用户ID, FK -> life_user) - `lawyer_user_id` (律师用户ID, FK -> lawyer_user) - `session_type` (会话类型: 0:文本咨询, 1:语音咨询, 2:视频咨询) - `status` (会话状态: 0:未开始, 1:进行中, 2:已结束) - `last_message_id` (最后一条消息ID, FK -> lawyer_chat_message) - `last_message_time` (最后一条消息时间) - **关联关系**: - **多对一**: 多个会话属于一个咨询订单 (`lawyer_consultation_order`) - **多对一**: 多个会话属于一个客户端用户 (`life_user`) - **多对一**: 多个会话属于一个律师 (`lawyer_user`) - **多对一**: 一个会话的最后一条消息 (`lawyer_chat_message`) - **一对多**: 一个会话可以有多条聊天消息 (`lawyer_chat_message`) --- ### 6. `lawyer_chat_message` - 聊天消息表 - **状态**: ✅ 已创建实体类、Mapper、Service、Controller、XML、SQL - **用途**: 存储咨询会话中的具体聊天消息 - **关键字段**: - `id` (主键) - `chat_session_id` (聊天会话ID, FK -> lawyer_chat_session) - `consultation_order_id` (咨询订单ID, FK -> lawyer_consultation_order, 冗余字段便于查询) - `sender_id` (发送者ID, 可以是life_user的id或lawyer_user的id) - `sender_type` (发送者类型: 0:客户端用户, 1:律师用户) - `message_content` (消息内容, TEXT) - `message_type` (消息类型: 0:文本, 1:图片, 2:语音, 3:文件, 4:视频) - `media_url` (媒体文件URL) - `message_timestamp` (消息发送时间) - `read_status` (阅读状态: 0:未读, 1:已读) - `read_time` (阅读时间) - **关联关系**: - **多对一**: 多条消息属于一个聊天会话 (`lawyer_chat_session`) - **多对一**: 多条消息属于一个咨询订单 (`lawyer_consultation_order`) - **被关联**: 可以被 `lawyer_chat_session.last_message_id` 引用 --- ### 9. `lawyer_common_question` - 常见问题表 - **状态**: ✅ 已创建实体类、Mapper、Service、Controller、XML、SQL - **用途**: 存储常见问题及回答(FAQ) - **关键字段**: - `id` (主键) - `question_text` (问题文本) - `answer_text` (回答内容, TEXT) - `category_type` (分类类型: 0:推荐, 1:常见问题) - `problem_scenar_id` (关联法律问题场景ID, FK -> lawyer_legal_problem_scenario, 可选) - `sort_order` (排序) - `view_count` (浏览次数) - `status` (状态) - **关联关系**: - **多对一**: 多个常见问题可以关联一个法律问题场景 (`lawyer_legal_problem_scenario`) --- ### 10. `lawyer_consultation_review` - 咨询评价表 - **状态**: ✅ 已创建实体类、Mapper、Service、Controller、XML、SQL - **用途**: 存储用户对咨询服务的评价 - **关键字段**: - `id` (主键) - `consultation_order_id` (咨询订单ID, FK -> lawyer_consultation_order) - `client_user_id` (评价用户ID, FK -> life_user) - `lawyer_user_id` (被评价律师ID, FK -> lawyer_user) - `rating` (评分, 1-5星) - `comment` (评价内容, TEXT) - `service_quality` (服务质量评分, 1-5星) - `response_speed` (响应速度评分, 1-5星) - `professional_level` (专业水平评分, 1-5星) - **唯一索引**: UK(consultation_order_id, delete_flag) - 确保一个订单只有一个有效评价 - **关联关系**: - **一对一**: 一个订单对应一个评价 (`lawyer_consultation_order`) - **多对一**: 多个评价属于一个客户端用户 (`life_user`) - **多对一**: 多个评价属于一个律师 (`lawyer_user`) --- ### 11. `lawyer_payment_transaction` - 支付交易表 - **状态**: ✅ 已创建实体类、Mapper、Service、Controller、XML、SQL - **用途**: 记录支付交易信息 - **关键字段**: - `id` (主键) - `consultation_order_id` (咨询订单ID, FK -> lawyer_consultation_order) - `client_user_id` (支付用户ID, FK -> life_user) - `transaction_number` (交易流水号, 唯一) - `transaction_amount` (交易金额, 单位:分) - `payment_method` (支付方式: 0:微信, 1:支付宝, 2:银行卡) - `transaction_status` (交易状态: 0:待支付, 1:支付成功, 2:支付失败, 3:已退款) - `transaction_time` (交易时间) - `third_party_trade_no` (第三方交易号) - `refund_amount` (退款金额, 单位:分) - `refund_time` (退款时间) - **关联关系**: - **多对一**: 多笔交易属于一个咨询订单 (`lawyer_consultation_order`) - **多对一**: 多笔交易属于一个客户端用户 (`life_user`) --- ### 12. `lawyer_ai_interaction_log` - AI交互日志表 - **状态**: ✅ 已创建实体类、Mapper、Service、Controller、XML、SQL - **用途**: 记录用户与AI助手的对话历史 - **关键字段**: - `id` (主键) - `client_user_id` (客户端用户ID, FK -> life_user) - `conversation_id` (会话ID, 用于关联同一会话的多条消息) - `query_text` (用户输入内容, TEXT) - `response_text` (AI回复内容, TEXT) - `problem_scenar_id` (关联的法律问题场景ID, FK -> lawyer_legal_problem_scenario, 可选) - `interaction_time` (交互时间) - **关联关系**: - **多对一**: 多条日志属于一个客户端用户 (`life_user`) - **多对一**: 多条日志可以关联一个法律问题场景 (`lawyer_legal_problem_scenario`) --- ### 13. `lawyer_user_search_history` - 用户搜索历史表 - **状态**: ✅ 已创建实体类、Mapper、Service、Controller、XML、SQL - **用途**: 存储用户搜索历史(如:搜索律师姓名、法律问题、律所名称) - **关键字段**: - `id` (主键) - `client_user_id` (用户ID, FK -> life_user) - `search_keyword` (搜索关键词) - `search_type` (搜索类型: 0:律师姓名, 1:法律问题, 2:律所名称) - `search_time` (搜索时间) - **关联关系**: - **多对一**: 多条搜索历史属于一个客户端用户 (`life_user`) --- ### 14. `life_user` - 客户端用户表 - **状态**: ✅ 已存在实体类、Mapper、Service、Controller - **用途**: 存储使用平台进行咨询的普通用户信息(与律师用户区分) - **关键字段**: - `id` (主键) - `user_phone` (用户手机号) - `guanfang_phone` (官方手机号) - `user_name` (用户昵称) - `real_name` (真实姓名) - `user_sex` (性别, String类型) - `user_brithday` (生日, 注意字段名拼写) - `user_image` (用户头像URL) - `id_card` (身份证号) - `province`, `city`, `district`, `address` (地址信息) - `jianjie` (简介) - `money` (用户余额, 单位:分) - `pay_password` (支付密码) - `alipay_account` (支付宝账号) - `invited_num` (邀请码) - `invite_code` (个人邀请码) - `bind_invite_code` (绑定他人邀请码) - `xiaofei_time` (消费次数) - `xiaofei_amount` (消费金额) - `chaping_time` (差评次数) - `clock_img_id` (打卡广场小人图片id) - `logout_flag` (注销标记: 0:未注销, 1:已注销) - `logout_reason` (注销原因) - `logout_time` (注销申请时间) - **关联关系**: - **一对多**: 一个用户可以有多个咨询订单 (`lawyer_consultation_order`) - **一对多**: 一个用户可以有多个聊天会话 (`lawyer_chat_session`) - **一对多**: 一个用户可以有多个评价 (`lawyer_consultation_review`) - **一对多**: 一个用户可以有多笔支付交易 (`lawyer_payment_transaction`) - **一对多**: 一个用户可以有多个AI交互日志 (`lawyer_ai_interaction_log`) - **一对多**: 一个用户可以有多个搜索历史 (`lawyer_user_search_history`) --- ## 三、表关系图(ER图) ``` ┌─────────────────────────────────────────────────────────────────────────────┐ │ 核心用户表 │ ├─────────────────────────────────────────────────────────────────────────────┤ │ lawyer_user (律师用户) ──────────┐ │ │ life_user (客户端用户) ──────────┼───────────────────────────┐ │ └─────────────────────────────────┼───────────────────────────┼───────────────┘ │ │ │ │ ┌─────────────────────────────────┼───────────────────────────┼──────────────────┐ │ 基础配置表 │ │ │ ├─────────────────────────────────┼───────────────────────────┼──────────────────┤ │ lawyer_legal_problem_scenario (法律问题场景) │ │ │ ▲ │ │ │ │ (1:N) │ │ └─────────────────────────────────────────────────────────────┼──────────────────┘ │ ┌─────────────────────────────────────────────────────────────┼──────────────────┐ │ 核心业务表 │ │ ├─────────────────────────────────────────────────────────────┼──────────────────┤ │ lawyer_consultation_order (咨询订单) ◄──────────────────────┼───────────────────┤ │ │ │ │ │ │ (1:1) │ │ │ ├──► lawyer_consultation_review (咨询评价) │ │ │ │ │ │ │ │ (1:N) │ │ │ ├──► lawyer_payment_transaction (支付交易) │ │ │ │ │ │ │ │ (1:N) │ │ │ ├──► lawyer_chat_session (聊天会话) │ │ │ │ │ │ │ │ │ │ (1:N) │ │ │ │ └──► lawyer_chat_message (聊天消息) │ │ │ │ │ │ │ │ │ │ lawyer_service_area (律师服务领域) │ │ │ │ │ │ │ ├──► lawyer_user │ │ │ └──► lawyer_legal_problem_scenario │ │ └─────────────────────────────────────────────────────────────┼──────────────────┘ │ ┌─────────────────────────────────────────────────────────────┼──────────────────┐ │ 扩展功能表 │ │ ├─────────────────────────────────────────────────────────────┼──────────────────┤ │ lawyer_img (律师图片) ────► lawyer_user │ │ │ │ │ │ lawyer_common_question (常见问题) ────► lawyer_legal_problem_scenario │ │ │ │ │ lawyer_ai_interaction_log (AI交互日志) ────► life_user │ │ │ └───► lawyer_legal_problem_scenario │ │ │ │ │ lawyer_user_search_history (搜索历史) ────► life_user │ │ └─────────────────────────────────────────────────────────────┴──────────────────┘ ``` --- ## 四、表关系详细说明 ### 4.1 核心业务关系链 #### 业务流程:咨询订单 → 聊天会话 → 聊天消息 ``` life_user (客户端用户) └──► lawyer_consultation_order (咨询订单) ├──► lawyer_chat_session (聊天会话) │ └──► lawyer_chat_message (聊天消息) [多条] │ ├──► lawyer_payment_transaction (支付交易) [多条] │ └──► lawyer_consultation_review (咨询评价) [1条] ``` #### 律师信息关系链 ``` lawyer_user (律师用户) ├──► lawyer_img (律师图片) [多条] ├──► lawyer_service_area (服务领域) [多条] │ └──► lawyer_legal_problem_scenario (法律问题场景) │ └──► lawyer_consultation_order (咨询订单) [多条] ``` #### 法律问题场景关系链 ``` lawyer_legal_problem_scenario (法律问题场景) [树形结构] ├──► lawyer_service_area (律师服务领域) [多条] │ └──► lawyer_user (律师用户) │ ├──► lawyer_consultation_order (咨询订单) [多条] │ ├──► lawyer_common_question (常见问题) [多条] │ └──► lawyer_ai_interaction_log (AI交互日志) [多条] ``` ### 4.2 外键关系汇总 | 子表 | 外键字段 | 父表 | 关系类型 | 说明 | |------|---------|------|---------|------| | `lawyer_img` | `lawyer_id` | `lawyer_user` | 多对一 | 多个图片属于一个律师 | | `lawyer_service_area` | `lawyer_user_id` | `lawyer_user` | 多对一 | 多个服务领域属于一个律师 | | `lawyer_service_area` | `problem_scenar_id` | `lawyer_legal_problem_scenario` | 多对一 | 多个关联记录关联一个法律问题场景 | | `lawyer_consultation_order` | `client_user_id` | `life_user` | 多对一 | 多个订单属于一个客户端用户 | | `lawyer_consultation_order` | `lawyer_user_id` | `lawyer_user` | 多对一 | 多个订单属于一个律师 | | `lawyer_consultation_order` | `problem_scenar_id` | `lawyer_legal_problem_scenario` | 多对一 | 多个订单关联一个法律问题场景 | | `lawyer_chat_session` | `consultation_order_id` | `lawyer_consultation_order` | 多对一 | 多个会话属于一个订单 | | `lawyer_chat_session` | `client_user_id` | `life_user` | 多对一 | 多个会话属于一个客户端用户 | | `lawyer_chat_session` | `lawyer_user_id` | `lawyer_user` | 多对一 | 多个会话属于一个律师 | | `lawyer_chat_session` | `last_message_id` | `lawyer_chat_message` | 多对一 | 会话的最后一条消息 | | `lawyer_chat_message` | `chat_session_id` | `lawyer_chat_session` | 多对一 | 多条消息属于一个会话 | | `lawyer_chat_message` | `consultation_order_id` | `lawyer_consultation_order` | 多对一 | 多条消息属于一个订单(冗余) | | `lawyer_common_question` | `problem_scenar_id` | `lawyer_legal_problem_scenario` | 多对一 | 多个常见问题关联一个法律问题场景 | | `lawyer_consultation_review` | `consultation_order_id` | `lawyer_consultation_order` | 一对一 | 一个订单对应一个评价 | | `lawyer_consultation_review` | `client_user_id` | `life_user` | 多对一 | 多个评价属于一个客户端用户 | | `lawyer_consultation_review` | `lawyer_user_id` | `lawyer_user` | 多对一 | 多个评价属于一个律师 | | `lawyer_payment_transaction` | `consultation_order_id` | `lawyer_consultation_order` | 多对一 | 多笔交易属于一个订单 | | `lawyer_payment_transaction` | `client_user_id` | `life_user` | 多对一 | 多笔交易属于一个客户端用户 | | `lawyer_ai_interaction_log` | `client_user_id` | `life_user` | 多对一 | 多条日志属于一个客户端用户 | | `lawyer_ai_interaction_log` | `problem_scenar_id` | `lawyer_legal_problem_scenario` | 多对一 | 多条日志关联一个法律问题场景 | | `lawyer_user_search_history` | `client_user_id` | `life_user` | 多对一 | 多条搜索历史属于一个客户端用户 | ### 4.3 自关联关系 | 表名 | 自关联字段 | 说明 | |------|-----------|------| | `lawyer_legal_problem_scenario` | `parent_id` | 树形结构,通过 `parent_id` 关联自身,实现三级分类 | --- ## 五、数据完整性约束 ### 5.1 唯一约束 - `lawyer_user.phone` - 手机号唯一 - `lawyer_consultation_order.order_number` - 订单编号唯一 - `lawyer_payment_transaction.transaction_number` - 交易流水号唯一 - `lawyer_service_area(lawyer_user_id, problem_scenar_id)` - 律师与法律问题场景的组合唯一 - `lawyer_consultation_review(consultation_order_id, delete_flag)` - 一个订单只能有一个有效评价 ### 5.2 逻辑删除 所有表都使用 `delete_flag` 字段进行逻辑删除: - `delete_flag = 0` - 未删除 - `delete_flag = 1` - 已删除 ### 5.3 状态字段 - **订单状态**: `order_status` (0:待支付, 1:已支付, 2:进行中, 3:已完成, 4:已取消) - **支付状态**: `payment_status` (0:未支付, 1:已支付) - **交易状态**: `transaction_status` (0:待支付, 1:支付成功, 2:支付失败, 3:已退款) - **会话状态**: `status` (0:未开始, 1:进行中, 2:已结束) - **认证状态**: `certification_status` (0:未认证, 1:认证中, 2:已认证, 3:认证失败) --- ## 六、索引设计建议 ### 6.1 主键索引 所有表的主键 `id` 自动创建主键索引。 ### 6.2 外键索引 所有外键字段都创建索引,提高关联查询性能。 ### 6.3 联合索引 根据常用查询场景创建联合索引: | 表名 | 联合索引 | 说明 | |------|---------|------| | `lawyer_user` | `(status, delete_flag)` | 查询可用律师 | | `lawyer_consultation_order` | `(client_user_id, order_status, delete_flag)` | 用户订单查询(关联life_user) | | `lawyer_consultation_order` | `(lawyer_user_id, order_status, delete_flag)` | 律师订单查询 | | `lawyer_chat_message` | `(chat_session_id, message_timestamp, delete_flag)` | 会话消息查询 | | `lawyer_service_area` | `(lawyer_user_id, problem_scenar_id, delete_flag)` | 律师服务领域查询 | | `lawyer_img` | `(lawyer_id, img_type, delete_flag)` | 律师图片查询 | ### 6.4 时间字段索引 - `created_time` - 创建时间索引,用于按时间排序 - `updated_time` - 更新时间索引 - `last_message_time` - 最后消息时间索引 - `message_timestamp` - 消息时间戳索引 --- ## 七、业务场景查询示例 ### 7.1 查询律师的详细信息 ```sql SELECT lu.* FROM lawyer_user lu WHERE lu.id = ? AND lu.delete_flag = 0; ``` ### 7.2 查询律师的服务领域 ```sql SELECT lsa.*, lps.name as problem_scenario_name FROM lawyer_service_area lsa INNER JOIN lawyer_legal_problem_scenario lps ON lsa.problem_scenar_id = lps.id WHERE lsa.lawyer_user_id = ? AND lsa.delete_flag = 0 AND lsa.status = 1 ORDER BY lsa.sort_order; ``` ### 7.3 查询用户的订单列表 ```sql SELECT lco.*, lu.name as lawyer_name, lps.name as problem_scenario_name FROM lawyer_consultation_order lco LEFT JOIN lawyer_user lu ON lco.lawyer_user_id = lu.id LEFT JOIN lawyer_legal_problem_scenario lps ON lco.problem_scenar_id = lps.id WHERE lco.client_user_id = ? AND lco.delete_flag = 0 ORDER BY lco.created_time DESC; ``` ### 7.4 查询订单的聊天记录 ```sql SELECT lcm.* FROM lawyer_chat_message lcm WHERE lcm.consultation_order_id = ? AND lcm.delete_flag = 0 ORDER BY lcm.message_timestamp ASC; ``` ### 7.5 查询律师的评价统计 ```sql SELECT COUNT(*) as total_reviews, AVG(rating) as avg_rating, AVG(service_quality) as avg_service_quality, AVG(response_speed) as avg_response_speed, AVG(professional_level) as avg_professional_level FROM lawyer_consultation_review WHERE lawyer_user_id = ? AND delete_flag = 0; ``` --- ## 八、注意事项 1. **统一字段命名规范**: - 所有表都包含标准字段:`delete_flag`, `created_time`, `created_user_id`, `updated_time`, `updated_user_id` - 主键统一使用 `id` (INT, AUTO_INCREMENT) - 外键统一命名为 `xxx_id` 2. **逻辑删除**: - 所有表都使用 `delete_flag` 字段进行逻辑删除(0:未删除, 1:已删除) - 使用 `@TableLogic` 注解 3. **索引设计**: - 主键自动创建索引 - 外键字段创建索引 - 常用查询字段创建联合索引(如:`lawyer_user_id + status + delete_flag`) 4. **金额字段**: - 统一使用 INT 类型,单位:分(避免浮点数精度问题) 5. **时间字段**: - `created_time`: DEFAULT CURRENT_TIMESTAMP - `updated_time`: DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 6. **数据一致性**: - 订单状态变更时,需要同步更新相关表的记录 - 评价添加后,需要更新律师的评分统计(`lawyer_user.service_score`等) 7. **树形结构**: - `lawyer_legal_problem_scenario` 使用 `parent_id` 实现三级分类 - 查询子节点时使用递归查询或维护 `parent_code` 路径 --- ## 九、表状态统计 ### 已完成(13个表) ✅ lawyer_user ✅ lawyer_legal_problem_scenario ✅ lawyer_img ✅ lawyer_service_area ✅ lawyer_consultation_order ✅ lawyer_chat_session ✅ lawyer_chat_message ✅ lawyer_common_question ✅ lawyer_consultation_review ✅ lawyer_payment_transaction ✅ lawyer_ai_interaction_log ✅ lawyer_user_search_history ✅ life_user - 客户端用户表(已存在)