Procházet zdrojové kódy

套餐管理,迁移部分v2架构代码到v3,修改兼容性到java17

chenlei1231 před 6 měsíci
rodič
revize
c8427aa7ec
65 změnil soubory, kde provedl 3205 přidání a 1 odebrání
  1. 7 0
      jeecg-boot-base-core/pom.xml
  2. 128 0
      jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/SysLog.java
  3. 10 0
      jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DictPropertyModel.java
  4. 145 0
      jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonMultipartFile.java
  5. 222 0
      jeecg-boot-base-core/src/main/java/org/jeecg/common/util/FastJsonUtil.java
  6. 108 0
      jeecg-boot-base-core/src/main/java/org/jeecg/common/util/FileUtils.java
  7. 28 0
      jeecg-boot-base-core/src/main/java/org/jeecg/config/RestTemplateConfig.java
  8. 193 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/controller/SeoMarketPlanController.java
  9. 32 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dto/CommonDto.java
  10. 12 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dto/datacenter/EnquiryDailyCount.java
  11. 13 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dto/datacenter/EnquiryDailyTrend.java
  12. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dto/datacenter/EnquiryIndexNumber.java
  13. 15 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dto/datacenter/FlowDailyTrend.java
  14. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dto/datacenter/FlowIndexNumber.java
  15. 10 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dto/datacenter/FlowIndicator.java
  16. 84 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/entity/SeoMarketPlan.java
  17. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/mapper/SeoMarketPlanMapper.java
  18. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/mapper/xml/SeoMarketPlanMapper.xml
  19. 8 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/AdWebNewsImage.java
  20. 31 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/Advantage.java
  21. 29 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/AdwebMaterialCheckDTO.java
  22. 66 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/BaseInfoDto.java
  23. 13 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/CategoryProduct.java
  24. 29 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/CategoryTreeDto.java
  25. 10 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/CategoryWoocommerceId.java
  26. 48 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/DetectResult.java
  27. 31 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/EnterpriseCommonDto.java
  28. 15 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/EnterpriseInfo.java
  29. 36 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/EnterpriseIntroduction.java
  30. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/ExportCommonDto.java
  31. 27 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/FrequentQuestion.java
  32. 16 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/MaterialSearchDto.java
  33. 11 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/ProductCompletionStatus.java
  34. 63 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/ProductExcelDto.java
  35. 36 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/ProjectApplication.java
  36. 10 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/WordPressMaterialInfo.java
  37. 66 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterial.java
  38. 126 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialCategory.java
  39. 73 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialCheck.java
  40. 65 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialItem.java
  41. 47 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialLabel.java
  42. 203 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialNews.java
  43. 185 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialProduct.java
  44. 65 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialProductFaq.java
  45. 68 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialProductFile.java
  46. 68 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialProductImage.java
  47. 18 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialRepeatability.java
  48. 20 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialSubProduct.java
  49. 80 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebUrlEditRecord.java
  50. 72 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/WordPressMaterial.java
  51. 13 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/WordPressMaterialContent.java
  52. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/mapper/AdwebMaterialCheckMapper.java
  53. 100 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/mapper/MaterialCommonMapper.java
  54. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/mapper/xml/AdwebMaterialCheckMapper.xml
  55. 104 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/mapper/xml/MaterialCommonMapper.xml
  56. 32 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/service/IAdwebMaterialCheckService.java
  57. 103 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/service/impl/AdwebMaterialCheckServiceImpl.java
  58. 22 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/result/CoreDataDetailResult.java
  59. 16 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/result/CoreDataInfoResult.java
  60. 15 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/result/GaDailyCountInfo.java
  61. 26 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/result/GaDailyInfo.java
  62. 12 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/result/InfoTrends.java
  63. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/service/ISeoMarketPlanService.java
  64. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/service/impl/SeoMarketPlanServiceImpl.java
  65. 1 1
      jeecg-module-system/jeecg-system-start/src/main/resources/jeecg/jeecg_config.properties

+ 7 - 0
jeecg-boot-base-core/pom.xml

@@ -306,5 +306,12 @@
 			<groupId>org.jeecgframework.boot</groupId>
 			<artifactId>jeecg-boot-starter3-chatgpt</artifactId>
 		</dependency>
+
+		<!--thumbnailator图片处理-->
+		<dependency>
+			<groupId>net.coobird</groupId>
+			<artifactId>thumbnailator</artifactId>
+			<version>0.4.17</version>
+		</dependency>
 	</dependencies>
 </project>

+ 128 - 0
jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/SysLog.java

@@ -0,0 +1,128 @@
+package org.jeecg.common.api.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 系统日志表
+ * </p>
+ *
+ * @Author zhangweijian
+ * @since 2018-12-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SysLog implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	@TableId(type = IdType.ASSIGN_ID)
+	private String id;
+
+	/**
+	 * 创建人
+	 */
+	private String createBy;
+
+	/**
+	 * 创建时间
+	 */
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date createTime;
+
+	/**
+	 * 更新人
+	 */
+	private String updateBy;
+
+	/**
+	 * 更新时间
+	 */
+	private Date updateTime;
+
+	/**
+	 * 耗时
+	 */
+	private Long costTime;
+
+	/**
+	 * IP
+	 */
+	private String ip;
+
+	/**
+	 * 请求参数
+	 */
+	private String requestParam;
+
+	/**
+	 * 请求类型
+	 */
+	private String requestType;
+
+	/**
+	 * 请求路径
+	 */
+	private String requestUrl;
+	/**
+	 * 请求方法
+	 */
+	private String method;
+
+	/**
+	 * 操作人用户名称
+	 */
+	private String username;
+	/**
+	 * 操作人用户账户
+	 */
+	private String userid;
+	/**
+	 * 操作详细日志
+	 */
+	private String logContent;
+
+	/**
+	 * 日志类型(1登录日志,2操作日志)
+	 */
+	@Dict(dicCode = "log_type")
+	private Integer logType;
+
+	/**
+	 * 操作类型(1查询,2添加,3修改,4删除,5导入,6导出)
+	 */
+	@Dict(dicCode = "operate_type")
+	private Integer operateType;
+
+	@TableField(exist = false)
+	private String loginDevice;
+	@TableField(exist = false)
+	private String ipOwner;
+	@TableField(exist = false)
+	private String roles;
+	@TableField(exist = false)
+	private Date logoutTime;
+	@TableField(exist = false)
+	private String dateType;
+	@TableField(exist = false)
+	private String start;
+	@TableField(exist = false)
+	private String end;
+
+}

+ 10 - 0
jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DictPropertyModel.java

@@ -0,0 +1,10 @@
+package org.jeecg.common.system.vo;
+
+import lombok.Data;
+
+@Data
+public class DictPropertyModel {
+	private String catalogCode;
+	private String label;
+	private String value;
+}

+ 145 - 0
jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonMultipartFile.java

