From 73dda8b648bbc6ca1a00bad956e498b30af674f5 Mon Sep 17 00:00:00 2001 From: MichaelWin Date: Tue, 4 Nov 2025 10:06:20 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91=E5=8F=8D?= =?UTF-8?q?=E9=A6=88=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feedback/FeedbackBatchDeleteRequest.java | 11 ++ .../feedback/FeedbackBatchStatusRequest.java | 13 +++ .../com/corewing/app/entity/Feedback.java | 30 +++++ .../corewing/app/mapper/FeedbackMapper.java | 3 + .../admin/biz/BizFeedBackController.java | 101 +++++++++++++++++ .../corewing/app/service/FeedbackService.java | 11 ++ .../app/service/impl/FeedbackServiceImpl.java | 32 ++++++ src/main/resources/mapper/FeedbackMapper.xml | 42 +++++++ .../templates/admin/biz/feedback/index.html | 104 ++++++++++-------- 9 files changed, 302 insertions(+), 45 deletions(-) create mode 100644 src/main/java/com/corewing/app/dto/biz/feedback/FeedbackBatchDeleteRequest.java create mode 100644 src/main/java/com/corewing/app/dto/biz/feedback/FeedbackBatchStatusRequest.java create mode 100644 src/main/java/com/corewing/app/modules/admin/biz/BizFeedBackController.java create mode 100644 src/main/resources/mapper/FeedbackMapper.xml diff --git a/src/main/java/com/corewing/app/dto/biz/feedback/FeedbackBatchDeleteRequest.java b/src/main/java/com/corewing/app/dto/biz/feedback/FeedbackBatchDeleteRequest.java new file mode 100644 index 0000000..35ecec9 --- /dev/null +++ b/src/main/java/com/corewing/app/dto/biz/feedback/FeedbackBatchDeleteRequest.java @@ -0,0 +1,11 @@ +package com.corewing.app.dto.biz.feedback; + +import lombok.Data; + +import java.util.List; + +@Data +public class FeedbackBatchDeleteRequest { + + private List ids; +} diff --git a/src/main/java/com/corewing/app/dto/biz/feedback/FeedbackBatchStatusRequest.java b/src/main/java/com/corewing/app/dto/biz/feedback/FeedbackBatchStatusRequest.java new file mode 100644 index 0000000..c2948fd --- /dev/null +++ b/src/main/java/com/corewing/app/dto/biz/feedback/FeedbackBatchStatusRequest.java @@ -0,0 +1,13 @@ +package com.corewing.app.dto.biz.feedback; + +import lombok.Data; + +import java.util.List; + +@Data +public class FeedbackBatchStatusRequest { + + private List ids; + + private Integer status; +} diff --git a/src/main/java/com/corewing/app/entity/Feedback.java b/src/main/java/com/corewing/app/entity/Feedback.java index 09a99ae..92f3399 100644 --- a/src/main/java/com/corewing/app/entity/Feedback.java +++ b/src/main/java/com/corewing/app/entity/Feedback.java @@ -66,4 +66,34 @@ public class Feedback implements Serializable { */ @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; + + /** + * 用户昵称 + */ + @TableField(exist = false) + private String nickName; + + /** + * 用户名 + */ + @TableField(exist = false) + private String username; + + @TableField(exist = false) + private String statusName; + + public String getStatusName() { + switch (status) { + case 0: + return "待处理"; + case 1: + return "处理中"; + case 2: + return "已完成"; + case 3: + return "已关闭"; + default: + return ""; + } + } } diff --git a/src/main/java/com/corewing/app/mapper/FeedbackMapper.java b/src/main/java/com/corewing/app/mapper/FeedbackMapper.java index 14c0ac3..c7f8fb2 100644 --- a/src/main/java/com/corewing/app/mapper/FeedbackMapper.java +++ b/src/main/java/com/corewing/app/mapper/FeedbackMapper.java @@ -1,8 +1,10 @@ package com.corewing.app.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.corewing.app.entity.Feedback; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 问题反馈 Mapper 接口 @@ -10,4 +12,5 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface FeedbackMapper extends BaseMapper { + Page page(Page page, @Param("feedback") Feedback feedback); } diff --git a/src/main/java/com/corewing/app/modules/admin/biz/BizFeedBackController.java b/src/main/java/com/corewing/app/modules/admin/biz/BizFeedBackController.java new file mode 100644 index 0000000..4abe9d9 --- /dev/null +++ b/src/main/java/com/corewing/app/modules/admin/biz/BizFeedBackController.java @@ -0,0 +1,101 @@ +package com.corewing.app.modules.admin.biz; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.corewing.app.common.Result; +import com.corewing.app.dto.biz.feedback.FeedbackBatchDeleteRequest; +import com.corewing.app.dto.biz.feedback.FeedbackBatchStatusRequest; +import com.corewing.app.entity.Feedback; +import com.corewing.app.service.FeedbackService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 用户反馈 + */ +@Controller +@RequestMapping("/biz/feedback") +public class BizFeedBackController { + + @Resource + private FeedbackService feedbackService; + + /** + * 反馈管理首页 + * @return + */ + @GetMapping("/index") + public String index() { + return "admin/biz/feedback/index"; + } + + /** + * 查询反馈数据分页 + * @param feedback + * @return + */ + @GetMapping("/page") + @ResponseBody + public Result> page(Feedback feedback) { + return Result.success(feedbackService.page(feedback)); + } + + /** + * 新增反馈 + * @param feedback + * @return + */ + @PostMapping("/save") + @ResponseBody + public Result save(@RequestBody Feedback feedback) { + return Result.isBool(feedbackService.save(feedback)); + } + + /** + * 编辑反馈 + * @param feedback + * @return + */ + @PostMapping("/update") + @ResponseBody + public Result update(@RequestBody Feedback feedback) { + return Result.isBool(feedbackService.updateById(feedback)); + } + + /** + * 删除反馈 + * @param id + * @return + */ + @DeleteMapping("/delete") + @ResponseBody + public Result delete(Long id) { + return Result.isBool(feedbackService.removeById(id)); + } + + /** + * 批量删除反馈 + * @param feedbackBatchDeleteRequest + * @return + */ + @PostMapping("/batchDelete") + @ResponseBody + public Result batchDelete(@RequestBody FeedbackBatchDeleteRequest feedbackBatchDeleteRequest) { + return Result.isBool(feedbackService.removeBatchByIds(feedbackBatchDeleteRequest.getIds())); + } + + /** + * 批量更改状态 + * @param feedbackBatchStatusRequest + * @return + */ + @PostMapping("/batchStatus") + @ResponseBody + public Result batchStatus(@RequestBody FeedbackBatchStatusRequest feedbackBatchStatusRequest) { + return Result.isBool(feedbackService.batchStatus(feedbackBatchStatusRequest)); + } + + +} diff --git a/src/main/java/com/corewing/app/service/FeedbackService.java b/src/main/java/com/corewing/app/service/FeedbackService.java index 7d5c818..f065d4d 100644 --- a/src/main/java/com/corewing/app/service/FeedbackService.java +++ b/src/main/java/com/corewing/app/service/FeedbackService.java @@ -3,6 +3,7 @@ package com.corewing.app.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.corewing.app.dto.biz.feedback.FeedbackBatchStatusRequest; import com.corewing.app.entity.Feedback; import java.util.List; @@ -12,6 +13,9 @@ import java.util.List; */ public interface FeedbackService extends IService { + Page page(Feedback feedback); + + /** * 创建反馈 * @@ -47,4 +51,11 @@ public interface FeedbackService extends IService { * @return 是否成功 */ boolean updateStatus(Long id, Integer status); + + /** + * 批量修改状态 + * @param feedbackBatchStatusRequest + * @return + */ + boolean batchStatus(FeedbackBatchStatusRequest feedbackBatchStatusRequest); } diff --git a/src/main/java/com/corewing/app/service/impl/FeedbackServiceImpl.java b/src/main/java/com/corewing/app/service/impl/FeedbackServiceImpl.java index 3263503..880ba1c 100644 --- a/src/main/java/com/corewing/app/service/impl/FeedbackServiceImpl.java +++ b/src/main/java/com/corewing/app/service/impl/FeedbackServiceImpl.java @@ -1,24 +1,44 @@ package com.corewing.app.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.corewing.app.common.page.PageContext; +import com.corewing.app.dto.biz.feedback.FeedbackBatchStatusRequest; import com.corewing.app.entity.Feedback; import com.corewing.app.mapper.FeedbackMapper; import com.corewing.app.service.FeedbackService; import com.corewing.app.util.I18nUtil; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; +import javax.annotation.Resource; import java.util.List; +import static io.lettuce.core.GeoArgs.Unit.m; + /** * 问题反馈 Service 实现类 */ @Service public class FeedbackServiceImpl extends ServiceImpl implements FeedbackService { + @Resource + private FeedbackMapper feedbackMapper; + + @Override + public Page page(Feedback feedback) { + Page page = PageContext.getPage(Feedback.class); +// LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); +// wrapper.eq(feedback.getStatus() != null, Feedback::getStatus, feedback.getStatus()); +// wrapper.like(StringUtils.hasText(feedback.getTitle()), Feedback::getTitle, feedback.getTitle()); +// wrapper.eq(StringUtils.hasText(feedback.getFeedbackType()), Feedback::getFeedbackType, feedback.getFeedbackType()); + return feedbackMapper.page(page, feedback); + } + @Override public boolean createFeedback(Feedback feedback) { // 设置默认状态为待处理 @@ -75,4 +95,16 @@ public class FeedbackServiceImpl extends ServiceImpl i return this.updateById(feedback); } + + @Transactional(rollbackFor = Exception.class) + @Override + public boolean batchStatus(FeedbackBatchStatusRequest feedbackBatchStatusRequest) { + feedbackBatchStatusRequest.getIds().forEach(id -> { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(Feedback::getId, id); + wrapper.set(Feedback::getStatus, feedbackBatchStatusRequest.getStatus()); + update(wrapper); + }); + return true; + } } diff --git a/src/main/resources/mapper/FeedbackMapper.xml b/src/main/resources/mapper/FeedbackMapper.xml new file mode 100644 index 0000000..508edf6 --- /dev/null +++ b/src/main/resources/mapper/FeedbackMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + select f.*,u.nick_name, u.username + from app_feedback f + left join app_user u on f.user_id = u.id + + + + + + diff --git a/src/main/resources/templates/admin/biz/feedback/index.html b/src/main/resources/templates/admin/biz/feedback/index.html index 201b23c..35bff72 100644 --- a/src/main/resources/templates/admin/biz/feedback/index.html +++ b/src/main/resources/templates/admin/biz/feedback/index.html @@ -42,8 +42,10 @@ @change="fetchData()" > - - + + + + @@ -77,8 +79,11 @@ @change="toggleSelectAll()" > - 名称 - 是否显示 + 反馈问题 + 反馈详情 + 反馈用户 + 联系方式 + 流程 创建时间 操作 @@ -120,9 +125,12 @@ > {{ item.title }} + {{ item.content }} + {{ item.nickName }} + {{ item.contact }} - - {{ item.status === 0 ? '待处理' : '已处理' }} + + {{ item.statusName }} {{ formatTime(item.createTime) }} @@ -208,35 +216,44 @@