From 0e0a3ceb71706110a9c03a2371c601ca049db003 Mon Sep 17 00:00:00 2001 From: 龚焕茏 <2842157468@qq.com> Date: 星期六, 11 五月 2024 16:57:31 +0800 Subject: [PATCH] feat:新增问答模块 --- src/main/java/com/mindskip/xzs/service/impl/TagServiceImpl.java | 1 src/main/java/com/mindskip/xzs/service/QuestionAnswerService.java | 19 +++ src/main/java/com/mindskip/xzs/controller/student/FeedBackController.java | 2 src/main/java/com/mindskip/xzs/controller/student/QuestionAndAnswerController.java | 34 +++++ src/main/java/com/mindskip/xzs/controller/admin/FeedBackController.java | 2 src/main/resources/mapper/QuestionAnswerMapper.xml | 18 +++ src/main/java/com/mindskip/xzs/service/impl/QuestionAnswerServiceImpl.java | 58 +++++++++ src/main/java/com/mindskip/xzs/repository/QuestionAnswerMapper.java | 20 +++ src/main/java/com/mindskip/xzs/domain/QuestionAnswer.java | 33 +++++ src/main/resources/mapper/FeedbackMapper.xml | 3 src/main/java/com/mindskip/xzs/domain/Feedback.java | 9 src/main/java/com/mindskip/xzs/controller/admin/QuestionAnswerController.java | 76 ++++++++++++ src/main/java/com/mindskip/xzs/domain/enums/QuestionAnswerStatusEnum.java | 31 +++++ src/main/java/com/mindskip/xzs/domain/vo/FeedbackVO.java | 2 src/main/java/com/mindskip/xzs/domain/vo/QuestionAnswerVO.java | 30 +++++ 15 files changed, 329 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/mindskip/xzs/controller/admin/FeedBackController.java b/src/main/java/com/mindskip/xzs/controller/admin/FeedBackController.java index 94c4370..43180d2 100644 --- a/src/main/java/com/mindskip/xzs/controller/admin/FeedBackController.java +++ b/src/main/java/com/mindskip/xzs/controller/admin/FeedBackController.java @@ -15,7 +15,7 @@ */ @RequiredArgsConstructor -@RestController("adminFeedBackController") +@RestController("AdminFeedBackController") @RequestMapping("/api/admin/feedback") public class FeedBackController extends BaseApiController { diff --git a/src/main/java/com/mindskip/xzs/controller/admin/QuestionAnswerController.java b/src/main/java/com/mindskip/xzs/controller/admin/QuestionAnswerController.java new file mode 100644 index 0000000..b13a647 --- /dev/null +++ b/src/main/java/com/mindskip/xzs/controller/admin/QuestionAnswerController.java @@ -0,0 +1,76 @@ +package com.mindskip.xzs.controller.admin; + +import com.github.pagehelper.PageInfo; +import com.mindskip.xzs.base.BaseApiController; +import com.mindskip.xzs.base.RestResponse; +import com.mindskip.xzs.domain.QuestionAnswer; +import com.mindskip.xzs.domain.vo.QuestionAnswerVO; +import com.mindskip.xzs.service.QuestionAnswerService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + * @author gonghl + * @since 2024/5/11 涓嬪崍 3:57 + */ + +@RequiredArgsConstructor +@RestController("AdminQuestionAnswerController") +@RequestMapping("/api/admin/questionAnswer") +public class QuestionAnswerController extends BaseApiController { + + private final QuestionAnswerService questionAnswerService; + + /** + * 淇濆瓨銆佷慨鏀归棶绛� + */ + @PostMapping("save") + public RestResponse<String> saveQuestionAnswer(@RequestBody QuestionAnswer questionAnswer) { + questionAnswerService.saveOrUpdate(questionAnswer); + return RestResponse.ok("鎿嶄綔鎴愬姛"); + } + + /** + * 鍒嗛〉鏌ヨ + */ + @PostMapping("page") + public RestResponse<PageInfo<QuestionAnswerVO>> page(@RequestBody QuestionAnswerVO questionAnswer) { + return RestResponse.ok(questionAnswerService.questionAnswerPage(questionAnswer)); + } + + /** + * 鍒犻櫎闂瓟 + */ + @PostMapping("delete/{id}") + public RestResponse<String> delete(@PathVariable Integer id) { + questionAnswerService.removeById(id); + return RestResponse.ok("鎿嶄綔鎴愬姛"); + } + + /** + * 鏌ヨ闂瓟 + */ + @PostMapping("query/{id}") + public RestResponse<QuestionAnswer> query(@PathVariable Integer id) { + return RestResponse.ok(questionAnswerService.getById(id)); + } + + /** + * 淇敼闂瓟 + */ + @PostMapping("update") + public RestResponse<String> update(@RequestBody QuestionAnswer questionAnswer) { + questionAnswerService.updateById(questionAnswer); + return RestResponse.ok("鎿嶄綔鎴愬姛"); + } + + /** + * 淇敼闂瓟鐘舵�� + */ + @PostMapping("updateStatus/{id}") + public RestResponse<String> updateStatus(@PathVariable Integer id) { + questionAnswerService.updateStatus(id); + return RestResponse.ok("鎿嶄綔鎴愬姛"); + } + +} diff --git a/src/main/java/com/mindskip/xzs/controller/student/FeedBackController.java b/src/main/java/com/mindskip/xzs/controller/student/FeedBackController.java index 14a5048..566c178 100644 --- a/src/main/java/com/mindskip/xzs/controller/student/FeedBackController.java +++ b/src/main/java/com/mindskip/xzs/controller/student/FeedBackController.java @@ -16,7 +16,7 @@ */ @RequiredArgsConstructor -@RestController("studentFeedBackController") +@RestController("StudentFeedBackController") @RequestMapping("/api/student/feedback") public class FeedBackController extends BaseApiController { diff --git a/src/main/java/com/mindskip/xzs/controller/student/QuestionAndAnswerController.java b/src/main/java/com/mindskip/xzs/controller/student/QuestionAndAnswerController.java new file mode 100644 index 0000000..2feeac4 --- /dev/null +++ b/src/main/java/com/mindskip/xzs/controller/student/QuestionAndAnswerController.java @@ -0,0 +1,34 @@ +package com.mindskip.xzs.controller.student; + +import com.mindskip.xzs.base.BaseApiController; +import com.mindskip.xzs.base.RestResponse; +import com.mindskip.xzs.domain.QuestionAnswer; +import com.mindskip.xzs.service.QuestionAnswerService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @author gonghl + * @since 2024/5/11 涓嬪崍 3:57 + */ + +@RequiredArgsConstructor +@RestController("StudentQuestionAndAnswerController") +@RequestMapping("/api/student/questionAnswer") +public class QuestionAndAnswerController extends BaseApiController { + + private final QuestionAnswerService questionAnswerService; + + /** + * 鏌ヨ + */ + @PostMapping("list") + public RestResponse<List<QuestionAnswer>> page() { + return RestResponse.ok(questionAnswerService.list()); + } + +} diff --git a/src/main/java/com/mindskip/xzs/domain/Feedback.java b/src/main/java/com/mindskip/xzs/domain/Feedback.java index 7cbb4d0..e8ad14b 100644 --- a/src/main/java/com/mindskip/xzs/domain/Feedback.java +++ b/src/main/java/com/mindskip/xzs/domain/Feedback.java @@ -1,14 +1,10 @@ package com.mindskip.xzs.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; -import java.util.Date; /** * @author gonghl @@ -34,5 +30,8 @@ private LocalDateTime fixTime; + @TableLogic + private Boolean deleted; + private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/src/main/java/com/mindskip/xzs/domain/QuestionAnswer.java b/src/main/java/com/mindskip/xzs/domain/QuestionAnswer.java new file mode 100644 index 0000000..1c29c77 --- /dev/null +++ b/src/main/java/com/mindskip/xzs/domain/QuestionAnswer.java @@ -0,0 +1,33 @@ +package com.mindskip.xzs.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.mindskip.xzs.domain.enums.QuestionAnswerStatusEnum; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author gonghl + * @TableName t_question_answer + */ +@TableName(value = "t_question_answer") +@Data +public class QuestionAnswer implements Serializable { + + @TableId(type = IdType.AUTO) + private Integer id; + + private String question; + + private String answer; + + private QuestionAnswerStatusEnum status; + + @TableLogic + private Boolean deleted; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/mindskip/xzs/domain/enums/QuestionAnswerStatusEnum.java b/src/main/java/com/mindskip/xzs/domain/enums/QuestionAnswerStatusEnum.java new file mode 100644 index 0000000..7bd8a05 --- /dev/null +++ b/src/main/java/com/mindskip/xzs/domain/enums/QuestionAnswerStatusEnum.java @@ -0,0 +1,31 @@ +package com.mindskip.xzs.domain.enums; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Getter; + +/** + * 闂瓟鐘舵�� + * + * @author gonghl + */ +@Getter +public enum QuestionAnswerStatusEnum { + + ENABLE("1", "鍚敤"), + DISABLE("2", "绂佺敤"), + ; + + + @EnumValue // 鏍囨槑璇ュ瓧娈靛瓨鍏ユ暟鎹簱 + private final String code; + + @JsonValue // 鏍囨槑鍦ㄨ浆JSON鏃朵娇鐢ㄨ瀛楁锛屽嵆鍝嶅簲鏃� + private final String desc; + + QuestionAnswerStatusEnum(String code, String desc) { + this.code = code; + this.desc = desc; + } + +} diff --git a/src/main/java/com/mindskip/xzs/domain/vo/FeedbackVO.java b/src/main/java/com/mindskip/xzs/domain/vo/FeedbackVO.java index 2e3f6dd..cefa44c 100644 --- a/src/main/java/com/mindskip/xzs/domain/vo/FeedbackVO.java +++ b/src/main/java/com/mindskip/xzs/domain/vo/FeedbackVO.java @@ -31,6 +31,8 @@ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime fixTime; + private Boolean deleted; + private Integer pageIndex; private Integer pageSize; diff --git a/src/main/java/com/mindskip/xzs/domain/vo/QuestionAnswerVO.java b/src/main/java/com/mindskip/xzs/domain/vo/QuestionAnswerVO.java new file mode 100644 index 0000000..8991f5c --- /dev/null +++ b/src/main/java/com/mindskip/xzs/domain/vo/QuestionAnswerVO.java @@ -0,0 +1,30 @@ +package com.mindskip.xzs.domain.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author gonghl + * @TableName t_question_answer + */ +@Data +public class QuestionAnswerVO implements Serializable { + + @TableId(type = IdType.AUTO) + private Integer id; + + private String question; + + private String answer; + + private Boolean deleted; + + private static final long serialVersionUID = 1L; + + private Integer pageIndex; + + private Integer pageSize; +} \ No newline at end of file diff --git a/src/main/java/com/mindskip/xzs/repository/QuestionAnswerMapper.java b/src/main/java/com/mindskip/xzs/repository/QuestionAnswerMapper.java new file mode 100644 index 0000000..aa04b79 --- /dev/null +++ b/src/main/java/com/mindskip/xzs/repository/QuestionAnswerMapper.java @@ -0,0 +1,20 @@ +package com.mindskip.xzs.repository; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mindskip.xzs.domain.QuestionAnswer; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author gonghl + * @description 閽堝琛ㄣ�恡_question_answer(闂瓟)銆戠殑鏁版嵁搴撴搷浣淢apper + * @createDate 2024-05-11 11:53:55 + * @Entity com.mindskip.xzs.questionAnswer.QuestionAnswer + */ +@Mapper +public interface QuestionAnswerMapper extends BaseMapper<QuestionAnswer> { + +} + + + + diff --git a/src/main/java/com/mindskip/xzs/service/QuestionAnswerService.java b/src/main/java/com/mindskip/xzs/service/QuestionAnswerService.java new file mode 100644 index 0000000..4808151 --- /dev/null +++ b/src/main/java/com/mindskip/xzs/service/QuestionAnswerService.java @@ -0,0 +1,19 @@ +package com.mindskip.xzs.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.github.pagehelper.PageInfo; +import com.mindskip.xzs.domain.QuestionAnswer; +import com.mindskip.xzs.domain.vo.QuestionAnswerVO; + +/** + * @author gonghl + * @description 閽堝琛ㄣ�恡_question_answer(闂瓟)銆戠殑鏁版嵁搴撴搷浣淪ervice + * @createDate 2024-05-11 11:53:55 + */ +public interface QuestionAnswerService extends IService<QuestionAnswer> { + + PageInfo<QuestionAnswerVO> questionAnswerPage(QuestionAnswerVO questionAnswer); + + void updateStatus(Integer id); + +} diff --git a/src/main/java/com/mindskip/xzs/service/impl/QuestionAnswerServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/QuestionAnswerServiceImpl.java new file mode 100644 index 0000000..0694389 --- /dev/null +++ b/src/main/java/com/mindskip/xzs/service/impl/QuestionAnswerServiceImpl.java @@ -0,0 +1,58 @@ +package com.mindskip.xzs.service.impl; + +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.mindskip.xzs.domain.QuestionAnswer; +import com.mindskip.xzs.domain.enums.QuestionAnswerStatusEnum; +import com.mindskip.xzs.domain.vo.QuestionAnswerVO; +import com.mindskip.xzs.repository.QuestionAnswerMapper; +import com.mindskip.xzs.service.QuestionAnswerService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.util.List; + +/** + * @author gonghl + * @description 閽堝琛ㄣ�恡_question_answer(闂瓟)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇 + * @createDate 2024-05-11 11:53:55 + */ +@Service +@RequiredArgsConstructor +public class QuestionAnswerServiceImpl extends ServiceImpl<QuestionAnswerMapper, QuestionAnswer> implements QuestionAnswerService { + + private final QuestionAnswerMapper questionAnswerMapper; + + @Override + public void updateStatus(Integer id) { + new LambdaUpdateChainWrapper<>(questionAnswerMapper) + .eq(QuestionAnswer::getId, id) + .set(QuestionAnswer::getStatus, "1".equals(getById(id).getStatus().getCode()) ? QuestionAnswerStatusEnum.DISABLE : QuestionAnswerStatusEnum.ENABLE) + .update(); + } + + @Override + public PageInfo<QuestionAnswerVO> questionAnswerPage(QuestionAnswerVO questionAnswerVO) { + return PageHelper.startPage(questionAnswerVO.getPageIndex(), questionAnswerVO.getPageSize()).doSelectPageInfo(() -> + new LambdaQueryChainWrapper<>(questionAnswerMapper) + .like(StringUtils.hasText(questionAnswerVO.getQuestion()), QuestionAnswer::getQuestion, questionAnswerVO.getQuestion()) + .or(StringUtils.hasText(questionAnswerVO.getQuestion()), wrapper -> wrapper.like(QuestionAnswer::getAnswer, questionAnswerVO.getQuestion())) + .orderByDesc(QuestionAnswer::getId) + .list()); + } + + @Override + public List<QuestionAnswer> list() { + return new LambdaQueryChainWrapper<>(questionAnswerMapper) + .eq(QuestionAnswer::getStatus, QuestionAnswerStatusEnum.ENABLE.getCode()) + .list(); + } +} + + + + diff --git a/src/main/java/com/mindskip/xzs/service/impl/TagServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/TagServiceImpl.java index c1f8c8b..9938353 100644 --- a/src/main/java/com/mindskip/xzs/service/impl/TagServiceImpl.java +++ b/src/main/java/com/mindskip/xzs/service/impl/TagServiceImpl.java @@ -28,7 +28,6 @@ return PageHelper.startPage(tag.getPageIndex(), tag.getPageSize(), "id desc").doSelectPageInfo(() -> new LambdaQueryChainWrapper<>(baseMapper) .like(StringUtils.hasText(tag.getName()), Tag::getName, tag.getName()) - .eq(Tag::getDeleted, false) .list() ); } diff --git a/src/main/resources/mapper/FeedbackMapper.xml b/src/main/resources/mapper/FeedbackMapper.xml index 6b6c8d0..64180f6 100644 --- a/src/main/resources/mapper/FeedbackMapper.xml +++ b/src/main/resources/mapper/FeedbackMapper.xml @@ -26,7 +26,8 @@ c.real_name as userName from t_feedback a left join t_text_content b on a.content_id = b.id - left join t_user c on a.user_id = c.id and deleted = 0 + left join t_user c on a.user_id = c.id and c.deleted = 0 + where a.deleted = 0 order by id desc </select> </mapper> diff --git a/src/main/resources/mapper/QuestionAnswerMapper.xml b/src/main/resources/mapper/QuestionAnswerMapper.xml new file mode 100644 index 0000000..ab8011f --- /dev/null +++ b/src/main/resources/mapper/QuestionAnswerMapper.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.mindskip.xzs.repository.QuestionAnswerMapper"> + + <resultMap id="BaseResultMap" type="com.mindskip.xzs.domain.QuestionAnswer"> + <id property="id" column="id" jdbcType="INTEGER"/> + <result property="question" column="question" jdbcType="VARCHAR"/> + <result property="answer" column="answer" jdbcType="VARCHAR"/> + <result property="deleted" column="deleted" jdbcType="BIT"/> + </resultMap> + + <sql id="Base_Column_List"> + id,question,answer, + deleted + </sql> +</mapper> -- Gitblit v1.8.0