@@ -0,0 +1,145 @@
+package org.jeecg.common.util;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload.disk.DiskFileItem;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.core.log.LogFormatUtils;
+import org.springframework.util.FileCopyUtils;
+import org.springframework.util.StreamUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Serializable;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+public class CommonMultipartFile implements MultipartFile, Serializable {
+    protected static final Log logger = LogFactory.getLog(CommonMultipartFile.class);
+    private final FileItem fileItem;
+    private final long size;
+    private boolean preserveFilename = false;
+
+    public CommonMultipartFile(FileItem fileItem) {
+        this.fileItem = fileItem;
+        this.size = this.fileItem.getSize();
+    }
+
+    public final FileItem getFileItem() {
+        return this.fileItem;
+    }
+
+    public void setPreserveFilename(boolean preserveFilename) {
+        this.preserveFilename = preserveFilename;
+    }
+
+    public String getName() {
+        return this.fileItem.getFieldName();
+    }
+
+    public String getOriginalFilename() {
+        String filename = this.fileItem.getName();
+        if (filename == null) {
+            return "";
+        } else if (this.preserveFilename) {
+            return filename;
+        } else {
+            int unixSep = filename.lastIndexOf(47);
+            int winSep = filename.lastIndexOf(92);
+            int pos = Math.max(winSep, unixSep);
+            return pos != -1 ? filename.substring(pos + 1) : filename;
+        }
+    }
+
+    public String getContentType() {
+        return this.fileItem.getContentType();
+    }
+
+    public boolean isEmpty() {
+        return this.size == 0L;
+    }
+
+    public long getSize() {
+        return this.size;
+    }
+
+    public byte[] getBytes() {
+        if (!this.isAvailable()) {
+            throw new IllegalStateException("File has been moved - cannot be read again");
+        } else {
+            byte[] bytes = this.fileItem.get();
+            return bytes != null ? bytes : new byte[0];
+        }
+    }
+
+    public InputStream getInputStream() throws IOException {
+        if (!this.isAvailable()) {
+            throw new IllegalStateException("File has been moved - cannot be read again");
+        } else {
+            InputStream inputStream = this.fileItem.getInputStream();
+            return inputStream != null ? inputStream : StreamUtils.emptyInput();
+        }
+    }
+
+    public void transferTo(File dest) throws IOException, IllegalStateException {
+        if (!this.isAvailable()) {
+            throw new IllegalStateException("File has already been moved - cannot be transferred again");
+        } else if (dest.exists() && !dest.delete()) {
+            throw new IOException("Destination file [" + dest.getAbsolutePath() + "] already exists and could not be deleted");
+        } else {
+            try {
+                this.fileItem.write(dest);
+                LogFormatUtils.traceDebug(logger, (traceOn) -> {
+                    String action = "transferred";
+                    if (!this.fileItem.isInMemory()) {
+                        action = this.isAvailable() ? "copied" : "moved";
+                    }
+
+                    return "Part '" + this.getName() + "',  filename '" + this.getOriginalFilename() + "'" + (traceOn ? ", stored " + this.getStorageDescription() : "") + ": " + action + " to [" + dest.getAbsolutePath() + "]";
+                });
+            } catch (FileUploadException var3) {
+                FileUploadException ex = var3;
+                throw new IllegalStateException(ex.getMessage(), ex);
+            } catch (IOException | IllegalStateException var4) {
+                Exception ex = var4;
+                try {
+                    throw ex;
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+            } catch (Exception var5) {
+                Exception ex = var5;
+                throw new IOException("File transfer failed", ex);
+            }
+        }
+    }
+
+    public void transferTo(Path dest) throws IOException, IllegalStateException {
+        if (!this.isAvailable()) {
+            throw new IllegalStateException("File has already been moved - cannot be transferred again");
+        } else {
+            FileCopyUtils.copy(this.fileItem.getInputStream(), Files.newOutputStream(dest));
+        }
+    }
+
+    protected boolean isAvailable() {
+        if (this.fileItem.isInMemory()) {
+            return true;
+        } else if (this.fileItem instanceof DiskFileItem) {
+            return ((DiskFileItem)this.fileItem).getStoreLocation().exists();
+        } else {
+            return this.fileItem.getSize() == this.size;
+        }
+    }
+
+    public String getStorageDescription() {
+        if (this.fileItem.isInMemory()) {
+            return "in memory";
+        } else {
+            return this.fileItem instanceof DiskFileItem ? "at [" + ((DiskFileItem)this.fileItem).getStoreLocation().getAbsolutePath() + "]" : "on disk";
+        }
+    }
+}

+ 222 - 0
jeecg-boot-base-core/src/main/java/org/jeecg/common/util/FastJsonUtil.java

@@ -0,0 +1,222 @@
+/**
+ *
+ */
+package org.jeecg.common.util;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class FastJsonUtil {
+
+    /**
+     * 对单个JavaBean对象的解析
+     * @param jsonString 表示JSON数据的字符串
+     * @param clazz JavaBean 类型
+     * @return
+     */
+    public static <T> T parseObject(String jsonString, Class<T> clazz) {
+        T t = null;
+        try {
+            t = JSON.parseObject(jsonString, clazz);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return t;
+    }
+
+    public static <T> T parseObjectEnquiry(String jsonString, Class<T> clazz) {
+        T t = null;
+        try {
+            t = JSON.parseObject(jsonString, clazz);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw e;
+        }
+        return t;
+    }
+
+    /**
+     * 对单个JavaBean对象的解析
+     * @param jsonString 表示JSON数据的字符串
+     * @param type JavaBean 类型
+     * @return
+     */
+    public static <T> T parseObject(String jsonString, Type type) {
+        T t = null;
+        try {
+            t = JSON.parseObject(jsonString, type);
+        } catch (Exception e) {
+            // TODO: handle exception
+            e.printStackTrace();
+        }
+        return t;
+    }
+
+    /**
+     * 对单个JavaBean对象的解析
+     * @param jsonString 表示JSON数据的字符串
+     * @return
+     */
+    public static <T> T parseObject(String jsonString, TypeReference<T> typeReference) {
+        T t = null;
+        try {
+            t = JSON.parseObject(jsonString, typeReference);
+        } catch (Exception e) {
+            // TODO: handle exception
+            e.printStackTrace();
+        }
+        return t;
+    }
+
+    /**
+     * 对单个JavaBean对象的解析
+     * @param jsonString 表示JSON数据的字符串
+     * @param clazz JavaBean 类型
+     * @return
+     */
+    public static <T> List<T> parseList(String jsonString, Class<T> clazz) {
+        List<T> tList = new ArrayList<T>();
+        try {
+            tList = JSON.parseArray(jsonString, clazz);
+        } catch (Exception e) {
+            // TODO: handle exception
+            throw e;
+        }
+        return tList;
+    }
+
+    /**
+     * 从表示集合元素的JSON字符串中获取指定类型的第一个元素对象
+     * @param jsonString 集合元素的JSON字符串
+     * @param clazz 指定类型
+     * @return
+     */
+    public static <T> T parseFirstFromJsonList(String jsonString, Class<T> clazz) {
+        T t = null;
+        try {
+            List<T> tempList = FastJsonUtil.parseList(jsonString, clazz);
+            if (null != tempList && tempList.size() > 0) {
+                t = tempList.get(0);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            // TODO: handle exception
+        }
+        return t;
+    }
+
+    /**
+     * 将对象转换为JSON字符串
+     * @param object 待转换对象
+     * @return
+     */
+    public static String toJSONString(Object object) {
+        String jsonString = "";
+        try {
+            jsonString = JSON.toJSONString(object);
+        } catch (Exception e) {
+            // TODO: handle exception
+            e.printStackTrace();
+        }
+        return jsonString;
+    }
+
+    /**
+     * 将对象转换为JSON字符串
+     * @param object 待转换对象
+     * @return
+     */
+    public static String toJSONString(Object object, SerializerFeature... features) {
+        String jsonString = "";
+        try {
+            jsonString = JSON.toJSONString(object, features);
+        } catch (Exception e) {
+            // TODO: handle exception
+            e.printStackTrace();
+        }
+        return jsonString;
+    }
+
+    /**
+     * 将对象转换为JSONObject对象
+     * @param object 待转换对象
+     * @return
+     */
+    public static JSONObject toJSON(Object object) {
+        JSONObject jsonObj = null;
+        try {
+            jsonObj = (JSONObject) JSON.toJSON(object);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return jsonObj;
+    }
+
+    /**
+     * 将对象转换为JSONArray对象
+     * @param object 待转换对象
+     * @return
+     */
+    public static JSONArray toJSONArray(Object object) {
+        JSONArray jsonArray = null;
+        try {
+            jsonArray = (JSONArray) JSON.toJSON(object);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return jsonArray;
+    }
+
+    /**
+     * JSON空值处理
+     * @param object
+     * @return
+     */
+    public static String toJsonArrayForNull(Object object) {
+        return toJSONString(object, SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteNullNumberAsZero);
+    }
+
+    /**
+     *
+     * @param list 原集合
+     * @param clazz 类
+     * @author 汤星鹏
+     * @Description 父子类复制对象
+     * @return java.util.List<T>
+     * @date 2019/11/11 14:10
+     */
+    public static <T> List<T> copyProperties(List list, Class<T> clazz) {
+        String toString = toJSONString(list);
+        return parseList(toString, clazz);
+    }
+
+    /**
+     *
+     * @param clazz
+     * @author 汤星鹏
+     * @Description 复制属性
+     * @return T
+     * @date 2020/3/10 16:46
+     */
+    public static <T> T copyProperty(Object o, Class<T> clazz) {
+        String strJson = toJSONString(o);
+        return parseObject(strJson, clazz);
+    }
+
+    /**
+     * 将对象转成map
+     * @param o
+     * @return
+     */
+    public static Map toMap(Object o) {
+        return copyProperty(o, Map.class);
+    }
+}

+ 108 - 0
jeecg-boot-base-core/src/main/java/org/jeecg/common/util/FileUtils.java

@@ -0,0 +1,108 @@
+package org.jeecg.common.util;
+
+import cn.hutool.http.HttpUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileItemFactory;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.io.IOUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.ByteArrayInputStream;
+
+
+@Slf4j
+public class FileUtils {
+    // 通过Url将图片转为MultipartFile
+    public static MultipartFile uploadImgUrlToMultipartFile(String url) {
+        byte[] bytes = null;
+        try {
+            bytes = HttpUtil.downloadBytes(url);
+        } catch (Exception e) {
+            log.info("下载文件出错", e);
+        }
+        String name = "imageFile" + url.substring(url.lastIndexOf("."));
+        MultipartFile multipartFile = getMultipartFile(name, bytes);
+        return multipartFile;
+    }
+
+    /**
+     * 将图片路径转化为 MultipartFile,与 uploadImgUrlToMultipartFile 方法的区别在于本方法创建对象的 contentType 为 image/*
+     * uploadImgUrlToMultipartFile创建对象的 contentType 为 text/plain
+     *
+     * @param url 图片路径
+     * @return 文件对象,如果图片路径无法访问则返回null
+     */
+    public static MultipartFile imgUrlToMultipartFile(String url) {
+        byte[] bytes = null;
+        try {
+            bytes = HttpUtil.downloadBytes(url);
+        } catch (Exception e) {
+            return null;
+        }
+        if (bytes == null) {
+            return null;
+        }
+        String name = "imageFile" + url.substring(url.lastIndexOf("."));
+        String contentType = "image/" + url.substring(url.lastIndexOf(".") + 1);
+
+        MultipartFile multipartFile;
+        try {
+            ByteArrayInputStream in = new ByteArrayInputStream(bytes);
+            FileItemFactory factory = new DiskFileItemFactory(16, null);
+            FileItem fileItem = factory.createItem("mainFile", contentType, false, name);
+            IOUtils.copy(new ByteArrayInputStream(bytes), fileItem.getOutputStream());
+            multipartFile = new CommonMultipartFile(fileItem);
+            in.close();
+        } catch (Exception e) {
+            log.info("图片路径转为文件出错,图片路径:" + url);
+            e.printStackTrace();
+            return null;
+        }
+        return multipartFile;
+    }
+
+    // // 获取图片二进制
+    // private static byte[] downloadPicture(String url) {
+    //     URL urlConnection = null;
+    //     HttpURLConnection httpURLConnection = null;
+    //     try {
+    //         urlConnection = new URL(url);
+    //         httpURLConnection = (HttpURLConnection) urlConnection.openConnection();
+    //         httpURLConnection.setRequestProperty("User-Agent", "Mozilla/4.76");
+    //         InputStream in = httpURLConnection.getInputStream();
+    //         byte[] buffer = new byte[1024];
+    //         int len = 0;
+    //         ByteArrayOutputStream out = new ByteArrayOutputStream();
+    //         while ((len = in.read(buffer)) != -1) {
+    //             out.write(buffer, 0, len);
+    //         }
+    //         in.close();
+    //         out.close();
+    //         return out.toByteArray();
+    //     } catch (Exception e) {
+    //         e.printStackTrace();
+    //     } finally {
+    //         httpURLConnection.disconnect();
+    //     }
+    //     return null;
+    // }
+
+    // 二进制文件转换MultipartFile
+    public static MultipartFile getMultipartFile(String name, byte[] bytes) {
+        MultipartFile mfile = null;
+        ByteArrayInputStream in = null;
+        try {
+            in = new ByteArrayInputStream(bytes);
+            FileItemFactory factory = new DiskFileItemFactory(16, null);
+            FileItem fileItem = factory.createItem("mainFile", "text/plain", false, name);
+            IOUtils.copy(new ByteArrayInputStream(bytes), fileItem.getOutputStream());
+            mfile = new CommonMultipartFile(fileItem);
+            in.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+        return mfile;
+    }
+}

+ 28 - 0
jeecg-boot-base-core/src/main/java/org/jeecg/config/RestTemplateConfig.java

@@ -1,11 +1,24 @@
 package org.jeecg.config;
 
+import org.apache.http.conn.ssl.NoopHostnameVerifier;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.ssl.SSLContexts;
+import org.apache.http.ssl.TrustStrategy;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.http.client.ClientHttpRequestFactory;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
 import org.springframework.http.client.SimpleClientHttpRequestFactory;
 import org.springframework.web.client.RestTemplate;
 
+import javax.net.ssl.SSLContext;
+import java.security.KeyManagementException;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+
 /**
 * 优雅的http请求方式RestTemplate
 * @author: jeecg-boot
@@ -28,4 +41,19 @@ public class RestTemplateConfig {
         factory.setConnectTimeout(15000);
         return factory;
     }
+
+    public static HttpComponentsClientHttpRequestFactory generateHttpRequestFactory()
+            throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException
+    {
+        TrustStrategy acceptingTrustStrategy = (x509Certificates, authType) -> true;
+        SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build();
+        SSLConnectionSocketFactory connectionSocketFactory = new SSLConnectionSocketFactory(sslContext, new NoopHostnameVerifier());
+
+        HttpClientBuilder httpClientBuilder = HttpClients.custom();
+        httpClientBuilder.setSSLSocketFactory(connectionSocketFactory);
+        CloseableHttpClient httpClient = httpClientBuilder.build();
+        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
+//        factory.setHttpClient(httpClient);
+        return factory;
+    }
 }

+ 193 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/controller/SeoMarketPlanController.java

@@ -0,0 +1,193 @@
+package org.jeecg.modules.adweb.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.adweb.materialcollect.entity.AdwebMaterialCheck;
+import org.jeecg.modules.adweb.entity.SeoMarketPlan;
+import org.jeecg.modules.adweb.materialcollect.service.IAdwebMaterialCheckService;
+import org.jeecg.modules.adweb.service.ISeoMarketPlanService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @Description: 网站营销方案套餐表
+ * @Author: jeecg-boot
+ * @Date:   2024-09-27
+ * @Version: V1.0
+ */
+@Tag(name="网站营销方案套餐表")
+@RestController
+@RequestMapping("/adweb/seoMarketPlan")
+@Slf4j
+public class SeoMarketPlanController extends JeecgController<SeoMarketPlan, ISeoMarketPlanService> {
+	@Autowired
+	private ISeoMarketPlanService seoMarketPlanService;
+
+	@Autowired
+	private IAdwebMaterialCheckService checkService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param seoMarketPlan
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "网站营销方案套餐表-分页列表查询")
+	@Operation(summary="网站营销方案套餐表-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<SeoMarketPlan>> queryPageList(SeoMarketPlan seoMarketPlan,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<SeoMarketPlan> queryWrapper = QueryGenerator.initQueryWrapper(seoMarketPlan, req.getParameterMap());
+		Page<SeoMarketPlan> page = new Page<SeoMarketPlan>(pageNo, pageSize);
+		IPage<SeoMarketPlan> pageList = seoMarketPlanService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param seoMarketPlan
+	 * @return
+	 */
+	@AutoLog(value = "网站营销方案套餐表-添加")
+	@Operation(summary="网站营销方案套餐表-添加")
+	@PreAuthorize("@jps.requiresPermissions('adweb:seo_market_plan:add')")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody SeoMarketPlan seoMarketPlan) {
+		seoMarketPlanService.save(seoMarketPlan);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param seoMarketPlan
+	 * @return
+	 */
+	@AutoLog(value = "网站营销方案套餐表-编辑")
+	@Operation(summary="网站营销方案套餐表-编辑")
+    @PreAuthorize("@jps.requiresPermissions('adweb:seo_market_plan:edit')")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody SeoMarketPlan seoMarketPlan) {
+		seoMarketPlanService.updateById(seoMarketPlan);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "网站营销方案套餐表-通过id删除")
+	@Operation(summary="网站营销方案套餐表-通过id删除")
+    @PreAuthorize("@jps.requiresPermissions('adweb:seo_market_plan:delete')")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		seoMarketPlanService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "网站营销方案套餐表-批量删除")
+	@Operation(summary="网站营销方案套餐表-批量删除")
+    @PreAuthorize("@jps.requiresPermissions('adweb:seo_market_plan:deleteBatch')")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.seoMarketPlanService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "网站营销方案套餐表-通过id查询")
+	@Operation(summary="网站营销方案套餐表-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<SeoMarketPlan> queryById(@RequestParam(name="id",required=true) String id) {
+		SeoMarketPlan seoMarketPlan = seoMarketPlanService.getById(id);
+		if(seoMarketPlan==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(seoMarketPlan);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param seoMarketPlan
+    */
+    @PreAuthorize("@jps.requiresPermissions('adweb:seo_market_plan:exportXls')")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, SeoMarketPlan seoMarketPlan) {
+        return super.exportXls(request, seoMarketPlan, SeoMarketPlan.class, "网站营销方案套餐表");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @PreAuthorize("@jps.requiresPermissions('adweb:seo_market_plan:importExcel')")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, SeoMarketPlan.class);
+    }
+
+	/**
+	 * 物料完整性检测模板设置
+	 *
+	 * @Author:yangjingwen
+	 * @Date:2022/5/7
+	 */
+	@GetMapping(value="/integrityChecking")
+	public Result<?> integrityChecking(String planId){
+		QueryWrapper<AdwebMaterialCheck> queryWrapper=new QueryWrapper<>();
+		queryWrapper.eq("plan_id",planId).orderByAsc("sort");
+		List<AdwebMaterialCheck> checkList = checkService.list(queryWrapper);
+		if(!checkList.isEmpty()){
+			return Result.OK(checkList);
+		}
+		//查出模板数据
+		QueryWrapper<AdwebMaterialCheck> queryWrapper1 = new QueryWrapper<>();
+		queryWrapper1.isNull("plan_id").orderByAsc("sort");
+		List<AdwebMaterialCheck> checkTemplateList = checkService.list(queryWrapper1);
+		checkTemplateList.forEach(check -> {
+			check.setPlanId(planId);
+		});
+		checkService.saveBatch(checkTemplateList);
+		return Result.OK(checkTemplateList);
+	}
+
+}

+ 32 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dto/CommonDto.java

@@ -0,0 +1,32 @@
+package org.jeecg.modules.adweb.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class CommonDto {
+    private String type;
+    private String username;
+    private String msg;
+    private Integer code;
+    private String siteName;
+    private String siteCode;
+    private String historyId;
+    private String planName;
+
+    /**
+     * 产品明细
+     */
+    private List<String> name;
+    private List<String> category_name;
+    private List<String> tag_name;
+
+    /**
+     * 搜索趋势,top10
+     */
+    private String country;
+    private List<String> searchName;
+    private List<Integer> searchValue;
+    private List<Integer> proportionList;
+}

+ 12 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dto/datacenter/EnquiryDailyCount.java

@@ -0,0 +1,12 @@
+package org.jeecg.modules.adweb.dto.datacenter;
+
+import lombok.Data;
+
+@Data
+public class EnquiryDailyCount {
+
+    private int enquiryCount;
+
+    private String date;
+
+}

+ 13 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dto/datacenter/EnquiryDailyTrend.java

@@ -0,0 +1,13 @@
+package org.jeecg.modules.adweb.dto.datacenter;
+
+import lombok.Data;
+
+@Data
+public class EnquiryDailyTrend {
+
+    private int uvCount;
+
+    private int enquiryCount;
+
+    private String date;
+}

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dto/datacenter/EnquiryIndexNumber.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.adweb.dto.datacenter;
+
+import lombok.Data;
+
+@Data
+public class EnquiryIndexNumber {
+
+    private int unRead;
+
+    private String conversionRate;
+
+    private int enquiry;
+
+}

+ 15 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dto/datacenter/FlowDailyTrend.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.adweb.dto.datacenter;
+
+import lombok.Data;
+
+@Data
+public class FlowDailyTrend {
+
+    private int uvCount;
+
+    private int pvCount;
+
+    private int enquiryCount;
+
+    private String date;
+}

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dto/datacenter/FlowIndexNumber.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.adweb.dto.datacenter;
+
+import lombok.Data;
+
+@Data
+public class FlowIndexNumber {
+
+    private int pv;
+
+    private int uv;
+
+    private int enquiry;
+
+}

+ 10 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dto/datacenter/FlowIndicator.java

@@ -0,0 +1,10 @@
+package org.jeecg.modules.adweb.dto.datacenter;
+
+import lombok.Data;
+
+@Data
+public class FlowIndicator {
+    private int uvWeekCount;
+    private int uvMonthCount;
+    private int uvAllCount;
+}

+ 84 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/entity/SeoMarketPlan.java

@@ -0,0 +1,84 @@
+package org.jeecg.modules.adweb.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 网站营销方案套餐表
+ * @Author: jeecg-boot
+ * @Date:   2024-09-27
+ * @Version: V1.0
+ */
+@Data
+@TableName("seo_market_plan")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="网站营销方案套餐表")
+public class SeoMarketPlan implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @Schema(description = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @Schema(description = "创建人")
+    private java.lang.String createBy;
+	/**更新人*/
+    @Schema(description = "更新人")
+    private java.lang.String updateBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @Schema(description = "创建日期")
+    private java.util.Date createTime;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @Schema(description = "更新日期")
+    private java.util.Date updateTime;
+	/**营销方案编码*/
+	@Excel(name = "营销方案编码", width = 15)
+    @Schema(description = "营销方案编码")
+    private java.lang.String planCode;
+	/**套餐类型*/
+	@Excel(name = "套餐类型", width = 15)
+    @Schema(description = "套餐类型")
+    @Dict(dicCode = "dict_market_type")
+    private java.lang.String marketType;
+	/**套餐名称*/
+	@Excel(name = "套餐名称", width = 15)
+    @Schema(description = "套餐名称")
+    private java.lang.String planName;
+	/**关键词数量*/
+	@Excel(name = "关键词数量", width = 15)
+    @Schema(description = "关键词数量")
+    private java.lang.Integer keywordCount;
+	/**关键词达标目标*/
+	@Excel(name = "关键词达标目标", width = 15)
+    @Schema(description = "关键词达标目标")
+    private java.lang.Integer target;
+	/**服务时间*/
+	@Excel(name = "服务时间", width = 15)
+    @Schema(description = "服务时间")
+    private java.lang.Integer serviceTime;
+	/**状态*/
+	@Excel(name = "状态", width = 15)
+    @Schema(description = "状态")
+    private java.lang.Integer status;
+	/**价格*/
+	@Excel(name = "价格", width = 15)
+    @Schema(description = "价格")
+    private java.lang.Double price;
+}

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/mapper/SeoMarketPlanMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.adweb.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.adweb.entity.SeoMarketPlan;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 网站营销方案套餐表
+ * @Author: jeecg-boot
+ * @Date:   2024-09-27
+ * @Version: V1.0
+ */
+public interface SeoMarketPlanMapper extends BaseMapper<SeoMarketPlan> {
+
+}

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/mapper/xml/SeoMarketPlanMapper.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="org.jeecg.modules.adweb.mapper.SeoMarketPlanMapper">
+
+</mapper>

+ 8 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/AdWebNewsImage.java

@@ -0,0 +1,8 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+
+@Data
+public class AdWebNewsImage {
+    private String url;
+}

+ 31 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/Advantage.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+
+/**
+ * @Author jerry
+ * @Date 2022/4/1 17:04
+ * @Version 1.0
+ */
+@Data
+public class Advantage {
+    /**
+     * 物料id
+     */
+    private Integer materialId;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 公司配图
+     */
+    private String caption;
+
+    /**
+     * 详细描述
+     */
+    private String description;
+}

+ 29 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/AdwebMaterialCheckDTO.java

@@ -0,0 +1,29 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+
+import lombok.Data;
+
+@Data
+public class AdwebMaterialCheckDTO {
+    private Integer id;
+
+    private String planId;
+
+    private String materialCode;
+
+    private String materialLabel;
+
+    private Integer limitMin;
+
+    private Integer required;
+
+    private Integer sort;
+
+    private java.math.BigDecimal weight;
+
+    private java.util.Date createTime;
+
+    private String menuPath;
+
+    private String siteId;
+}

+ 66 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/BaseInfoDto.java

@@ -0,0 +1,66 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+
+/**
+ * @Author jerry
+ * @Date 2022/3/31 20:21
+ * @Version 1.0
+ */
+@Data
+public class BaseInfoDto {
+    /**
+     * 公司英文名称
+     */
+    private String companyEnName;
+
+    /**
+     * 网站首页标题
+     */
+    private String homepageTitle;
+
+    /**
+     * 企业LOGO
+     */
+    private String enterpriseLogo;
+
+    /**
+     * 公司联系人姓名
+     */
+    private String enterpriseContactName;
+
+    /**
+     * 公司联系电话
+     */
+    private String enterpriseContactPhone;
+
+    /**
+     * 公司电子邮箱
+     */
+    private String enterpriseEmail;
+
+    /**
+     * 公司办公地址
+     */
+    private String enterpriseOfficeAddress;
+
+    /**
+     * 公司工厂地址
+     */
+    private String enterpriseFactoryAddress;
+
+    /**
+     * 公司概述
+     */
+    private String enterpriseOverview;
+
+    /**
+     * 公司品牌
+     */
+    private String enterpriseBrand;
+
+    /**
+     * 员工人数
+     */
+    private String employeeCount;
+}

+ 13 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/CategoryProduct.java

@@ -0,0 +1,13 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+
+@Data
+public class CategoryProduct {
+
+    private Integer parentId;
+
+    private Integer subId;
+
+    private String productIds;
+}

+ 29 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/CategoryTreeDto.java

@@ -0,0 +1,29 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author jerry
+ * @Date 2022/4/12 16:06
+ * @Version 1.0
+ */
+@Data
+public class CategoryTreeDto {
+
+    /** 对应id字段,前端数据树中的key*/
+    private Integer key;
+
+    /** 对应id字段,前端数据树中的value*/
+    private Integer value;
+
+    /** 对应字段,前端数据树中的title*/
+    private String title;
+
+    /**
+     * 子分类树结构数据
+     */
+    private List<CategoryTreeDto> children;
+
+}

+ 10 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/CategoryWoocommerceId.java

@@ -0,0 +1,10 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+
+@Data
+public class CategoryWoocommerceId {
+    private Integer commerceId;
+
+    private Integer parentCommerceId;
+}

+ 48 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/DetectResult.java

@@ -0,0 +1,48 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @Author jerry
+ * @Date 2022/5/7 14:23
+ * @Version 1.0
+ */
+@Data
+public class DetectResult {
+    /**
+     * 检测项名称
+     */
+    private String label;
+
+    /**
+     * 菜单路径
+     */
+    private String menuPath;
+
+    /**
+     * 是否完成
+     */
+    private boolean finish;
+
+    /**
+     * 结果
+     */
+    private String result;
+
+    /**
+     * 检测得分
+     */
+    private BigDecimal score;
+
+    /**
+     * 检测进度
+     */
+    private BigDecimal percent;
+
+    /**
+     * 检测项是否必填  是否必填(0:必填,1:非必填)
+     */
+    private int required;
+}

+ 31 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/EnterpriseCommonDto.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+
+/**
+ * @Author jerry
+ * @Date 2022/4/2 17:15
+ * @Version 1.0
+ */
+@Data
+public class EnterpriseCommonDto {
+    /**
+     * 物料id
+     */
+    private Integer materialId;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 图片
+     */
+    private String image;
+
+    /**
+     * 相关描述
+     */
+    private String description;
+}

+ 15 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/EnterpriseInfo.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class EnterpriseInfo {
+    List<DetectResult> detectList;
+    /**
+     * 检测进度
+     */
+    private BigDecimal percent;
+}

+ 36 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/EnterpriseIntroduction.java

@@ -0,0 +1,36 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+
+/**
+ * @Author jerry
+ * @Date 2022/4/1 17:04
+ * @Version 1.0
+ */
+@Data
+public class EnterpriseIntroduction{
+    /**
+     * 物料id
+     */
+    private Integer materialId;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 概要
+     */
+    private String summary;
+
+    /**
+     * 公司配图
+     */
+    private String caption;
+
+    /**
+     * 详细描述
+     */
+    private String description;
+}

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/ExportCommonDto.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+
+/**
+ * @Author jerry
+ * @Date 2022/4/22 13:02
+ * @Version 1.0
+ */
+@Data
+public class ExportCommonDto {
+    private String title;
+    private String[] headers;
+}

+ 27 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/FrequentQuestion.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+
+/**
+ * @Author tom
+ * @Date 2022/4/7 13:31
+ * @Version 1.0
+ */
+@Data
+public class FrequentQuestion {
+    /**
+     * 物料id
+     */
+    private Integer materialId;
+
+    /**
+     * 问题
+     */
+    private String question;
+
+    /**
+     * 回答
+     */
+    private String answer;
+
+}

+ 16 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/MaterialSearchDto.java

@@ -0,0 +1,16 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+
+/**
+ * 查询参数
+ *
+ * @Author jerry
+ * @Date 2022/3/31 13:20
+ * @Version 1.0
+ */
+@Data
+public class MaterialSearchDto {
+    private String siteCode;
+    private String materialCode;
+}

+ 11 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/ProductCompletionStatus.java

@@ -0,0 +1,11 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+
+@Data
+public class ProductCompletionStatus {
+    private EnterpriseInfo enterpriseInfo;
+    private EnterpriseInfo productInfo;
+    private EnterpriseInfo newsInfo;
+    private String status;
+}

+ 63 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/ProductExcelDto.java

@@ -0,0 +1,63 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.io.Serializable;
+
+/**
+ * @Description:
+ * @Author: wrk
+ * @date 2022/7/19 14:20
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+public class ProductExcelDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * excel导入时,列序号
+     */
+    private Integer columnId;
+
+    /**
+     * 一级分类标题
+     */
+    @Excel(name = "分类标题(必填)")
+    private String categoryName;
+
+    /**
+     * 产品标题
+     */
+    @Excel(name = "产品标题")
+    private String productTitle;
+
+    /**
+     * 产品图片
+     */
+    @Excel(name = "产品图片")
+    private String productImageUrls;
+
+    /**
+     * 产品简述
+     */
+    @Excel(name = "产品简述")
+    private String productSketch;
+
+    /**
+     * 产品详情
+     */
+    @Excel(name = "产品详情")
+    private String productDetail;
+
+    /**
+     * 产品相关词
+     */
+    @Excel(name = "产品关键词(英文逗号分割)")
+    private String relatedWords;
+
+}

+ 36 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/ProjectApplication.java

@@ -0,0 +1,36 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+
+/**
+ * @Author jerry
+ * @Date 2022/4/1 17:04
+ * @Version 1.0
+ */
+@Data
+public class ProjectApplication {
+    /**
+     * 物料id
+     */
+    private Integer materialId;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 概要
+     */
+    private String summary;
+
+    /**
+     * 公司配图
+     */
+    private String caption;
+
+    /**
+     * 详细描述
+     */
+    private String description;
+}

+ 10 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/dto/WordPressMaterialInfo.java

@@ -0,0 +1,10 @@
+package org.jeecg.modules.adweb.materialcollect.dto;
+
+import lombok.Data;
+
+@Data
+public class WordPressMaterialInfo {
+    private String type;
+
+    private Integer num;
+}

+ 66 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterial.java

@@ -0,0 +1,66 @@
+package org.jeecg.modules.adweb.materialcollect.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ * @Description: adweb_material
+ * @Author: chenpeiqing
+ * @Date:   2024-09-27
+ * @Version: V1.0
+ */
+@Data
+@TableName("adweb_material")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="adweb_material")
+public class AdwebMaterial implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+    @Schema(description = "id")
+    private Integer id;
+	/**站点code*/
+	@Excel(name = "站点code", width = 15)
+    @Schema(description = "站点code")
+    private String siteCode;
+	/**网站物料code*/
+	@Excel(name = "网站物料code", width = 15)
+    @Schema(description = "网站物料code")
+    private String materialCode;
+	/**网站物料名称*/
+	@Excel(name = "网站物料名称", width = 15)
+    @Schema(description = "网站物料名称")
+    private String materialLabel;
+	/**物料状态(0:删除;1:可用)*/
+	@Excel(name = "物料状态(0:删除;1:可用)", width = 15)
+    @Schema(description = "物料状态(0:删除;1:可用)")
+    private Integer status;
+	/**上传时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @Schema(description = "上传时间")
+    private java.util.Date createTime;
+	/**物料上传人*/
+    @Schema(description = "物料上传人")
+    private String createBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @Schema(description = "更新时间")
+    private java.util.Date updateTime;
+	/**更新人*/
+    @Schema(description = "更新人")
+    private String updateBy;
+}

