技术点

  1. Spring Boot框架:基于Spring Boot的快速开发框架,内置Tomcat服务器,简化配置和部署流程。
  2. 数据库技术:采用MySQL作为主数据库,存储药品信息、用户数据、推荐记录等。
  3. 推荐算法:基于协同过滤或内容推荐算法实现个性化药品推荐。
  4. 前端技术:使用Thymeleaf或Vue.js构建用户界面,实现交互功能。
  5. 安全技术:整合Spring Security实现用户认证和权限控制。
  6. 缓存技术:引入Redis缓存热门药品数据,提升系统响应速度。
  7. 日志监控:通过Logback或ELK(Elasticsearch, Logstash, Kibana)实现日志收集与分析。

系统功能模块设计

药品管理模块
  • 药品信息的增删改查(CRUD)功能。
  • 药品分类管理(如处方药、非处方药)。
  • 药品库存预警功能。
用户管理模块
  • 用户注册、登录与权限管理。
  • 用户健康档案管理(如过敏史、病史)。
  • 用户行为记录(浏览、购买药品记录)。
推荐模块
  • 基于用户历史行为和健康档案的药品推荐。
  • 热门药品推荐(基于销量或评分)。
  • 药品搭配推荐(如感冒药与维生素的组合)。
订单管理模块
  • 药品下单与支付功能。
  • 订单状态跟踪(待发货、已发货、已完成)。
  • 订单评价功能。
数据分析模块
  • 药品销售统计与分析。
  • 用户行为分析(如高频搜索药品)。
  • 推荐算法效果评估(点击率、转化率)。

数据库设计

主要表结构
  1. 药品表(medicine)

    CREATE TABLE medicine (
        id INT PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(100) NOT NULL,
        category VARCHAR(50),
        price DECIMAL(10, 2),
        stock INT,
        description TEXT,
        image_url VARCHAR(255)
    );
    

  2. 用户表(user)

    CREATE TABLE user (
        id INT PRIMARY KEY AUTO_INCREMENT,
        username VARCHAR(50) NOT NULL,
        password VARCHAR(100) NOT NULL,
        email VARCHAR(100),
        phone VARCHAR(20),
        health_info TEXT
    );
    

  3. 订单表(order)

    CREATE TABLE `order` (
        id INT PRIMARY KEY AUTO_INCREMENT,
        user_id INT,
        total_amount DECIMAL(10, 2),
        status VARCHAR(20),
        create_time DATETIME,
        FOREIGN KEY (user_id) REFERENCES user(id)
    );
    

  4. 订单详情表(order_detail)

    CREATE TABLE order_detail (
        id INT PRIMARY KEY AUTO_INCREMENT,
        order_id INT,
        medicine_id INT,
        quantity INT,
        price DECIMAL(10, 2),
        FOREIGN KEY (order_id) REFERENCES `order`(id),
        FOREIGN KEY (medicine_id) REFERENCES medicine(id)
    );
    

  5. 推荐记录表(recommendation)

    CREATE TABLE recommendation (
        id INT PRIMARY KEY AUTO_INCREMENT,
        user_id INT,
        medicine_id INT,
        score DECIMAL(5, 2),
        create_time DATETIME,
        FOREIGN KEY (user_id) REFERENCES user(id),
        FOREIGN KEY (medicine_id) REFERENCES medicine(id)
    );
    

关键代码实现

药品推荐逻辑(基于协同过滤)
@Service
public class RecommendationService {
    @Autowired
    private UserBehaviorRepository behaviorRepository;
    @Autowired
    private MedicineRepository medicineRepository;

    public List<Medicine> recommendMedicines(Long userId) {
        List<UserBehavior> behaviors = behaviorRepository.findByUserId(userId);
        Map<Long, Double> scores = new HashMap<>();
        
        // 计算药品相似度并生成推荐分数
        behaviors.forEach(behavior -> {
            List<Medicine> similarMedicines = medicineRepository
                .findByCategory(behavior.getMedicine().getCategory());
            similarMedicines.forEach(m -> {
                scores.put(m.getId(), scores.getOrDefault(m.getId(), 0.0) + 1.0);
            });
        });

        // 按分数排序返回推荐列表
        return scores.entrySet().stream()
            .sorted(Map.Entry.<Long, Double>comparingByValue().reversed())
            .limit(10)
            .map(entry -> medicineRepository.findById(entry.getKey()).orElse(null))
            .filter(Objects::nonNull)
            .collect(Collectors.toList());
    }
}

药品管理Controller
@RestController
@RequestMapping("/api/medicine")
public class MedicineController {
    @Autowired
    private MedicineService medicineService;

    @GetMapping
    public List<Medicine> getAllMedicines() {
        return medicineService.findAll();
    }

    @PostMapping
    public Medicine addMedicine(@RequestBody Medicine medicine) {
        return medicineService.save(medicine);
    }

    @PutMapping("/{id}")
    public Medicine updateMedicine(@PathVariable Long id, @RequestBody Medicine medicine) {
        medicine.setId(id);
        return medicineService.save(medicine);
    }

    @DeleteMapping("/{id}")
    public void deleteMedicine(@PathVariable Long id) {
        medicineService.deleteById(id);
    }
}

系统测试点

功能测试
  • 药品管理功能测试:验证药品添加、修改、删除操作的正确性。
  • 用户注册与登录测试:检查用户认证流程是否正常。
  • 推荐功能测试:模拟用户行为,验证推荐结果的合理性。
  • 订单流程测试:从下单到支付的完整流程验证。
性能测试
  • 高并发场景测试:模拟多用户同时访问推荐接口的性能表现。
  • 数据库压力测试:检查大量数据插入和查询时的响应时间。
安全测试
  • 权限控制测试:验证未登录用户无法访问管理接口。
  • SQL注入测试:检查输入字段是否对恶意代码有防护。
兼容性测试
  • 前端兼容性测试:在不同浏览器(Chrome、Firefox、Safari)下的显示效果。
  • 移动端适配测试:在手机和平板设备上的用户体验。

更多推荐