1811872455@163.com 1 vecka sedan
förälder
incheckning
ed71e22adf
19 ändrade filer med 493 tillägg och 205 borttagningar
  1. 1 0
      java/storlead-api/src/main/java/com/storlead/system/controller/FileResourceController.java
  2. 48 0
      java/storlead-framework/storlead-common/src/main/java/com/storlead/framework/common/util/SpringCompareUtil.java
  3. 372 0
      java/storlead-framework/storlead-common/src/main/java/com/storlead/framework/common/util/WordUtils.java
  4. 37 0
      java/storlead-framework/storlead-common/src/main/java/com/storlead/framework/common/vo/StaffVo.java
  5. 7 0
      java/storlead-framework/storlead-mybatis/src/main/java/com/storlead/framework/mybatis/query/QueryBaseEntity.java
  6. 0 1
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/pojo/dto/customer/OrderFormSearchDTO.java
  7. 2 1
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/pojo/dto/systemrule/CurrencySettingsDTO.java
  8. 12 13
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/BulletinServiceImpl.java
  9. 6 6
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/CustomerServiceImpl.java
  10. 1 1
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/LiaisonServiceImpl.java
  11. 1 1
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/OrderFormServiceImpl.java
  12. 1 2
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/RecordCommentServiceImpl.java
  13. 1 2
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/SendRecordServiceImpl.java
  14. 1 1
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/WorkDynamicsServiceImpl.java
  15. 1 1
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/WorkOrderServiceImpl.java
  16. 2 3
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/task/TaskServiceImpl.java
  17. 0 47
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/task/dispatch/EmailPullAttachmentTaskJob.java
  18. 0 67
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/task/dispatch/EmailPullBodyContentTaskJob.java
  19. 0 59
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/task/dispatch/EmailPullHeadContentTaskJob.java

+ 1 - 0
java/storlead-api/src/main/java/com/storlead/system/controller/FileResourceController.java

@@ -3,6 +3,7 @@ package com.storlead.system.controller;
 
 import com.alibaba.fastjson.JSONObject;
 import com.storlead.framework.common.result.Result;
+import com.storlead.framework.common.util.FileUtil;
 import com.storlead.framework.common.util.OssBootUtil;
 import com.storlead.framework.common.util.generate.CodeGenerate;
 import com.storlead.system.pojo.entity.FileResourceEntity;

+ 48 - 0
java/storlead-framework/storlead-common/src/main/java/com/storlead/framework/common/util/SpringCompareUtil.java

@@ -0,0 +1,48 @@
+package com.storlead.framework.common.util;
+
+/**
+ * @program: storlead-saas-platform
+ * @description:
+ * @author: chenkq
+ * @create: 2026-05-18 18:02
+ */
+public class SpringCompareUtil {
+
+
+    /**
+     * 包含匹配
+     * @param var1
+     * @param var2
+     * @return
+     */
+    public static boolean includeEqual(Integer var1,Integer... var2) {
+        if (var1 == null || var2 == null) {
+            return false;
+        }
+        for (Integer i : var2) {
+            if (var1.equals(i)) {
+                return true;
+            }
+        }
+        return false;
+    };
+
+
+    /**
+     * @description: 完全匹配
+     * @param var1
+     * @param var2
+     * @return
+     */
+    public static boolean fullEqual(Integer var1,Integer... var2) {
+        if (var1 == null || var2 == null) {
+            return false;
+        }
+        for (Integer i : var2) {
+            if (!var1.equals(i)) {
+                return false;
+            }
+        }
+        return true;
+    };
+}

+ 372 - 0
java/storlead-framework/storlead-common/src/main/java/com/storlead/framework/common/util/WordUtils.java

