package com.stylefeng.guns.modular.system.service.impl;
|
|
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
import com.stylefeng.guns.core.util.ToolUtil;
|
import com.stylefeng.guns.modular.system.dao.FeedbackMapper;
|
import com.stylefeng.guns.modular.system.dao.SensitiveWordsMapper;
|
import com.stylefeng.guns.modular.system.model.Feedback;
|
import com.stylefeng.guns.modular.system.model.SensitiveWords;
|
import com.stylefeng.guns.modular.system.model.TEmail;
|
import com.stylefeng.guns.modular.system.model.UserInfo;
|
import com.stylefeng.guns.modular.system.service.IFeedbackService;
|
import com.stylefeng.guns.modular.system.service.ISystemNoticeService;
|
import com.stylefeng.guns.modular.system.service.IUserInfoService;
|
import com.stylefeng.guns.modular.system.service.TEmailService;
|
import com.stylefeng.guns.modular.system.util.EmailUtil;
|
import com.stylefeng.guns.modular.system.util.ResultUtil;
|
import com.stylefeng.guns.modular.system.util.itextpdf.HtmlToPdfUtils;
|
import org.jsoup.Jsoup;
|
import org.jsoup.nodes.Document;
|
import org.jsoup.nodes.Element;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.io.FileOutputStream;
|
import java.io.FileWriter;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
|
@Service
|
public class FeedbackServiceImpl extends ServiceImpl<FeedbackMapper, Feedback> implements IFeedbackService {
|
|
@Resource
|
private SensitiveWordsMapper sensitiveWordsMapper;
|
|
@Autowired
|
private ISystemNoticeService systemNoticeService;
|
|
@Autowired
|
private IUserInfoService userInfoService;
|
|
@Value("${spring.mail.template-path}")
|
private String templatePath;
|
|
@Autowired
|
private TEmailService emailService;
|
|
|
|
|
/**
|
* 反馈操作
|
* @param content
|
* @param uid
|
* @throws Exception
|
*/
|
@Override
|
public ResultUtil feedback(String content, Integer uid, Integer language) throws Exception {
|
if(ToolUtil.isNotEmpty(content)){
|
if(content.length() > 200){
|
language = userInfoService.queryLanguage(uid, language);
|
return ResultUtil.error(language == 1 ? "反馈内容过长" : language == 2 ? "Feedback-content is overlong." : "Le contenu de l’avis est trop long.");
|
}
|
List<SensitiveWords> sensitiveWords = sensitiveWordsMapper.selectList(null);
|
List<String> list = Arrays.asList(content.split(" "));
|
for(SensitiveWords s : sensitiveWords){
|
List<String> str = new ArrayList<>();
|
String lowerCase = s.getContent().toLowerCase();
|
for (String s1 : list) {
|
if(lowerCase.equals(s1.toLowerCase())){
|
str.add("***");
|
}else{
|
str.add(s1);
|
}
|
}
|
list = str;
|
}
|
content = list.stream().collect(Collectors.joining(" "));
|
}
|
|
Feedback feedback = new Feedback();
|
feedback.setContent(content);
|
feedback.setFlag(1);
|
feedback.setInsertTime(new Date());
|
feedback.setState(1);
|
feedback.setType(1);
|
feedback.setUserId(uid);
|
this.insert(feedback);
|
|
UserInfo userInfo = userInfoService.selectById(uid);
|
if(ToolUtil.isNotEmpty(userInfo.getEmail())){
|
String path = templatePath + "user/feedback.html";
|
Document document = Jsoup.parse(new File(path), "UTF-8");
|
if(1 == language){
|
document.getElementById("english").remove();
|
document.getElementById("french").remove();
|
document.getElementsByTag("title").get(0).text("意见反馈");
|
Element user_chinese = document.getElementById("user_chinese");
|
user_chinese.text("您好 " + userInfo.getNickName() + ",");
|
}
|
if(2 == language){
|
document.getElementById("chinese").remove();
|
document.getElementById("french").remove();
|
document.getElementsByTag("title").get(0).text("Feedback");
|
Element user_english = document.getElementById("user_english");
|
user_english.text("Hello " + userInfo.getNickName() + ",");
|
}
|
if(3 == language){
|
document.getElementById("chinese").remove();
|
document.getElementById("english").remove();
|
document.getElementsByTag("title").get(0).text("Avis");
|
Element user_french = document.getElementById("user_french");
|
user_french.text("Bonjour " + userInfo.getNickName() + ",");
|
}
|
EmailUtil.send(userInfo.getEmail(), language == 1 ? "反馈意见" : language == 2 ? "Feedback" : "Avis", document.html());
|
|
//开始生成pdf收据和html收据
|
File file = new File("/home/igotechgh/nginx/html/files/html/");
|
if(!file.exists()){
|
file.mkdirs();
|
}
|
String randomString = ToolUtil.getRandomString(10);
|
file = new File("/home/igotechgh/nginx/html/files/html/feedback_" + randomString + ".html");
|
if(!file.exists()){
|
file.createNewFile();
|
}
|
FileWriter fileWriter = new FileWriter(file);
|
fileWriter.write(document.html());
|
fileWriter.flush();
|
fileWriter.close();
|
|
String link ="https://igo.i-go.group/files/html/feedback_" + randomString + ".html";
|
TEmail tEmail = new TEmail();
|
tEmail.setLink(link);
|
tEmail.setUserId(uid);
|
tEmail.setType(1);
|
tEmail.setName(language == 1 ? "反馈意见" : language == 2 ? "Feedback" : "Avis");
|
tEmail.setCreateTime(new Date());
|
int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1;
|
tEmail.setWeek(EmailUtil.getWeek(language,i));
|
boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
|
if(am){
|
tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin");
|
}else {
|
tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
|
}
|
emailService.insert(tEmail);
|
}
|
|
systemNoticeService.addSystemNotice(1, language == 1 ? "您的反馈已提交成功,我们会尽快处理!" : language == 2 ? "Your feedback was submitted successfully, we shall handle it as soon as possible."
|
: "Vos avis ont été soumis avec succès, nous les traiterons dans les plus brefs délais.", uid, 1);
|
return ResultUtil.success();
|
}
|
}
|