一、自我介绍
我是询律法律咨询平台的核心开发人员,主要负责平台核心功能的设计与实现,包括在线咨询、支付系统、知识专辑管理、直播课堂等模块。在项目中,我深度参与了需求分析、技术选型、架构设计及核心代码开发,解决了高并发咨询处理、支付一致性保障、敏感内容风控等关键问题,确保平台稳定高效运行。
二、项目概述
询律法律咨询平台是一个连接用户与律师的综合性服务平台,以社区化运营为核心,提供免费 / 付费咨询、法律知识分享、案件经验交流、普法直播等服务。平台分为三个端:
- 用户端:提供法律知识搜索、案件分享浏览、咨询求助、消息通信等功能;
- 律师端:支持法律常识科普、咨询回复、收益管理、直播授课等功能;
- 后台管理端:负责用户 / 律师信息审核、咨询订单管理、内容风控等运维工作。
平台通过整合律师资源与技术手段,打破了传统法律咨询的时空限制,为用户提供便捷、专业的法律服务。
三、核心功能实现:业务流程与技术细节
3.1 在线咨询系统:从请求到服务
3.1.1 咨询模式与付费流程
平台支持免费咨询(基础法律问题解答)和付费咨询(深度案件分析),付费流程如下:
- 业务流程:
- 用户选择律师并发起付费咨询,填写问题详情并选择支付方式(微信 / 支付宝);
- 系统生成支付订单,用户完成支付后,律师接收咨询请求并回复;
- 咨询结束后,用户可对律师服务进行评价。
- 技术实现:
- 订单生成:基于分布式 ID 生成器(如雪花算法)生成唯一订单号,关联用户 ID、律师 ID 及咨询内容;
- 支付集成:封装微信支付 V3 接口和支付宝 SDK,统一支付入口,通过策略模式适配不同支付渠道;
- 状态同步:支付结果通过异步回调接口通知系统,同步更新订单状态(待支付→已支付→咨询中→已完成)。
3.1.2 高并发咨询处理
针对大量用户同时发起咨询的场景,采用以下技术方案:
- 分布式锁与队列:
- 使用Redisson 分布式锁防止同一咨询被多名律师同时接单,确保接单唯一性;
- 将咨询请求放入RabbitMQ 消息队列,律师端服务异步消费,避免高峰期系统过载。
- 抢单机制:
- 付费咨询支持律师抢单,通过ReentrantLock 公平锁实现有序抢单,等待时间最长的律师优先获取接单权;
- 抢单结果实时通过 WebSocket 推送给用户和律师,确保信息同步。
3.1.3 实时聊天技术
在线咨询的核心是实时沟通,技术选型如下:
- 通信协议:采用WebSocket实现全双工通信,建立客户端与服务器的持久连接,避免 HTTP 轮询的性能损耗;
- 框架支撑:使用Netty作为 WebSocket 服务端框架,高效处理上万级并发连接,支持消息的编解码、心跳检测和断线重连;
- 消息存储:聊天记录异步写入 MongoDB,支持按咨询订单号检索,满足合规性要求。
3.2 支付系统:安全与一致性保障
3.2.1 支付流程设计
- 核心流程:
- 用户发起支付→系统生成支付参数(订单号、金额、签名)→调用第三方支付接口→用户完成支付→支付平台回调通知→系统更新订单状态。
- 技术亮点:
- 接口封装:抽象支付接口,实现微信、支付宝等渠道的解耦,新增支付方式时只需扩展接口实现类;
- 签名验证:所有支付请求均通过 RSA 算法签名,确保请求未被篡改,支付平台回调信息需验证签名后才处理。
3.2.2 异常处理机制
针对 “用户支付成功但系统未收到回调” 的异常场景:
- 主动查询:通过定时任务(XXL-Job)定期扫描 “待支付” 状态的订单,调用支付平台的查询接口(如微信的 “查询订单” 接口)确认实际支付结果;
- 状态修复:
- 若查询结果为 “支付成功”,更新订单状态为 “已支付”,触发咨询服务通知律师;
- 若查询结果为 “支付失败”,向用户推送支付失败消息,提供重新支付或退款选项;
- 日志追踪:所有支付异常记录详细日志(包括订单号、查询时间、返回结果),便于问题排查。
3.2.3 加密算法应用
支付环节采用多重加密保障数据安全:
- RSA 非对称加密:用于支付参数签名和回调验证,平台保存私钥,支付平台持有公钥,确保签名不可伪造;
- AES 对称加密:对敏感信息(如用户银行卡号、身份证号)进行加密存储,密钥通过 KMS(密钥管理服务)统一管理,定期轮换。
3.3 知识专辑管理:内容分发与安全
3.3.1 搜索功能实现
知识专辑(法律文章、案例分析等)的高效检索通过ElasticSearch(ES) 实现:
- 索引构建:
- 同步 MySQL 中的知识专辑数据到 ES,建立包含标题、内容、标签、发布时间的索引;
- 使用 IK 分词器对中文文本分词,支持模糊搜索和关键词高亮。
- 查询优化:
- 基于用户搜索词的热度排序,热门关键词优先返回结果;
- 实现过滤功能(如按律师等级、发布时间筛选),提升搜索精准度。
3.3.2 海量数据导入 ES
针对百万级知识专辑数据的批量导入:
- 分片任务:使用 XXL-Job 的分片广播策略,将数据按 ID 范围分配到多台服务器并行处理;
- 分页与线程池:每台服务器通过分页查询 MySQL 数据,使用线程池(核心线程数 20)并发写入 ES,提升导入效率;
- 断点续传:记录每批数据的导入进度,失败后从断点继续,避免重复劳动。
3.3.3 静态化与性能优化
知识专辑详情页采用静态化处理提升访问速度:
- 静态页生成:使用Freemarker模板引擎,结合专辑数据生成 HTML 文件,存储到MinIO 对象存储中;
- 访问路径管理:静态页 URL 与专辑 ID 关联,存入 MySQL,用户访问时直接请求 MinIO,减少数据库查询;
- 更新机制:专辑内容修改后,触发钩子函数重新生成静态页,确保内容时效性。
3.3.4 安全风控系统
为防止违规内容发布,构建多层风控体系:
- 流程设计:
- 专辑发布时,系统通过 Kafka 发送
verify主题消息,包含文本、图片、视频等内容; - 风控服务消费消息,依次执行敏感信息检测→阿里云内容审核→风险评级;
- 审核结果通过
resp_topic主题返回,平台根据结果决定发布 / 驳回。
- 技术细节:
- 敏感信息检测:使用DFA 算法匹配自定义敏感词库(如违规法律术语),减少第三方审核成本;
- 图片识别:通过Tess4j提取图片中的文字,纳入文本审核范围;
- 规则引擎:集成Drools动态管理审核规则(如 “涉政词汇→直接驳回”),支持规则在线配置,无需代码部署。
3.4 普法讲堂:直播与视频课程
3.4.1 直播功能实现
采用腾讯云直播解决方案,流程如下:
- 房间创建:律师发起直播请求,系统调用腾讯云 API 创建直播房间,生成唯一房间 ID 和推流地址;
- 权限控制:观众通过房间 ID 加入,系统校验用户登录状态,防止未授权访问;
- 互动支持:集成腾讯云 IM 服务,实现直播弹幕、提问功能,消息通过 WebSocket 实时推送。
3.4.2 视频课程存储与分片
大视频文件(如录播课程)的处理方案:
- 文件分片:使用FFmpeg将视频切割为 10 秒 / 段的
.ts文件,生成m3u8索引文件; - 存储管理:分片文件上传至 MinIO,按课程 ID 建立存储目录,支持断点续传;
- 播放优化:前端通过 HLS 协议加载
m3u8文件,实现边播边缓冲,提升观看体验。
3.5 合同服务:代写竞价与安全管理
3.5.1 合同代写竞价流程
- 业务流程:
- 用户发布合同代写需求(类型、用途、截止时间);
- 认证律师提交报价和完成时间;
- 用户选择律师并支付定金→律师完成代写→用户确认后支付尾款→平台扣除服务费后结算给律师。
- 技术支撑:
- 竞价信息实时存入 Redis,通过 Sorted Set 按报价排序,便于用户筛选;
- 截止时间前 10 分钟通过短信提醒用户和律师,避免超时。
3.5.2 合同存储与安全
- 存储方案:合同文件上传至 MinIO,设置私有存储桶,仅通过签名 URL 访问(有效期 1 小时);
- 安全控制:文件上传时自动病毒扫描,敏感合同(如涉密案件)采用 AES 加密存储,解密需管理员授权。
3.5.3 合同下载排行榜
基于下载量和热度双重维度排名:
- 下载量统计:
- 每次下载时,通过 Redis 的
INCR命令递增计数器,记录合同 ID 与下载次数; - 每日凌晨通过定时任务将数据同步至 MySQL,生成日榜、周榜和月榜。
- 热度计算:
- 热度分数 = 基础分(发布时间戳)+ 下载量 ×5 + 收藏量 ×3;
- 分数前 30 名的合同存入 Redis Sorted Set,实时更新排名,提升查询效率。
3.6 其他关键功能
3.6.1 律师排行榜
- 评分维度:咨询响应速度(30%)、用户满意度(40%)、案例成功率(30%);
- 实现方式:每日计算律师评分,存入 Redis Sorted Set,前端通过 ZREVRANGE 命令获取排名,支持分页查询。
3.6.2 订单超时处理
- 未支付订单设置 15 分钟超时时间,通过 XXL-Job 定时任务扫描超时订单,自动标记为 “已取消”;
- 超时订单触发库存回滚(如咨询名额),并通过短信通知用户。
3.6.3 防止表单重复提交
- 页面加载时生成唯一 Token,存入 Redis(有效期 10 分钟),并随表单提交;
- 后端校验 Token 有效性,使用后立即删除,重复提交时直接拒绝。
四、总结
询律法律咨询平台通过整合 WebSocket 实时通信、分布式锁、ElasticSearch 搜索、第三方支付等技术,构建了一套稳定、高效的法律服务体系。核心亮点包括:
- 高并发支撑:通过消息队列、线程池和分布式锁,应对咨询高峰期的流量冲击;
- 数据安全:多层加密、敏感信息过滤和规则引擎,保障内容合规与支付安全;
- 用户体验:静态化页面、视频分片和实时推送,提升访问速度与交互流畅度。