1. 项目概述与背景解析
"基于SSH框架的寄卖管理系统"是一个典型的B/S架构企业级应用,采用SpringBoot+Vue技术栈实现前后端分离开发。该系统主要解决二手商品交易平台中的寄卖业务管理需求,包含商品上架、订单处理、支付结算、用户管理等核心功能模块。
在传统寄卖业务中,商家常面临以下痛点:
- 手工登记商品信息效率低下且易出错
- 交易流程缺乏透明度和可追溯性
- 库存和财务数据难以实时同步
- 买卖双方沟通渠道不畅
本系统通过信息化手段重构寄卖业务流程,实现了:
- 商品数字化管理(图文详情、状态追踪)
- 自动化交易流程(从寄卖到结算的全链路跟踪)
- 实时数据看板(销售统计、库存预警)
- 多角色协同工作平台(卖家、买家、管理员)
2. 技术架构设计
2.1 整体技术选型
code复制前端技术栈:
- Vue 2.x(渐进式框架)
- Element UI(组件库)
- Axios(HTTP客户端)
- Vue Router(路由管理)
- Vuex(状态管理)
后端技术栈:
- Spring Boot 2.7(基础框架)
- Spring Security(认证授权)
- MyBatis Plus(ORM)
- Redis(缓存)
- MySQL 8.0(关系型数据库)
- RabbitMQ(消息队列)
2.2 架构设计要点
2.2.1 分层架构设计
采用经典的三层架构:
- 表现层:Vue前端+Restful API
- 业务逻辑层:Spring Boot服务
- 数据访问层:MyBatis Plus+MySQL
2.2.2 关键设计决策
- JWT认证方案:采用无状态token机制,解决分布式session问题
- 接口幂等设计:针对支付等关键操作使用token+redis方案
- 分布式锁:商品库存变更使用Redisson实现
- 消息最终一致性:通过RabbitMQ实现业务解耦
3. 核心功能实现
3.1 商品管理模块
3.1.1 商品发布流程
java复制// 商品发布服务层示例代码
@Transactional
public Result publishGoods(GoodsDTO dto) {
// 1. 参数校验
ValidateUtils.validate(dto);
// 2. 构建商品实体
Goods goods = new Goods()
.setTitle(dto.getTitle())
.setPrice(dto.getPrice())
.setImages(JSON.toJSONString(dto.getImages()));
// 3. 持久化操作
goodsMapper.insert(goods);
// 4. 发送ES索引消息
rabbitTemplate.convertAndSend(
"goods.exchange",
"goods.publish",
goods.getId()
);
return Result.success(goods.getId());
}
3.1.2 关键技术实现
- 图片上传:采用阿里云OSS存储,前端实现分片上传
- 富文本编辑:集成wangEditor实现商品详情编辑
- 敏感词过滤:基于DFA算法实现实时过滤
3.2 订单交易模块
3.2.1 状态机设计
mermaid复制stateDiagram-v2
[*] --> PENDING
PENDING --> PAID: 支付成功
PENDING --> CANCELLED: 取消订单
PAID --> SHIPPED: 发货
SHIPPED --> COMPLETED: 确认收货
SHIPPED --> REFUNDING: 申请退款
REFUNDING --> REFUNDED: 退款成功
3.2.2 防并发控制
java复制// 使用Redisson实现分布式锁
public Result createOrder(Long goodsId) {
RLock lock = redissonClient.getLock("order:lock:" + goodsId);
try {
lock.lock(5, TimeUnit.SECONDS);
// 库存检查
Goods goods = goodsMapper.selectById(goodsId);
if (goods.getStock() < 1) {
return Result.fail("库存不足");
}
// 扣减库存
goodsMapper.updateStock(goodsId, -1);
// 创建订单
return orderService.create(goods);
} finally {
lock.unlock();
}
}
4. 系统安全设计
4.1 安全防护体系
- 认证授权:Spring Security + JWT
- 数据安全:
- 敏感字段加密存储(AES)
- SQL注入防护(MyBatis参数绑定)
- XSS防护(Jackson转义)
- 接口安全:
- 签名验证(API签名算法)
- 频率限制(Redis计数器)
- 敏感操作二次验证
4.2 典型安全配置
yaml复制# Spring Security配置示例
security:
oauth2:
resource:
jwt:
key-value: ${JWT_SIGN_KEY}
ignored:
- /api/v1/public/**
5. 性能优化实践
5.1 缓存策略
-
多级缓存架构:
- 本地缓存(Caffeine)
- 分布式缓存(Redis)
- 数据库缓存(MySQL查询缓存)
-
缓存更新策略:
- 商品信息:延迟双删策略
- 库存数据:Redis原子操作+异步持久化
5.2 数据库优化
- 索引设计:
- 组合索引:`idx_category_status(
