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.setType(dto.getType()); feedback.setPictures(dto.getPictures()); feedback.setUserId(SecurityUtils.getUserId()); feedback.setHandled(false); feedback.create(SecurityUtils.getUserId()); feedbackMapper.insert(feedback); } public Page 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 list = feedbackMapper.queryPage(dto, page); page.setRecords(list); return page; } public FeedbackDTO detail(Long id) { QueryFeedBackDTO dto = new QueryFeedBackDTO(); dto.setId(id); List 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); } }