From cf763f7ae2f86409c5f13b4fe36a25a8ec31cbf8 Mon Sep 17 00:00:00 2001
From: liujie <liujie>
Date: 星期一, 04 九月 2023 09:26:55 +0800
Subject: [PATCH] 用户端  邮件中心

---
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java |   24 +
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ComplaintServiceImpl.java             |   53 +++
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TEmailMapper.java                              |   17 +
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/TEmailService.java                         |   17 +
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEmailServiceImpl.java                |   20 +
 UserIGOTravel/guns-admin/pom.xml                                                                                            |    5 
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java              |  427 ++++++++++++++++++++++++++
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/FeedbackServiceImpl.java              |   52 +++
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TEmailMapper.xml                       |   13 
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TEmail.java                                  |   65 ++++
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java                               |   26 +
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java  |  108 ++++++
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/EmailUtil.java                                |   90 +++++
 13 files changed, 915 insertions(+), 2 deletions(-)

diff --git a/UserIGOTravel/guns-admin/pom.xml b/UserIGOTravel/guns-admin/pom.xml
index 380c3fa..0566be5 100644
--- a/UserIGOTravel/guns-admin/pom.xml
+++ b/UserIGOTravel/guns-admin/pom.xml
@@ -69,6 +69,11 @@
         </dependency>
 
         <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+        </dependency>
+
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-tomcat</artifactId>
             <scope>provided</scope>
diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java
index e12337e..53453fa 100644
--- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java
@@ -9,6 +9,7 @@
 import com.stylefeng.guns.core.support.HttpKit;
 import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.system.model.BankCard;
+import com.stylefeng.guns.modular.system.model.TEmail;
 import com.stylefeng.guns.modular.system.model.UserInfo;
 import com.stylefeng.guns.modular.system.service.*;
 import com.stylefeng.guns.modular.system.util.*;
@@ -67,6 +68,9 @@
 
     @Value("${spring.mail.template-path}")
     private String templatePath;
+
+    @Autowired
+    private TEmailService emailService;
 
 
 
@@ -240,7 +244,6 @@
                     Element content_french = document.getElementById("content_french");
                     content_french.text(authCode);
                 }
-
                 EmailUtil.send(email, language == 1 ? "验证码" : language == 2 ? "Verification code" : "Code de vérification",  document.html());
             }
             return ResultUtil.success();
@@ -576,6 +579,27 @@
         }
     }
 
