From 25113aba37939c9eb13011e0b04f7ded3354038f Mon Sep 17 00:00:00 2001 From: voidvoid2004 <2229325663@qq.com> Date: Sun, 22 Jun 2025 20:48:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=9B=9E=E5=A4=8D=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/QuestionController.java | 42 ++++++++++++++ .../controller/ReplyController.java | 42 ++++++++++++++ .../dto/ReplyDTO.java | 30 ++++++++++ .../service/ReplyService.java | 5 ++ .../service/impl/QuestionServiceImpl.java | 1 + .../service/impl/ReplyServiceImpl.java | 56 +++++++++++++++++++ 6 files changed, 176 insertions(+) create mode 100644 src/main/java/com/example/venue_reservation_service/controller/QuestionController.java create mode 100644 src/main/java/com/example/venue_reservation_service/controller/ReplyController.java create mode 100644 src/main/java/com/example/venue_reservation_service/dto/ReplyDTO.java diff --git a/src/main/java/com/example/venue_reservation_service/controller/QuestionController.java b/src/main/java/com/example/venue_reservation_service/controller/QuestionController.java new file mode 100644 index 0000000..c9b8da7 --- /dev/null +++ b/src/main/java/com/example/venue_reservation_service/controller/QuestionController.java @@ -0,0 +1,42 @@ +package com.example.venue_reservation_service.controller; + + +import com.example.venue_reservation_service.dto.QuestionDTO; +import com.example.venue_reservation_service.dto.QuestionQueryDTO; +import com.example.venue_reservation_service.service.QuestionService; +import com.example.venue_reservation_service.vo.Result; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.*; + + +@RestController +@RequestMapping("/question") +@Api("提问管理") +@CrossOrigin +public class QuestionController { + + @Resource + private QuestionService questionService; + + + @ApiOperation("添加提问") + @PostMapping("/create") + public Result create(@RequestBody QuestionDTO dto) { + return questionService.create(dto); + } + + @ApiOperation("用户分页查询提问") + @PostMapping("/user/page") + public Result userPage(@RequestBody QuestionQueryDTO dto) { + return questionService.userPage(dto); + } + + @ApiOperation("管理员分页查询提问") + @PostMapping("/admin/page") + public Result adminPage(@RequestBody QuestionQueryDTO dto) { + return questionService.adminPage(dto); + } + +} diff --git a/src/main/java/com/example/venue_reservation_service/controller/ReplyController.java b/src/main/java/com/example/venue_reservation_service/controller/ReplyController.java new file mode 100644 index 0000000..679e6ac --- /dev/null +++ b/src/main/java/com/example/venue_reservation_service/controller/ReplyController.java @@ -0,0 +1,42 @@ +package com.example.venue_reservation_service.controller; + + +import com.example.venue_reservation_service.domain.Reply; +import com.example.venue_reservation_service.dto.ReplyDTO; +import com.example.venue_reservation_service.service.ReplyService; +import com.example.venue_reservation_service.vo.Result; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 回复记录表 前端控制器 + *

