From ef18b12eb1a52b1117c915e4169ddfb63b4fb95d Mon Sep 17 00:00:00 2001 From: Administrator Date: Sat, 11 Jul 2026 10:02:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=95=99=E7=BB=83?= =?UTF-8?q?=E9=80=80=E5=87=BA/=E5=A4=8D=E8=81=8C/=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BF=AE=E5=A4=8DOGNL=E8=A1=A8?= =?UTF-8?q?=E8=BE=BE=E5=BC=8F=E8=AF=AD=E6=B3=95=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../stlserver/controller/CoachController.java | 34 ++++++++--- .../edu/situ/stlserver/dao/CoachMapper.java | 17 ++++-- .../situ/stlserver/model/dto/CoachAddDTO.java | 17 ++++++ .../stlserver/model/dto/CoachQueryDTO.java | 16 +++++ .../situ/stlserver/service/CoachService.java | 7 ++- .../service/impl/CoachServiceImpl.java | 59 ++++++++++++++++++- src/main/resources/application-dev.yaml | 7 ++- 8 files changed, 140 insertions(+), 19 deletions(-) create mode 100644 src/main/java/edu/situ/stlserver/model/dto/CoachAddDTO.java create mode 100644 src/main/java/edu/situ/stlserver/model/dto/CoachQueryDTO.java diff --git a/pom.xml b/pom.xml index 87d0b7f..2959d26 100644 --- a/pom.xml +++ b/pom.xml @@ -65,7 +65,7 @@ org.springdoc springdoc-openapi-starter-webmvc-ui - 2.5.0 + 2.8.16 com.github.pagehelper diff --git a/src/main/java/edu/situ/stlserver/controller/CoachController.java b/src/main/java/edu/situ/stlserver/controller/CoachController.java index 2db0612..df5d415 100644 --- a/src/main/java/edu/situ/stlserver/controller/CoachController.java +++ b/src/main/java/edu/situ/stlserver/controller/CoachController.java @@ -1,14 +1,13 @@ package edu.situ.stlserver.controller; -import edu.situ.stlserver.dao.CoachMapper; -import edu.situ.stlserver.model.entity.Coach; +import edu.situ.stlserver.model.dto.CoachAddDTO; +import edu.situ.stlserver.model.dto.CoachQueryDTO; import edu.situ.stlserver.model.vo.HttpResult; import edu.situ.stlserver.service.CoachService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/coach") @@ -19,8 +18,29 @@ public class CoachController { @GetMapping - public HttpResult getByPage(Integer page , Integer limit , Coach coach) + public HttpResult getByPage(Integer page , Integer limit , CoachQueryDTO coachQueryDTO) { - return HttpResult.success(coachService.getByPage( page,limit,coach)); + return HttpResult.success(coachService.getByPage( page,limit, coachQueryDTO)); + } + + @PutMapping("/{id}/quit") + public HttpResult quit(@PathVariable Integer id) + { + coachService.quit(id); + return HttpResult.success(); + } + + @PutMapping("/{id}/rejoin") + public HttpResult rejoin(@PathVariable Integer id) + { + coachService.rejoin(id); + return HttpResult.success(); + } + + @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public HttpResult add(CoachAddDTO coachAddDTO) + { + coachService.add(coachAddDTO); + return HttpResult.success(); } } diff --git a/src/main/java/edu/situ/stlserver/dao/CoachMapper.java b/src/main/java/edu/situ/stlserver/dao/CoachMapper.java index 8270c43..b91025d 100644 --- a/src/main/java/edu/situ/stlserver/dao/CoachMapper.java +++ b/src/main/java/edu/situ/stlserver/dao/CoachMapper.java @@ -3,11 +3,8 @@ package edu.situ.stlserver.dao; import edu.situ.stlserver.model.entity.Coach; -import edu.situ.stlserver.model.query.CoachQuery; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; +import edu.situ.stlserver.model.dto.CoachQueryDTO; +import org.apache.ibatis.annotations.*; import java.util.List; @@ -32,8 +29,16 @@ public interface CoachMapper { "", "" }) - List select(CoachQuery coachQuery); + List select(CoachQueryDTO coachQueryDTO); @Update(value = "UPDATE `coaches` SET `quit_date` = #{quitDate} WHERE `id` = #{id}") void quit(@Param("id") Integer id,@Param("quitDate") String quitDate); + + + @Update(value = "UPDATE `coaches` SET `quit_date` = null WHERE `id` = #{id}") + void rejoin(Integer id); + + @Insert(value = "INSERT INTO `coaches`(`name`, `sex`, `remark`, `avatar`) VALUES (#{name}, #{sex}, #{remark}, #{avatar})") + @Options(useGeneratedKeys = true, keyProperty = "id" , keyColumn = "id") + void insert(Coach coach); } diff --git a/src/main/java/edu/situ/stlserver/model/dto/CoachAddDTO.java b/src/main/java/edu/situ/stlserver/model/dto/CoachAddDTO.java new file mode 100644 index 0000000..950ae17 --- /dev/null +++ b/src/main/java/edu/situ/stlserver/model/dto/CoachAddDTO.java @@ -0,0 +1,17 @@ +package edu.situ.stlserver.model.dto; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.web.multipart.MultipartFile; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class CoachAddDTO { + private String name; + private Integer sex; + private String remark; + private MultipartFile file; +} diff --git a/src/main/java/edu/situ/stlserver/model/dto/CoachQueryDTO.java b/src/main/java/edu/situ/stlserver/model/dto/CoachQueryDTO.java new file mode 100644 index 0000000..437210b --- /dev/null +++ b/src/main/java/edu/situ/stlserver/model/dto/CoachQueryDTO.java @@ -0,0 +1,16 @@ +package edu.situ.stlserver.model.dto; + + +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + + +@ToString +@NoArgsConstructor +@Data +public class CoachQueryDTO { + private String name; + private Integer sex; + private Integer status; +} diff --git a/src/main/java/edu/situ/stlserver/service/CoachService.java b/src/main/java/edu/situ/stlserver/service/CoachService.java index 6da5907..0d6d330 100644 --- a/src/main/java/edu/situ/stlserver/service/CoachService.java +++ b/src/main/java/edu/situ/stlserver/service/CoachService.java @@ -1,7 +1,9 @@ package edu.situ.stlserver.service; import com.github.pagehelper.PageInfo; +import edu.situ.stlserver.model.dto.CoachAddDTO; import edu.situ.stlserver.model.entity.Coach; +import edu.situ.stlserver.model.dto.CoachQueryDTO; import java.util.List; @@ -9,5 +11,8 @@ import java.util.List; public interface CoachService { List getAll(); - PageInfo getByPage(Integer page,Integer limit,Coach coach); + PageInfo getByPage(Integer page, Integer limit, CoachQueryDTO coachQueryDTO); + void quit(Integer id); + void rejoin(Integer id); + void add(CoachAddDTO coachAddDTO); } diff --git a/src/main/java/edu/situ/stlserver/service/impl/CoachServiceImpl.java b/src/main/java/edu/situ/stlserver/service/impl/CoachServiceImpl.java index e2003b2..0a4f77c 100644 --- a/src/main/java/edu/situ/stlserver/service/impl/CoachServiceImpl.java +++ b/src/main/java/edu/situ/stlserver/service/impl/CoachServiceImpl.java @@ -1,18 +1,30 @@ package edu.situ.stlserver.service.impl; +import cn.hutool.core.date.DateUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import edu.situ.stlserver.dao.CoachMapper; +import edu.situ.stlserver.model.dto.CoachAddDTO; import edu.situ.stlserver.model.entity.Coach; +import edu.situ.stlserver.model.dto.CoachQueryDTO; import edu.situ.stlserver.service.CoachService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; +import java.io.File; import java.util.List; +import java.util.UUID; @Service public class CoachServiceImpl implements CoachService { + @Value("${upload.base-path}") + private String baseUploadPath; + @Value("${upload.image.coach}") + private String coachUploadPath; + @Autowired private CoachMapper coachMapper; @@ -22,10 +34,53 @@ public class CoachServiceImpl implements CoachService { } @Override - public PageInfo getByPage(Integer page, Integer limit, Coach coach) { + public PageInfo getByPage(Integer page, Integer limit, CoachQueryDTO coachQueryDTO) { if(page == null) page=1; if(limit == null) limit=10; PageHelper.startPage(page,limit); - return new PageInfo<>(coachMapper.select(coach)); + return new PageInfo<>(coachMapper.select(coachQueryDTO)); } + + @Override + public void quit(Integer id) { + coachMapper.quit(id, DateUtil.today()); + } + + @Override + public void rejoin(Integer id) { + coachMapper.rejoin(id); + } + + @Override + public void add(CoachAddDTO coachAddDTO) { + Coach coach = new Coach(); + coach.setName(coachAddDTO.getName()); + coach.setSex(coachAddDTO.getSex()); + coach.setRemark(coachAddDTO.getRemark()); + String avatar; + System.out.println(coachAddDTO.getFile()); + if (coachAddDTO.getFile() != null && !coachAddDTO.getFile().isEmpty()) + { + try { + avatar = saveAvatar(coachAddDTO.getFile()); + coach.setAvatar(avatar); + } catch (Exception e) + { + throw new RuntimeException("保存头像失败"); + } + } + coachMapper.insert(coach); + + } + + private String saveAvatar(MultipartFile file) throws Exception { + String originFilename = file.getOriginalFilename(); + String suffix = originFilename.substring(originFilename.lastIndexOf(".")); + String filename = UUID.randomUUID().toString() + suffix; + File dir = new File(baseUploadPath + coachUploadPath); + if (!dir.exists()) {dir.mkdirs();} + file.transferTo(new File(baseUploadPath + coachUploadPath + filename)); + return coachUploadPath + filename; + } + } diff --git a/src/main/resources/application-dev.yaml b/src/main/resources/application-dev.yaml index 7060cb4..c3e088c 100644 --- a/src/main/resources/application-dev.yaml +++ b/src/main/resources/application-dev.yaml @@ -25,5 +25,8 @@ mybatis: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl -file: - path: ??? \ No newline at end of file +upload: + base-path: D:/stl-static + image: + coach: /images/coach/ + member: /imges/member/