From 49429bad1036c81c056faeadfa009c53ba777fad Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期二, 07 五月 2024 18:02:11 +0800
Subject: [PATCH] feat:反馈保存、展示、处理、删除
---
src/main/java/com/mindskip/xzs/repository/FeedbackMapper.java | 24 ++++
src/main/java/com/mindskip/xzs/viewmodel/admin/question/ExamQuestionVO.java | 1
src/main/resources/mapper/FeedbackMapper.xml | 32 ++++++
src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java | 6 +
src/main/java/com/mindskip/xzs/domain/Feedback.java | 38 +++++++
src/main/java/com/mindskip/xzs/service/FeedbackService.java | 20 ++++
src/main/java/com/mindskip/xzs/controller/admin/FeedBackController.java | 38 +++++++
src/main/java/com/mindskip/xzs/domain/vo/FeedbackVO.java | 39 +++++++
src/main/java/com/mindskip/xzs/service/impl/FeedbackServiceImpl.java | 57 +++++++++++
9 files changed, 254 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java b/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
index 103f7e8..5228899 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
@@ -17,6 +17,7 @@
import com.mindskip.xzs.utility.PageInfoHelper;
import com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM;
import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -107,7 +108,10 @@
List<UserDepartment> userDepartments = userDepartmentMapper.selectByDepartmentId(e.getId());
List<User> list = new ArrayList<>();
for (UserDepartment userDepartment : userDepartments) {
- list.add(userService.getUserById(userDepartment.getUserId()));
+ User user = userService.getUserById(userDepartment.getUserId());
+ if (ObjectUtils.isNotEmpty(user)) {
+ list.add(user);
+ }
}
departmentVO.setUserList(list);
departmentVO.setDepartment(e);
diff --git a/src/main/java/com/mindskip/xzs/controller/admin/FeedBackController.java b/src/main/java/com/mindskip/xzs/controller/admin/FeedBackController.java
new file mode 100644
index 0000000..5714cd0
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/controller/admin/FeedBackController.java
@@ -0,0 +1,38 @@
+package com.mindskip.xzs.controller.admin;
+
+import com.mindskip.xzs.base.BaseApiController;
+import com.mindskip.xzs.base.RestResponse;
+import com.mindskip.xzs.domain.vo.FeedbackVO;
+import com.mindskip.xzs.service.FeedbackService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author gonghl
+ * @since 2024/5/7 涓嬪崍 3:57
+ */
+
+@RequiredArgsConstructor
+@RestController("studentFeedBackController")
+@RequestMapping("/api/student/feedback")
+public class FeedBackController extends BaseApiController {
+
+ private final FeedbackService feedbackService;
+
+ /**
+ * 淇濆瓨鍙嶉
+ *
+ * @param feedbackVO 鏁版嵁
+ * @return 鎿嶄綔缁撴灉
+ */
+ @PostMapping("saveFeedback")
+ public RestResponse<String> saveFeedback(@RequestBody FeedbackVO feedbackVO) {
+ feedbackVO.setUserId(getCurrentUser().getId());
+ feedbackService.saveFeedback(feedbackVO);
+ return RestResponse.ok("鎿嶄綔鎴愬姛");
+ }
+
+}
diff --git a/src/main/java/com/mindskip/xzs/domain/Feedback.java b/src/main/java/com/mindskip/xzs/domain/Feedback.java
new file mode 100644
index 0000000..7cbb4d0
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/domain/Feedback.java
@@ -0,0 +1,38 @@
+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 lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author gonghl
+ * @TableName t_feedback
+ */
+@TableName(value = "t_feedback")
+@Data
+public class Feedback implements Serializable {
+
+ @TableId(type = IdType.AUTO)
+ private Integer id;
+
+ private Integer questionId;
+
+ private Integer contentId;
+
+ @TableField(value = "`describe`")
+ private String describe;
+
+ private Integer userId;
+
+ private Boolean fix;
+
+ private LocalDateTime fixTime;
+
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/mindskip/xzs/domain/vo/FeedbackVO.java b/src/main/java/com/mindskip/xzs/domain/vo/FeedbackVO.java
new file mode 100644
index 0000000..8f77119
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/domain/vo/FeedbackVO.java
@@ -0,0 +1,39 @@
+package com.mindskip.xzs.domain.vo;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+
+/**
+ * @author gonghl
+ * @since 2024/5/7 涓嬪崍 4:00
+ */
+
+@Data
+public class FeedbackVO {
+
+ private Integer id;
+
+ @NotNull
+ private Integer questionId;
+
+ @NotNull
+ private Integer contentId;
+
+ private String describe;
+
+ private Integer userId;
+
+ private Boolean fix;
+
+ private LocalDateTime fixTime;
+
+ private Integer pageIndex;
+
+ private Integer pageSize;
+
+ private String questionTitle;
+
+ private String userName;
+}
diff --git a/src/main/java/com/mindskip/xzs/repository/FeedbackMapper.java b/src/main/java/com/mindskip/xzs/repository/FeedbackMapper.java
new file mode 100644
index 0000000..18c0dea
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/repository/FeedbackMapper.java
@@ -0,0 +1,24 @@
+package com.mindskip.xzs.repository;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mindskip.xzs.domain.Feedback;
+import com.mindskip.xzs.domain.vo.FeedbackVO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @author gonghl
+ * @description 閽堝琛ㄣ�恡_feedback(閿欓鍙嶉)銆戠殑鏁版嵁搴撴搷浣淢apper
+ * @createDate 2024-05-07 15:52:33
+ * @Entity com.mindskip.xzs.feedback.TFeedback
+ */
+@Mapper
+public interface FeedbackMapper extends BaseMapper<Feedback> {
+
+ List<FeedbackVO> feedbackPage();
+}
+
+
+
+
diff --git a/src/main/java/com/mindskip/xzs/service/FeedbackService.java b/src/main/java/com/mindskip/xzs/service/FeedbackService.java
new file mode 100644
index 0000000..ee91f95
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/service/FeedbackService.java
@@ -0,0 +1,20 @@
+package com.mindskip.xzs.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.pagehelper.PageInfo;
+import com.mindskip.xzs.domain.Feedback;
+import com.mindskip.xzs.domain.vo.FeedbackVO;
+
+/**
+ * @author gonghl
+ * @description 閽堝琛ㄣ�恡_feedback(閿欓鍙嶉)銆戠殑鏁版嵁搴撴搷浣淪ervice
+ * @createDate 2024-05-07 15:52:33
+ */
+public interface FeedbackService extends IService<Feedback> {
+
+ void saveFeedback(FeedbackVO feedbackVO);
+
+ PageInfo<FeedbackVO> feedbackPage(FeedbackVO feedbackVO);
+
+ void settleFeedback(Integer id);
+}
diff --git a/src/main/java/com/mindskip/xzs/service/impl/FeedbackServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/FeedbackServiceImpl.java
new file mode 100644
index 0000000..06be31e
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/service/impl/FeedbackServiceImpl.java
@@ -0,0 +1,57 @@
+package com.mindskip.xzs.service.impl;
+
+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.Feedback;
+import com.mindskip.xzs.domain.question.QuestionObject;
+import com.mindskip.xzs.domain.vo.FeedbackVO;
+import com.mindskip.xzs.repository.FeedbackMapper;
+import com.mindskip.xzs.service.FeedbackService;
+import com.mindskip.xzs.utility.JsonUtil;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.time.DateUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.stream.Collectors;
+
+/**
+ * @author gonghl
+ * @description 閽堝琛ㄣ�恡_feedback(閿欓鍙嶉)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2024-05-07 15:52:33
+ */
+@Service
+@RequiredArgsConstructor
+public class FeedbackServiceImpl extends ServiceImpl<FeedbackMapper, Feedback> implements FeedbackService {
+
+ private final FeedbackMapper feedbackMapper;
+
+ @Override
+ public void saveFeedback(FeedbackVO feedbackVO) {
+ Feedback feedback = new Feedback();
+ BeanUtils.copyProperties(feedbackVO, feedback);
+ feedbackMapper.insert(feedback);
+ }
+
+ @Override
+ public PageInfo<FeedbackVO> feedbackPage(FeedbackVO feedbackVO) {
+ return PageHelper.startPage(feedbackVO.getPageIndex(), feedbackVO.getPageSize()).doSelectPageInfo(() ->
+ feedbackMapper.feedbackPage().stream().peek(f -> f.setQuestionTitle(JsonUtil.toJsonObject(f.getQuestionTitle(), QuestionObject.class).getTitleContent())).collect(Collectors.toList()));
+ }
+
+ @Override
+ public void settleFeedback(Integer id) {
+ new LambdaUpdateChainWrapper<>(feedbackMapper)
+ .set(Feedback::getFix, true)
+ .set(Feedback::getFixTime, LocalDateTime.now())
+ .eq(Feedback::getId, id)
+ .update();
+ }
+}
+
+
+
+
diff --git a/src/main/java/com/mindskip/xzs/viewmodel/admin/question/ExamQuestionVO.java b/src/main/java/com/mindskip/xzs/viewmodel/admin/question/ExamQuestionVO.java
index 44d8eea..9401826 100644
--- a/src/main/java/com/mindskip/xzs/viewmodel/admin/question/ExamQuestionVO.java
+++ b/src/main/java/com/mindskip/xzs/viewmodel/admin/question/ExamQuestionVO.java
@@ -66,5 +66,6 @@
private String department;
+ private Integer infoTextContentId;
}
diff --git a/src/main/resources/mapper/FeedbackMapper.xml b/src/main/resources/mapper/FeedbackMapper.xml
new file mode 100644
index 0000000..6b6c8d0
--- /dev/null
+++ b/src/main/resources/mapper/FeedbackMapper.xml
@@ -0,0 +1,32 @@
+<?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.FeedbackMapper">
+
+ <resultMap id="BaseResultMap" type="com.mindskip.xzs.domain.Feedback">
+ <id property="id" column="id" jdbcType="INTEGER"/>
+ <result property="questionId" column="question_id" jdbcType="INTEGER"/>
+ <result property="contentId" column="content_id" jdbcType="INTEGER"/>
+ <result property="describe" column="describe" jdbcType="VARCHAR"/>
+ <result property="userId" column="user_id" jdbcType="INTEGER"/>
+ <result property="fix" column="fix" jdbcType="BIT"/>
+ <result property="fixTime" column="fix_time" jdbcType="TIMESTAMP"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,question_id,content_id,
+ describe,user_id,fix,
+ fix_time
+ </sql>
+
+ <select id="feedbackPage" resultType="com.mindskip.xzs.domain.vo.FeedbackVO">
+ select a.*,
+ b.content as questionTitle,
+ 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
+ order by id desc
+ </select>
+</mapper>
--
Gitblit v1.8.0