diff --git a/src/main/java/github/benjamin/equipreservebackend/controller/TeamController.java b/src/main/java/github/benjamin/equipreservebackend/controller/TeamController.java index 45ed233..163d4e2 100644 --- a/src/main/java/github/benjamin/equipreservebackend/controller/TeamController.java +++ b/src/main/java/github/benjamin/equipreservebackend/controller/TeamController.java @@ -1,13 +1,13 @@ package github.benjamin.equipreservebackend.controller; -import github.benjamin.equipreservebackend.mapper.TeamMapper; +import github.benjamin.equipreservebackend.dto.TeamDTO; import github.benjamin.equipreservebackend.response.ResponseResult; import github.benjamin.equipreservebackend.service.TeamService; +import github.benjamin.equipreservebackend.vo.TeamLabelVO; import github.benjamin.equipreservebackend.vo.TeamVO; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -18,9 +18,35 @@ public class TeamController { private final TeamService teamService; + @GetMapping("/team-label") + public ResponseResult> getTeamLabel() { + return ResponseResult.success(teamService.getTeamLabel()); + } + @GetMapping("/teams") public ResponseResult> getTeams() { return ResponseResult.success(teamService.getTeams()); } + @PreAuthorize("hasRole('ADMIN')") + @DeleteMapping("/team/{id}") + public ResponseResult deleteTeam(@PathVariable("id") Long id) { + teamService.deleteTeam(id); + return ResponseResult.success(); + } + + @PreAuthorize("hasRole('ADMIN')") + @PostMapping("/team") + public ResponseResult addTeam(@RequestBody TeamDTO dto) { + teamService.addTeam(dto.getName()); + return ResponseResult.success(); + } + + @PreAuthorize("hasRole('ADMIN')") + @PutMapping("/team/{id}") + public ResponseResult updateTeam(@PathVariable Long id, + @RequestBody TeamDTO dto) { + teamService.updateTeam(id, dto.getName()); + return ResponseResult.success(); + } } diff --git a/src/main/java/github/benjamin/equipreservebackend/dto/TeamDTO.java b/src/main/java/github/benjamin/equipreservebackend/dto/TeamDTO.java new file mode 100644 index 0000000..8a58cd5 --- /dev/null +++ b/src/main/java/github/benjamin/equipreservebackend/dto/TeamDTO.java @@ -0,0 +1,10 @@ +package github.benjamin.equipreservebackend.dto; + +import lombok.Data; + +@Data +public class TeamDTO { + + private String name; + +} diff --git a/src/main/java/github/benjamin/equipreservebackend/entity/Team.java b/src/main/java/github/benjamin/equipreservebackend/entity/Team.java index 94360b2..6fbb69e 100644 --- a/src/main/java/github/benjamin/equipreservebackend/entity/Team.java +++ b/src/main/java/github/benjamin/equipreservebackend/entity/Team.java @@ -2,16 +2,20 @@ package github.benjamin.equipreservebackend.entity; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import lombok.NoArgsConstructor; import java.time.LocalDateTime; @Data @TableName("teams") +@NoArgsConstructor public class Team { private Long id; private String name; - private Long leaderId; private LocalDateTime createdTime; + public Team(String name) { + this.name = name; + } } diff --git a/src/main/java/github/benjamin/equipreservebackend/mapper/TeamMapper.java b/src/main/java/github/benjamin/equipreservebackend/mapper/TeamMapper.java index ed45f0d..f2be3ca 100644 --- a/src/main/java/github/benjamin/equipreservebackend/mapper/TeamMapper.java +++ b/src/main/java/github/benjamin/equipreservebackend/mapper/TeamMapper.java @@ -2,8 +2,12 @@ package github.benjamin.equipreservebackend.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import github.benjamin.equipreservebackend.entity.Team; +import github.benjamin.equipreservebackend.vo.TeamVO; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface TeamMapper extends BaseMapper { + List getTeams(); } diff --git a/src/main/java/github/benjamin/equipreservebackend/service/TeamService.java b/src/main/java/github/benjamin/equipreservebackend/service/TeamService.java index 6e6810a..fa588f4 100644 --- a/src/main/java/github/benjamin/equipreservebackend/service/TeamService.java +++ b/src/main/java/github/benjamin/equipreservebackend/service/TeamService.java @@ -1,9 +1,18 @@ package github.benjamin.equipreservebackend.service; +import github.benjamin.equipreservebackend.vo.TeamLabelVO; import github.benjamin.equipreservebackend.vo.TeamVO; import java.util.List; public interface TeamService { + List getTeamLabel(); + List getTeams(); + + void deleteTeam(Long id); + + void addTeam(String name); + + void updateTeam(Long id, String name); } diff --git a/src/main/java/github/benjamin/equipreservebackend/service/impl/TeamServiceImpl.java b/src/main/java/github/benjamin/equipreservebackend/service/impl/TeamServiceImpl.java index ca75333..19e883f 100644 --- a/src/main/java/github/benjamin/equipreservebackend/service/impl/TeamServiceImpl.java +++ b/src/main/java/github/benjamin/equipreservebackend/service/impl/TeamServiceImpl.java @@ -1,8 +1,10 @@ package github.benjamin.equipreservebackend.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import github.benjamin.equipreservebackend.entity.Team; import github.benjamin.equipreservebackend.mapper.TeamMapper; import github.benjamin.equipreservebackend.service.TeamService; +import github.benjamin.equipreservebackend.vo.TeamLabelVO; import github.benjamin.equipreservebackend.vo.TeamVO; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -16,10 +18,32 @@ public class TeamServiceImpl implements TeamService { private final TeamMapper teamMapper; @Override - public List getTeams() { + public List getTeamLabel() { List teams = teamMapper.selectList(null); - return teams.stream().map(TeamVO::new).toList(); + return teams.stream().map(TeamLabelVO::new).toList(); + } + + @Override + public List getTeams() { + return teamMapper.getTeams(); + } + + @Override + public void deleteTeam(Long id) { + teamMapper.deleteById(id); + } + + @Override + public void addTeam(String name) { + teamMapper.insert(new Team(name)); + } + + @Override + public void updateTeam(Long id, String name) { + teamMapper.update(new LambdaUpdateWrapper() + .eq(Team::getId, id) + .set(Team::getName, name)); } } diff --git a/src/main/java/github/benjamin/equipreservebackend/vo/TeamLabelVO.java b/src/main/java/github/benjamin/equipreservebackend/vo/TeamLabelVO.java new file mode 100644 index 0000000..e16817d --- /dev/null +++ b/src/main/java/github/benjamin/equipreservebackend/vo/TeamLabelVO.java @@ -0,0 +1,18 @@ +package github.benjamin.equipreservebackend.vo; + +import github.benjamin.equipreservebackend.entity.Team; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +public class TeamLabelVO { + + private String label; + private String value; + + public TeamLabelVO(Team t) { + this.label = t.getName(); + this.value = t.getId().toString(); + } +} diff --git a/src/main/java/github/benjamin/equipreservebackend/vo/TeamVO.java b/src/main/java/github/benjamin/equipreservebackend/vo/TeamVO.java index 1208846..f33179c 100644 --- a/src/main/java/github/benjamin/equipreservebackend/vo/TeamVO.java +++ b/src/main/java/github/benjamin/equipreservebackend/vo/TeamVO.java @@ -1,18 +1,15 @@ package github.benjamin.equipreservebackend.vo; -import github.benjamin.equipreservebackend.entity.Team; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; -import lombok.NoArgsConstructor; @Data -@NoArgsConstructor public class TeamVO { - private String label; - private String value; + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + private String name; + private Integer size; - public TeamVO(Team t) { - this.label = t.getName(); - this.value = t.getId().toString(); - } } diff --git a/src/main/resources/mapper/TeamMapper.xml b/src/main/resources/mapper/TeamMapper.xml new file mode 100644 index 0000000..a679798 --- /dev/null +++ b/src/main/resources/mapper/TeamMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + \ No newline at end of file