+ 126 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialCategory.java

@@ -0,0 +1,126 @@
+package org.jeecg.modules.adweb.materialcollect.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description: adweb_material_category
+ * @Author: chenpeiqing
+ * @Date:   2024-09-27
+ * @Version: V1.0
+ */
+@Data
+@TableName("adweb_material_category")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description = "adweb_material_category")
+public class AdwebMaterialCategory implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @Schema(description = "id")
+    private Integer id;
+    /**
+     * 对应站点code
+     */
+    @Excel(name = "对应站点code", width = 15)
+    @Schema(description = "对应站点code")
+    private String siteCode;
+    /**
+     * 分类唯一标识符
+     */
+    @Excel(name = "分类唯一标识符", width = 15)
+    @Schema(description = "分类唯一标识符")
+    private String categoryCode;
+    /**
+     * 分类标题
+     */
+    @Excel(name = "分类标题", width = 15)
+    @Schema(description = "分类标题")
+    private String categoryName;
+    /**
+     * 图片
+     */
+    @Excel(name = "图片", width = 15)
+    @Schema(description = "图片")
+    private String image;
+    /**
+     * 父级分类
+     */
+    @Excel(name = "父级分类", width = 15)
+    @Schema(description = "父级分类")
+    private Integer parentId;
+    /**
+     * 二级级分类
+     */
+    @Excel(name = "二级级分类", width = 15)
+    @Schema(description = "二级级分类")
+    @TableField(exist = false)
+    private Integer secondParentId;
+    /**
+     * 分类描述
+     */
+    @Excel(name = "分类描述", width = 15)
+    @Schema(description = "分类描述")
+    private String categoryDescription;
+    /**
+     * 区分产品分类or内容分类(0:产品;1:内容)
+     */
+    @Excel(name = "区分产品分类or内容分类(0:产品;1:内容)", width = 15)
+    @Schema(description = "区分产品分类or内容分类(0:产品;1:内容)")
+    private Integer categoryDiff;
+    /**
+     * 父级分类名称
+     */
+    @Excel(name = "父级分类名称", width = 15)
+    @Schema(description = "父级分类名称")
+    private String parentCategoryName;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @Schema(description = "创建时间")
+    private Date createTime;
+    /**
+     * 分类状态(0:可用;1:删除)
+     **/
+    @Excel(name = "分类状态(0:可用;1:删除)", width = 15)
+    @Schema(description = "分类状态(0:可用;1:删除)")
+    private Integer status;
+
+    @TableField(exist = false)
+    private List<AdwebMaterialCategory> children;
+
+    /**
+     * commerce返回的分类id
+     **/
+    @Schema(description = "commerce返回的分类id")
+    private Integer commerceId;
+
+    private Integer parentCommerceId;
+
+    @TableField(exist = false)
+    private int productNum;
+
+    /**
+     * 分类类型(0:父分类,1:1级子分类,2:2级子分类)
+     */
+    private Integer categoryType;
+}