+    @ResponseBody
+    @PostMapping("/api/user/getEmailList")
+    @ApiOperation(value = "获取邮箱信息", tags = {"用户端-获取邮箱信息"}, notes = "")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
+    })
+    public ResultUtil<?> getEmailList(HttpServletRequest request){
+        try {
+            Integer uid = userInfoService.getUserIdFormRedis(request);
+            if(null == uid){
+                return ResultUtil.tokenErr();
+            }
+            return ResultUtil.success(emailService.selectList(new EntityWrapper<TEmail>().eq("userId",uid).eq("type",1)));
+        }catch (Exception e){
+            e.printStackTrace();
+            return ResultUtil.runErr();
+        }
+    }
+
+
+
 
     /**
      * 获取用户个人信息
diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
index 8f04b69..0daee41 100644
--- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
@@ -132,6 +132,10 @@
     @Value("${spring.mail.template-path}")
     private String templatePath;
 
+
+    @Autowired
+    private TEmailService emailService;
+
     private static List<Integer> orderIds = new ArrayList<>();
 
 
@@ -743,6 +747,26 @@
                             }
                             FileOutputStream fileOutputStream = new FileOutputStream(file1);
                             HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+
+                            String link ="http://182.160.16.251:81/files/html/parcel_receipt_" + orderId + ".html";
+                            TEmail tEmail = new TEmail();
+                            tEmail.setLink(link);
+                            tEmail.setUserId(uid);
+                            tEmail.setType(1);
+                            tEmail.setName(language == 1 ? "包裹收据" : language == 2 ? "Parcel receipt" : "Réception de colis");
+                            tEmail.setOrderId(orderId);
+                            tEmail.setCreateTime(new Date());
+                            int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1;
+                            String week = EmailUtil.getWeek(language, i);
+                            tEmail.setWeek(week);
+                            boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
+                            if(am){
+                                tEmail.setAmOrPm(language==1?"上午":language==2?"AM":"Dans la matinée");
+                            }else {
+                                tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
+                            }
+                            emailService.insert(tEmail);
+
                         }catch (Exception e){
                             e.printStackTrace();
                         }
diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index 3089f3c..2f89c5d 100644
--- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -191,6 +191,9 @@
     @Autowired
     private ISettlementAllocationService settlementAllocationService;
 
+    @Autowired
+    private TEmailService emailService;
+
 
 
     /**
@@ -1173,6 +1176,28 @@
                             }
                             FileOutputStream fileOutputStream = new FileOutputStream(file1);
                             HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+
+
+                            String link ="http://182.160.16.251:81/files/html/ride_receipt_" + orderId + ".html";
+                            TEmail tEmail = new TEmail();
+                            tEmail.setLink(link);
+                            tEmail.setUserId(uid);
+                            tEmail.setName(language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de Ride");
+                            tEmail.setType(1);
+                            tEmail.setOrderId(orderId);
+                            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?"AM":"Dans la matinée");
+                            }else {
+                                tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
+                            }
+                            emailService.insert(tEmail);
+
+
+
                         }catch (Exception e){
                             e.printStackTrace();
                         }
@@ -1452,6 +1477,25 @@
                             }
                             FileOutputStream fileOutputStream = new FileOutputStream(file1);
                             HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+                            String link ="http://182.160.16.251:81/files/html/ride_receipt_" + orderId + ".html";
+                            TEmail tEmail = new TEmail();
+                            tEmail.setLink(link);
+                            tEmail.setUserId(uid);
+                            tEmail.setName(language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de Ride");
+                            tEmail.setType(1);
+                            tEmail.setOrderId(orderId);
+                            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?"AM":"Dans la matinée");
+                            }else {
+                                tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
+                            }
+                            emailService.insert(tEmail);
+
+
                         }catch (Exception e){
                             e.printStackTrace();
                         }
@@ -1479,6 +1523,7 @@
         this.updateAllColumnById(orderPrivateCar);
         return resultUtil;
     }
+
 
     @Override
     public synchronized ResultUtil<BaseWarpper> queryRedMoney(Integer orderId) throws Exception {
@@ -1586,6 +1631,49 @@
                 }
 
                 EmailUtil.send(userInfo.getEmail(), language == 1 ? "红包活动" : language == 2 ? "Red envelope activity" : "Activité de l’enveloppe rouge",  document.html());
+                //开始生成pdf收据和html收据
+                File file = new File("/usr/local/nginx/html/files/html/");
+                if(!file.exists()){
+                    file.mkdirs();
+                }
+                file = new File("/usr/local/nginx/html/files/html/redpacket_" + orderId + ".html");
+                if(!file.exists()){
+                    file.createNewFile();
+                }
+                FileWriter fileWriter = new FileWriter(file);
+                fileWriter.write(document.html());
+                fileWriter.flush();
+                fileWriter.close();
+                FileInputStream fileInputStream = new FileInputStream(file);
+                File file1 = new File("/usr/local/nginx/html/files/pdf/");
+                if(!file1.exists()){
+                    file1.mkdirs();
+                }
+                file1 = new File("/usr/local/nginx/html/files/pdf/redpacket_" + orderId + ".pdf");
+                if(!file1.exists()){
+                    file1.createNewFile();
+                }
+                FileOutputStream fileOutputStream = new FileOutputStream(file1);
+                HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+
+                String link ="http://182.160.16.251:81/files/html/redpacket_" + orderId + ".html";
+                TEmail tEmail = new TEmail();
+                tEmail.setLink(link);
+                tEmail.setUserId(userInfo.getId());
+                tEmail.setType(1);
+                tEmail.setName( language == 1 ? "红包活动" : language == 2 ? "Red envelope activity" : "Activité de l’enveloppe rouge");
+                tEmail.setOrderId(orderId);
+                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?"AM":"Dans la matinée");
+                }else {
+                    tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
+                }
+                emailService.insert(tEmail);
+
             }
 
         }
@@ -1884,6 +1972,26 @@
                             }
                             FileOutputStream fileOutputStream = new FileOutputStream(file1);
                             HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+
+
+                            String link ="http://182.160.16.251:81/files/html/ride_receipt_" + id + ".html";
+                            TEmail tEmail = new TEmail();
+                            tEmail.setLink(link);
+                            tEmail.setName( language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de Ride");
+                            tEmail.setUserId(userInfo.getId());
+                            tEmail.setType(1);
+                            tEmail.setOrderId(id);
+                            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?"AM":"Dans la matinée");
+                            }else {
+                                tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
+                            }
+                            emailService.insert(tEmail);
+
                         }catch (Exception e){
                             e.printStackTrace();
                         }
diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TEmailMapper.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TEmailMapper.java
new file mode 100644
index 0000000..2791eec
--- /dev/null
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TEmailMapper.java
@@ -0,0 +1,17 @@
+package com.stylefeng.guns.modular.system.dao;
+
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.stylefeng.guns.modular.system.model.TEmail;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-01
+ */
+public interface TEmailMapper extends BaseMapper<TEmail> {
+
+}
diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TEmailMapper.xml b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TEmailMapper.xml
new file mode 100644
index 0000000..ee7f596
--- /dev/null
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TEmailMapper.xml
@@ -0,0 +1,13 @@
+<?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.stylefeng.guns.modular.system.dao.TEmailMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TEmail">
+        <id column="id" property="id" />
+        <result column="userId" property="userId" />
+        <result column="type" property="type" />
+        <result column="link" property="link" />
+    </resultMap>
+
+</mapper>
diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TEmail.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TEmail.java
new file mode 100644
index 0000000..76c1dbf
--- /dev/null
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TEmail.java
@@ -0,0 +1,65 @@
+package com.stylefeng.guns.modular.system.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_email")
+public class TEmail extends Model<TEmail> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 用户id
+     */
+    @TableField("userId")
+    private Integer userId;
+
+    /**
+     * 1用户2司机
+     */
+    private Integer type;
+
+    /**
+     * html 链接
+     */
+    private String link;
+    @TableField("orderId")
+    private Integer orderId;
+    @TableField("createTime")
+    private Date createTime;
+    private String week;
+    @TableField("amOrPm")
+    private String amOrPm;
+
+    private String name;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/TEmailService.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/TEmailService.java
new file mode 100644
index 0000000..89bc94c
--- /dev/null
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/TEmailService.java
@@ -0,0 +1,17 @@
+package com.stylefeng.guns.modular.system.service;
+
+
+import com.baomidou.mybatisplus.service.IService;
+import com.stylefeng.guns.modular.system.model.TEmail;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-01
+ */
+public interface TEmailService extends IService<TEmail> {
+
+}
diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ComplaintServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ComplaintServiceImpl.java
index 3366caf..c7ef5de 100644
--- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ComplaintServiceImpl.java
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ComplaintServiceImpl.java
@@ -6,11 +6,14 @@
 import com.stylefeng.guns.modular.system.dao.SensitiveWordsMapper;
 import com.stylefeng.guns.modular.system.model.Complaint;
 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.IComplaintService;
 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.itextpdf.HtmlToPdfUtils;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
