Commit Graph

4 Commits

Author SHA1 Message Date
Yuhang Wu c9d85b0815 feat(module/seckill): 限时抢购 Redis Lua 防超卖 + 一人一单兜底
- 实体 SeckillActivity、SeckillProduct、SeckillOrder
- 枚举:SeckillActivityStatusEnum(含 calcStatus 时间驱动动态状态)、SeckillResultEnum
- RedisKey 追加 4 个抢购相关 key:SECKILL_STOCK / SECKILL_USER_RECORD / SECKILL_RESULT / SECKILL_WARMUP
- Mapper:decrRemainStock / incrRemainStock(MySQL 兜底)、forceEnd、markAsPaid
- resources/lua/seckill.lua:原子完成"限购校验 + 库存校验 + 扣库存 + 累计已购"
- Service:seckillBuy(核心:Lua 防超卖 → 落库 → 唯一索引兜底 → 落库失败回滚 Redis)
- Service:queryResult(轮询接口,从 Redis 取抢购结果)
- Service:warmupActivity(管理端预热,把库存同步到 Redis)
- Service:forceEnd / deleteActivity(清理 Redis)
- DTO:SeckillBuyReq、SeckillActivitySaveReq、SeckillProductAddReq
- VO:SeckillActivityVO(含动态状态 + 倒计时秒数)、SeckillProductVO(含实时 Redis 库存 + 已售百分比 + 折扣率)、SeckillResultVO
- Controller:用户端(活动列表/详情/抢购/结果查询)+ 管理端(活动 CRUD + 预热 + 强制结束 + 商品管理)
- 一人一单:seckill_order UNIQUE KEY (user_id, activity_id, sku_id) 兜底
- 抢购失败回滚:MySQL 落库异常时 INCRBY Redis 释放库存
feat(common/storage): 文件存储抽象接口 + Local / S3 双实现

- 抽象接口 FileStorage:store / delete / getAccessUrl / parsePathFromUrl
- LocalFileStorage:本地 ./uploads/ 物理存储(默认)
- S3FileStorage:S3 协议实现(RustFS / MinIO / AWS S3 / 阿里云 OSS)
- S3StorageProperties:snack.s3.* 配置类
- @ConditionalOnProperty 自动按 snack.storage.type 切换
- 启动时自动 ensureBucket(headBucket + createBucket)
- DisposableBean 容器关闭时关闭 S3Client 连接池

文件模块:
- 实体 UploadFile(含 storageType / bizType 区分)
- 枚举:FileBizTypeEnum(avatar/admin-avatar/product/sku/category/banner/notice/chat/common)
- Service:upload / uploadWithUploader / deleteFile / deleteByPath
- FileController:/api/file/upload + /api/file/{id}
- 图片类型自动校验(jpg/png/gif/webp)
- URL → path 反查(删除商品时根据 main_image 字段自动清理物理文件)
- application.yml:snack.storage.type / snack.upload.* / snack.s3.* 配置

管理端:
- AdminAvatarController /api/admin/avatar/upload
- CategoryAdminController 加 /api/admin/category/{id}/icon
- 删除分类时同步清理 icon 物理文件
2026-06-05 11:11:19 +08:00
sparksfly 8b70a3f49a feat: 完成商品分类管理功能,优化前后端配置与接口
1.  调整环境配置,优化 Vite 代理与 Axios 请求路径
2.  完善 Sa-Token 配置,新增 BusinessException 重载构造
3.  重构后端 Mapper 调用,替换 selectBatchIds 为 selectByIds
4.  重构登录与用户信息流程,移除验证码与 Mock 数据
5.  新增商品分类管理页面,支持树形增删改查与状态管理
6.  优化 Redis 序列化配置,升级 Jackson 序列化器
7.  完善类型定义与 API 封装,适配后端最新接口契约
2026-06-02 23:46:19 +08:00
Yuhang Wu 1595dc8c35 ```
docs(db): 添加核心业务设计文档和数据库初始化说明

- 新增 BUSINESS_DESIGN.md 文档,详细描述 WebSocket 客服系统和
  Redis 防超卖抢购系统的设计方案
- 新增 README.md 文档,提供数据库初始化说明和表结构清单
- 包含完整的建表脚本执行顺序和默认测试账号信息
- 为后续开发提供详细的技术架构参考文档
```
2026-06-02 17:23:50 +08:00
Yuhang Wu e682e9c3f8 init 2026-06-01 18:04:25 +08:00