+ 73 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialCheck.java

@@ -0,0 +1,73 @@
+package org.jeecg.modules.adweb.materialcollect.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @Description: adweb_material_check
+ * @Author: chenpeiqing
+ * @Date:   2024-09-27
+ * @Version: V1.0
+ */
+@Data
+@TableName("adweb_material_check")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="adweb_material_check")
+public class AdwebMaterialCheck implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+    @Schema(description = "id")
+    private Integer id;
+	/**套餐id*/
+	@Excel(name = "套餐id", width = 15)
+    @Schema(description = "套餐id")
+    private String planId;
+	/**物料code*/
+	@Excel(name = "物料code", width = 15)
+    @Schema(description = "物料code")
+    private String materialCode;
+	/**物料名称*/
+	@Excel(name = "物料名称", width = 15)
+    @Schema(description = "物料名称")
+    private String materialLabel;
+	/**物料条目最小限制*/
+	@Excel(name = "物料条目最小限制", width = 15)
+    @Schema(description = "物料条目最小限制")
+    @TableField(updateStrategy  = FieldStrategy.IGNORED)
+    private Integer limitMin;
+	/**是否必填(0:必填,1:非必填;;默认0)*/
+	@Excel(name = "是否必填(0:必填,1:非必填;;默认0)", width = 15)
+    @Schema(description = "是否必填(0:必填,1:非必填;;默认0)")
+    private Integer required;
+	/**字段排序*/
+	@Excel(name = "字段排序", width = 15)
+    @Schema(description = "字段排序")
+    private Integer sort;
+    /**权重*/
+    @Excel(name = "权重", width = 15)
+    @Schema(description = "权重")
+    @TableField(updateStrategy  = FieldStrategy.IGNORED)
+    private BigDecimal weight;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @Schema(description = "创建时间")
+    private Date createTime;
+    /**菜单路径*/
+    @Excel(name = "菜单路径", width = 15)
+    @Schema(description = "菜单路径")
+    private String menuPath;
+}

