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 { src/main/java/com/mindskip/xzs/controller/admin/QuestionAnswerController.java
New file @@ -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("操作成功"); } } 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 { src/main/java/com/mindskip/xzs/controller/student/QuestionAndAnswerController.java
New file @@ -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()); } } 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; } src/main/java/com/mindskip/xzs/domain/QuestionAnswer.java
New file @@ -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; } src/main/java/com/mindskip/xzs/domain/enums/QuestionAnswerStatusEnum.java
New file @@ -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; } } 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; src/main/java/com/mindskip/xzs/domain/vo/QuestionAnswerVO.java
New file @@ -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; } src/main/java/com/mindskip/xzs/repository/QuestionAnswerMapper.java
New file @@ -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 针对表【t_question_answer(问答)】的数据库操作Mapper * @createDate 2024-05-11 11:53:55 * @Entity com.mindskip.xzs.questionAnswer.QuestionAnswer */ @Mapper public interface QuestionAnswerMapper extends BaseMapper<QuestionAnswer> { } src/main/java/com/mindskip/xzs/service/QuestionAnswerService.java
New file @@ -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 针对表【t_question_answer(问答)】的数据库操作Service * @createDate 2024-05-11 11:53:55 */ public interface QuestionAnswerService extends IService<QuestionAnswer> { PageInfo<QuestionAnswerVO> questionAnswerPage(QuestionAnswerVO questionAnswer); void updateStatus(Integer id); } src/main/java/com/mindskip/xzs/service/impl/QuestionAnswerServiceImpl.java
New file @@ -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 针对表【t_question_answer(问答)】的数据库操作Service实现 * @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(); } } 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() ); } 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> src/main/resources/mapper/QuestionAnswerMapper.xml
New file @@ -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>