From 4c99ee7028c3fe58a2cd4b8273b22c75c45574fc Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 16 五月 2025 10:27:41 +0800 Subject: [PATCH] 修改文档bug --- ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserActivityDiscount1ServiceImpl.java | 166 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 162 insertions(+), 4 deletions(-) diff --git a/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserActivityDiscount1ServiceImpl.java b/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserActivityDiscount1ServiceImpl.java index e7a8078..936a699 100644 --- a/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserActivityDiscount1ServiceImpl.java +++ b/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserActivityDiscount1ServiceImpl.java @@ -1,23 +1,39 @@ package com.stylefeng.guns.modular.system.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.stylefeng.guns.core.util.ToolUtil; +import com.stylefeng.guns.modular.system.model.TEmail; +import com.stylefeng.guns.modular.system.model.TUser; +import com.stylefeng.guns.modular.system.model.User; import com.stylefeng.guns.modular.system.model.UserActivityDiscount1; import com.stylefeng.guns.modular.system.dao.UserActivityDiscount1Mapper; import com.stylefeng.guns.modular.system.service.ITCompanyService; +import com.stylefeng.guns.modular.system.service.ITUserService; import com.stylefeng.guns.modular.system.service.IUserActivityDiscount1Service; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +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.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.util.CellRangeAddress; +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.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.FileWriter; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.SimpleDateFormat; +import java.util.*; /** * <p> @@ -35,6 +51,15 @@ @Autowired private ITCompanyService companyService; + + @Autowired + private ITUserService userService; + + @Value("${spring.mail.template-path}") + private String templatePath; + + @Autowired + private TEmailService emailService; /** @@ -265,4 +290,137 @@ } return hssfWorkbook; } + + + /** + * 发送活动提醒邮件 + */ + @Override + public void sendActivityEmail() { + try { + List<UserActivityDiscount1> list = this.selectList(new EntityWrapper<UserActivityDiscount1>().eq("enable", 2) + .last(" and now() >= startTime and now() < ADDDATE(startTime,INTERVAL 1 MINUTE)")); + if(list.size() > 0){ + sendEmail(list); + } + }catch (Exception e){ + e.printStackTrace(); + } + + } + + + + public void sendEmail(List<UserActivityDiscount1> list) throws Exception{ + List<TUser> tUsers = userService.selectList(new EntityWrapper<TUser>().ne("flag", 3).eq("state", 1)); + for (UserActivityDiscount1 uad : list) { + Map<String, Double> map = new HashMap<>(); + Double special = uad.getSpecial(); + if(null != special){ + map.put("ride", special * 10); + } + Double logistics = uad.getLogistics(); + if(null != special){ + map.put("delivery", logistics * 10); + } + Set<String> strings = map.keySet(); + + for (TUser user : tUsers) { + if(ToolUtil.isNotEmpty(user.getEmail())){ + Integer language = user.getLanguage(); + for (String key : strings) { + Double aDouble = map.get(key); + String path1 = templatePath + "user/discount.html"; + Document document1 = Jsoup.parse(new File(path1), "UTF-8"); + if(1 == language){ + document1.getElementById("english").remove(); + document1.getElementById("french").remove(); + document1.getElementsByTag("title").get(0).text("折扣活动"); + Element chinese_user = document1.getElementById("chinese_user"); + chinese_user.text("您好 " + user.getNickName() + ","); + Element chinese_ride = document1.getElementById("chinese_ride"); + chinese_ride.text("I-GO" + (key.equals("ride") ? "打车" : "包裹") + "折扣活动奖励"); + Element chinese_go = document1.getElementById("chinese_go"); + if("ride".equals(key)){ + chinese_go.text("去打车"); + }else{ + chinese_go.text("寄包裹"); + } + Element chinese_discount = document1.getElementById("chinese_discount"); + chinese_discount.text("每单费用折扣" + new BigDecimal(100).subtract(new BigDecimal(aDouble)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() + "%"); + EmailUtil.send(user.getEmail(), "折扣活动", document1.html()); + } + if(2 == language){ + document1.getElementById("chinese").remove(); + document1.getElementById("french").remove(); + document1.getElementsByTag("title").get(0).text("Discount activities"); + Element english_user = document1.getElementById("english_user"); + english_user.text("Hello " + user.getNickName() + ","); + Element english_ride = document1.getElementById("english_ride"); + english_ride.text("Discount for I-GO " + key); + Element english_go = document1.getElementById("english_go"); + if("ride".equals(key)){ + english_go.text("REQUEST A RIDE"); + }else{ + english_go.text("REQUEST A DELIVERY"); + } + Element english_discount = document1.getElementById("english_discount"); + english_discount.text(" Enjoy " + new BigDecimal(100).subtract(new BigDecimal(aDouble)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() + "% off your trip fare."); + EmailUtil.send(user.getEmail(), "Discount activities", document1.html()); + } + if(3 == language){ + document1.getElementById("chinese").remove(); + document1.getElementById("english").remove(); + document1.getElementsByTag("title").get(0).text("Activités à rabais"); + Element french_user = document1.getElementById("french_user"); + french_user.text("Cher(ère) " + user.getNickName() + ","); + Element french_ride = document1.getElementById("french_ride"); + french_ride.text("Remise pour I-GO (commande de " + (key.equals("ride") ? "course" : "livraison") + ")!"); + Element french_go = document1.getElementById("french_go"); + if("ride".equals(key)){ + french_go.text("Déplacez-vous avec I-GO"); + }else{ + french_go.text("Demander une livraison avec I-GO"); + } + Element french_discount = document1.getElementById("french_discount"); + french_discount.text("Profitez aujourd’hui de " + new BigDecimal(100).subtract(new BigDecimal(aDouble)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() + "% de réduction sur les commandes de " + (key.equals("ride") ? "course" : "livraison") + ", allez sur la plate-forme I-GO pour voir le détail."); + EmailUtil.send(user.getEmail(), "Activités à rabais", document1.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/discount_" + randomString + ".html"); + if(!file.exists()){ + file.createNewFile(); + } + FileWriter fileWriter = new FileWriter(file); + fileWriter.write(document1.html()); + fileWriter.flush(); + fileWriter.close(); + + String link ="https://igo.i-go.group/files/html/discount_" + randomString + ".html"; + TEmail tEmail = new TEmail(); + tEmail.setLink(link); + tEmail.setUserId(user.getId()); + tEmail.setType(1); + tEmail.setName(1 == language ? "折扣活动" : 2 == language ? "Discount activities" : "Activités à rabais"); + tEmail.setCreateTime(new Date()); + int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1; + tEmail.setWeek(EmailUtil.getWeek(2,i)); + boolean am = cn.hutool.core.date.DateUtil.isAM(new Date()); + if(am){ + tEmail.setAmOrPm("AM"); + }else { + tEmail.setAmOrPm("PM"); + } + emailService.insert(tEmail); + } + + } + } + } + } } -- Gitblit v1.7.1