龚焕茏
2024-05-07 49429bad1036c81c056faeadfa009c53ba777fad
feat:反馈保存、展示、处理、删除
2个文件已修改
7个文件已添加
255 ■■■■■ 已修改文件
src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/controller/admin/FeedBackController.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/domain/Feedback.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/domain/vo/FeedbackVO.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/repository/FeedbackMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/FeedbackService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/impl/FeedbackServiceImpl.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/viewmodel/admin/question/ExamQuestionVO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/FeedbackMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
src/main/java/com/mindskip/xzs/controller/admin/FeedBackController.java
New file
@@ -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("操作成功");
    }
}
src/main/java/com/mindskip/xzs/domain/Feedback.java
New file
@@ -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;
}
src/main/java/com/mindskip/xzs/domain/vo/FeedbackVO.java
New file
@@ -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;
}
src/main/java/com/mindskip/xzs/repository/FeedbackMapper.java
New file
@@ -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 针对表【t_feedback(错题反馈)】的数据库操作Mapper
 * @createDate 2024-05-07 15:52:33
 * @Entity com.mindskip.xzs.feedback.TFeedback
 */
@Mapper
public interface FeedbackMapper extends BaseMapper<Feedback> {
    List<FeedbackVO> feedbackPage();
}
src/main/java/com/mindskip/xzs/service/FeedbackService.java
New file
@@ -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 针对表【t_feedback(错题反馈)】的数据库操作Service
 * @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);
}
src/main/java/com/mindskip/xzs/service/impl/FeedbackServiceImpl.java
New file
@@ -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 针对表【t_feedback(错题反馈)】的数据库操作Service实现
 * @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();
    }
}
src/main/java/com/mindskip/xzs/viewmodel/admin/question/ExamQuestionVO.java
@@ -66,5 +66,6 @@
    private String department;
    private Integer infoTextContentId;
}
src/main/resources/mapper/FeedbackMapper.xml
New file
@@ -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>