src/main/java/com/mzl/flower/dto/request/content/AddFeedbackDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/dto/request/content/QueryFeedBackDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/dto/request/content/ReplyFeedbackDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/dto/response/content/FeedbackDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/entity/content/Feedback.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/mapper/content/FeedbackMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/service/content/FeedbackService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/web/content/FeedbackController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/content/FeedbackMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/mzl/flower/dto/request/content/AddFeedbackDTO.java
对比新文件 @@ -0,0 +1,10 @@ package com.mzl.flower.dto.request.content; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AddFeedbackDTO { @ApiModelProperty("投诉反馈内容") private String feedBack; } src/main/java/com/mzl/flower/dto/request/content/QueryFeedBackDTO.java
对比新文件 @@ -0,0 +1,39 @@ package com.mzl.flower.dto.request.content; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data public class QueryFeedBackDTO { @ApiModelProperty("是否处理") private Boolean handled; @ApiModelProperty("商户名称") private String name; @ApiModelProperty("商户电话") private String tel; @ApiModelProperty("创建日期(yyyy-mm-dd)") private String createDateBeginStr; @ApiModelProperty("创建日期(yyyy-mm-dd)") private String createDateEndStr; @ApiModelProperty(value = "创建日期(yyyy-mm-dd)",hidden = true) private LocalDateTime createDateBegin; @ApiModelProperty(value = "创建日期(yyyy-mm-dd)", hidden = true) private LocalDateTime createDateEnd; @ApiModelProperty(value = "用户ID",hidden = true) private String userId; @ApiModelProperty(value = "ID",hidden = true) private Long id; } src/main/java/com/mzl/flower/dto/request/content/ReplyFeedbackDTO.java
对比新文件 @@ -0,0 +1,19 @@ package com.mzl.flower.dto.request.content; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @Data public class ReplyFeedbackDTO { @NotNull(message = "id不能为空") private Long id; @ApiModelProperty("回复内容") @NotBlank(message = "回复内容不能为空") private String reply; } src/main/java/com/mzl/flower/dto/response/content/FeedbackDTO.java
对比新文件 @@ -0,0 +1,37 @@ package com.mzl.flower.dto.response.content; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data public class FeedbackDTO { private Long id; @ApiModelProperty("用户ID") private String userId; @ApiModelProperty("投诉反馈内容") private String feedBack; @ApiModelProperty("回复内容") private String reply; @ApiModelProperty("是否处理") private Boolean handled; @ApiModelProperty("回复时间") private LocalDateTime replyTime; @ApiModelProperty("提交时间") private LocalDateTime createTime; @ApiModelProperty("用户姓名") private String customerName; @ApiModelProperty("用户电话") private String customerTel; } src/main/java/com/mzl/flower/entity/content/Feedback.java
对比新文件 @@ -0,0 +1,30 @@ package com.mzl.flower.entity.content; import com.baomidou.mybatisplus.annotation.TableName; import com.mzl.flower.base.BaseAutoEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data @TableName("t_feedback") public class Feedback extends BaseAutoEntity { @ApiModelProperty("用户ID") private String userId; @ApiModelProperty("投诉反馈内容") private String feedBack; @ApiModelProperty("回复内容") private String reply; @ApiModelProperty("是否处理") private Boolean handled; @ApiModelProperty("回复时间") private LocalDateTime replyTime; } src/main/java/com/mzl/flower/mapper/content/FeedbackMapper.java
对比新文件 @@ -0,0 +1,17 @@ package com.mzl.flower.mapper.content; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.dto.request.content.QueryFeedBackDTO; import com.mzl.flower.dto.response.content.FeedbackDTO; import com.mzl.flower.entity.content.Feedback; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; @Repository public interface FeedbackMapper extends BaseMapper<Feedback> { List<FeedbackDTO> queryPage(@Param("dto") QueryFeedBackDTO dto, Page page); } src/main/java/com/mzl/flower/service/content/FeedbackService.java
对比新文件 @@ -0,0 +1,72 @@ package com.mzl.flower.service.content; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.config.exception.ValidationException; import com.mzl.flower.config.security.SecurityUtils; import com.mzl.flower.dto.request.content.AddFeedbackDTO; import com.mzl.flower.dto.request.content.QueryFeedBackDTO; import com.mzl.flower.dto.request.content.ReplyFeedbackDTO; import com.mzl.flower.dto.response.content.FeedbackDTO; import com.mzl.flower.entity.content.Feedback; import com.mzl.flower.mapper.content.FeedbackMapper; import com.mzl.flower.utils.DateUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.List; @Service @Transactional public class FeedbackService { private final FeedbackMapper feedbackMapper; public FeedbackService(FeedbackMapper feedbackMapper) { this.feedbackMapper = feedbackMapper; } public void add(AddFeedbackDTO dto) { Feedback feedback = new Feedback(); feedback.setFeedBack(dto.getFeedBack()); feedback.setUserId(SecurityUtils.getUserId()); feedback.setHandled(false); feedback.create(SecurityUtils.getUserId()); feedbackMapper.insert(feedback); } public Page<FeedbackDTO> queryPage(QueryFeedBackDTO dto, Page page) { if(StringUtils.isNotBlank(dto.getCreateDateBeginStr())){ dto.setCreateDateBegin(DateUtils.dateToLocalDateTime(dto.getCreateDateBeginStr(),true)); } if(StringUtils.isNotBlank(dto.getCreateDateEndStr())){ dto.setCreateDateEnd(DateUtils.dateToLocalDateTime(dto.getCreateDateEndStr(),false)); } List<FeedbackDTO> list = feedbackMapper.queryPage(dto, page); page.setRecords(list); return page; } public FeedbackDTO detail(Long id) { QueryFeedBackDTO dto = new QueryFeedBackDTO(); dto.setId(id); List<FeedbackDTO> list = feedbackMapper.queryPage(dto, new Page(1,1)); if(list != null && list.size() > 0){ return list.get(0); } return null; } public void reply(ReplyFeedbackDTO dto) { Feedback feedback = feedbackMapper.selectById(dto.getId()); if(feedback == null){ throw new ValidationException("投诉反馈不存在"); } feedback.setReply(dto.getReply()); feedback.setHandled(true); feedback.setReplyTime(LocalDateTime.now()); feedbackMapper.updateById(feedback); } } src/main/java/com/mzl/flower/web/content/FeedbackController.java
对比新文件 @@ -0,0 +1,70 @@ package com.mzl.flower.web.content; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.base.BaseController; import com.mzl.flower.base.R; import com.mzl.flower.base.ReturnDataDTO; import com.mzl.flower.config.security.SecurityUtils; import com.mzl.flower.dto.request.content.AddFeedbackDTO; import com.mzl.flower.dto.request.content.QueryFeedBackDTO; import com.mzl.flower.dto.request.content.ReplyFeedbackDTO; import com.mzl.flower.dto.response.content.FeedbackDTO; import com.mzl.flower.service.content.FeedbackService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotNull; @RestController @RequestMapping("/api/feedback") @Api(value = "运营-banner管理", tags = "运营-banner管理") @Validated @Slf4j public class FeedbackController extends BaseController { private final FeedbackService feedbackService; public FeedbackController(FeedbackService feedbackService) { this.feedbackService = feedbackService; } @PostMapping("/page/new") @ApiOperation(value = "用户提交投诉反馈", notes = "提交投诉反馈") public ResponseEntity<ReturnDataDTO> add(@Validated @RequestBody AddFeedbackDTO dto) { feedbackService.add(dto); return returnData(R.SUCCESS.getCode(),null); } @GetMapping("/my/feedback/list") @ApiOperation(value = "用户查询我的投诉反馈", notes = "用户查询我的投诉反馈") public ResponseEntity<ReturnDataDTO<Page<FeedbackDTO>>> queryMyPage(Page page) { QueryFeedBackDTO dto = new QueryFeedBackDTO(); dto.setUserId(SecurityUtils.getUserId()); return returnData(R.SUCCESS.getCode(), feedbackService.queryPage(dto,page)); } @GetMapping("/page/view") @ApiOperation(value = "详情", notes = "详情") public ResponseEntity<ReturnDataDTO<FeedbackDTO>> detail(@NotNull(message = "id不能为空") Long id) { return returnData(R.SUCCESS.getCode(),feedbackService.detail(id)); } @GetMapping("/page") @ApiOperation(value = "运营查询-分页", notes = "查询-分页") public ResponseEntity<ReturnDataDTO<Page<FeedbackDTO>>> queryPage(QueryFeedBackDTO dto, Page page) { return returnData(R.SUCCESS.getCode(), feedbackService.queryPage(dto,page)); } @PostMapping("/page/reply") @ApiOperation(value = "运营回复投诉反馈", notes = "运营回复投诉反馈") public ResponseEntity<ReturnDataDTO> reply(@Validated @RequestBody ReplyFeedbackDTO dto) { feedbackService.reply(dto); return returnData(R.SUCCESS.getCode(), null); } } src/main/resources/mapper/content/FeedbackMapper.xml
对比新文件 @@ -0,0 +1,45 @@ <?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.mzl.flower.mapper.content.FeedbackMapper"> <select id="queryPage" resultType="com.mzl.flower.dto.response.content.FeedbackDTO"> SELECT f.*, c.`name` AS customerName, u.tel AS customerTel FROM t_feedback f LEFT JOIN t_user u ON f.user_id = u.id LEFT JOIN t_customer_info c ON f.user_id = c.user_id WHERE f.deleted = 0 <if test="dto.id != null and dto.name != 0"> and f.id = #{dto.id} </if> <if test="dto.name != null and dto.name != ''"> and c.name like concat('%', #{dto.name}, '%') </if> <if test="dto.tel != null and dto.tel != ''"> and u.tel like concat('%', #{dto.tel}, '%') </if> <if test="dto.handled != null and dto.handled"> and f.handled = 1 </if> <if test="dto.handled != null and !dto.handled"> and f.handled = 0 </if> <if test="dto.userId != null and dto.userId != ''"> and f.user_id = #{dto.userId} </if> <if test="dto.createDateBegin!=null "> <![CDATA[ AND t.create_time >= #{dto.createDateBegin} ]]> </if> <if test="dto.createDateEnd!=null "> <![CDATA[ AND t.create_time <= #{dto.createDateEnd} ]]> </if> order by t.create_time desc </select> </mapper>