+ * + * @author author + * @since 2025-06-21 + */ +@RestController +@RequestMapping("/reply") +@Api("回复管理") +@CrossOrigin +public class ReplyController { + + @Autowired + private ReplyService replyService; + + @ApiOperation("添加回复") + @PostMapping("/create") + public Result createReply(@RequestBody ReplyDTO dto) { + return replyService.createReply(dto); + } + + @ApiOperation("修改回复") + @PostMapping("/update") + public Result updateReply(@RequestBody ReplyDTO dto) { + return replyService.updateReply(dto); + } + +} diff --git a/src/main/java/com/example/venue_reservation_service/dto/ReplyDTO.java b/src/main/java/com/example/venue_reservation_service/dto/ReplyDTO.java new file mode 100644 index 0000000..98acb87 --- /dev/null +++ b/src/main/java/com/example/venue_reservation_service/dto/ReplyDTO.java @@ -0,0 +1,30 @@ +package com.example.venue_reservation_service.dto; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +@Data +public class ReplyDTO { + + + /** + * 管理员编号 + */ + private Integer adminId; + + /** + * 回复内容 + */ + private String content; + + /** + * 答疑记录编号 + */ + private Integer questionId; + +} diff --git a/src/main/java/com/example/venue_reservation_service/service/ReplyService.java b/src/main/java/com/example/venue_reservation_service/service/ReplyService.java index bcca39a..56e8906 100644 --- a/src/main/java/com/example/venue_reservation_service/service/ReplyService.java +++ b/src/main/java/com/example/venue_reservation_service/service/ReplyService.java @@ -2,6 +2,11 @@ package com.example.venue_reservation_service.service; import com.baomidou.mybatisplus.extension.service.IService; import com.example.venue_reservation_service.domain.Reply; +import com.example.venue_reservation_service.dto.ReplyDTO; +import com.example.venue_reservation_service.vo.Result; public interface ReplyService extends IService { + Result createReply(ReplyDTO dto); + + Result updateReply(ReplyDTO dto); } diff --git a/src/main/java/com/example/venue_reservation_service/service/impl/QuestionServiceImpl.java b/src/main/java/com/example/venue_reservation_service/service/impl/QuestionServiceImpl.java index 8d51ae2..34a890d 100644 --- a/src/main/java/com/example/venue_reservation_service/service/impl/QuestionServiceImpl.java +++ b/src/main/java/com/example/venue_reservation_service/service/impl/QuestionServiceImpl.java @@ -36,6 +36,7 @@ public class QuestionServiceImpl extends ServiceImpl Question question = lambdaQuery() .eq(Question::getDescription, word) + .eq(Question::getUserId, dto.getUserId()) .one(); if(question != null) { diff --git a/src/main/java/com/example/venue_reservation_service/service/impl/ReplyServiceImpl.java b/src/main/java/com/example/venue_reservation_service/service/impl/ReplyServiceImpl.java index 9adc8e9..420b9f6 100644 --- a/src/main/java/com/example/venue_reservation_service/service/impl/ReplyServiceImpl.java +++ b/src/main/java/com/example/venue_reservation_service/service/impl/ReplyServiceImpl.java @@ -1,11 +1,20 @@ package com.example.venue_reservation_service.service.impl; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.baomidou.mybatisplus.extension.toolkit.Db; +import com.example.venue_reservation_service.domain.Question; import com.example.venue_reservation_service.domain.Reply; +import com.example.venue_reservation_service.dto.ReplyDTO; import com.example.venue_reservation_service.service.ReplyService; import com.example.venue_reservation_service.mapper.ReplyMapper; +import com.example.venue_reservation_service.vo.Result; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; +import java.util.Objects; + /** * @author 31586 * @description 针对表【venue_reply(回复记录表)】的数据库操作Service实现 @@ -15,6 +24,53 @@ import org.springframework.stereotype.Service; public class ReplyServiceImpl extends ServiceImpl implements ReplyService{ + @Override + public Result createReply(ReplyDTO dto) { + String content = dto.getContent().trim(); + if (content.isEmpty()) { + return Result.fail("回复内容不能为空"); + } + Reply reply = new Reply(); + BeanUtils.copyProperties(dto, reply); + reply.setCreatedTime(LocalDateTime.now()); + reply.setUpdatedTime(LocalDateTime.now()); + save(reply); + + Db.lambdaUpdate(Question.class) + .set(Question::getStatus, 1) + .eq(Question::getId, dto.getQuestionId()) + .update(); + + return Result.ok().message("保存回复成功"); + } + + @Override + public Result updateReply( ReplyDTO dto) { + String content = dto.getContent().trim(); + if (content.isEmpty()) { + return Result.fail("回复内容不能为空"); + } + + String oldContent = lambdaQuery() + .eq(Reply::getQuestionId, dto.getQuestionId()) + .eq(Reply::getAdminId, dto.getAdminId()) + .one().getContent(); + + if(Objects.equals(oldContent, content)) { + return Result.fail().message("回复内容未修改"); + } + + lambdaUpdate() + .set(Reply::getContent, content) + .set(Reply::getUpdatedTime, LocalDateTime.now()) + .eq(Reply::getQuestionId, dto.getQuestionId()) + .eq(Reply::getAdminId, dto.getAdminId()) + .update(); + + + return Result.ok().message("保存回复成功"); + + } }