@@ -0,0 +1,372 @@
+package com.storlead.framework.common.util;
+
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import freemarker.template.TemplateException;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Base64;
+import java.util.Map;
+
+/**
+ * @program: storlead-saas-platform
+ * @description:
+ * @author: chenkq
+ * @create: 2026-05-18 17:50
+ */
+public class WordUtils {
+
+    private static final Logger log = LoggerFactory.getLogger(WordUtils.class);
+    private static WordUtils service = null;
+
+    public WordUtils() {
+        super();
+    }
+
+    public static WordUtils getInstance() {
+        if(service == null) {
+            service = new WordUtils();
+        }
+        return service;
+    }
+
+    /**
+     * 导出至word
+     * @param ftl ftl模板地址
+     * @param fileName 文件名
+     * @param dataMap 导出数据
+     * @param response response
+     */
+    public void exportDocFile(String ftl, String fileName, Map<String, Object> dataMap, HttpServletResponse response){
+        Configuration configuration = new Configuration(Configuration.VERSION_2_3_28);
+        configuration.setDefaultEncoding("UTF-8");
+
+        OutputStreamWriter oWriter = null;
+        Writer out = null;
+        try {
+            ClassPathResource resource = new ClassPathResource(ftl);
+            File file = File.createTempFile("StatementTemp",".ftl");
+            FileUtils.copyURLToFile(resource.getURL(), file);
+            String templateFile = file.getAbsolutePath();
+            templateFile = pathReplace(templateFile);
+            if(null == templateFile){
+                log.error("导出失败,模板不存在");
+                return;
+            }
+            String ftlPath = templateFile.substring(0, templateFile.lastIndexOf("/"));
+            log.info("模板路径:{}", ftlPath);
+            // FTL文件所存在的位置--绝对路径
+            configuration.setDirectoryForTemplateLoading(new File(ftlPath));
+            //configuration.setClassForTemplateLoading(this.getClass(), ftlPath);
+            String ftlFile = templateFile.substring(templateFile.lastIndexOf("/")+1);
+            log.info("模板临时文件名称:{}", ftlFile);
+            // 模板文件名
+            Template template = configuration.getTemplate(ftlFile);
+
+            response.reset();
+            response.setContentType("application/msword; charset=utf-8");
+            String filename = fileName + ".doc";
+            response.setHeader("Content-Disposition", "attachment; filename="+ urlEncode(filename));
+            oWriter = new OutputStreamWriter(response.getOutputStream(), StandardCharsets.UTF_8);
+            out = new BufferedWriter(oWriter);
+            template.process(dataMap, out);
+        } catch (Exception e) {
+            log.error("导出word失败:", e);
+        } finally {
+            try {
+                if(null != out){
+                    out.close();
+                }
+                if(null != oWriter){
+                    oWriter.close();
+                }
+            } catch (IOException e) {
+                log.error("Writer or OutputStreamWriter close failed:{}", e.getMessage());
+            }
+        }
+    }
+
+
+
+    /**
+     * 导出至word
+     * @param ftl ftl模板地址
+     * @param fileName 文件名
+     * @param dataMap 导出数据
+     * @param response response
+     */
+    public ResponseEntity<FileSystemResource> repExportDocFile(String ftl, String fileName, Map<String, Object> dataMap) {
+        Configuration configuration = new Configuration(Configuration.VERSION_2_3_28);
+        configuration.setDefaultEncoding("UTF-8");
+
+        try {
+            // 1. 获取模板文件
+            ClassPathResource resource = new ClassPathResource(ftl);
+            File tempTemplate = File.createTempFile("StatementTemp", ".ftl");
+            FileUtils.copyURLToFile(resource.getURL(), tempTemplate);
+
+            String templatePath = pathReplace(tempTemplate.getAbsolutePath());
+            if (templatePath == null) {
+                log.error("导出失败,模板不存在");
+                return ResponseEntity.notFound().build();
+            }
+
+            String ftlDir = templatePath.substring(0, templatePath.lastIndexOf("/"));
+            configuration.setDirectoryForTemplateLoading(new File(ftlDir));
+            String ftlFileName = templatePath.substring(templatePath.lastIndexOf("/") + 1);
+            Template template = configuration.getTemplate(ftlFileName);
+
+            // 2. 生成 Word 临时文件
+            File tempWordFile = File.createTempFile("Export-", ".doc");
+            try (Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(tempWordFile), StandardCharsets.UTF_8))) {
+                template.process(dataMap, out);
+            }
+
+            // 3. 返回 Word 文件
+            FileSystemResource resourceBody = new FileSystemResource(tempWordFile);
+            String downloadFileName = fileName + ".doc";
+
+//            response.setContentType("application/msword; charset=utf-8");
+//            String filename = fileName + ".doc";
+//            response.setHeader("Content-Disposition", "attachment; filename="+ urlEncode(filename));
+
+            return ResponseEntity.ok()
+                    .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + urlEncode(downloadFileName))
+//                    .header("application/octet-stream", "attachment; filename=" + urlEncode(downloadFileName))
+                    .contentType(MediaType.parseMediaType("application/msword"))
+                    .contentLength(resourceBody.contentLength())
+                    .body(resourceBody);
+
+        } catch (Exception e) {
+            log.error("导出word失败:", e);
+            return ResponseEntity.status(500).build();
+        }
+    }
+
+    public String exportDocToUrl(String ftl, String fileName, Map<String, Object> dataMap) {
+        try {
+            // 生成 Word 文件
+            Configuration configuration = new Configuration(Configuration.VERSION_2_3_28);
+            configuration.setDefaultEncoding("UTF-8");
+
+            ClassPathResource resource = new ClassPathResource(ftl);
+            File tempTemplate = File.createTempFile("Template-", ".ftl");
+            FileUtils.copyURLToFile(resource.getURL(), tempTemplate);
+
+            String templatePath = pathReplace(tempTemplate.getAbsolutePath());
+            String ftlDir = templatePath.substring(0, templatePath.lastIndexOf("/"));
+            configuration.setDirectoryForTemplateLoading(new File(ftlDir));
+            String ftlFileName = templatePath.substring(templatePath.lastIndexOf("/") + 1);
+
+            Template template = configuration.getTemplate(ftlFileName);
+
+            // 1. 导出目录(容器内路径)
+            File exportDir = new File("/app/tempfiles");
+            if (!exportDir.exists()) {
+                exportDir.mkdirs();
+            }
+
+            File targetFile = new File(exportDir, fileName + ".doc");
+
+            try (Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetFile), StandardCharsets.UTF_8))) {
+                template.process(dataMap, out);
+            }
+
+            // 2. 拼接 URL(这里假设映射后访问路径是 /export/)
+            return "/static/file/" + fileName + ".doc";
+
+        } catch (Exception e) {
+            log.error("生成word失败:", e);
+            return null;
+        }
+    }
+
+
+    public void exportDocFileTest(String ftl, String fileName, Map<String, Object> dataMap, HttpServletResponse response){
+        Configuration configuration = new Configuration(Configuration.VERSION_2_3_28);
+        configuration.setDefaultEncoding("UTF-8");
+
+        try {
+            // 直接从类路径加载FTL资源
+            ClassPathResource resource = new ClassPathResource(ftl);
+            URL templateUrl = resource.getURL();
+
+            // 注意:这里需要确保Freemarker可以直接从URL加载模板,或者您需要将其内容复制到字符串或ByteArrayInputStream
+            // 但对于大多数情况,如果模板在类路径中,您可以直接使用setClassLoaderForTemplateLoading
+            configuration.setClassForTemplateLoading(this.getClass().getClassLoader().getClass(), "");
+
+            // 获取模板
+            Template template = configuration.getTemplate(ftl);
+
+            // 设置响应头
+            response.reset();
+            response.setContentType("application/octet-stream; charset=utf-8");
+            String encodedFileName = java.net.URLEncoder.encode(fileName + ".doc", StandardCharsets.UTF_8.toString());
+            response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedFileName + "\"");
+
+            // 使用BufferedWriter写入响应
+            try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(response.getOutputStream(), StandardCharsets.UTF_8))) {
+                template.process(dataMap, writer);
+                writer.flush(); // 确保所有数据都被写入响应
+            }
+
+        } catch (IOException | TemplateException e) {
+            // 处理异常,例如记录日志或返回错误响应
+            // 注意:在实际应用中,您可能想要将异常信息返回给客户端或进行其他错误处理
+            System.err.println("导出word失败:" + e.getMessage());
+        }
+    }
+
+    /**
+     * 创建doc文件
+     * @param ftl src/main/resources/ftl/xxx.ftl
+     * @param dataMap 导出数据
+     * @param exportPath  eg: /tmp/test/test123.doc
+     * @param loadType  设置路径加载方式。1-绝对路径,2-项目相对路径
+     * @return {@link File}
+     * @ver v1.0.0
+     */
+    public File createDocFile(String ftl, Map<String, Object> dataMap, String exportPath, int loadType) {
+        File file = new File(ftl);
+        String templateFile = file.getAbsolutePath();
+        Template t = null;
+        Configuration configuration = new Configuration(Configuration.VERSION_2_3_28);
+        configuration.setDefaultEncoding("UTF-8");
+        try {
+            templateFile = pathReplace(templateFile);
+            if(null == templateFile){
+                log.error("模板不存在!");
+                return null;
+            }
+            String ftlPath = templateFile.substring(0, templateFile.lastIndexOf("/"));
+            if(loadType == 1) {
+                // FTL文件所存在的位置
+                configuration.setDirectoryForTemplateLoading(new File(ftlPath));
+            }else {
+                //以类加载的方式查找模版文件路径
+                configuration.setClassForTemplateLoading(this.getClass(), ftlPath);
+            }
+
+            String ftlFile = templateFile.substring(templateFile.lastIndexOf("/")+1);
+            // 模板文件名
+            t = configuration.getTemplate(ftlFile);
+
+            File outFile = new File(exportPath);
+            Writer out =  new BufferedWriter(new OutputStreamWriter(Files.newOutputStream(outFile.toPath())));
+            t.process(dataMap, out);
+        } catch (Exception e) {
+            log.error("导出word文档出错:{}", e.getMessage());
+        }
+        return null;
+    }
+
+    /**
+     *  把路径的\替换成/
+     * @param path 路径
+     * @return {@link String}
+     * @ver v1.0.0
+     */
+    private static String pathReplace(String path) {
+        if(!ObjectUtils.isEmpty(path)) {
+            path = path.replace("\\",  "/");
+//                path = path.replace("\"", "/");
+        }
+        return path;
+    }
+
+    /**
+     * 图片转base64
+     * @param imgStr 图片 http 地址
+     * @return {@link String}
+     * @ver v1.0.0
+     */
+    public static String getImgStrToBase64(String imgStr) {
+        if(StringUtils.isEmpty(imgStr)){
+            return "";
+        }
+        log.info("imgStr:===>{}",imgStr);
+        InputStream inputStream = null;
+        ByteArrayOutputStream outputStream = null;
+        byte[] buffer = null;
+        try {
+            //判断网络链接图片文件/本地目录图片文件
+            if (imgStr.startsWith("http://") || imgStr.startsWith("https://")) {
+                // 创建URL
+                URL url = new URL(imgStr);
+                // 创建链接
+                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+                conn.setRequestMethod("GET");
+                conn.setConnectTimeout(5000);
+                inputStream = conn.getInputStream();
+                outputStream = new ByteArrayOutputStream();
+                // 将内容读取内存中
+                buffer = new byte[1024];
+                int len = -1;
+                while ((len = inputStream.read(buffer)) != -1) {
+                    outputStream.write(buffer, 0, len);
+                }
+                buffer = outputStream.toByteArray();
+            } else {
+                inputStream = Files.newInputStream(Paths.get(imgStr));
+                int count = 0;
+                while (count == 0) {
+                    count = inputStream.available();
+                }
+                buffer = new byte[count];
+                inputStream.read(buffer);
+            }
+            // 对字节数组Base64编码
+            return new String(Base64.getDecoder().decode(buffer));
+        }catch (Exception e) {
+            log.error("图片转换失败:{}", e.getMessage());
+            return "";
+        } finally {
+            if (inputStream != null) {
+                try {
+                    // 关闭inputStream流
+                    inputStream.close();
+                } catch (IOException e) {
+                    log.error("InputStream 关闭失败:{}", e.getMessage());
+                }
+            }
+            if (outputStream != null) {
+                try {
+                    // 关闭outputStream流
+                    outputStream.close();
+                } catch (IOException e) {
+                    log.error("ByteArrayOutputStream 关闭失败:{}", e.getMessage());
+                }
+            }
+        }
+    }
+
+
+    /**
+     * URL 编码, Encode默认为UTF-8.
+     */
+    public static String urlEncode(String part) {
+        try {
+            return URLEncoder.encode(part, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            log.error("编码失败:{}", e.getMessage());
+            return "";
+        }
+    }
+}