+ 65 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialItem.java

@@ -0,0 +1,65 @@
+package org.jeecg.modules.adweb.materialcollect.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ * @Description: adweb_material_item
+ * @Author: chenpeiqing
+ * @Date:   2024-09-27
+ * @Version: V1.0
+ */
+@Data
+@TableName("adweb_material_item")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="adweb_material_item")
+public class AdwebMaterialItem implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+    @Schema(description = "id")
+    private Integer id;
+	/**物料id*/
+	@Excel(name = "物料id", width = 15)
+    @Schema(description = "物料id")
+    private Integer materialId;
+	/**字段*/
+	@Excel(name = "字段", width = 15)
+    @Schema(description = "字段")
+    private String field;
+	/**物料值*/
+	@Excel(name = "物料值", width = 15)
+    @Schema(description = "物料值")
+    private String value;
+	/**物料状态(0:删除;1:可用)*/
+	@Excel(name = "物料状态(0:删除;1:可用)", width = 15)
+    @Schema(description = "物料状态(0:删除;1:可用)")
+    private Integer status;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @Schema(description = "创建时间")
+    private java.util.Date createTime;
+
+    /**
+     * 本地化产品详情的状态,0未处理,1处理中,2已成功处理,3不需要处理
+     */
+    private Integer localizeStatus;
+
+    /**
+     * 本地化错误次数,每次编辑后,会清零。
+     */
+    private Integer localizeErrorNum;
+}

+ 47 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialLabel.java

@@ -0,0 +1,47 @@
+package org.jeecg.modules.adweb.materialcollect.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.io.Serializable;
+/**
+ * @Description: adweb_material_category
+ * @Author: chenpeiqing
+ * @Date:   2024-09-27
+ * @Version: V1.0
+ */
+@Data
+@TableName("adweb_material_label")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="adweb_material_label")
+public class AdwebMaterialLabel implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+    @Schema(description = "id")
+    private Integer id;
+
+	/**标签名称*/
+	@Excel(name = "标签名称", width = 50)
+    @Schema(description = "标签名称")
+    private String labelName;
+
+	/**标签对应commerce的id*/
+	@Excel(name = "commerceId", width = 11)
+    @Schema(description = "commerceId")
+    private Integer commerceId;
+
+    /**对应站点code*/
+    @Excel(name = "对应站点code", width = 20)
+    @Schema(description = "对应站点code")
+    private String siteCode;
+
+}

+ 203 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialNews.java

@@ -0,0 +1,203 @@
+package org.jeecg.modules.adweb.materialcollect.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: adweb_material_news
+ * @Author: chenpeiqing
+ * @Date:   2024-09-27
+ * @Version: V1.0
+ */
+@Data
+@TableName("adweb_material_news")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="adweb_material_news")
+public class AdwebMaterialNews implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**
+     * id
+     */
+	@TableId(type = IdType.AUTO)
+    @Schema(description = "id")
+    private Integer id;
+
+	/**
+     * 对应站点code
+     */
+    @Schema(description = "对应站点code")
+    private String siteCode;
+
+    /**
+     * 站点名称
+     */
+    @Schema(description = "对应站点名称")
+    private String siteName;
+
+	/**
+     * 分类id
+     */
+    @Schema(description = "分类id")
+    private String categoryId;
+
+    /**
+     * 分类名称
+     */
+    @Schema(description = "分类名称")
+    private String categoryName;
+
+	/**
+     * 内容标题
+     */
+    @Schema(description = "内容标题")
+    private String newsTitle;
+
+	/**
+     * 内容图片
+     */
+    @Schema(description = "内容图片")
+    private String newsImage;
+
+	/**
+     * 相关产品id
+     */
+    @Schema(description = "相关产品id")
+    private String relatedProductId;
+
+    /**
+     * 相关产品
+     */
+    @Schema(description = "相关产品")
+    private String relatedProductName;
+
+	/**
+     * 内容简述
+     */
+    @Schema(description = "内容简述")
+    private String newsSketch;
+
+	/**
+     * 内容详情
+     */
+    @Schema(description = "内容详情")
+    private String newsDetail;
+
+    /**
+     * 作者
+     */
+    @Schema(description = "作者")
+    private String author;
+
+    /**
+     * 作者角色
+     */
+    @Schema(description = "作者角色")
+    private String authorRole;
+
+    /**
+     * 负责人
+     */
+    @Schema(description = "负责人")
+    private String principalUid;
+
+    /**
+     * 同步状态: 0,待审核;1,待发布 2,已发布;3,发布失败,4,发布中;5,已定时;6,草稿;
+     */
+    @Schema(description = "同步状态")
+    private Integer syncStatus;
+
+	/**
+     * 内容状态(0:可用;1:已删除)
+     */
+    @Schema(description = "内容状态(0:可用;1:已删除)")
+    private Integer status;
+
+    /**
+     * wp站点产品id
+     */
+    @Schema(description = "wp站点产品id")
+    private Integer wpNewsId;
+
+	/**
+     * 创建时间
+     */
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @Schema(description = "createTime")
+    private Date createTime;
+
+    /**
+     * 最新编辑时间
+     */
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @Schema(description = "editTime")
+    private Date editTime;
+
+    /**
+     * 定时发布时间
+     */
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)     //该注解会将null设置到数据库中
+    private Date regularTime;
+
+    /**
+     * 定时任务执行状态(0:未执行; 1:已执行; 2:执行中, 3:执行失败)
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)     //该注解会将null设置到数据库中
+    private Integer regularStatus;
+
+    /**
+     * 新闻uri
+     */
+    @Schema(description = "新闻uri")
+    private String slug;
+
+    /**
+     * 网页链接
+     */
+    private String permalink;
+
+    /**
+     * 首次同步时间
+     */
+    private Date firstSyncTime;
+
+    /**
+     * 最后一次同步时间
+     */
+    private Date lastSyncTime;
+
+    /**
+     * 关键词
+     */
+    private String keyword;
+
+    /**
+     * 本地化产品详情的状态,0未处理,1处理中,2已成功处理,3不需要处理
+     */
+    private Integer localizeStatus;
+
+    /**
+     * 本地化错误次数,每次编辑后,会清零。
+     */
+    private Integer localizeErrorNum;
+
+    /**
+     * 站点是否启用
+     */
+    @TableField(exist = false)
+    private Integer wordpressSwitch;
+
+}