@@ -20,8 +23,12 @@
 
 import javax.annotation.Resource;
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
 import java.util.Date;
 import java.util.List;
+import java.util.UUID;
 
 
 @Service
@@ -38,6 +45,9 @@
 
     @Value("${spring.mail.template-path}")
     private String templatePath;
+
+    @Autowired
+    private TEmailService emailService;
 
 
 
@@ -90,6 +100,49 @@
                 french_user.text("Bonjour " + userInfo.getNickName() + ",");
             }
             EmailUtil.send(userInfo.getEmail(), language == 1 ? "投诉司机" : language == 2 ? "Complain Driver" : "Se plaindre du conducteur",  document.html());
+            //开始生成pdf收据和html收据
+            File file = new File("/usr/local/nginx/html/files/html/");
+            if(!file.exists()){
+                file.mkdirs();
+            }
+            String randomString = ToolUtil.getRandomString(10);
+            file = new File("/usr/local/nginx/html/files/html/complain_" + randomString + ".html");
+            if(!file.exists()){
+                file.createNewFile();
+            }
+            FileWriter fileWriter = new FileWriter(file);
+            fileWriter.write(document.html());
+            fileWriter.flush();
+            fileWriter.close();
+            FileInputStream fileInputStream = new FileInputStream(file);
+            File file1 = new File("/usr/local/nginx/html/files/pdf/");
+            if(!file1.exists()){
+                file1.mkdirs();
+            }
+            file1 = new File("/usr/local/nginx/html/files/pdf/complain_" + randomString + ".pdf");
+            if(!file1.exists()){
+                file1.createNewFile();
+            }
+            FileOutputStream fileOutputStream = new FileOutputStream(file1);
+            HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+
+            String link ="http://182.160.16.251:81/files/html/complain_" + randomString + ".html";
+            TEmail tEmail = new TEmail();
+            tEmail.setLink(link);
+            tEmail.setUserId(uid);
+            tEmail.setType(1);
+            tEmail.setName(language == 1 ? "投诉司机" : language == 2 ? "Complain Driver" : "Se plaindre du conducteur");
+            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?"AM":"Dans la matinée");
+            }else {
+                tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
+            }
+            emailService.insert(tEmail);
+
         }
         systemNoticeService.addSystemNotice(1, language == 1 ? "您的投诉已提交成功,我们会尽快处理!" : language == 2 ? "Your complaint has been submitted successfully and we will deal with it as soon as possible" : "Votre plainte a été soumise avec succès et nous la traiterons dès que possible", uid, 1);
     }
diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/FeedbackServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/FeedbackServiceImpl.java
index e2cd42c..64003de 100644
--- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/FeedbackServiceImpl.java
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/FeedbackServiceImpl.java
@@ -6,12 +6,15 @@
 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;
@@ -21,6 +24,9 @@
 
 import javax.annotation.Resource;
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
 import java.util.Date;
 import java.util.List;
 
@@ -39,6 +45,9 @@
 
     @Value("${spring.mail.template-path}")
     private String templatePath;
+
+    @Autowired
+    private TEmailService emailService;
 
 
 
@@ -94,6 +103,49 @@
                 user_french.text("Bonjour " + userInfo.getNickName() + ",");
             }
             EmailUtil.send(userInfo.getEmail(), language == 1 ? "反馈意见" : language == 2 ? "Feedback" : "Retour",  document.html());