+ 37 - 0
java/storlead-framework/storlead-common/src/main/java/com/storlead/framework/common/vo/StaffVo.java

@@ -0,0 +1,37 @@
+package com.storlead.framework.common.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @program: storlead-saas-platform
+ * @description:
+ * @author: chenkq
+ * @create: 2026-05-18 18:05
+ */
+@Data
+@ApiModel("员工头像类")
+public class StaffVo implements Serializable {
+
+    @ApiModelProperty(value = "分公司ID")
+    private Long subCompanyId;
+
+    @ApiModelProperty(value = "部门ID")
+    private Long deptId;
+
+    @ApiModelProperty(value = "名称ID")
+    private String deptName;
+
+    @ApiModelProperty(value = "员工ID")
+    private Long staffId;
+
+    @ApiModelProperty(value = "员工名称")
+    private String staffName;
+
+    @ApiModelProperty(value = "员工头像")
+    private String staffPhoto;
+
+}

+ 7 - 0
java/storlead-framework/storlead-mybatis/src/main/java/com/storlead/framework/mybatis/query/QueryBaseEntity.java

@@ -48,4 +48,11 @@ public class QueryBaseEntity extends Page {
     @TableField(exist = false)
     @ApiModelProperty(value = "排序方式")
     private String sortMethod;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "销售:归属分类(QueryRangeTypeEnum)(0全部客户、10:我的客户、20:我发起的、30:下属客户、40我协作的、50:下属协作的,70:重点)" +
+            "工资:" +
+            "目标")
+    private Integer queryRangeType;
+
 }