+ 185 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialProduct.java

@@ -0,0 +1,185 @@
+package org.jeecg.modules.adweb.materialcollect.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description: adweb_material_product
+ * @Author: chenpeiqing
+ * @Date:   2024-09-27
+ * @Version: V1.0
+ */
+@Data
+@TableName("adweb_material_product")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="adweb_material_product")
+public class AdwebMaterialProduct implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+    @Schema(description = "id")
+    private Integer id;
+	/**对应站点code*/
+	@Excel(name = "对应站点code", width = 15)
+    @Schema(description = "对应站点code")
+    private String siteCode;
+	/**分类id*/
+	@Excel(name = "分类id", width = 15)
+    @Schema(description = "分类id")
+    private String categoryId;
+    /**分类名称*/
+    @Excel(name = "分类名称", width = 15)
+    @Schema(description = "分类名称")
+    private String categoryName;
+	/**产品标题*/
+	@Excel(name = "产品标题", width = 15)
+    @Schema(description = "产品标题")
+    private String productTitle;
+	/**产品图片*/
+	@Excel(name = "产品图片", width = 15)
+    @Schema(description = "产品图片")
+    private String productImage;
+    /**产品视频*/
+    @Excel(name = "产品视频", width = 15)
+    @Schema(description = "产品视频")
+    private String productVideo;
+	/**产品相关词*/
+	@Excel(name = "产品相关词", width = 15)
+    @Schema(description = "产品相关词")
+    private String prudctRelatedWords;
+	/**产品简述*/
+	@Excel(name = "产品简述", width = 15)
+    @Schema(description = "产品简述")
+    private String productSketch;
+	/**产品详情*/
+	@Excel(name = "产品详情", width = 15)
+    @Schema(description = "产品详情")
+    private String productDetail;
+    /**最高重复度*/
+    @Excel(name = "最高重复度", width = 15)
+    @Schema(description = "最高重复度")
+    private BigDecimal maximumRepeatability;
+    /**重复产品Id*/
+    @Excel(name = "重复产品Id", width = 15)
+    @Schema(description = "重复产品Id")
+    private String repeatProductId;
+	/**产品状态(0:可用;1:已删除)*/
+	@Excel(name = "产品状态(0:可用;1:已删除;2草稿箱)", width = 15)
+    @Schema(description = "产品状态(0:可用;1:已删除;2草稿箱)")
+    private Integer status;
+	/**createTime*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @Schema(description = "createTime")
+    private Date createTime;
+
+    /**置顶 排序默认为0)**/
+    @Excel(name = "置顶(0为不置顶 数值越大越靠前) ", width = 15)
+    @Schema(description = "置顶排序默认为0")
+    private Integer topOrder;
+
+    @TableField(exist = false)
+    private String idStr;
+
+    /**商品对应的commerceId*/
+    @Schema(description = "商品对应的commerceId")
+    private Integer commerceId;
+
+    @TableField(exist = false)
+    private int seqNumber;
+
+    /**
+     * 同步状态(0:未同步;1:已同步)
+     */
+    private Integer syncStatus;
+
+    /**
+     * 用户id
+     */
+    private String userId;
+
+    /**
+     * 用户名
+     */
+    private String userName;
+
+    /**
+     * 同步失败原因
+     */
+    private String syncFailReason;
+
+    /**
+     * 产品图片状态
+     */
+    private Integer productImageStatus;
+
+    /**
+     * 负责人的userId,如果所有人可见,则存ALL
+     */
+    private String principalUid;
+
+    /**
+     * 是否可编辑,用来让前台判断,当前人是否拥有此产品的编辑权限,0则表示只可查看,1表示可以编辑
+     */
+    @TableField(exist = false)
+    private int editable;
+
+    /**
+     * 本地化产品详情的状态,0未处理,1处理中,2已成功处理,3不需要处理
+     */
+    private Integer localizeStatus;
+
+    /**
+     * 本地化错误次数,每次编辑后,会清零。
+     */
+    private Integer localizeErrorNum;
+
+    /**
+     * 网页链接
+     */
+    private String permalink;
+
+    /**
+     * uri
+     */
+    private String slug;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+    private Date editTime;
+
+    /**
+     * wp站点产品id
+     */
+    private Integer wpProductId;
+
+    /**
+     * 产品id集合
+     */
+    @TableField(exist = false)
+    private List<Integer> ids;
+
+    /**
+     * 产品对应的子站点产品id
+     */
+    private String subSiteProduct;
+}

+ 65 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialProductFaq.java

@@ -0,0 +1,65 @@
+package org.jeecg.modules.adweb.materialcollect.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: adweb_material_product_faq
+ * @Author: chenpeiqing
+ * @Date:   2024-09-27
+ * @Version: V1.0
+ */
+@Data
+@TableName("adweb_material_product_faq")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="adweb_material_product_faq")
+public class AdwebMaterialProductFaq implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+    @Schema(description = "id")
+    private Integer id;
+    /**对应站点code*/
+    @Excel(name = "对应站点code", width = 15)
+    @Schema(description = "对应站点code")
+    private String siteCode;
+	/**相关产品id*/
+	@Excel(name = "相关产品id", width = 15)
+    @Schema(description = "相关产品id")
+    private String productId;
+	/**相关产品标题*/
+	@Excel(name = "相关产品标题", width = 15)
+    @Schema(description = "相关产品标题")
+    private String productName;
+	/**问题*/
+	@Excel(name = "问题", width = 15)
+    @Schema(description = "问题")
+    private String question;
+	/**回答*/
+	@Excel(name = "回答", width = 15)
+    @Schema(description = "回答")
+    private String answer;
+	/**FAQ状态(0:可用;1:已删除)*/
+	@Excel(name = "FAQ状态(0:可用;1:已删除)", width = 15)
+    @Schema(description = "FAQ状态(0:可用;1:已删除)")
+    private Integer status;
+    /**createTime*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @Schema(description = "createTime")
+    private Date createTime;
+
+}

+ 68 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialProductFile.java

@@ -0,0 +1,68 @@
+package org.jeecg.modules.adweb.materialcollect.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: adweb_material_product_file
+ * @Author: chenpeiqing
+ * @Date:   2024-09-27
+ * @Version: V1.0
+ */
+@Data
+@TableName("adweb_material_product_file")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="adweb_material_product_file")
+public class AdwebMaterialProductFile implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+    @Schema(description = "id")
+    private Integer id;
+    /**对应站点code*/
+    @Excel(name = "对应站点code", width = 15)
+    @Schema(description = "对应站点code")
+    private String siteCode;
+	/**相关产品id*/
+	@Excel(name = "相关产品id", width = 15)
+    @Schema(description = "相关产品id")
+    private String productId;
+	/**相关产品标题*/
+	@Excel(name = "相关产品标题", width = 15)
+    @Schema(description = "相关产品标题")
+    private String productName;
+	/**文档标题*/
+	@Excel(name = "文档标题", width = 15)
+    @Schema(description = "文档标题")
+    private String title;
+	/**文件*/
+	@Excel(name = "文件", width = 15)
+    @Schema(description = "文件")
+    private String file;
+	/**相关描述*/
+	@Excel(name = "相关描述", width = 15)
+    @Schema(description = "相关描述")
+    private String description;
+	/**(文档状态:0:可用,1:已删除)*/
+	@Excel(name = "(文档状态:0:可用,1:已删除)", width = 15)
+    @Schema(description = "(文档状态:0:可用,1:已删除)")
+    private Integer status;
+    /**创建时间*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @Schema(description = "createTime")
+    private Date createTime;
+}

+ 68 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialProductImage.java

@@ -0,0 +1,68 @@
+package org.jeecg.modules.adweb.materialcollect.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: adweb_material_product_image
+ * @Author: chenpeiqing
+ * @Date:   2024-09-27
+ * @Version: V1.0
+ */
+@Data
+@TableName("adweb_material_product_image")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="adweb_material_product_image")
+public class AdwebMaterialProductImage implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**
+     * id
+     */
+	@TableId(type = IdType.AUTO)
+    private Integer id;
+
+	/**
+     * 对应站点code
+     */
+    private String siteCode;
+
+	/**
+     * 产品id
+     */
+    private Integer productId;
+
+	/**
+     * 产品标题
+     */
+    private String productTitle;
+
+	/**
+     * 产品图片
+     */
+    private String imageUrl;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 上传次数
+     */
+    private Integer uploadNum;
+
+    /**
+     * 上传状态: 0:未上传, 1:上传成功, 2:上传中
+     */
+    private Integer uploadStatus;
+}

