一个基于Spring Boot的会员制医疗服务管理系统的案例代码

以下是一个基于Spring Boot的会员制医疗服务管理系统的案例代码,包含会员管理、医疗服务预约、健康档案、套餐管理和支付功能。代码结构清晰,适合扩展和定制。

一个基于Spring Boot的会员制医疗服务管理系统的案例代码_第1张图片

1. 项目结构

src/main/java/com/example/medical
├── config/                # 配置类
├── controller/            # API控制器
│   ├── MemberController.java
│   ├── AppointmentController.java
│   ├── MedicalRecordController.java
│   └── PaymentController.java
├── model/                 # 数据实体
│   ├── Member.java
│   ├── MedicalService.java
│   ├── Appointment.java
│   ├── MedicalRecord.java
│   ├── HealthPackage.java
│   └── Payment.java
├── repository/            # JPA仓库
├── service/               # 业务逻辑
├── dto/                   # 数据传输对象
└── MedicalSystemApplication.java   # 主启动类

2. 核心实体定义

会员实体 (Member.java)

@Entity
public class Member {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String phone;
    private LocalDate registerDate;
    private String membershipLevel; // 会员等级(基础/高级/VIP)
    private boolean isActive;       // 会员状态
    
    // Getters & Setters
}

医疗服务实体 (MedicalService.java)

@Entity
public class MedicalService {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String serviceName;    // 服务名称(体检、专家问诊等)
    private String description;
    private BigDecimal price;
    
    // Getters & Setters
}

预约记录实体 (Appointment.java)

@Entity
public class Appointment {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @ManyToOne
    private Member member;
    
    @ManyToOne
    private MedicalService service;
    
    private LocalDateTime appointmentTime;
    private String status;         // 状态(待确认/已完成/已取消)
    
    // Getters & Setters
}

3. 仓库接口示例

会员仓库 (MemberRepository.java)

public interface MemberRepository extends JpaRepository<Member, Long> {
    // 根据手机号查询会员
    Optional<Member> findByPhone(String phone);
    
    // 查询有效会员
    List<Member> findByIsActiveTrue();
}

预约仓库 (AppointmentRepository.java)

public interface AppointmentRepository extends JpaRepository<Appointment, Long> {
    // 查询指定会员的预约记录
    List<Appointment> findByMemberId(Long memberId);
    
    // 查询特定时间段的预约
    List<Appointment> findByAppointmentTimeBetween(LocalDateTime start, LocalDateTime end);
}

4. 服务层实现

会员服务 (MemberService.java)

@Service
public class MemberService {
    @Autowired
    private MemberRepository memberRepository;

    // 注册新会员
    public Member registerMember(Member member) {
        if (memberRepository.findByPhone(member.getPhone()).isPresent()) {
            throw new RuntimeException("手机号已注册");
        }
        member.setRegisterDate(LocalDate.now());
        member.setActive(true);
        return memberRepository.save(member);
    }

    // 更新会员等级
    public Member upgradeMembership(Long memberId, String newLevel) {
        Member member = memberRepository.findById(memberId)
                .orElseThrow(() -> new RuntimeException("会员不存在"));
        member.setMembershipLevel(newLevel);
        return memberRepository.save(member);
    }
}

5. API控制器示例

预约控制器 (AppointmentController.java)

@RestController
@RequestMapping("/api/appointments")
public class AppointmentController {
    @Autowired
    private AppointmentService appointmentService;

    // 创建新预约
    @PostMapping
    public ResponseEntity<?> createAppointment(@RequestBody AppointmentRequest request) {
        Appointment appointment = appointmentService.createAppointment(
                request.getMemberId(),
                request.getServiceId(),
                request.getAppointmentTime()
        );
        return ResponseEntity.ok(appointment);
    }

    // DTO用于接收请求参数
    @Data
    static class AppointmentRequest {
        private Long memberId;
        private Long serviceId;
        private LocalDateTime appointmentTime;
    }
}

6. 安全配置(Spring Security)

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/api/public/**").permitAll()
                .antMatchers("/api/members/**").hasRole("MEMBER")
                .antMatchers("/api/admin/**").hasRole("ADMIN")
                .anyRequest().authenticated()
            .and()
            .formLogin()
            .and()
            .httpBasic();
    }
}

7. 支付集成示例

支付服务 (PaymentService.java)

@Service
public class PaymentService {
    @Autowired
    private PaymentRepository paymentRepository;

    @Transactional
    public Payment processPayment(Long memberId, BigDecimal amount) {
        Payment payment = new Payment();
        payment.setMemberId(memberId);
        payment.setAmount(amount);
        payment.setPaymentDate(LocalDateTime.now());
        payment.setStatus("SUCCESS");
        
        // 调用第三方支付接口的逻辑
        // ...
        
        return paymentRepository.save(payment);
    }
}

8. 配置文件 (application.yml)

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/medical_system
    username: root
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

# 开启Swagger文档
springdoc:
  api-docs:
    path: /v3/api-docs
  swagger-ui:
    path: /swagger-ui.html

9. 运行与测试

  1. 启动应用

    mvn spring-boot:run
    
  2. API测试(使用Postman):

    • 会员注册:POST /api/public/members
    {
      "name": "张三",
      "phone": "13800138000",
      "membershipLevel": "VIP"
    }
    
  3. 访问Swagger文档

    http://localhost:8080/swagger-ui.html
    

10. 扩展功能建议

  1. 健康档案管理

    • 添加体检报告上传功能
    • 建立健康指标跟踪(血压、血糖等)
  2. 套餐订阅系统

    @Entity
    public class HealthPackage {
        @Id
        @GeneratedValue
        private Long id;
        private String packageName;
        @ManyToMany
        private Set<MedicalService> includedServices;
        private BigDecimal price;
    }
    
  3. 消息通知服务

    • 集成短信/邮件提醒预约时间
    • 会员到期前自动提醒续费
  4. 数据分析模块

    • 使用Spring Batch生成月度服务报告
    • 可视化展示会员健康趋势

该系统可作为基础框架,根据实际医疗机构的业务流程进行深度定制开发。

你可能感兴趣的:(spring,boot,python,windows)