+ 0 - 1
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/pojo/dto/customer/OrderFormSearchDTO.java

@@ -55,5 +55,4 @@ public class OrderFormSearchDTO extends QueryBaseEntity {
     @ApiModelProperty(value = "归属人ids")
     private List<Long> ownerByIds;
 
-
 }

+ 2 - 1
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/pojo/dto/systemrule/CurrencySettingsDTO.java

@@ -1,6 +1,7 @@
 package com.storlead.sales.pojo.dto.systemrule;
 
 
+import com.storlead.framework.common.dto.page.PageDTO;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -10,6 +11,6 @@ import lombok.experimental.Accessors;
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 @ApiModel(value = "CurencySettingsDTO", description = "币种设置DTO")
-public class CurrencySettingsDTO extends Page {
+public class CurrencySettingsDTO extends PageDTO {
 
 }

+ 12 - 13
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/BulletinServiceImpl.java

@@ -8,7 +8,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.storlead.framework.common.constant.CommonConstant;
-import com.storlead.common.enums.UserRoleType;
 import com.storlead.framework.util.LoginUserUtil;
 import com.storlead.framework.auth.vo.LoginUser;
 import com.storlead.framework.common.result.Result;
@@ -352,7 +351,7 @@ public class BulletinServiceImpl extends MyBaseServiceImpl<BulletinMapper, Bulle
     public Result<?> delete(Long bulletinId) {
         //超管 和创建者可以删除
         LoginUser loginUser = LoginUserUtil.getLoginUser();
-        UserRoleType userRole = userRoleService.getUserRole(loginUser);
+/*        UserRoleType userRole = userRoleService.getUserRole(loginUser);
         BulletinEntity bulletin = this.getById(bulletinId);
         if(bulletin==null){
             return Result.error("公告不存在!");
@@ -360,7 +359,7 @@ public class BulletinServiceImpl extends MyBaseServiceImpl<BulletinMapper, Bulle
         //只有超管和创建者可以删除
         if(!Objects.equals(userRole,UserRoleType.Admin)&&!Objects.equals(loginUser.getId(),bulletin.getCreateBy())){
             return Result.error("沒有权限!");
-        }
+        }*/
         LambdaUpdateWrapper<BulletinEntity> updateWrapper = new LambdaUpdateWrapper<>();
         updateWrapper.eq(BulletinEntity::getId, bulletinId);
         updateWrapper.set(BulletinEntity::getIsDelete, CommonConstant.DEL_FLAG_1);
@@ -630,16 +629,16 @@ public class BulletinServiceImpl extends MyBaseServiceImpl<BulletinMapper, Bulle
     }
 
     private boolean canEdit(Long bulletinId){
-        LoginUser loginUser = LoginUserUtil.getLoginUser();
-        UserRoleType userRole = userRoleService.getUserRole(loginUser);
-        BulletinEntity bulletin = this.getById(bulletinId);
-        if(bulletin==null){
-            return false;
-        }
-        //只有超管和创建者可以删除
-        if(!Objects.equals(userRole,UserRoleType.Admin)&&!Objects.equals(loginUser.getId(),bulletin.getCreateBy())){
-            return false;
-        }
+//        LoginUser loginUser = LoginUserUtil.getLoginUser();
+//        UserRoleType userRole = userRoleService.getUserRole(loginUser);
+//        BulletinEntity bulletin = this.getById(bulletinId);
+//        if(bulletin==null){
+//            return false;
+//        }
+//        //只有超管和创建者可以删除
+//        if(!Objects.equals(userRole,UserRoleType.Admin)&&!Objects.equals(loginUser.getId(),bulletin.getCreateBy())){
+//            return false;
+//        }
         return true;
     }
 }