+ 18 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialRepeatability.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.adweb.materialcollect.entity;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class AdwebMaterialRepeatability {
+    /**
+     * 产品id
+     */
+    private Integer Id;
+
+    /**
+     * 重复度
+     */
+    private BigDecimal repeat;
+}

+ 20 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebMaterialSubProduct.java

@@ -0,0 +1,20 @@
+package org.jeecg.modules.adweb.materialcollect.entity;
+
+import lombok.Data;
+
+/**
+ * 子站点产品
+ */
+@Data
+public class AdwebMaterialSubProduct {
+
+    /**
+     * id
+     */
+    private Integer id;
+
+    /**
+     * 对应站点code
+     */
+    private String siteCode;
+}

+ 80 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/AdwebUrlEditRecord.java

@@ -0,0 +1,80 @@
+package org.jeecg.modules.adweb.materialcollect.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: adweb_url_edit_record
+ * @Author: chenpeiqing
+ * @Date:   2024-09-27
+ * @Version: V1.0
+ */
+@Data
+@TableName("adweb_url_edit_record")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="adweb_url_edit_record")
+public class AdwebUrlEditRecord implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**
+     * id
+     */
+	@TableId(type = IdType.AUTO)
+    @Schema(description = "id")
+    private Integer id;
+
+	/**
+     * 对应站点code
+     */
+    @Schema(description = "对应站点code")
+    private String siteCode;
+
+    /**
+     * 站点名称
+     */
+    @Schema(description = "对应站点名称")
+    private String siteName;
+
+	/**
+     * 源链接
+     */
+    @Schema(description = "分类id")
+    private String source;
+
+    /**
+     * 匹配方式
+     */
+    @Schema(description = "匹配方式")
+    private String matching;
+
+    /**
+     * 目标链接
+     */
+    @Schema(description = "分类名称")
+    private String destination;
+
+	/**
+     * 类型
+     */
+    @Schema(description = "类型")
+    private String type;
+
+	/**
+     * 创建时间
+     */
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @Schema(description = "createTime")
+    private Date createTime;
+}

+ 72 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/WordPressMaterial.java

@@ -0,0 +1,72 @@
+package org.jeecg.modules.adweb.materialcollect.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * WordPress物料信息
+ */
+@Data
+@TableName("word_press_material")
+public class WordPressMaterial implements Serializable {
+
+	/**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 物料id
+     */
+    private Integer materialId;
+
+	/**
+     * 站点code
+     */
+    private String siteCode;
+
+    /**
+     * 物料类型
+     */
+    private String type;
+
+    /**
+     * 站点域名
+     */
+    private String domain;
+
+	/**
+     * 回调地址
+     */
+    private String callbackUrl;
+
+	/**
+     * 简述
+     */
+    private String sketch;
+
+	/**
+     * 详情
+     */
+    private String detail;
+
+    /**
+     * 回调次数
+     */
+    private Integer sendCount;
+
+	/**
+     * 回调状态 0:未回调;1:回调成功,2:回调失败
+     */
+    private Integer sendStatus;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+}

+ 13 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/entity/WordPressMaterialContent.java

@@ -0,0 +1,13 @@
+package org.jeecg.modules.adweb.materialcollect.entity;
+
+import lombok.Data;
+
+@Data
+public class WordPressMaterialContent {
+
+    private String content;
+
+    private boolean successFlag;
+
+    private int failNum;
+}

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/mapper/AdwebMaterialCheckMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.adweb.materialcollect.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.adweb.materialcollect.entity.AdwebMaterialCheck;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: adweb_material_check
+ * @Author: jeecg-boot
+ * @Date:   2022-05-05
+ * @Version: V1.0
+ */
+public interface AdwebMaterialCheckMapper extends BaseMapper<AdwebMaterialCheck> {
+
+}

+ 100 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/mapper/MaterialCommonMapper.java

@@ -0,0 +1,100 @@
+package org.jeecg.modules.adweb.materialcollect.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.adweb.materialcollect.dto.AdwebMaterialCheckDTO;
+import org.jeecg.modules.adweb.materialcollect.entity.AdwebMaterialCheck;
+import org.jeecg.modules.adweb.materialcollect.entity.AdwebMaterialItem;
+
+import java.util.List;
+
+/**
+ * 物料收集公共mapper
+ *
+ * @Author jerry
+ * @Date 2022/03/31
+ */
+
+public interface MaterialCommonMapper extends Mapper {
+    /**
+     * 根据站点code、物料code(material_code)
+     * @param materialCode
+     * @param siteCode
+     * @return
+     */
+    List<AdwebMaterialItem> selectMaterialItemList(@Param("siteCode") String siteCode,
+                                                   @Param("materialCode") String materialCode);
+
+
+
+    /**
+     * 企业logo
+     * @param siteCode
+     * @return
+     */
+    String enterpriseLogo(@Param("siteCode") String siteCode);
+
+
+    /**
+     * 根据站点code查询此站点对应SEO套餐的id,如果绑定的套餐类型不是SEO,仍然会返回空
+     *
+     * @param siteCode 站点code
+     * @return 套餐id
+     */
+    String getPlanIdBySiteCode(@Param("siteCode") String siteCode);
+
+
+    /**
+     * 根据套餐id获取此套餐下的检测标准
+     * @param planId
+     * @return
+     */
+    List<AdwebMaterialCheck> getRulesByPlanId(@Param("planId") String planId);
+
+    /**
+     * 根据站点code和物料code确定此物料数量
+     * @param siteCode
+     * @param materialCode
+     * @return
+     */
+    int getTotalCountBySiteCodeAndMaterialCode(@Param("siteCode") String siteCode,@Param("materialCode") String materialCode);
+
+    /**
+     * 根据站点code和物料code获取产品或内容分类数量
+     * @param siteCode
+     * @param categoryDiff
+     * @return
+     */
+    int getCategoryCount(@Param("siteCode") String siteCode,@Param("categoryDiff") Integer categoryDiff);
+
+    /**
+     * 根据站点code和物料code获取产品或内容分类数量
+     * @param siteCode
+     * @return
+     */
+    int getProductCount(@Param("siteCode") String siteCode);
+
+    /**
+     * 根据站点code和物料code获取产品或内容分类数量
+     * @param siteCode
+     * @return
+     */
+    int getNewsCount(@Param("siteCode") String siteCode);
+
+    /**
+     * 根据站点code和物料code获取产品或内容分类数量
+     * @param siteCode
+     * @return
+     */
+    int getDocumentCount(@Param("siteCode") String siteCode);
+
+    /**
+     * 根据站点code和物料code获取产品或内容分类数量
+     * @param siteCode
+     * @return
+     */
+    int getProductFaqCount(@Param("siteCode") String siteCode);
+
+    List<AdwebMaterialCheckDTO> getCheckListBySiteIdList(List<Integer> siteIdList);
+}

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/mapper/xml/AdwebMaterialCheckMapper.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="org.jeecg.modules.adweb.materialcollect.mapper.AdwebMaterialCheckMapper">
+
+</mapper>

+ 104 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/mapper/xml/MaterialCommonMapper.xml

@@ -0,0 +1,104 @@
+<?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="org.jeecg.modules.adweb.materialcollect.mapper.MaterialCommonMapper">
+
+    <select id="selectMaterialItemList" parameterType="org.jeecg.modules.adweb.materialcollect.dto.MaterialSearchDto"
+            resultType="org.jeecg.modules.adweb.materialcollect.entity.AdwebMaterialItem">
+        SELECT
+            t1.* FROM `adweb_material_item` t1
+            LEFT JOIN adweb_material t2 ON t2.id = t1.material_id
+        <where>
+            t1.`status` = 1 AND t2.`status` = 1
+            <if test="null != siteCode and '' != siteCode">
+                AND t2.site_code = #{siteCode}
+            </if>
+            <if test="null != materialCode and '' != materialCode">
+                AND t2.material_code = #{materialCode}
+            </if>
+        </where>
+        order by t1.material_id ASC
+    </select>
+    <select id="enterpriseLogo" parameterType="java.lang.String"
+            resultType="java.lang.String">
+        SELECT t1.value FROM adweb_material_item t1
+                                 LEFT JOIN adweb_material t2 ON t2.id = t1.material_id
+        WHERE t2.site_code = #{siteCode}
+          AND t1.`status` = 1
+          AND t2.`status` = 1
+          AND t1.field = 'enterpriseLogo'
+    </select>
+    <select id="getPlanIdBySiteCode" parameterType="java.lang.String" resultType="java.lang.String">
+        SELECT
+            t1.plan_id
+        FROM
+            seo_purchase_history t1,
+            adweb_site t2
+        WHERE
+            t1.site_id = t2.id
+            AND t2.code = #{siteCode}
+            AND t1.`status` = 1
+
+            AND t2.`status` != 0
+    </select>
+    <select id="getRulesByPlanId" parameterType="java.lang.String"
+            resultType="org.jeecg.modules.adweb.materialcollect.entity.AdwebMaterialCheck">
+        SELECT * FROM adweb_material_check
+        WHERE plan_id = #{planId} ORDER BY sort ASC
+    </select>
+    <select id="getTotalCountBySiteCodeAndMaterialCode" parameterType="java.lang.String"
+            resultType="java.lang.Integer">
+        SELECT count(*) FROM adweb_material
+        WHERE site_code = #{siteCode} AND material_code = #{materialCode} AND status = 1
+    </select>
+    <select id="getCategoryCount" parameterType="java.lang.Object"
+            resultType="java.lang.Integer">
+        SELECT count(*) FROM adweb_material_category
+        WHERE site_code = #{siteCode} AND category_diff = #{categoryDiff} AND status = 0
+    </select>
+    <select id="getProductCount" parameterType="java.lang.String"
+            resultType="java.lang.Integer">
+        SELECT count(*) FROM adweb_material_product
+        WHERE site_code = #{siteCode} AND status = 0
+    </select>
+    <select id="getNewsCount" parameterType="java.lang.String"
+            resultType="java.lang.Integer">
+        SELECT count(*) FROM adweb_material_news
+        WHERE site_code = #{siteCode} AND status = 0
+    </select>
+    <select id="getDocumentCount" parameterType="java.lang.String"
+            resultType="java.lang.Integer">
+        SELECT count(*) FROM adweb_material_product_file
+        WHERE site_code = #{siteCode} AND status = 0
+    </select>
+    <select id="getProductFaqCount" parameterType="java.lang.String"
+            resultType="java.lang.Integer">
+        SELECT count(*) FROM adweb_material_product_faq
+        WHERE site_code = #{siteCode} AND status = 0
+    </select>
+<!--    <select id="selectBaseInfoValueList" parameterType="java.lang.String"-->
+<!--            resultType="java.lang.Integer">-->
+<!--        SELECT-->
+<!--            COUNT(t1.`value`)-->
+<!--        FROM-->
+<!--            adweb_material_item t1-->
+<!--                LEFT JOIN adweb_material t2 ON t2.id = t1.material_id-->
+<!--        WHERE-->
+<!--                t2.material_code = 'baseinfo'-->
+<!--                AND t2.`status` = 1-->
+<!--                AND t1.`status` = 1-->
+<!--                AND t1.field IN ( 'companyEnName', 'homepageTitle', 'enterpriseLogo', 'enterpriseContactName', 'enterpriseLandline', 'enterpriseEmail', 'enterpriseOfficeAddress', 'enterpriseBrand', 'enterpriseOverview' )-->
+<!--                AND (t1.`value` = ''-->
+<!--           OR ISNULL( t1.`value` ))-->
+<!--            AND t2.site_code = #{siteCode}-->
+<!--    </select>-->
+    <select id="getCheckListBySiteIdList"
+            resultType="org.jeecg.modules.adweb.materialcollect.dto.AdwebMaterialCheckDTO">
+        SELECT adweb_material_check.*,site_id FROM adweb_material_check
+        left join seo_purchase_history on seo_purchase_history.plan_id = adweb_material_check.plan_id
+        where
+        seo_purchase_history.site_id in
+        <foreach collection="siteIdList" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
+</mapper>

