From 14dcc9de06c7321740f96cf1b915b84894bddf25 Mon Sep 17 00:00:00 2001 From: Sparkfreeman <2440444538@qq.com> Date: Wed, 3 Jul 2024 15:03:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8D=E7=9F=A5=E9=81=93=E6=9C=89=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E9=97=AE=E9=A2=98=E5=85=88=E6=8F=90=E4=BA=A4=E4=B8=80?= =?UTF-8?q?=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MeetingController.java | 77 +++++++++++++++++++ .../MeetingManagement/model/Meeting.java | 48 ++++++++++++ .../repository/MeetingRepository.java | 7 ++ .../service/MeetingService.java | 65 ++++++++++++++++ 4 files changed, 197 insertions(+) create mode 100644 src/main/java/org/cmh/backend/MeetingManagement/controller/MeetingController.java create mode 100644 src/main/java/org/cmh/backend/MeetingManagement/model/Meeting.java create mode 100644 src/main/java/org/cmh/backend/MeetingManagement/repository/MeetingRepository.java create mode 100644 src/main/java/org/cmh/backend/MeetingManagement/service/MeetingService.java diff --git a/src/main/java/org/cmh/backend/MeetingManagement/controller/MeetingController.java b/src/main/java/org/cmh/backend/MeetingManagement/controller/MeetingController.java new file mode 100644 index 0000000..5546982 --- /dev/null +++ b/src/main/java/org/cmh/backend/MeetingManagement/controller/MeetingController.java @@ -0,0 +1,77 @@ +package org.cmh.backend.MeetingManagement.controller; + +import org.cmh.backend.MeetingManagement.model.Meeting; +import org.cmh.backend.MeetingManagement.service.MeetingService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/meetings") +public class MeetingController { + + @Autowired + private MeetingService meetingService; + + @GetMapping("/listAll") + public ResponseEntity> listAll() { + List data = meetingService.getAllMeetings(); + return ResponseEntity.ok(data); + } + + @PostMapping("/addMeeting") + public ResponseEntity add(@RequestBody Map credentials) { + try { + Meeting meeting = new Meeting(); + if (credentials.get("id") != null) { + meeting.setId(Long.parseLong(credentials.get("id"))); + } + meeting.setName(credentials.get("name")); + meeting.setOrganizer(credentials.get("organizer")); + meeting.setStartTime(LocalDateTime.parse(credentials.get("startTime"))); + meeting.setEndTime(LocalDateTime.parse(credentials.get("endTime"))); + meeting.setContent(credentials.get("content")); + meeting.setStatus(credentials.get("status")); + + Meeting meetingAdd = meetingService.createMeeting(meeting); + return new ResponseEntity<>(meetingAdd, HttpStatus.CREATED); + } catch (Exception e) { + return new ResponseEntity<>(null, HttpStatus.BAD_REQUEST); + } + } + + @PostMapping("/deleteMeeting") + public ResponseEntity delete(@RequestBody Map credentials) { + try { + meetingService.deleteMeeting(Long.valueOf(credentials.get("id"))); + return new ResponseEntity<>("success", HttpStatus.OK); + } catch (Exception e) { + return new ResponseEntity<>("failure", HttpStatus.BAD_REQUEST); + } + } + + @PostMapping("/updateMeeting") + public ResponseEntity update(@RequestBody Meeting meeting) { + try { + Meeting updatedMeeting = meetingService.updateMeeting(meeting.getId(), meeting); + return new ResponseEntity<>(updatedMeeting, HttpStatus.OK); + } catch (Exception e) { + return new ResponseEntity<>(null, HttpStatus.BAD_REQUEST); + } + } + + @PostMapping("/getMeetingById") + public ResponseEntity getById(@RequestBody Map credentials) { + try { + Meeting meeting = meetingService.getMeetingById(Long.valueOf(credentials.get("id"))).orElse(null); + return new ResponseEntity<>(meeting, HttpStatus.OK); + } catch (Exception e) { + return new ResponseEntity<>(null, HttpStatus.BAD_REQUEST); + } + } +} \ No newline at end of file diff --git a/src/main/java/org/cmh/backend/MeetingManagement/model/Meeting.java b/src/main/java/org/cmh/backend/MeetingManagement/model/Meeting.java new file mode 100644 index 0000000..964938c --- /dev/null +++ b/src/main/java/org/cmh/backend/MeetingManagement/model/Meeting.java @@ -0,0 +1,48 @@ +package org.cmh.backend.MeetingManagement.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import lombok.Getter; +import lombok.Setter; +import java.time.LocalDateTime; + +@Setter +@Getter +@Entity +public class Meeting { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String name; + private String organizer; + private LocalDateTime startTime; + private LocalDateTime endTime; + private String content; + private String status; + + public Meeting() {} + + public Meeting(String name, String organizer, LocalDateTime startTime, LocalDateTime endTime, String content, String status) { + this.name = name; + this.organizer = organizer; + this.startTime = startTime; + this.endTime = endTime; + this.content = content; + this.status = status; + } + + @Override + public String toString() { + return "Meeting{" + + "id=" + id + + ", name='" + name + '\'' + + ", organizer='" + organizer + '\'' + + ", startTime=" + startTime + + ", endTime=" + endTime + + ", content='" + content + '\'' + + ", status='" + status + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/org/cmh/backend/MeetingManagement/repository/MeetingRepository.java b/src/main/java/org/cmh/backend/MeetingManagement/repository/MeetingRepository.java new file mode 100644 index 0000000..a51188d --- /dev/null +++ b/src/main/java/org/cmh/backend/MeetingManagement/repository/MeetingRepository.java @@ -0,0 +1,7 @@ +package org.cmh.backend.MeetingManagement.repository; + +import org.cmh.backend.MeetingManagement.model.Meeting; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface MeetingRepository extends JpaRepository { +} \ No newline at end of file diff --git a/src/main/java/org/cmh/backend/MeetingManagement/service/MeetingService.java b/src/main/java/org/cmh/backend/MeetingManagement/service/MeetingService.java new file mode 100644 index 0000000..ae1fadb --- /dev/null +++ b/src/main/java/org/cmh/backend/MeetingManagement/service/MeetingService.java @@ -0,0 +1,65 @@ +package org.cmh.backend.MeetingManagement.service; + +import org.cmh.backend.MeetingManagement.model.Meeting; +import org.cmh.backend.MeetingManagement.repository.MeetingRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class MeetingService { + @Autowired + private MeetingRepository meetingRepository; + + public List getAllMeetings() { + return meetingRepository.findAll(); + } + + public Optional getMeetingById(Long id) { + return meetingRepository.findById(id); + } + + public Meeting createMeeting(Meeting meeting) { + validateMeeting(meeting); + return meetingRepository.save(meeting); + } + + public Meeting updateMeeting(Long id, Meeting meetingDetails) { + validateMeeting(meetingDetails); + Meeting meeting = meetingRepository.findById(id) + .orElseThrow(() -> new RuntimeException("Meeting not found with id " + id)); + meeting.setName(meetingDetails.getName()); + meeting.setOrganizer(meetingDetails.getOrganizer()); + meeting.setStartTime(meetingDetails.getStartTime()); + meeting.setEndTime(meetingDetails.getEndTime()); + meeting.setContent(meetingDetails.getContent()); + meeting.setStatus(meetingDetails.getStatus()); + return meetingRepository.save(meeting); + } + + public void deleteMeeting(Long id) { + Meeting meeting = meetingRepository.findById(id) + .orElseThrow(() -> new RuntimeException("Meeting not found with id " + id)); + meetingRepository.delete(meeting); + } + + private void validateMeeting(Meeting meeting) { + if (meeting.getName() == null || meeting.getName().isEmpty()) { + throw new RuntimeException("会议名称不能为空"); + } + if (meeting.getOrganizer() == null || meeting.getOrganizer().isEmpty()) { + throw new RuntimeException("组织者不能为空"); + } + if (meeting.getStartTime() == null) { + throw new RuntimeException("开始时间不能为空"); + } + if (meeting.getEndTime() == null) { + throw new RuntimeException("结束时间不能为空"); + } + if (meeting.getStatus() == null || meeting.getStatus().isEmpty()) { + throw new RuntimeException("状态不能为空"); + } + } +} \ No newline at end of file