+ 6 - 6
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/CustomerServiceImpl.java

@@ -11,6 +11,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.gson.Gson;
 import com.storlead.framework.common.constant.CodeGenerateInterface;
 import com.storlead.framework.common.constant.CommonConstant;
+import com.storlead.framework.common.enums.ResultCode;
 import com.storlead.framework.common.util.HtmlUtils;
 import com.storlead.framework.common.util.MD5Util;
 import com.storlead.framework.common.util.StringUtil;
@@ -21,11 +22,10 @@ import com.storlead.es.server.EsSearchCustomerService;
 import com.storlead.framework.util.LoginUserUtil;
 import com.storlead.framework.auth.vo.LoginUser;
 import com.storlead.framework.common.result.Result;
-import com.storlead.framework.enums.QueryRangeTypeEnum;
-import com.storlead.framework.enums.ResultCode;
 import com.storlead.framework.mybatis.entity.SysBaseField;
 import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
 import com.storlead.framework.redis.RedisService;
+import com.storlead.sales.enums.QueryRangeTypeEnum;
 import com.storlead.sales.pojo.dto.customer.*;
 import com.storlead.sales.pojo.entity.customer.*;
 import com.storlead.sales.pojo.vo.customer.*;
@@ -770,7 +770,7 @@ public class CustomerServiceImpl extends MyBaseServiceImpl<CustomerMapper, Custo
                     }
                     Result result = new Result();
                     result.setSuccess(false);
