puzhibing
2023-08-03 7558a21c1ae1b48b0888f3e3906eb4ba6a68b06f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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.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.util.EmailUtil;
import com.stylefeng.guns.modular.system.util.ResultUtil;
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.util.Date;
import java.util.List;
 
 
@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;
 
 
 
 
    /**
     * 反馈操作
     * @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 is too long" : "Les commentaires sont trop longs");
            }
            List<SensitiveWords> sensitiveWords = sensitiveWordsMapper.selectList(null);
            for(SensitiveWords s : sensitiveWords){
                content = content.replaceAll(s.getContent(), "***");
            }
        }
 
        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();
                Element user_chinese = document.getElementById("user_chinese");
                user_chinese.text("您好 " + userInfo.getNickName() + ",");
            }
            if(2 == language){
                document.getElementById("chinese").remove();
                document.getElementById("french").remove();
                Element user_english = document.getElementById("user_english");
                user_english.text("Hello " + userInfo.getNickName() + ",");
            }
            if(3 == language){
                document.getElementById("chinese").remove();
                document.getElementById("english").remove();
                Element user_french = document.getElementById("user_french");
                user_french.text("Bonjour " + userInfo.getNickName() + ",");
            }
            EmailUtil.send(userInfo.getEmail(), language == 1 ? "反馈意见" : language == 2 ? "Feedback" : "Retour",  document.html());
        }
 
        systemNoticeService.addSystemNotice(1, language == 1 ? "您的反馈已提交成功,我们会尽快处理!" : language == 2 ? "Your feedback has been submitted successfully, we will deal with it as soon as possible"
                : "Vos commentaires ont été soumis avec succès, nous les traiterons dès que possible", uid, 1);
        return ResultUtil.success();
    }
}