Procházet zdrojové kódy

国际环境计算完毕发送邮件

dsx před 2 roky
rodič
revize
142e61e9b0

+ 6 - 0
pom.xml

@@ -102,6 +102,12 @@
     </dependency>
 
     <dependency>
+      <groupId>com.fdkankan</groupId>
+      <artifactId>4dkankan-utils-sms</artifactId>
+      <version>3.0.0-SNAPSHOT</version>
+    </dependency>
+
+    <dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
     </dependency>

+ 6 - 3
src/main/java/com/fdkankan/contro/controller/TestController.java

@@ -1,5 +1,6 @@
 package com.fdkankan.contro.controller;
 
+import com.fdkankan.contro.mq.service.ICommonService;
 import com.fdkankan.contro.service.IScene3dNumService;
 import com.fdkankan.web.response.ResultData;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,11 +22,13 @@ public class TestController {
 
     @Autowired
     private IScene3dNumService scene3dNumService;
+    @Autowired
+    private ICommonService commonService;
 
     @GetMapping("/test")
-    public ResultData test() throws Exception {
-        String s = scene3dNumService.generateSceneNum(1);
-        return ResultData.ok(s);
+    public ResultData test(String num) throws Exception {
+        commonService.sendEmail(num);
+        return ResultData.ok();
     }
 
 }

+ 90 - 0
src/main/java/com/fdkankan/contro/entity/MailTemplate.java

@@ -0,0 +1,90 @@
+package com.fdkankan.contro.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-01
+ */
+@Getter
+@Setter
+@TableName("t_mail_template")
+public class MailTemplate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 发件人邮箱
+     */
+    @TableField("send_mail")
+    private String sendMail;
+
+    /**
+     * 发件人邮箱密码
+     */
+    @TableField("send_password")
+    private String sendPassword;
+
+    /**
+     * 发件人主机
+     */
+    @TableField("send_host")
+    private String sendHost;
+
+    /**
+     * 收件主题
+     */
+    @TableField("subject")
+    private String subject;
+
+    /**
+     * 邮件内容
+     */
+    @TableField("msg")
+    private String msg;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A", delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+    /**
+     * 0订单发票,1深时演示场景,2验证码,3权益会员过期
+     */
+    @TableField("type")
+    private Integer type;
+
+    /**
+     * zh 中文,en英文
+     */
+    @TableField("lang")
+    private String lang;
+
+
+}

+ 1 - 1
src/main/java/com/fdkankan/contro/generate/AutoGenerate.java