-                    result.setCode(ResultCode.SC_OK_200.getCode());
+                    result.setCode(ResultCode.SUCCESS.getCode());
                     result.setResult(errorVOList);
                     return result;
                 }
@@ -871,7 +871,7 @@ public class CustomerServiceImpl extends MyBaseServiceImpl<CustomerMapper, Custo
 
                     Result result = new Result();
                     result.setSuccess(false);
-                    result.setCode(ResultCode.SC_OK_200.getCode());
+                    result.setCode(ResultCode.SUCCESS.getCode());
                     result.setResult(errorVOList);
                     return result;
                 }
@@ -1236,7 +1236,7 @@ public class CustomerServiceImpl extends MyBaseServiceImpl<CustomerMapper, Custo
 
                             Result result = new Result();
                             result.setSuccess(false);
-                            result.setCode(ResultCode.SC_OK_200.getCode());
+                            result.setCode(ResultCode.SUCCESS.getCode());
                             result.setResult(errorVOList);
                             return result;
                         }
@@ -1458,7 +1458,7 @@ public class CustomerServiceImpl extends MyBaseServiceImpl<CustomerMapper, Custo
                         if (!CollectionUtils.isEmpty(errorVOList)){
                             Result result = new Result();
                             result.setSuccess(false);
-                            result.setCode(ResultCode.SC_OK_200.getCode());
+                            result.setCode(ResultCode.SUCCESS.getCode());
                             result.setResult(errorVOList);
                             return result;
                         }

+ 1 - 1
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/LiaisonServiceImpl.java

@@ -13,9 +13,9 @@ import com.storlead.framework.common.util.HtmlUtils;
 import com.storlead.framework.util.LoginUserUtil;
 import com.storlead.framework.auth.vo.LoginUser;
 import com.storlead.framework.common.result.Result;
-import com.storlead.framework.enums.QueryRangeTypeEnum;
 import com.storlead.framework.mybatis.entity.SysBaseField;
 import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
+import com.storlead.sales.enums.QueryRangeTypeEnum;
 import com.storlead.sales.pojo.dto.customer.CustomerSearchSearchDTO;
 import com.storlead.sales.pojo.dto.customer.LiaisonAddDTO;
 import com.storlead.sales.pojo.dto.customer.LiaisonSearchDTO;

+ 1 - 1
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/OrderFormServiceImpl.java

@@ -17,9 +17,9 @@ import com.storlead.framework.common.util.generate.CodeGenerate;
 import com.storlead.framework.util.LoginUserUtil;
 import com.storlead.framework.auth.vo.LoginUser;
 import com.storlead.framework.common.result.Result;
-import com.storlead.framework.enums.QueryRangeTypeEnum;
 import com.storlead.framework.mybatis.entity.SysBaseField;
 import com.storlead.framework.redis.RedisService;
+import com.storlead.sales.enums.QueryRangeTypeEnum;
 import com.storlead.sales.pojo.dto.customer.CustomerCollaboratorDTO;
 import com.storlead.sales.pojo.dto.customer.CustomerSearchSearchDTO;
 import com.storlead.sales.pojo.dto.customer.OrderFormAddDTO;

+ 1 - 2
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/RecordCommentServiceImpl.java

@@ -5,8 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.storlead.framework.common.constant.CommonConstant;
-import com.storlead.common.enums.UserRoleType;
-import com.storlead.common.vo.StaffVo;
+import com.storlead.framework.common.vo.StaffVo;
 import com.storlead.framework.util.LoginUserUtil;
 import com.storlead.framework.auth.vo.LoginUser;
 import com.storlead.framework.common.result.Result;

+ 1 - 2
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/SendRecordServiceImpl.java

@@ -7,12 +7,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.gson.Gson;
 import com.storlead.framework.common.constant.CommonConstant;
-import com.storlead.common.system.query.MatchTypeEnum;
 import com.storlead.framework.util.LoginUserUtil;
 import com.storlead.framework.common.result.Result;
-import com.storlead.framework.enums.QueryRangeTypeEnum;
 import com.storlead.framework.mybatis.entity.SysBaseField;
 import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
+import com.storlead.sales.enums.QueryRangeTypeEnum;
 import com.storlead.sales.pojo.dto.customer.SendRecordSearchDTO;
 import com.storlead.sales.pojo.entity.customer.*;
 import com.storlead.sales.pojo.vo.customer.*;