+ 32 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/service/IAdwebMaterialCheckService.java

@@ -0,0 +1,32 @@
+package org.jeecg.modules.adweb.materialcollect.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.adweb.materialcollect.dto.AdwebMaterialCheckDTO;
+import org.jeecg.modules.adweb.materialcollect.dto.ProductCompletionStatus;
+import org.jeecg.modules.adweb.materialcollect.entity.AdwebMaterialCheck;
+
+import java.util.List;
+
+/**
+ * @Description: adweb_material_check
+ * @Author: jeecg-boot
+ * @Date:   2022-05-05
+ * @Version: V1.0
+ */
+public interface IAdwebMaterialCheckService extends IService<AdwebMaterialCheck> {
+
+    ProductCompletionStatus materialStatistics(List<AdwebMaterialCheck> materialCheckList, String siteCode);
+
+    int getCountByMaterialCode(String siteCode, AdwebMaterialCheck adwebMaterialCheck);
+
+    List<AdwebMaterialCheckDTO> getCheckListBySiteIdList(List<Integer> siteIdList);
+
+    /**
+     * 站点状态检测
+     * @param siteCode
+     * @return
+     */
+    public String checkSiteStatus(String siteCode);
+
+    public Integer getEnterpriseHistoryNum(String siteCode);
+}

+ 103 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/materialcollect/service/impl/AdwebMaterialCheckServiceImpl.java

@@ -0,0 +1,103 @@
+package org.jeecg.modules.adweb.materialcollect.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.RedisUtil;
+import org.jeecg.modules.adweb.materialcollect.dto.AdwebMaterialCheckDTO;
+import org.jeecg.modules.adweb.materialcollect.dto.ProductCompletionStatus;
+import org.jeecg.modules.adweb.materialcollect.entity.AdwebMaterialCheck;
+import org.jeecg.modules.adweb.materialcollect.mapper.AdwebMaterialCheckMapper;
+import org.jeecg.modules.adweb.materialcollect.mapper.MaterialCommonMapper;
+import org.jeecg.modules.adweb.materialcollect.service.IAdwebMaterialCheckService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.List;
+
+/**
+ * @Description: adweb_material_check
+ * @Author: jeecg-boot
+ * @Date:   2022-05-05
+ * @Version: V1.0
+ */
+@Slf4j
+@Service
+public class AdwebMaterialCheckServiceImpl extends ServiceImpl<AdwebMaterialCheckMapper, AdwebMaterialCheck> implements IAdwebMaterialCheckService {
+
+    @Resource
+    private MaterialCommonMapper materialCommonMapper;
+
+    @Autowired
+    private RedisUtil redisUtil;
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Override
+    public ProductCompletionStatus materialStatistics(List<AdwebMaterialCheck> materialCheckList, String siteCode) {
+        return null;
+    }
+
+    /**
+     * 获得当前站点下物料数量
+     *
+     * @param siteCode 站点
+     * @param adwebMaterialCheck 检测指标
+     * @return 物料数量
+     */
+    public int getCountByMaterialCode(String siteCode, AdwebMaterialCheck adwebMaterialCheck) {
+        int count = 0;
+        switch (adwebMaterialCheck.getMaterialCode()) {
+            case "baseInfo":
+            case "enterpriseIntroduction":
+            case "projectApplication":
+            case "advantage":
+            case "honoraryQualification":
+            case "enterpriseHistory":
+            case "factoryEnvironment":
+            case "serviceGuarantee":
+            case "frequentQuestion":
+            case "socialMediaLink":
+                count = materialCommonMapper.getTotalCountBySiteCodeAndMaterialCode(siteCode, adwebMaterialCheck.getMaterialCode());
+                break;
+            case "productCategory":
+                count = materialCommonMapper.getCategoryCount(siteCode, 0);
+                break;
+            case "newsCategory":
+                count = materialCommonMapper.getCategoryCount(siteCode, 1);
+                break;
+            case "product":
+                count = materialCommonMapper.getProductCount(siteCode);
+                break;
+            case "news":
+                count = materialCommonMapper.getNewsCount(siteCode);
+                break;
+            case "document":
+                count = materialCommonMapper.getDocumentCount(siteCode);
+                break;
+            case "productFaq":
+                count = materialCommonMapper.getProductFaqCount(siteCode);
+                break;
+            default:
+                break;
+        }
+        return count;
+    }
+
+    @Override
+    public List<AdwebMaterialCheckDTO> getCheckListBySiteIdList(List<Integer> siteIdList) {
+        return this.materialCommonMapper.getCheckListBySiteIdList(siteIdList);
+    }
+
+    @Override
+    public String checkSiteStatus(String siteCode) {
+        return "";
+    }
+
+    @Override
+    public Integer getEnterpriseHistoryNum(String siteCode) {
+        return 0;
+    }
+}

+ 22 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/result/CoreDataDetailResult.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.adweb.result;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class CoreDataDetailResult {
+
+    private List<GaDailyCountInfo> countInfo;
+
+    private BigDecimal averageVisit;
+
+    private String averageVisitDuration;
+
+    private String bounceRate;
+
+    private BigDecimal averageVisitPage;
+
+    private List<InfoTrends> trendInfo;
+}

+ 16 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/result/CoreDataInfoResult.java

@@ -0,0 +1,16 @@
+package org.jeecg.modules.adweb.result;
+
+import lombok.Data;
+import org.jeecg.modules.adweb.dto.datacenter.FlowIndicator;
+
+@Data
+public class CoreDataInfoResult {
+    int currentMonthEnquiryCount;
+    int currentWeekEnquiryCount;
+    int totalEnquiryCount;
+    int appointWordCount;
+    int currentAchieveCount;
+    String achievePercent;
+
+    FlowIndicator flowIndicator;
+}

+ 15 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/result/GaDailyCountInfo.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.adweb.result;
+
+import lombok.Data;
+
+@Data
+public class GaDailyCountInfo {
+    private String targetName;
+    private String todayCount;
+    private String yesterdayCount;
+    private String currentWeekCount;
+    private String lastWeekCount;
+    private String currentMonthCount;
+    private String lastMonthCount;
+    private String totalCount;
+}

+ 26 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/result/GaDailyInfo.java

@@ -0,0 +1,26 @@
+package org.jeecg.modules.adweb.result;
+
+import java.util.Date;
+
+public class GaDailyInfo {
+    private int num;
+    private Date day;
+
+    public int getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        if (num != null) {
+            this.num = num;
+        }
+    }
+
+    public Date getDay() {
+        return day;
+    }
+
+    public void setDay(Date day) {
+        this.day = day;
+    }
+}

+ 12 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/result/InfoTrends.java

@@ -0,0 +1,12 @@
+package org.jeecg.modules.adweb.result;
+
+import lombok.Data;
+
+@Data
+public class InfoTrends {
+    private int uvCount;
+
+    private int pvCount;
+
+    private String date;
+}

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/service/ISeoMarketPlanService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.adweb.service;
+
+import org.jeecg.modules.adweb.entity.SeoMarketPlan;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 网站营销方案套餐表
+ * @Author: jeecg-boot
+ * @Date:   2024-09-27
+ * @Version: V1.0
+ */
+public interface ISeoMarketPlanService extends IService<SeoMarketPlan> {
+
+}

+ 19 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/service/impl/SeoMarketPlanServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.adweb.service.impl;
+
+import org.jeecg.modules.adweb.entity.SeoMarketPlan;
+import org.jeecg.modules.adweb.mapper.SeoMarketPlanMapper;
+import org.jeecg.modules.adweb.service.ISeoMarketPlanService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 网站营销方案套餐表
+ * @Author: jeecg-boot
+ * @Date:   2024-09-27
+ * @Version: V1.0
+ */
+@Service
+public class SeoMarketPlanServiceImpl extends ServiceImpl<SeoMarketPlanMapper, SeoMarketPlan> implements ISeoMarketPlanService {
+
+}

+ 1 - 1
jeecg-module-system/jeecg-system-start/src/main/resources/jeecg/jeecg_config.properties

@@ -1,7 +1,7 @@
 #code_generate_project_path
 project_path=E:\\workspace\\jeecg-boot
 #bussi_package[User defined]
-bussi_package=org.jeecg.modules.demo
+bussi_package=org.jeecg.modules
 
 
 #default code path