@@ -17,7 +17,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"contro", getTables(new String[]{
-                "t_scene_build_process_log"
+                "t_mail_template"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 18 - 0
src/main/java/com/fdkankan/contro/mapper/IMailTemplateMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.contro.mapper;
+
+import com.fdkankan.contro.entity.MailTemplate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-01
+ */
+@Mapper
+public interface IMailTemplateMapper extends BaseMapper<MailTemplate> {
+
+}

+ 2 - 0
src/main/java/com/fdkankan/contro/mq/service/ICommonService.java

@@ -24,4 +24,6 @@ public interface ICommonService {
     public void initUserEditData(String num, Set<String> bizs, Map<String, Map<String ,Object>> params);
 
     public void uploadFloorplanJson(String num, String dataSource) throws Exception;
+
+    public void sendEmail(String num);
 }

+ 8 - 0
src/main/java/com/fdkankan/contro/mq/service/impl/BuildObjServiceImpl.java

@@ -67,6 +67,9 @@ public class BuildObjServiceImpl implements IBuildSceneService {
     @Value("#{'${model.3dtiles.sceneSource:}'.split(',')}")
     private List<Integer> sdTilesSceneSourceList;
 
+    @Value("${env:gn}")
+    private String env;
+
     @Autowired
     private RabbitMqProducer mqProducer;
 
@@ -293,6 +296,11 @@ public class BuildObjServiceImpl implements IBuildSceneService {
 
             success = true;
 
+            //国际环境需要发邮件通知
+            if("eur".equals(env)){
+                commonService.sendEmail(projectNum);
+            }
+
         }catch (Exception e){
             log.error("生成OBJ场景计算结果处理异常,num=" + projectNum, e);
             buildSceneDTService.handBaseFail("生成OBJ场景计算结果处理异常", message.getPath(), projectNum, "计算控制服务器");

+ 8 - 0
src/main/java/com/fdkankan/contro/mq/service/impl/BuildSceneServiceImpl.java

@@ -85,6 +85,9 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
     @Value("#{'${model.3dtiles.sceneSource:}'.split(',')}")
     private List<Integer> sdTilesSceneSourceList;
 
+    @Value("${env:gn}")
+    private String env;
+
     @Autowired
     private RabbitMqProducer mqProducer;
 
@@ -345,6 +348,11 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
             //删除计算目录
             CreateObjUtil.deleteFile(path.replace(ConstantFilePath.BUILD_MODEL_PATH, "/"));
 
+            //国际环境需要发邮件通知
+            if("eur".equals(env)){
+                commonService.sendEmail(sceneCode);
+            }
+
             log.info("场景计算结果处理结束,场景码:{}", sceneCode);
 
         }catch (Exception e){

+ 12 - 0
src/main/java/com/fdkankan/contro/mq/service/impl/BuildV3SceneServiceImpl.java

@@ -19,6 +19,7 @@ import com.fdkankan.common.constant.SceneStatus;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.contro.entity.*;
 import com.fdkankan.contro.mq.service.IBuildSceneService;
+import com.fdkankan.contro.mq.service.ICommonService;
 import com.fdkankan.contro.service.*;
 import com.fdkankan.contro.service.impl.FdkkV4Service;
 import com.fdkankan.fyun.config.FYunFileConfig;
@@ -73,6 +74,12 @@ public class BuildV3SceneServiceImpl implements IBuildSceneService {
     @Value("${model.modelKind:3dtiles}")
     private String modelKind;
 
+    @Value("${env:gn}")
+    private String env;
+
+    @Autowired
+    private ICommonService commonService;
+
     @Autowired
     private RabbitMqProducer mqProducer;
 
@@ -287,6 +294,11 @@ public class BuildV3SceneServiceImpl implements IBuildSceneService {
 //                fdkkV4Service.upgradeToV4(sceneCode);
 //            }
 
+            //国际环境需要发邮件通知
+            if("eur".equals(env)){
+                commonService.sendEmail(sceneCode);
+            }
+
         }catch (Exception e){
             log.error("场景计算结果处理出错,num"+sceneCode, e);
             buildSceneDTService.handBaseFail("场景计算结果处理出错!", message.getPath(), sceneCode, "计算控制服务器");

+ 65 - 9
src/main/java/com/fdkankan/contro/mq/service/impl/CommonServiceImpl.java

@@ -2,34 +2,50 @@ package com.fdkankan.contro.mq.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.io.FileUtil;
-import com.fdkankan.common.util.FileUtils;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.common.util.FileUtils;
+import com.fdkankan.contro.entity.*;
 import com.fdkankan.contro.factory.UserEditData.UserEditDataHandler;
 import com.fdkankan.contro.factory.UserEditData.UserEditDataHandlerFactory;
-import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.contro.mq.service.ICommonService;
+import com.fdkankan.contro.service.*;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
-import com.fdkankan.model.constants.ConstantFilePath;
 import com.fdkankan.model.constants.UploadFilePath;
 import com.fdkankan.model.utils.FloorPlanUserUtil;
-import com.fdkankan.model.utils.SceneUtil;
+import com.fdkankan.sms.SendMailAcceUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.io.File;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.Objects;
+import java.util.*;
 
 @Slf4j
 @Service
 public class CommonServiceImpl implements ICommonService {
 
+    @Value("${main.url}")
+    private String mainUrl;
+
+    @Value("${env:gn}")
+    private String env;
+
+
     @Autowired
     private FYunFileServiceInterface fYunFileServiceInterface;
+    @Autowired
+    private IScenePlusService scenePlusService;
+    @Autowired
+    private IScenePlusExtService scenePlusExtService;
+    @Autowired
+    private IMailTemplateService mailTemplateService;
+    @Autowired
+    private IUserService userService;
+    @Autowired
+    private ISceneProService sceneProService;
 
 
     @Override
@@ -149,4 +165,44 @@ public class CommonServiceImpl implements ICommonService {
         String hourseTypeJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH, num) + "floorplan.json";
         fYunFileServiceInterface.uploadFile(json.toJSONString().getBytes(), hourseTypeJsonPath);
     }
+
+    @Override
+    public void sendEmail(String num) {
+        try {
+            Long userId = null;
+            ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
+            if(Objects.isNull(scenePlus)){
+                ScenePro scenePro = sceneProService.getByNum(num);
+                if(Objects.isNull(scenePro)){
+                    return;
+                }
+                userId = scenePro.getUserId();
+            }else{
+                userId = scenePlus.getUserId();
+            }
+
+            if(Objects.isNull(userId)){
+                return;
+            }
+            User user = userService.getById(scenePlus.getUserId());
+            if(Objects.isNull(user) || StrUtil.isEmpty(user.getUserName())){
+                return;
+            }
+            String toEmail = user.getUserName();
+            ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
+            String sceneLink = scenePlusExt.getWebSite();
+            String helpLink = mainUrl + "/#/service/use/help ";
+            String lang = "en";
+            if("gn".equals(env)){
+                lang = "zh";
+            }
+            sceneLink += "&lang=" + lang;
+
+            MailTemplate mailTemplate = mailTemplateService.getOne(new LambdaQueryWrapper<MailTemplate>().eq(MailTemplate::getRemark, "计算完成").eq(MailTemplate::getLang, lang));
+            String content = mailTemplate.getMsg().replaceAll("scene_link", sceneLink).replaceAll("help_link", helpLink);
+            SendMailAcceUtils.sendMail(mailTemplate.getSendMail(), mailTemplate.getSendPassword(), mailTemplate.getSendHost(), toEmail, mailTemplate.getSubject(), content, null);
+        }catch (Exception e){
+            log.warn("发送邮件失败,num:{}", num);
+        }
+    }
 }

+ 16 - 0
src/main/java/com/fdkankan/contro/service/IMailTemplateService.java

@@ -0,0 +1,16 @@
+package com.fdkankan.contro.service;
+
+import com.fdkankan.contro.entity.MailTemplate;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-01
+ */
+public interface IMailTemplateService extends IService<MailTemplate> {
+
+}

+ 20 - 0
src/main/java/com/fdkankan/contro/service/impl/MailTemplateServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fdkankan.contro.service.impl;
+
+import com.fdkankan.contro.entity.MailTemplate;
+import com.fdkankan.contro.mapper.IMailTemplateMapper;
+import com.fdkankan.contro.service.IMailTemplateService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-01
+ */
+@Service
+public class MailTemplateServiceImpl extends ServiceImpl<IMailTemplateMapper, MailTemplate> implements IMailTemplateService {
+
+}

+ 5 - 0
src/main/resources/mapper/contro/MailTemplateMapper.xml

@@ -0,0 +1,5 @@
+<?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.fdkankan.contro.mapper.IMailTemplateMapper">
+
+</mapper>