+ 1 - 1
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/WorkDynamicsServiceImpl.java

@@ -8,8 +8,8 @@ import com.storlead.framework.common.constant.CommonConstant;
 import com.storlead.framework.common.util.HtmlUtils;
 import com.storlead.framework.util.LoginUserUtil;
 import com.storlead.framework.common.result.Result;
-import com.storlead.framework.enums.QueryRangeTypeEnum;
 import com.storlead.framework.mybatis.entity.SysBaseField;
+import com.storlead.sales.enums.QueryRangeTypeEnum;
 import com.storlead.sales.pojo.dto.customer.WorkDynamicsSearchDTO;
 import com.storlead.sales.pojo.entity.customer.CustomerEntity;
 import com.storlead.sales.pojo.entity.customer.LiaisonEntity;

+ 1 - 1
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/WorkOrderServiceImpl.java

@@ -13,9 +13,9 @@ import com.storlead.framework.common.util.generate.CodeGenerate;
 import com.storlead.framework.util.LoginUserUtil;
 import com.storlead.framework.auth.vo.LoginUser;
 import com.storlead.framework.common.result.Result;
-import com.storlead.framework.enums.QueryRangeTypeEnum;
 import com.storlead.framework.mybatis.entity.SysBaseField;
 import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
+import com.storlead.sales.enums.QueryRangeTypeEnum;
 import com.storlead.sales.pojo.dto.customer.WorkOrderAddDTO;
 import com.storlead.sales.pojo.dto.customer.WorkOrderChageUserDTO;
 import com.storlead.sales.pojo.dto.customer.WorkOrderSearchDTO;

+ 2 - 3
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/task/TaskServiceImpl.java

@@ -7,13 +7,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.gson.Gson;
 import com.storlead.framework.common.constant.CommonConstant;
+import com.storlead.framework.common.util.SpringCompareUtil;
 import com.storlead.framework.util.LoginUserUtil;
 import com.storlead.framework.auth.vo.LoginUser;
 import com.storlead.framework.common.result.Result;
-import com.storlead.framework.enums.QueryRangeTypeEnum;
 import com.storlead.framework.mybatis.entity.SysBaseField;
 import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
-import com.storlead.framework.utils.SpringCompareUtil;
 import com.storlead.message.enums.MessageTypeEnum;
 import com.storlead.sales.pojo.dto.customer.CustomerSearchSearchDTO;
 import com.storlead.sales.pojo.entity.customer.*;
@@ -51,7 +50,7 @@ import java.util.stream.Collectors;
 @Service
 public class TaskServiceImpl extends MyBaseServiceImpl<TaskMapper, TaskEntity> implements TaskService {
 
-    @Autowired
+    @Resource
     private CustomerService customerService;
 
     @Resource

+ 0 - 47
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/task/dispatch/EmailPullAttachmentTaskJob.java

@@ -1,47 +0,0 @@
-package com.storlead.sales.task.dispatch;
-
-import com.storlead.mail.service.EmailsService;
-import com.storlead.mail.service.SmtpPopSettingsService;
-import lombok.NoArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.quartz.DisallowConcurrentExecution;
-import org.quartz.Job;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-10-31 08:55
- */
-@Slf4j
-@Component
-@NoArgsConstructor
-@DisallowConcurrentExecution
-public class EmailPullAttachmentTaskJob implements Job {
-    /**
-     * 下载附件
-     */
-    @Resource
-    private SmtpPopSettingsService smtpPopSettingsService;
-
-    @Resource
-    private EmailsService emailsService;
-
-    @Override
-    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-
-//        LambdaQueryWrapper<SmtpPopSettingsEntity> wrapper = new LambdaQueryWrapper<>();
-//        wrapper.eq(SmtpPopSettingsEntity::getIsDelete,Integer.valueOf(0));
-//        List<SmtpPopSettingsEntity> allSmtpPopSetting = smtpPopSettingsService.list(wrapper);
-//        for (SmtpPopSettingsEntity  smtpPopSetting : allSmtpPopSetting) {
-//            emailsService.addLoadMailFilesTask(smtpPopSetting);
-//
-//            emailsService.addLoadMailContentTask(smtpPopSetting);
-//        }
-    }
-}

+ 0 - 67
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/task/dispatch/EmailPullBodyContentTaskJob.java

