基于springboot的养老院管理系统活动报名代码示例
时间: 2023-09-08 09:15:23 浏览: 108
以下是一个基于Spring Boot的养老院管理系统活动报名的代码示例:
- ActivityController.java
@RestController
@RequestMapping("/activity")
public class ActivityController {
@Autowired
private ActivityService activityService;
// 获取所有活动
@GetMapping("/")
public List<Activity> getAllActivities() {
return activityService.getAllActivities();
}
// 获取指定 id 的活动
@GetMapping("/{id}")
public Activity getActivityById(@PathVariable Long id) {
return activityService.getActivityById(id);
}
// 创建活动
@PostMapping("/")
public Activity createActivity(@RequestBody Activity activity) {
return activityService.createActivity(activity);
}
// 报名活动
@PostMapping("/{id}/enroll")
public void enrollActivity(@PathVariable Long id, @RequestBody EnrollInfo enrollInfo) {
activityService.enrollActivity(id, enrollInfo);
}
}
- Activity.java
@Entity
@Table(name = "activity")
public class Activity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "description")
private String description;
@Column(name = "start_time")
private LocalDateTime startTime;
@Column(name = "end_time")
private LocalDateTime endTime;
@Column(name = "max_enroll")
private Integer maxEnroll;
@OneToMany(mappedBy = "activity", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Enrollment> enrollments = new ArrayList<>();
// getters and setters
}
- Enrollment.java
@Entity
@Table(name = "enrollment")
public class Enrollment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "activity_id")
private Activity activity;
@Column(name = "name")
private String name;
@Column(name = "phone")
private String phone;
// getters and setters
}
- ActivityService.java
@Service
public class ActivityService {
@Autowired
private ActivityRepository activityRepository;
// 获取所有活动
public List<Activity> getAllActivities() {
return activityRepository.findAll();
}
// 获取指定 id 的活动
public Activity getActivityById(Long id) {
return activityRepository.findById(id).orElseThrow(() -> new RuntimeException("Activity not found"));
}
// 创建活动
public Activity createActivity(Activity activity) {
return activityRepository.save(activity);
}
// 报名活动
public void enrollActivity(Long id, EnrollInfo enrollInfo) {
Activity activity = getActivityById(id);
if (activity.getEnrollments().size() >= activity.getMaxEnroll()) {
throw new RuntimeException("Activity is full");
}
Enrollment enrollment = new Enrollment();
enrollment.setName(enrollInfo.getName());
enrollment.setPhone(enrollInfo.getPhone());
enrollment.setActivity(activity);
activity.getEnrollments().add(enrollment);
activityRepository.save(activity);
}
}
- EnrollInfo.java
public class EnrollInfo {
private String name;
private String phone;
// getters and setters
}
- ActivityRepository.java
public interface ActivityRepository extends JpaRepository<Activity, Long> {
}
这个示例中,我们定义了一个 Activity 实体类,它有一个名为 enrollments 的属性,表示已报名的人数,同时它也是一个 JPA 实体类,被映射到数据库中。我们还定义了一个 Enrollment 实体类,它表示一次报名,也是一个 JPA 实体类。在 ActivityService 类中,我们定义了报名活动的方法,并且使用了 JPA 的级联和孤儿删除特性,确保了报名信息和活动信息的一致性。最后,我们在 ActivityController 中定义了活动的 RESTful 接口,包括获取所有活动、获取指定 id 的活动、创建活动和报名活动。
相关推荐