+
+            //开始生成pdf收据和html收据
+            File file = new File("/usr/local/nginx/html/files/html/");
+            if(!file.exists()){
+                file.mkdirs();
+            }
+            String randomString = ToolUtil.getRandomString(10);
+            file = new File("/usr/local/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();
+            FileInputStream fileInputStream = new FileInputStream(file);
+            File file1 = new File("/usr/local/nginx/html/files/pdf/");
+            if(!file1.exists()){
+                file1.mkdirs();
+            }
+            file1 = new File("/usr/local/nginx/html/files/pdf/feedback_" + randomString + ".pdf");
+            if(!file1.exists()){
+                file1.createNewFile();
+            }
+            FileOutputStream fileOutputStream = new FileOutputStream(file1);
+            HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+
+            String link ="http://182.160.16.251:81/files/html/complain_" + randomString + ".html";
+            TEmail tEmail = new TEmail();
+            tEmail.setLink(link);
+            tEmail.setUserId(uid);
+            tEmail.setType(1);
+            tEmail.setName(language == 1 ? "反馈意见" : language == 2 ? "Feedback" : "Retour");
+            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?"AM":"Dans la matinée");
+            }else {
+                tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
+            }
+            emailService.insert(tEmail);
         }
 
         systemNoticeService.addSystemNotice(1, language == 1 ? "您的反馈已提交成功,我们会尽快处理!" : language == 2 ? "Your feedback has been submitted successfully, we will deal with it as soon as possible"
diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEmailServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEmailServiceImpl.java
new file mode 100644
index 0000000..a9e7cda
--- /dev/null
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEmailServiceImpl.java
@@ -0,0 +1,20 @@
+package com.stylefeng.guns.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.stylefeng.guns.modular.system.dao.TEmailMapper;
+import com.stylefeng.guns.modular.system.model.TEmail;
+import com.stylefeng.guns.modular.system.service.TEmailService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-09-01
+ */
+@Service
+public class TEmailServiceImpl extends ServiceImpl<TEmailMapper, TEmail> implements TEmailService {
+
+}
diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java
index 67a83c8..ba0b6a2 100644
--- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java
@@ -21,6 +21,7 @@
 import com.stylefeng.guns.modular.system.util.GoogleMap.ReverseGeocodeVo;
 import com.stylefeng.guns.modular.system.util.Tingg.TinggPayUtil;
 import com.stylefeng.guns.modular.system.util.Tingg.model.CheckoutRequest;
+import com.stylefeng.guns.modular.system.util.itextpdf.HtmlToPdfUtils;
 import com.stylefeng.guns.modular.system.warpper.LoginWarpper;
 import com.stylefeng.guns.modular.taxi.model.PaymentRecord;
 import com.stylefeng.guns.modular.taxi.service.IPaymentRecordService;
@@ -40,6 +41,9 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -115,6 +119,9 @@
 
     @Autowired
     private SMSUtil smsUtil;
+
+    @Autowired
+    private TEmailService emailService;
 
 
     /**
@@ -252,6 +259,49 @@
                     user_french.text("Bonjour " + userInfo.getNickName() + ",");
                 }
                 EmailUtil.send(userInfo.getEmail(), language == 1 ? "注册成功" : language == 2 ? "Successful registration" : "Inscription réussie",  document.html());
+                //开始生成pdf收据和html收据
+                File file = new File("/usr/local/nginx/html/files/html/");
+                if(!file.exists()){
+                    file.mkdirs();
+                }
+                String randomString = ToolUtil.getRandomString(10);
+                file = new File("/usr/local/nginx/html/files/html/registration_" + randomString + ".html");
+                if(!file.exists()){
+                    file.createNewFile();
+                }
+                FileWriter fileWriter = new FileWriter(file);
+                fileWriter.write(document.html());
+                fileWriter.flush();
+                fileWriter.close();
+                FileInputStream fileInputStream = new FileInputStream(file);
+                File file1 = new File("/usr/local/nginx/html/files/pdf/");
+                if(!file1.exists()){
+                    file1.mkdirs();
+                }
+                file1 = new File("/usr/local/nginx/html/files/pdf/registration_" + randomString + ".pdf");
+                if(!file1.exists()){
+                    file1.createNewFile();
+                }
+                FileOutputStream fileOutputStream = new FileOutputStream(file1);
+                HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+
+                String link ="http://182.160.16.251:81/files/html/registration_" + randomString + ".html";
+                TEmail tEmail = new TEmail();
+                tEmail.setLink(link);
+                tEmail.setUserId(uid);
+                tEmail.setType(1);
+                tEmail.setName(language == 1 ? "注册成功" : language == 2 ? "Successful registration" : "Inscription réussie");
+                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?"AM":"Dans la matinée");
+                }else {
+                    tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
+                }
+                emailService.insert(tEmail);
+
             }
 
             this.addCoupon(userInfo, language);//添加优惠券
@@ -320,6 +370,48 @@
                             user2_content.text("Vous avez invité avec succès un utilisateur à s’inscrire à i-go pour recevoir une récompense GHS " + bigDecimal.doubleValue() + ". Veuillez vérifier");
                         }
                         EmailUtil.send(driver.getEmail(), language == 1 ? "邀请奖励" : language == 2 ? "invitation bonus" : "prime d'invitation",  document1.html());
+                        //开始生成pdf收据和html收据
+                        File file = new File("/usr/local/nginx/html/files/html/");
+                        if(!file.exists()){
+                            file.mkdirs();
+                        }
+                        String randomString = ToolUtil.getRandomString(10);
+                        file = new File("/usr/local/nginx/html/files/html/invitation_" + randomString + ".html");
+                        if(!file.exists()){
+                            file.createNewFile();
+                        }
+                        FileWriter fileWriter = new FileWriter(file);
+                        fileWriter.write(document1.html());
+                        fileWriter.flush();
+                        fileWriter.close();
+                        FileInputStream fileInputStream = new FileInputStream(file);
+                        File file1 = new File("/usr/local/nginx/html/files/pdf/");
+                        if(!file1.exists()){
+                            file1.mkdirs();
+                        }
+                        file1 = new File("/usr/local/nginx/html/files/pdf/invitation_" + randomString + ".pdf");
+                        if(!file1.exists()){
+                            file1.createNewFile();
+                        }
+                        FileOutputStream fileOutputStream = new FileOutputStream(file1);
+                        HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+
+                        String link ="http://182.160.16.251:81/files/html/invitation_" + randomString + ".html";
+                        TEmail tEmail = new TEmail();
+                        tEmail.setLink(link);
+                        tEmail.setUserId(uid);
+                        tEmail.setType(1);
+                        tEmail.setName(language == 1 ? "邀请奖励" : language == 2 ? "invitation bonus" : "prime d'invitation");
+                        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?"AM":"Dans la matinée");
+                        }else {
+                            tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
+                        }
+                        emailService.insert(tEmail);
                     }
                 }
                 if(type == 1){//用户分享
@@ -395,6 +487,48 @@
                                 french_date.text("Cette promotion est valide du" + startTime + "au" + endTime);
                             }
                             EmailUtil.send(userInfo1.getEmail(), language == 1 ? "优惠券到账" : language == 2 ? "Coupon arrives" : "Le coupon arrive",  document1.html());
+                            //开始生成pdf收据和html收据
+                            File file = new File("/usr/local/nginx/html/files/html/");
+                            if(!file.exists()){
+                                file.mkdirs();
+                            }
+                            String randomString = ToolUtil.getRandomString(10);
+                            file = new File("/usr/local/nginx/html/files/html/coupon_" + randomString + ".html");
+                            if(!file.exists()){
+                                file.createNewFile();
+                            }
+                            FileWriter fileWriter = new FileWriter(file);
+                            fileWriter.write(document1.html());
+                            fileWriter.flush();
+                            fileWriter.close();
+                            FileInputStream fileInputStream = new FileInputStream(file);
+                            File file1 = new File("/usr/local/nginx/html/files/pdf/");
+                            if(!file1.exists()){
+                                file1.mkdirs();
+                            }
+                            file1 = new File("/usr/local/nginx/html/files/pdf/coupon_" + randomString + ".pdf");
+                            if(!file1.exists()){
+                                file1.createNewFile();
+                            }
+                            FileOutputStream fileOutputStream = new FileOutputStream(file1);
+                            HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+
+                            String link ="http://182.160.16.251:81/files/html/coupon_" + randomString + ".html";
+                            TEmail tEmail = new TEmail();
+                            tEmail.setLink(link);
+                            tEmail.setUserId(uid);
+                            tEmail.setType(1);
+                            tEmail.setName(language == 1 ? "优惠券到账" : language == 2 ? "Coupon arrives" : "Le coupon arrive");
+                            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?"AM":"Dans la matinée");
+                            }else {
+                                tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
+                            }
+                            emailService.insert(tEmail);
                         }
 
                     }
@@ -572,6 +706,48 @@
                     user_french.text("Bonjour " + userInfo.getNickName() + ",");
                 }
                 EmailUtil.send(userInfo.getEmail(), language == 1 ? "注册成功" : language == 2 ? "Successful registration" : "Inscription réussie",  document.html());
+                //开始生成pdf收据和html收据
+                File file = new File("/usr/local/nginx/html/files/html/");
+                if(!file.exists()){
+                    file.mkdirs();
+                }
+                String randomString = ToolUtil.getRandomString(10);
+                file = new File("/usr/local/nginx/html/files/html/registration_" + randomString + ".html");
+                if(!file.exists()){
+                    file.createNewFile();
+                }
+                FileWriter fileWriter = new FileWriter(file);
+                fileWriter.write(document.html());
+                fileWriter.flush();
+                fileWriter.close();
+                FileInputStream fileInputStream = new FileInputStream(file);
+                File file1 = new File("/usr/local/nginx/html/files/pdf/");
+                if(!file1.exists()){
+                    file1.mkdirs();
+                }
+                file1 = new File("/usr/local/nginx/html/files/pdf/registration_" + randomString + ".pdf");
+                if(!file1.exists()){
+                    file1.createNewFile();
+                }
+                FileOutputStream fileOutputStream = new FileOutputStream(file1);
+                HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+
+                String link ="http://182.160.16.251:81/files/html/registration_" + randomString + ".html";
+                TEmail tEmail = new TEmail();
+                tEmail.setLink(link);
+                tEmail.setUserId(uid);
+                tEmail.setType(1);
+                tEmail.setName(language == 1 ? "注册成功" : language == 2 ? "Successful registration" : "Inscription réussie");
+                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?"AM":"Dans la matinée");
+                }else {
+                    tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
+                }
+                emailService.insert(tEmail);
             }
 
 
@@ -667,6 +843,48 @@
                         french_date.text("Cette promotion est valide du" + startTime + "au" + endTime);
                     }
                     EmailUtil.send(userInfo.getEmail(), language == 1 ? "优惠券到账" : language == 2 ? "Coupon arrives" : "Le coupon arrive",  document.html());
+                    //开始生成pdf收据和html收据
+                    File file = new File("/usr/local/nginx/html/files/html/");
+                    if(!file.exists()){
+                        file.mkdirs();
+                    }
+                    String randomString = ToolUtil.getRandomString(10);
+                    file = new File("/usr/local/nginx/html/files/html/coupon_" + randomString + ".html");
+                    if(!file.exists()){
+                        file.createNewFile();
+                    }
+                    FileWriter fileWriter = new FileWriter(file);
+                    fileWriter.write(document.html());
+                    fileWriter.flush();
+                    fileWriter.close();
+                    FileInputStream fileInputStream = new FileInputStream(file);
+                    File file1 = new File("/usr/local/nginx/html/files/pdf/");
+                    if(!file1.exists()){
+                        file1.mkdirs();
+                    }
+                    file1 = new File("/usr/local/nginx/html/files/pdf/coupon_" + randomString + ".pdf");
+                    if(!file1.exists()){
+                        file1.createNewFile();
+                    }
+                    FileOutputStream fileOutputStream = new FileOutputStream(file1);
+                    HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+
+                    String link ="http://182.160.16.251:81/files/html/coupon_" + randomString + ".html";
+                    TEmail tEmail = new TEmail();
+                    tEmail.setLink(link);
+                    tEmail.setUserId(uid);
+                    tEmail.setType(1);
+                    tEmail.setName(language == 1 ? "优惠券到账" : language == 2 ? "Coupon arrives" : "Le coupon arrive");
+                    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?"AM":"Dans la matinée");
+                    }else {
+                        tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
+                    }
+                    emailService.insert(tEmail);
                 }
             }
         }
@@ -774,6 +992,48 @@
                     user_french.text("Bonjour " + userInfo.getNickName() + ",");
                 }
                 EmailUtil.send(userInfo.getEmail(), language == 1 ? "注册成功" : language == 2 ? "Successful registration" : "Inscription réussie",  document.html());
+                //开始生成pdf收据和html收据
+                File file = new File("/usr/local/nginx/html/files/html/");
+                if(!file.exists()){
+                    file.mkdirs();
+                }
+                String randomString = ToolUtil.getRandomString(10);
+                file = new File("/usr/local/nginx/html/files/html/registration_" + randomString + ".html");
+                if(!file.exists()){
+                    file.createNewFile();
+                }
+                FileWriter fileWriter = new FileWriter(file);
+                fileWriter.write(document.html());
+                fileWriter.flush();
+                fileWriter.close();
+                FileInputStream fileInputStream = new FileInputStream(file);
+                File file1 = new File("/usr/local/nginx/html/files/pdf/");
+                if(!file1.exists()){
+                    file1.mkdirs();
+                }
+                file1 = new File("/usr/local/nginx/html/files/pdf/registration_" + randomString + ".pdf");
+                if(!file1.exists()){
+                    file1.createNewFile();
+                }
+                FileOutputStream fileOutputStream = new FileOutputStream(file1);
+                HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+
+                String link ="http://182.160.16.251:81/files/html/registration_" + randomString + ".html";
+                TEmail tEmail = new TEmail();
+                tEmail.setLink(link);
+                tEmail.setUserId(uid);
+                tEmail.setType(1);
+                tEmail.setName(language == 1 ? "注册成功" : language == 2 ? "Successful registration" : "Inscription réussie");
+                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?"AM":"Dans la matinée");
+                }else {
+                    tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
+                }
+                emailService.insert(tEmail);
             }
 
 
@@ -869,6 +1129,48 @@
                         french_date.text("Cette promotion est valide du" + startTime + "au" + endTime);
                     }
                     EmailUtil.send(userInfo.getEmail(), language == 1 ? "优惠券到账" : language == 2 ? "Coupon arrives" : "Le coupon arrive",  document.html());
+                    //开始生成pdf收据和html收据
+                    File file = new File("/usr/local/nginx/html/files/html/");
+                    if(!file.exists()){
+                        file.mkdirs();
+                    }
+                    String randomString = ToolUtil.getRandomString(10);
+                    file = new File("/usr/local/nginx/html/files/html/coupon_" + randomString + ".html");
+                    if(!file.exists()){
+                        file.createNewFile();
+                    }
+                    FileWriter fileWriter = new FileWriter(file);
+                    fileWriter.write(document.html());
+                    fileWriter.flush();
+                    fileWriter.close();
+                    FileInputStream fileInputStream = new FileInputStream(file);
+                    File file1 = new File("/usr/local/nginx/html/files/pdf/");
+                    if(!file1.exists()){
+                        file1.mkdirs();
+                    }
+                    file1 = new File("/usr/local/nginx/html/files/pdf/coupon_" + randomString + ".pdf");
+                    if(!file1.exists()){
+                        file1.createNewFile();
+                    }
+                    FileOutputStream fileOutputStream = new FileOutputStream(file1);
+                    HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+
+                    String link ="http://182.160.16.251:81/files/html/coupon_" + randomString + ".html";
+                    TEmail tEmail = new TEmail();
+                    tEmail.setLink(link);
+                    tEmail.setUserId(uid);
+                    tEmail.setType(1);
+                    tEmail.setName( language == 1 ? "优惠券到账" : language == 2 ? "Coupon arrives" : "Le coupon arrive");
+                    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?"AM":"Dans la matinée");
+                    }else {
+                        tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
+                    }
+                    emailService.insert(tEmail);
                 }
             }
         }
@@ -1228,6 +1530,48 @@
             }
 
             EmailUtil.send(userInfo.getEmail(), language == 1 ? "重置密码" : language == 2 ? "Reset password" : "Réinitialiser le mot de passe",  document.html());
+            //开始生成pdf收据和html收据
+            File file = new File("/usr/local/nginx/html/files/html/");
+            if(!file.exists()){
+                file.mkdirs();
+            }
+            String randomString = ToolUtil.getRandomString(10);
+            file = new File("/usr/local/nginx/html/files/html/password_" + randomString + ".html");
+            if(!file.exists()){
+                file.createNewFile();
+            }
+            FileWriter fileWriter = new FileWriter(file);
+            fileWriter.write(document.html());
+            fileWriter.flush();
+            fileWriter.close();
+            FileInputStream fileInputStream = new FileInputStream(file);
+            File file1 = new File("/usr/local/nginx/html/files/pdf/");
+            if(!file1.exists()){
+                file1.mkdirs();
+            }
+            file1 = new File("/usr/local/nginx/html/files/pdf/password_" + randomString + ".pdf");
+            if(!file1.exists()){
+                file1.createNewFile();
+            }
+            FileOutputStream fileOutputStream = new FileOutputStream(file1);
+            HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+
+            String link ="http://182.160.16.251:81/files/html/password_" + randomString + ".html";
+            TEmail tEmail = new TEmail();
+            tEmail.setLink(link);
+            tEmail.setUserId(uid);
+            tEmail.setType(1);
+            tEmail.setName(language == 1 ? "重置密码" : language == 2 ? "Reset password" : "Réinitialiser le mot de passe");
+            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?"AM":"Dans la matinée");
+            }else {
+                tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
+            }
+            emailService.insert(tEmail);
         }
         return ResultUtil.success();
     }
@@ -1494,6 +1838,48 @@
                         french_date.text("Cette promotion est valide du" + startTime + "au" + endTime);
                     }
                     EmailUtil.send(userInfo.getEmail(), language == 1 ? "优惠券到账" : language == 2 ? "Coupon arrives" : "Le coupon arrive",  document.html());
+                    //开始生成pdf收据和html收据
+                    File file = new File("/usr/local/nginx/html/files/html/");
+                    if(!file.exists()){
+                        file.mkdirs();
+                    }
+                    String randomString = ToolUtil.getRandomString(10);
+                    file = new File("/usr/local/nginx/html/files/html/coupon_" + randomString + ".html");
+                    if(!file.exists()){
+                        file.createNewFile();
+                    }
+                    FileWriter fileWriter = new FileWriter(file);
+                    fileWriter.write(document.html());
+                    fileWriter.flush();
+                    fileWriter.close();
+                    FileInputStream fileInputStream = new FileInputStream(file);
+                    File file1 = new File("/usr/local/nginx/html/files/pdf/");
+                    if(!file1.exists()){
+                        file1.mkdirs();
+                    }
+                    file1 = new File("/usr/local/nginx/html/files/pdf/coupon_" + randomString + ".pdf");
+                    if(!file1.exists()){
+                        file1.createNewFile();
+                    }
+                    FileOutputStream fileOutputStream = new FileOutputStream(file1);
+                    HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+
+                    String link ="http://182.160.16.251:81/files/html/coupon_" + randomString + ".html";
+                    TEmail tEmail = new TEmail();
+                    tEmail.setLink(link);
+                    tEmail.setUserId(userInfo.getId());
+                    tEmail.setType(1);
+                    tEmail.setName(language == 1 ? "优惠券到账" : language == 2 ? "Coupon arrives" : "Le coupon arrive");
+                    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?"AM":"Dans la matinée");
+                    }else {
+                        tEmail.setAmOrPm(language==1?"下午":language==2?"PM":"après-midi");
+                    }
+                    emailService.insert(tEmail);
                 }
             }
         }
@@ -1619,6 +2005,47 @@
                         french_date.text("Cette promotion est valide du" + startTime + "au" + endTime);
                     }
                     EmailUtil.send(userInfo.getEmail(), language == 1 ? "优惠券到账" : language == 2 ? "Coupon arrives" : "Le coupon arrive",  document.html());
+                    //开始生成pdf收据和html收据
+                    File file = new File("/usr/local/nginx/html/files/html/");
+                    if(!file.exists()){
+                        file.mkdirs();
+                    }
+                    String randomString = ToolUtil.getRandomString(10);
+                    file = new File("/usr/local/nginx/html/files/html/coupon_" + randomString + ".html");
+                    if(!file.exists()){
+                        file.createNewFile();
+                    }
+                    FileWriter fileWriter = new FileWriter(file);
+                    fileWriter.write(document.html());
+                    fileWriter.flush();
+                    fileWriter.close();
+                    FileInputStream fileInputStream = new FileInputStream(file);
+                    File file1 = new File("/usr/local/nginx/html/files/pdf/");
+                    if(!file1.exists()){
+                        file1.mkdirs();
+                    }
+                    file1 = new File("/usr/local/nginx/html/files/pdf/coupon_" + randomString + ".pdf");
+                    if(!file1.exists()){
+                        file1.createNewFile();
+                    }
+                    FileOutputStream fileOutputStream = new FileOutputStream(file1);
+                    HtmlToPdfUtils.convertToPdf(fileInputStream, "IGO", fileOutputStream);
+
+                    String link ="http://182.160.16.251:81/files/html/coupon_" + randomString + ".html";
+                    TEmail tEmail = new TEmail();
+                    tEmail.setLink(link);
+                    tEmail.setUserId(userInfo.getId());
+                    tEmail.setType(1);
+                    tEmail.setName(language == 1 ? "优惠券到账" : language == 2 ? "Coupon arrives" : "Le coupon arrive");
+                    tEmail.setCreateTime(new Date());
+                    int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1;
+                    boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
+                    if(am){
+                        tEmail.setAmOrPm(language==1?"上午":language==2?"Morning":"");
+                    }else {
+                        tEmail.setAmOrPm(language==1?"下午":language==2?"Afternoon":"");
+                    }
+                    emailService.insert(tEmail);
                 }
             }
         }
diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/EmailUtil.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/EmailUtil.java
index bfcfee2..7a0a64d 100644
--- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/EmailUtil.java
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/EmailUtil.java
@@ -1,5 +1,7 @@
 package com.stylefeng.guns.modular.system.util;
 
+import com.stylefeng.guns.modular.system.model.TEmail;
+import com.stylefeng.guns.modular.system.util.itextpdf.HtmlToPdfUtils;
 import com.sun.mail.smtp.SMTPSSLTransport;
 
 import javax.mail.*;
@@ -7,6 +9,10 @@
 import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
 import java.util.Date;
 import java.util.Properties;
 
@@ -92,12 +98,94 @@
         transport.sendMessage(msg, msg.getAllRecipients());
         transport.close();
         return true;
+
+
+    }
+
+    public static  String getWeek(int language,int i){
+        String week="";
+        if(language==1){
+            switch (i){
+                case 1:
+                    week="星期一";
+                    break;
+                case 2:
+                    week="星期二";
+                    break;
+                case 3:
+                    week="星期三";
+                    break;
+                case 4:
+                    week="星期四";
+                    break;
+                case 5:
+                    week="星期五";
+                    break;
+                case 6:
+                    week="星期六";
+                    break;
+                case 7:
+                    week="星期天";
+                    break;
+            }
+        }else if(language==2){
+            switch (i){
+                case 1:
+                    week="Monday";
+                    break;
+                case 2:
+                    week="Tuesday";
+                    break;
+                case 3:
+                    week="Wednesday";
+                    break;
+                case 4:
+                    week="Thursday";
+                    break;
+                case 5:
+                    week="Friday";
+                    break;
+                case 6:
+                    week="Saturday";
+                    break;
+                case 7:
+                    week="Sunday";
+                    break;
+            }
+        }else {
+            switch (i) {
+                case 1:
+                    week = "lundi";
+                    break;
+                case 2:
+                    week = "Mardi mardi ";
+                    break;
+                case 3:
+                    week = "mercredi";
+                    break;
+                case 4:
+                    week = "jeudi";
+                    break;
+                case 5:
+                    week = "vendredi";
+                    break;
+                case 6:
+                    week = "Samedi samedi";
+                    break;
+                case 7:
+                    week = "dimanche";
+                    break;
+            }
+        }
+        return week;
     }
 
 
     public static void main(String[] args) {
         try {
-            EmailUtil.send("393733352@qq.com", "验证码",  "<html><span style=\"color:red;\">123456</span></html>");
+            String week = getWeek(1, 3);
+            System.out.println(week);
+//            EmailUtil.send("393733352@qq.com", "验证码",  "<html><span style=\"color:red;\">123456</span></html>");
         } catch (Exception e) {
             e.printStackTrace();
         }

--
Gitblit v1.7.1