@@ -1,67 +0,0 @@
-package com.storlead.sales.task.dispatch;
-
-import com.storlead.mail.service.EmailsService;
-import com.storlead.mail.service.SmtpPopSettingsService;
-import lombok.NoArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.quartz.DisallowConcurrentExecution;
-import org.quartz.Job;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-10-31 08:53
- */
-@Slf4j
-@Component
-@NoArgsConstructor
-@DisallowConcurrentExecution
-public class EmailPullBodyContentTaskJob implements Job {
-
-    /**
-     */
-    @Resource
-    private SmtpPopSettingsService smtpPopSettingsService;
-
-    @Resource
-    private EmailsService emailsService;
-    @Override
-    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-
-//        LambdaQueryWrapper<SmtpPopSettingsEntity> wrapper = new LambdaQueryWrapper<>();
-//        List<SmtpPopSettingsEntity> allSmtpPopSetting = smtpPopSettingsService.list(wrapper);
-//        wrapper.eq(SmtpPopSettingsEntity::getIsDelete,Integer.valueOf(0));
-//        for (SmtpPopSettingsEntity  smtpPopSetting : allSmtpPopSetting) {
-//            emailsService.addLoadMailContentTask(smtpPopSetting);
-//        }
-//        LambdaQueryWrapper<EmailsEntity> wrapper = new LambdaQueryWrapper<>();
-//        wrapper.eq(EmailsEntity::getIsOnlyHead,1);
-//        wrapper.isNotNull(EmailsEntity::getSmtpPopId);
-//        wrapper.eq(EmailsEntity::getIsDelete, CommonConstant.DEL_FLAG_0);
-//        List<EmailsEntity> taskEntities =  emailsService.list(wrapper);
-//        if (!CollectionUtils.isEmpty(taskEntities)) {
-//            Map<Long,List<EmailsEntity>> attachmentsMap = taskEntities.stream().collect(Collectors.groupingBy(EmailsEntity::getSmtpPopId));
-//            for (Map.Entry<Long, List<EmailsEntity>> entry : attachmentsMap.entrySet()) {
-//                SmtpPopSettingsEntity smtpPop = smtpPopSettingsService.getById(entry.getKey());
-//                List<EmailsEntity>  entryls = entry.getValue();
-//                if (CollectionUtils.isEmpty(entryls)) {
-//                    continue;
-//                }
-//                List<EmailsEntity> inboxLs = entryls.stream().filter(e ->EmailBoxEnum.INBOX.code.equals(e.getFolder())).collect(Collectors.toList());
-//                if (!CollectionUtils.isEmpty(inboxLs)) {
-//                    emailsService.receiveBodyContentEmails(smtpPop,inboxLs,EmailBoxEnum.INBOX);
-//                }
-//                List<EmailsEntity> sentLs = entryls.stream().filter(e ->EmailBoxEnum.SENT.code.equals(e.getFolder())).collect(Collectors.toList());
-//                if (!CollectionUtils.isEmpty(sentLs)) {
-//                    emailsService.receiveBodyContentEmails(smtpPop,sentLs,EmailBoxEnum.SENT);
-//                }
-//            }
-//        }
-    }
-}

+ 0 - 59
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/task/dispatch/EmailPullHeadContentTaskJob.java

@@ -1,59 +0,0 @@
-package com.storlead.sales.task.dispatch;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.storlead.mail.pojo.entity.SmtpPopSettingsEntity;
-import lombok.NoArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.quartz.DisallowConcurrentExecution;
-import org.quartz.Job;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-08-27 17:52
- */
-@Slf4j
-@Component
-@NoArgsConstructor
-@DisallowConcurrentExecution
-public class EmailPullHeadContentTaskJob implements Job {
-
-    @Resource
-    private SmtpPopSettingsService smtpPopSettingsService;
-
-    @Resource
-    private MailDelayPullRecordService delayPullRecordService;
-
-    @Resource
-    private EmailsService emailsService;
-
-    @Resource
-    private EmailBlacklistRecordService blackListService;
-
-    @Resource
-    private EmailFolderRuleService folderRuleService;
-    @Override
-    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-
-        LambdaQueryWrapper<SmtpPopSettingsEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        lambdaQueryWrapper.eq(SmtpPopSettingsEntity::getIsDelete,0);
-//      lambdaQueryWrapper.eq(SmtpPopSettingsEntity::getUseDefault,Integer.valueOf(1));
-        lambdaQueryWrapper.eq(SmtpPopSettingsEntity::getEnabled,1);
-        lambdaQueryWrapper.ne(SmtpPopSettingsEntity::getEmailAddress,"system@storlead.com");
-        List<SmtpPopSettingsEntity> settingsEntities = smtpPopSettingsService.list(lambdaQueryWrapper);
-        if (CollectionUtils.isEmpty(settingsEntities)) {
-            return;
-        }
-        for (SmtpPopSettingsEntity smtpPop : settingsEntities) {
-             emailsService.receiveEmails(smtpPop,true);
-        }
-    }
-}