技术栈设计

后端技术栈

  • 框架: Spring Boot 2.7.x(集成Spring MVC、Spring Security)
  • 数据库: MySQL 8.0(关系型数据存储)、Redis(缓存与会话管理)
  • ORM: MyBatis-Plus(简化CRUD操作)
  • 消息队列: RabbitMQ(异步处理订单、通知)
  • 文件存储: 阿里云OSS(宠物图片、视频存储)
  • API文档: Swagger + Knife4j(交互式文档生成)

前端技术栈

  • 核心框架: 微信小程序原生开发 + TypeScript
  • UI组件库: Vant Weapp(定制化组件)
  • 状态管理: MobX(跨页面状态共享)
  • 地图服务: 腾讯位置服务(LBS功能集成)

测试与部署

  • 单元测试: JUnit 5 + Mockito
  • 压力测试: JMeter(模拟高并发场景)
  • CI/CD: Jenkins + Docker(自动化部署)

详细功能设计

1. 用户端功能

  • 智能预约: 基于LBS的宠物医院、美容店预约系统,支持动态时间选择与排队提醒。
  • 健康档案: 宠物疫苗接种记录、病历管理,支持OCR识别宠物医疗单据。
  • 社区互动: UGC内容发布(图文/视频)、点赞评论,集成敏感词过滤算法。
  • 电商模块: 宠物商品分类检索、购物车、秒杀活动(Redis缓存预热与库存扣减)。

2. 商户端功能

  • 服务管理: 多规格服务上架(如美容套餐分级定价)、服务时段设置。
  • 订单看板: 实时订单状态跟踪,支持扫码核销与电子合同签署。
  • 数据分析: 基于ECharts的营业额、客户复购率可视化报表。

3. 管理后台功能

  • 权限控制: RBAC模型实现多角色(超级管理员、运营、审核员)权限隔离。
  • 日志审计: 基于AOP的操作日志记录,支持异常行为预警。
  • 系统监控: Spring Boot Admin集成,实时监测服务健康状态。

数据库设计(核心表)

用户相关表

CREATE TABLE `user` (
  `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  `openid` VARCHAR(64) UNIQUE COMMENT '微信OpenID',
  `nickname` VARCHAR(32) COMMENT '加密存储',
  `phone` VARCHAR(20) COMMENT 'DES加密',
  `avatar` VARCHAR(255) COMMENT 'OSS链接'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

宠物档案表

CREATE TABLE `pet` (
  `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  `user_id` BIGINT NOT NULL,
  `name` VARCHAR(32) NOT NULL,
  `type` ENUM('DOG','CAT','OTHER') NOT NULL,
  `birthday` DATE COMMENT '用于计算年龄',
  `medical_history` TEXT COMMENT 'JSON格式存储病历',
  FOREIGN KEY (`user_id`) REFERENCES `user`(`id`)
) ENGINE=InnoDB;

服务订单表

CREATE TABLE `order` (
  `id` VARCHAR(32) PRIMARY KEY COMMENT '分布式ID生成',
  `user_id` BIGINT NOT NULL,
  `shop_id` BIGINT NOT NULL,
  `status` TINYINT DEFAULT 0 COMMENT '0-待支付,1-已预约,2-已完成',
  `pay_time` DATETIME COMMENT '支付成功时间',
  `total_amount` DECIMAL(10,2) UNSIGNED NOT NULL,
  `location` POINT COMMENT '空间索引存储经纬度',
  SPATIAL INDEX(`location`),
  FOREIGN KEY (`user_id`) REFERENCES `user`(`id`),
  FOREIGN KEY (`shop_id`) REFERENCES `shop`(`id`)
) ENGINE=InnoDB;


系统测试设计

1. 单元测试(示例)

@SpringBootTest
public class OrderServiceTest {
    @Autowired
    private OrderService orderService;

    @Test
    @Transactional
    void testCreateOrder() {
        OrderDTO dto = new OrderDTO();
        dto.setUserId(1L);
        dto.setShopId(2L);
        String orderId = orderService.create(dto);
        assertNotNull(orderId);
        assertEquals(OrderStatus.WAIT_PAY, orderService.getById(orderId).getStatus());
    }
}

2. 压力测试场景

  • 秒杀测试: 模拟1000并发请求商品库存为100的秒杀活动,验证Redis分布式锁与库存回滚机制。
  • 预约峰值: 持续30分钟的高频预约请求,监测MySQL连接池利用率与RabbitMQ消息堆积情况。

3. 安全测试

  • SQL注入: 使用Sqlmap工具扫描接口参数。
  • 越权访问: 修改JWT Token中的userId尝试访问他人数据。

源码结构说明

src/
├── main/
│   ├── java/
│   │   └── com/zhichong/
│   │       ├── config/       # 安全、Redis等配置类
│   │       ├── controller/   # Restful API
│   │       ├── service/      # 业务逻辑层
│   │       ├── dao/          # MyBatis Mapper接口
│   │       └── entity/       # 数据库实体
│   └── resources/
│       ├── mapper/           # XML映射文件
│       └── application-dev.yml # 多环境配置
└── test/                     # 测试代码目录

如需完整源码或具体模块实现细节,建议通过正规开源平台(如GitHub)搜索相关关键词获取合规授权项目参考。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