Procházet zdrojové kódy

common 模块代码初始化

songyh před 4 roky
rodič
revize
8237977155
100 změnil soubory, kde provedl 6443 přidání a 815 odebrání
  1. 0 13
      jeecg-boot-base/jeecg-boot-base-core/pom.xml
  2. 2 63
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java
  3. 0 122
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DySmsHelper.java
  4. 39 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MD5Util.java
  5. 0 213
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MinioUtil.java
  6. 0 331
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/oss/OssBootUtil.java
  7. 0 38
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/oss/MinioConfig.java
  8. 0 34
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/oss/OssConfiguration.java
  9. 66 0
      jeecg-boot-common/pom.xml
  10. 1 1
      jeecg-boot-common/src/main/java/ctop/common/module/JeecgBootCommonApplication.java
  11. 20 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/constant/CosConstant.java
  12. 5 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/constant/CtopRoleCodeConstant.java
  13. 5 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/constant/OssConstant.java
  14. 96 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/Advertiser.java
  15. 71 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/BindAccountAuth.java
  16. 106 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/BindAccountLogin.java
  17. 107 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/ByteDanceCleanMaterialReport.java
  18. 72 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/CorpFeishuUser.java
  19. 82 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/CtopCorpWexinUser.java
  20. 167 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/CtopOauthToken.java
  21. 134 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/FileInfo.java
  22. 18 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/HttpClientEntity.java
  23. 25 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/IpPool.java
  24. 65 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/KuaiShouOcpxActionTypeConfig.java
  25. 74 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MailLog.java
  26. 49 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialAscription.java
  27. 71 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialCutFrame.java
  28. 65 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialCutFrameTask.java
  29. 142 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialImageInfo.java
  30. 41 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialImageVideoInfo.java
  31. 202 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialInfo.java
  32. 81 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialParameter.java
  33. 57 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialTag.java
  34. 54 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialTagInfo.java
  35. 22 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MusicInfo.java
  36. 20 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MusicType.java
  37. 95 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/OauthAgentToken.java
  38. 94 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/OauthConfig.java
  39. 78 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/Product.java
  40. 138 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/Project.java
  41. 75 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/RuleDataAccount.java
  42. 45 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/RuleDataAccountKuaishou.java
  43. 41 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/RuleDataCreative.java
  44. 95 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/RuleDataPlan.java
  45. 78 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/RuleDataTarget.java
  46. 63 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/RuleDataTargetKuaishou.java
  47. 29 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/RuleDatePlanKuaishou.java
  48. 101 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/RuleDateUnitKuaishou.java
  49. 65 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SupplierList.java
  50. 65 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SupplierWatermark.java
  51. 146 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysAnnouncement.java
  52. 48 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysAnnouncementSend.java
  53. 58 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysCategory.java
  54. 60 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysCompany.java
  55. 120 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDataSource.java
  56. 186 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepart.java
  57. 50 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepartPermission.java
  58. 70 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepartRole.java
  59. 54 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepartRolePermission.java
  60. 47 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepartRoleUser.java
  61. 82 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDict.java
  62. 80 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDictItem.java
  63. 112 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysLog.java
  64. 183 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysPermission.java
  65. 77 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysRole.java
  66. 223 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysUser.java
  67. 53 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysUserDepart.java
  68. 49 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysUserRole.java
  69. 24 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/TagCategoryInfo.java
  70. 57 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/TagInfo.java
  71. 26 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/TencentWatermarkTemplate.java
  72. 14 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/UReportSubscriber.java
  73. 174 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/UserAllocation.java
  74. 65 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/UserCompany.java
  75. 11 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/VideoMerge.java
  76. 59 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/VideoMergeTask.java
  77. 46 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/VideoPart.java
  78. 61 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/VideoWatermarkTask.java
  79. 75 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/WarningOperationLog.java
  80. 86 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/WexinConfig.java
  81. 166 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/enums/BytedanceConvertType.java
  82. 108 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/enums/MaterialEnum.java
  83. 71 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/enums/MaterialSupplierEnum.java
  84. 44 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/enums/SceneIdEnum.java
  85. 119 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/file/FileType.java
  86. 139 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/file/FileTypeJudge.java
  87. 113 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/file/FileUtil.java
  88. 14 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/BindAccountAuthMapper.java
  89. 25 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/BindAccountLoginMapper.java
  90. 15 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/ByteDanceCleanMaterialReportMapper.java
  91. 18 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/CorpFeishuUserMapper.java
  92. 18 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/CtopCorpWexinUserMapper.java
  93. 62 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/CtopOauthTokenMapper.java
  94. 30 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/CustomDataByAccountMapper.java
  95. 14 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/FileInfoMapper.java
  96. 7 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/IpPoolMapper.java
  97. 15 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/KuaiShouOcpxActionTypeConfigMapper.java
  98. 30 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/MailLogMapper.java
  99. 18 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/MaterialAscriptionMapper.java
  100. 0 0
      jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/MaterialCutFrameMapper.java

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

@@ -216,19 +216,6 @@
 			<artifactId>guava</artifactId>
 			<version>${guava.version}</version>
 		</dependency>
-
-		<!-- 阿里云短信 -->
-		<dependency>
-			<groupId>com.aliyun</groupId>
-			<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
-			<version>${aliyun-java-sdk-dysmsapi.version}</version>
-		</dependency>
-		<!-- aliyun oss -->
-		<dependency>
-			<groupId>com.aliyun.oss</groupId>
-			<artifactId>aliyun-sdk-oss</artifactId>
-			<version>${aliyun.oss.version}</version>
-		</dependency>
 		<!-- 第三方登录  -->
 		<dependency>
 			<groupId>com.xkcoding.justauth</groupId>

+ 2 - 63
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java

@@ -1,21 +1,13 @@
 package org.jeecg.common.util;
 
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.extra.pinyin.PinyinUtil;
 import lombok.extern.slf4j.Slf4j;
-import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.constant.DataBaseConstant;
-import org.jeecg.common.exception.JeecgBootException;
-import org.jeecg.common.util.oss.OssBootUtil;
-import org.jeecgframework.poi.util.PoiPublicUtil;
 import org.springframework.util.FileCopyUtils;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.sql.DataSource;
-import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.IOException;
-import java.io.InputStream;
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.SQLException;
@@ -28,35 +20,6 @@ public class CommonUtils {
    //中文正则
     private static Pattern ZHONGWEN_PATTERN = Pattern.compile("[\u4e00-\u9fa5]");
 
-    public static String uploadOnlineImage(byte[] data,String basePath,String bizPath,String uploadType){
-        String dbPath = null;
-        String fileName = "image" + Math.round(Math.random() * 100000000000L);
-        fileName += "." + PoiPublicUtil.getFileExtendName(data);
-        try {
-            if(CommonConstant.UPLOAD_TYPE_LOCAL.equals(uploadType)){
-                File file = new File(basePath + File.separator + bizPath + File.separator );
-                if (!file.exists()) {
-                    file.mkdirs();// 创建文件根目录
-                }
-                String savePath = file.getPath() + File.separator + fileName;
-                File savefile = new File(savePath);
-                FileCopyUtils.copy(data, savefile);
-                dbPath = bizPath + File.separator + fileName;
-            }else {
-                InputStream in = new ByteArrayInputStream(data);
-                String relativePath = bizPath+"/"+fileName;
-                if(CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)){
-                    dbPath = MinioUtil.upload(in,relativePath);
-                }else if(CommonConstant.UPLOAD_TYPE_OSS.equals(uploadType)){
-                    dbPath = OssBootUtil.upload(in,relativePath);
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return dbPath;
-    }
-
     /**
      * 判断文件名是否带盘符,重新处理
      * @param fileName
@@ -95,19 +58,7 @@ public class CommonUtils {
         }
     }
 
-    /**
-     * 统一全局上传
-     * @Return: java.lang.String
-     */
-    public static String upload(MultipartFile file, String bizPath, String uploadType) {
-        String url = "";
-        if(CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)){
-            url = MinioUtil.upload(file,bizPath);
-        }else{
-            url = OssBootUtil.upload(file,bizPath);
-        }
-        return url;
-    }
+
     /**
      * 本地文件上传
      * @param mf 文件
@@ -147,19 +98,7 @@ public class CommonUtils {
         return "";
     }
 
-    /**
-     * 统一全局上传 带桶
-     * @Return: java.lang.String
-     */
-    public static String upload(MultipartFile file, String bizPath, String uploadType, String customBucket) {
-        String url = "";
-        if(CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)){
-            url = MinioUtil.upload(file,bizPath,customBucket);
-        }else{
-            url = OssBootUtil.upload(file,bizPath,customBucket);
-        }
-        return url;
-    }
+
 
     /** 当前系统数据库类型 */
     private static String DB_TYPE = "";

+ 0 - 122
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DySmsHelper.java

@@ -1,122 +0,0 @@
-package org.jeecg.common.util;
-
-import org.jeecg.config.StaticConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.alibaba.fastjson.JSONObject;
-import com.aliyuncs.DefaultAcsClient;
-import com.aliyuncs.IAcsClient;
-import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
-import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
-import com.aliyuncs.exceptions.ClientException;
-import com.aliyuncs.profile.DefaultProfile;
-import com.aliyuncs.profile.IClientProfile;
-
-/**
- * Created on 17/6/7.
- * 短信API产品的DEMO程序,工程中包含了一个SmsDemo类,直接通过
- * 执行main函数即可体验短信产品API功能(只需要将AK替换成开通了云通信-短信产品功能的AK即可)
- * 工程依赖了2个jar包(存放在工程的libs目录下)
- * 1:aliyun-java-sdk-core.jar
- * 2:aliyun-java-sdk-dysmsapi.jar
- *
- * 备注:Demo工程编码采用UTF-8
- * 国际短信发送请勿参照此DEMO
- */
-public class DySmsHelper {
-	
-	private final static Logger logger=LoggerFactory.getLogger(DySmsHelper.class);
-
-    //产品名称:云通信短信API产品,开发者无需替换
-    static final String product = "Dysmsapi";
-    //产品域名,开发者无需替换
-    static final String domain = "dysmsapi.aliyuncs.com";
-
-    // TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
-    static  String accessKeyId;
-    static  String accessKeySecret;
-
-    public static void setAccessKeyId(String accessKeyId) {
-        DySmsHelper.accessKeyId = accessKeyId;
-    }
-
-    public static void setAccessKeySecret(String accessKeySecret) {
-        DySmsHelper.accessKeySecret = accessKeySecret;
-    }
-
-    public static String getAccessKeyId() {
-        return accessKeyId;
-    }
-
-    public static String getAccessKeySecret() {
-        return accessKeySecret;
-    }
-    
-    
-    public static boolean sendSms(String phone,JSONObject templateParamJson,DySmsEnum dySmsEnum) throws ClientException {
-    	//可自助调整超时时间
-        System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
-        System.setProperty("sun.net.client.defaultReadTimeout", "10000");
-
-        //update-begin-author:taoyan date:20200811 for:配置类数据获取
-        StaticConfig staticConfig = SpringContextUtils.getBean(StaticConfig.class);
-        setAccessKeyId(staticConfig.getAccessKeyId());
-        setAccessKeySecret(staticConfig.getAccessKeySecret());
-        //update-end-author:taoyan date:20200811 for:配置类数据获取
-        
-        //初始化acsClient,暂不支持region化
-        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
-        DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
-        IAcsClient acsClient = new DefaultAcsClient(profile);
-        
-        //验证json参数
-        validateParam(templateParamJson,dySmsEnum);
-        
-        //组装请求对象-具体描述见控制台-文档部分内容
-        SendSmsRequest request = new SendSmsRequest();
-        //必填:待发送手机号
-        request.setPhoneNumbers(phone);
-        //必填:短信签名-可在短信控制台中找到
-        request.setSignName(dySmsEnum.getSignName());
-        //必填:短信模板-可在短信控制台中找到
-        request.setTemplateCode(dySmsEnum.getTemplateCode());
-        //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
-        request.setTemplateParam(templateParamJson.toJSONString());
-        
-        //选填-上行短信扩展码(无特殊需求用户请忽略此字段)
-        //request.setSmsUpExtendCode("90997");
-
-        //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
-        //request.setOutId("yourOutId");
-
-        boolean result = false;
-
-        //hint 此处可能会抛出异常,注意catch
-        SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
-        logger.info("短信接口返回的数据----------------");
-        logger.info("{Code:" + sendSmsResponse.getCode()+",Message:" + sendSmsResponse.getMessage()+",RequestId:"+ sendSmsResponse.getRequestId()+",BizId:"+sendSmsResponse.getBizId()+"}");
-        if ("OK".equals(sendSmsResponse.getCode())) {
-            result = true;
-        }
-        return result;
-        
-    }
-    
-    private static void validateParam(JSONObject templateParamJson,DySmsEnum dySmsEnum) {
-    	String keys = dySmsEnum.getKeys();
-    	String [] keyArr = keys.split(",");
-    	for(String item :keyArr) {
-    		if(!templateParamJson.containsKey(item)) {
-    			throw new RuntimeException("模板缺少参数:"+item);
-    		}
-    	}
-    }
-    
-
-//    public static void main(String[] args) throws ClientException, InterruptedException {
-//    	JSONObject obj = new JSONObject();
-//    	obj.put("code", "1234");
-//    	sendSms("13800138000", obj, DySmsEnum.FORGET_PASSWORD_TEMPLATE_CODE);
-//    }
-}

+ 39 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MD5Util.java

@@ -1,8 +1,40 @@
 package org.jeecg.common.util;
 
+import org.springframework.util.DigestUtils;
+
+import java.io.FileInputStream;
 import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 
 public class MD5Util {
+	private static ThreadLocal<MessageDigest> MD5 = new ThreadLocal<MessageDigest>() {
+		@Override
+		protected MessageDigest initialValue() {
+			try {
+				return MessageDigest.getInstance("MD5");
+			} catch (NoSuchAlgorithmException e) {
+				throw new IllegalStateException("No md5 algorithm found");
+			}
+		}
+	};
+
+	public static String toHexStr(byte[] bytes) {
+		int j = bytes.length;
+		char[] str = new char[j * 2];
+		int k = 0;
+		for (int i = 0; i < j; i++) {
+			byte byte0 = bytes[i];
+			str[k++] = HEX_DIGITS_CHAR[byte0 >>> 4 & 0xf];
+			str[k++] = HEX_DIGITS_CHAR[byte0 & 0xf];
+		}
+		return String.valueOf(str);
+	}
+
+	public static String getMd5(String url) {
+		MessageDigest md5 = MD5.get();
+		md5.reset();
+		return toHexStr(md5.digest(url.getBytes()));
+	}
 
 	public static String byteArrayToHexString(byte b[]) {
 		StringBuffer resultSb = new StringBuffer();
@@ -40,4 +72,11 @@ public class MD5Util {
 	private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5",
 			"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
 
+	private static final String[] HEX_DIGITS = {"0", "1", "2", "3", "4", "5",
+			"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
+	private static final char[] HEX_DIGITS_CHAR = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
+
+	public static String getFileMd5(String path) throws Exception {
+		return DigestUtils.md5DigestAsHex(new FileInputStream(path));
+	}
 }

+ 0 - 213
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MinioUtil.java

@@ -1,213 +0,0 @@
-package org.jeecg.common.util;
-
-import io.minio.*;
-import lombok.extern.slf4j.Slf4j;
-import org.jeecg.common.util.filter.StrAttackFilter;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.InputStream;
-import java.net.URLDecoder;
-
-/**
- * minio文件上传工具类
- */
-@Slf4j
-public class MinioUtil {
-    private static String minioUrl;
-    private static String minioName;
-    private static String minioPass;
-    private static String bucketName;
-
-    public static void setMinioUrl(String minioUrl) {
-        MinioUtil.minioUrl = minioUrl;
-    }
-
-    public static void setMinioName(String minioName) {
-        MinioUtil.minioName = minioName;
-    }
-
-    public static void setMinioPass(String minioPass) {
-        MinioUtil.minioPass = minioPass;
-    }
-
-    public static void setBucketName(String bucketName) {
-        MinioUtil.bucketName = bucketName;
-    }
-
-    public static String getMinioUrl() {
-        return minioUrl;
-    }
-
-    public static String getBucketName() {
-        return bucketName;
-    }
-
-    private static MinioClient minioClient = null;
-
-    /**
-     * 上传文件
-     * @param file
-     * @return
-     */
-    public static String upload(MultipartFile file, String bizPath, String customBucket) {
-        String file_url = "";
-        //update-begin-author:wangshuai date:20201012 for: 过滤上传文件夹名特殊字符,防止攻击
-        bizPath=StrAttackFilter.filter(bizPath);
-        //update-end-author:wangshuai date:20201012 for: 过滤上传文件夹名特殊字符,防止攻击
-        String newBucket = bucketName;
-        if(oConvertUtils.isNotEmpty(customBucket)){
-            newBucket = customBucket;
-        }
-        try {
-            initMinio(minioUrl, minioName,minioPass);
-            // 检查存储桶是否已经存在
-            if(minioClient.bucketExists(BucketExistsArgs.builder().bucket(newBucket).build())) {
-                log.info("Bucket already exists.");
-            } else {
-                // 创建一个名为ota的存储桶
-                minioClient.makeBucket(MakeBucketArgs.builder().bucket(newBucket).build());
-                log.info("create a new bucket.");
-            }
-            InputStream stream = file.getInputStream();
-            // 获取文件名
-            String orgName = file.getOriginalFilename();
-            if("".equals(orgName)){
-                orgName=file.getName();
-            }
-            orgName = CommonUtils.getFileName(orgName);
-            String objectName = bizPath+"/"
-                                +( orgName.indexOf(".")==-1
-                                   ?orgName + "_" + System.currentTimeMillis()
-                                   :orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.lastIndexOf("."))
-                                 );
-
-            // 使用putObject上传一个本地文件到存储桶中。
-            if(objectName.startsWith("/")){
-                objectName = objectName.substring(1);
-            }
-            PutObjectArgs objectArgs = PutObjectArgs.builder().object(objectName)
-                    .bucket(newBucket)
-                    .contentType("application/octet-stream")
-                    .stream(stream,stream.available(),-1).build();
-            minioClient.putObject(objectArgs);
-            stream.close();
-            file_url = minioUrl+newBucket+"/"+objectName;
-        }catch (Exception e){
-            log.error(e.getMessage(), e);
-        }
-        return file_url;
-    }
-
-    /**
-     * 文件上传
-     * @param file
-     * @param bizPath
-     * @return
-     */
-    public static String upload(MultipartFile file, String bizPath) {
-        return  upload(file,bizPath,null);
-    }
-
-    /**
-     * 获取文件流
-     * @param bucketName
-     * @param objectName
-     * @return
-     */
-    public static InputStream getMinioFile(String bucketName,String objectName){
-        InputStream inputStream = null;
-        try {
-            initMinio(minioUrl, minioName, minioPass);
-            GetObjectArgs objectArgs = GetObjectArgs.builder().object(objectName)
-                    .bucket(bucketName).build();
-            inputStream = minioClient.getObject(objectArgs);
-        } catch (Exception e) {
-            log.info("文件获取失败" + e.getMessage());
-        }
-        return inputStream;
-    }
-
-    /**
-     * 删除文件
-     * @param bucketName
-     * @param objectName
-     * @throws Exception
-     */
-    public static void removeObject(String bucketName, String objectName) {
-        try {
-            initMinio(minioUrl, minioName,minioPass);
-            RemoveObjectArgs objectArgs = RemoveObjectArgs.builder().object(objectName)
-                    .bucket(bucketName).build();
-            minioClient.removeObject(objectArgs);
-        }catch (Exception e){
-            log.info("文件删除失败" + e.getMessage());
-        }
-    }
-
-    /**
-     * 获取文件外链
-     * @param bucketName
-     * @param objectName
-     * @param expires
-     * @return
-     */
-    public static String getObjectURL(String bucketName, String objectName, Integer expires) {
-        initMinio(minioUrl, minioName,minioPass);
-        try{
-            GetPresignedObjectUrlArgs objectArgs = GetPresignedObjectUrlArgs.builder().object(objectName)
-                    .bucket(bucketName)
-                    .expiry(expires).build();
-            String url = minioClient.getPresignedObjectUrl(objectArgs);
-            return URLDecoder.decode(url,"UTF-8");
-        }catch (Exception e){
-            log.info("文件路径获取失败" + e.getMessage());
-        }
-        return null;
-    }
-
-    /**
-     * 初始化客户端
-     * @param minioUrl
-     * @param minioName
-     * @param minioPass
-     * @return
-     */
-    private static MinioClient initMinio(String minioUrl, String minioName,String minioPass) {
-        if (minioClient == null) {
-            try {
-                minioClient = MinioClient.builder()
-                        .endpoint(minioUrl)
-                        .credentials(minioName, minioPass)
-                        .build();
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-        return minioClient;
-    }
-
-    /**
-     * 上传文件到minio
-     * @param stream
-     * @param relativePath
-     * @return
-     */
-    public static String upload(InputStream stream,String relativePath) throws Exception {
-        initMinio(minioUrl, minioName,minioPass);
-        if(minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) {
-            log.info("Bucket already exists.");
-        } else {
-            // 创建一个名为ota的存储桶
-            minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
-            log.info("create a new bucket.");
-        }
-        PutObjectArgs objectArgs = PutObjectArgs.builder().object(relativePath)
-                .bucket(bucketName)
-                .contentType("application/octet-stream")
-                .stream(stream,stream.available(),-1).build();
-        minioClient.putObject(objectArgs);
-        stream.close();
-        return minioUrl+bucketName+"/"+relativePath;
-    }
-
-}

+ 0 - 331
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/oss/OssBootUtil.java

@@ -1,331 +0,0 @@
-package org.jeecg.common.util.oss;
-
-import com.aliyun.oss.ClientConfiguration;
-import com.aliyun.oss.OSSClient;
-import com.aliyun.oss.common.auth.DefaultCredentialProvider;
-import com.aliyun.oss.model.CannedAccessControlList;
-import com.aliyun.oss.model.OSSObject;
-import com.aliyun.oss.model.PutObjectResult;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.tomcat.util.http.fileupload.FileItemStream;
-import org.jeecg.common.util.CommonUtils;
-import org.jeecg.common.util.filter.StrAttackFilter;
-import org.jeecg.common.util.oConvertUtils;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.util.Date;
-import java.util.UUID;
-
-/**
- * @Description: 阿里云 oss 上传工具类(高依赖版)
- * @Date: 2019/5/10
- */
-@Slf4j
-public class OssBootUtil {
-
-    private static String endPoint;
-    private static String accessKeyId;
-    private static String accessKeySecret;
-    private static String bucketName;
-    private static String staticDomain;
-
-    public static void setEndPoint(String endPoint) {
-        OssBootUtil.endPoint = endPoint;
-    }
-
-    public static void setAccessKeyId(String accessKeyId) {
-        OssBootUtil.accessKeyId = accessKeyId;
-    }
-
-    public static void setAccessKeySecret(String accessKeySecret) {
-        OssBootUtil.accessKeySecret = accessKeySecret;
-    }
-
-    public static void setBucketName(String bucketName) {
-        OssBootUtil.bucketName = bucketName;
-    }
-
-    public static void setStaticDomain(String staticDomain) {
-        OssBootUtil.staticDomain = staticDomain;
-    }
-
-    public static String getStaticDomain() {
-        return staticDomain;
-    }
-
-    public static String getEndPoint() {
-        return endPoint;
-    }
-
-    public static String getAccessKeyId() {
-        return accessKeyId;
-    }
-
-    public static String getAccessKeySecret() {
-        return accessKeySecret;
-    }
-
-    public static String getBucketName() {
-        return bucketName;
-    }
-
-    public static OSSClient getOssClient() {
-        return ossClient;
-    }
-
-    /**
-     * oss 工具客户端
-     */
-    private static OSSClient ossClient = null;
-
-    /**
-     * 上传文件至阿里云 OSS
-     * 文件上传成功,返回文件完整访问路径
-     * 文件上传失败,返回 null
-     *
-     * @param file    待上传文件
-     * @param fileDir 文件保存目录
-     * @return oss 中的相对文件路径
-     */
-    public static String upload(MultipartFile file, String fileDir,String customBucket) {
-        String FILE_URL = null;
-        initOSS(endPoint, accessKeyId, accessKeySecret);
-        StringBuilder fileUrl = new StringBuilder();
-        String newBucket = bucketName;
-        if(oConvertUtils.isNotEmpty(customBucket)){
-            newBucket = customBucket;
-        }
-        try {
-            //判断桶是否存在,不存在则创建桶
-            if(!ossClient.doesBucketExist(newBucket)){
-                ossClient.createBucket(newBucket);
-            }
-            // 获取文件名
-            String orgName = file.getOriginalFilename();
-            if("" == orgName){
-              orgName=file.getName();
-            }
-            orgName = CommonUtils.getFileName(orgName);
-            String fileName = orgName.indexOf(".")==-1
-                              ?orgName + "_" + System.currentTimeMillis()
-                              :orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.lastIndexOf("."));
-            if (!fileDir.endsWith("/")) {
-                fileDir = fileDir.concat("/");
-            }
-            //update-begin-author:wangshuai date:20201012 for: 过滤上传文件夹名特殊字符,防止攻击
-            fileDir=StrAttackFilter.filter(fileDir);
-            //update-end-author:wangshuai date:20201012 for: 过滤上传文件夹名特殊字符,防止攻击
-            fileUrl = fileUrl.append(fileDir + fileName);
-
-            if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
-                FILE_URL = staticDomain + "/" + fileUrl;
-            } else {
-                FILE_URL = "https://" + newBucket + "." + endPoint + "/" + fileUrl;
-            }
-            PutObjectResult result = ossClient.putObject(newBucket, fileUrl.toString(), file.getInputStream());
-            // 设置权限(公开读)
-//            ossClient.setBucketAcl(newBucket, CannedAccessControlList.PublicRead);
-            if (result != null) {
-                log.info("------OSS文件上传成功------" + fileUrl);
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-            return null;
-        }
-        return FILE_URL;
-    }
-
-    /**
-     * 获取原始URL
-    * @param url: 原始URL
-    * @Return: java.lang.String
-    */
-    public static String getOriginalUrl(String url) {
-        String originalDomain = "https://" + bucketName + "." + endPoint;
-        if(url.indexOf(staticDomain)!=-1){
-            url = url.replace(staticDomain,originalDomain);
-        }
-        return url;
-    }
-
-    /**
-     * 文件上传
-     * @param file
-     * @param fileDir
-     * @return
-     */
-    public static String upload(MultipartFile file, String fileDir) {
-        return upload(file, fileDir,null);
-    }
-
-    /**
-     * 上传文件至阿里云 OSS
-     * 文件上传成功,返回文件完整访问路径
-     * 文件上传失败,返回 null
-     *
-     * @param file    待上传文件
-     * @param fileDir 文件保存目录
-     * @return oss 中的相对文件路径
-     */
-    public static String upload(FileItemStream file, String fileDir) {
-        String FILE_URL = null;
-        initOSS(endPoint, accessKeyId, accessKeySecret);
-        StringBuilder fileUrl = new StringBuilder();
-        try {
-            String suffix = file.getName().substring(file.getName().lastIndexOf('.'));
-            String fileName = UUID.randomUUID().toString().replace("-", "") + suffix;
-            if (!fileDir.endsWith("/")) {
-                fileDir = fileDir.concat("/");
-            }
-            fileDir = StrAttackFilter.filter(fileDir);
-            fileUrl = fileUrl.append(fileDir + fileName);
-            if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
-                FILE_URL = staticDomain + "/" + fileUrl;
-            } else {
-                FILE_URL = "https://" + bucketName + "." + endPoint + "/" + fileUrl;
-            }
-            PutObjectResult result = ossClient.putObject(bucketName, fileUrl.toString(), file.openStream());
-            // 设置权限(公开读)
-            ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
-            if (result != null) {
-                log.info("------OSS文件上传成功------" + fileUrl);
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-            return null;
-        }
-        return FILE_URL;
-    }
-
-    /**
-     * 删除文件
-     * @param url
-     */
-    public static void deleteUrl(String url) {
-        deleteUrl(url,null);
-    }
-
-    /**
-     * 删除文件
-     * @param url
-     */
-    public static void deleteUrl(String url,String bucket) {
-        String newBucket = bucketName;
-        if(oConvertUtils.isNotEmpty(bucket)){
-            newBucket = bucket;
-        }
-        String bucketUrl = "";
-        if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
-            bucketUrl = staticDomain + "/" ;
-        } else {
-            bucketUrl = "https://" + newBucket + "." + endPoint + "/";
-        }
-        url = url.replace(bucketUrl,"");
-        ossClient.deleteObject(newBucket, url);
-    }
-
-    /**
-     * 删除文件
-     * @param fileName
-     */
-    public static void delete(String fileName) {
-        ossClient.deleteObject(bucketName, fileName);
-    }
-
-    /**
-     * 获取文件流
-     * @param objectName
-     * @param bucket
-     * @return
-     */
-    public static InputStream getOssFile(String objectName,String bucket){
-        InputStream inputStream = null;
-        try{
-            String newBucket = bucketName;
-            if(oConvertUtils.isNotEmpty(bucket)){
-                newBucket = bucket;
-            }
-            initOSS(endPoint, accessKeyId, accessKeySecret);
-            OSSObject ossObject = ossClient.getObject(newBucket,objectName);
-            inputStream = new BufferedInputStream(ossObject.getObjectContent());
-        }catch (Exception e){
-            log.info("文件获取失败" + e.getMessage());
-        }
-        return inputStream;
-    }
-
-    /**
-     * 获取文件流
-     * @param objectName
-     * @return
-     */
-    public static InputStream getOssFile(String objectName){
-        return getOssFile(objectName,null);
-    }
-
-    /**
-     * 获取文件外链
-     * @param bucketName
-     * @param objectName
-     * @param expires
-     * @return
-     */
-    public static String getObjectURL(String bucketName, String objectName, Date expires) {
-        initOSS(endPoint, accessKeyId, accessKeySecret);
-        try{
-            if(ossClient.doesObjectExist(bucketName,objectName)){
-                URL url = ossClient.generatePresignedUrl(bucketName,objectName,expires);
-                return URLDecoder.decode(url.toString(),"UTF-8");
-            }
-        }catch (Exception e){
-            log.info("文件路径获取失败" + e.getMessage());
-        }
-        return null;
-    }
-
-    /**
-     * 初始化 oss 客户端
-     *
-     * @return
-     */
-    private static OSSClient initOSS(String endpoint, String accessKeyId, String accessKeySecret) {
-        if (ossClient == null) {
-            ossClient = new OSSClient(endpoint,
-                    new DefaultCredentialProvider(accessKeyId, accessKeySecret),
-                    new ClientConfiguration());
-        }
-        return ossClient;
-    }
-
-
-    /**
-     * 上传文件到oss
-     * @param stream
-     * @param relativePath
-     * @return
-     */
-    public static String upload(InputStream stream, String relativePath) {
-        String FILE_URL = null;
-        String fileUrl = relativePath;
-        initOSS(endPoint, accessKeyId, accessKeySecret);
-        if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
-            FILE_URL = staticDomain + "/" + relativePath;
-        } else {
-            FILE_URL = "https://" + bucketName + "." + endPoint + "/" + fileUrl;
-        }
-        PutObjectResult result = ossClient.putObject(bucketName, fileUrl.toString(),stream);
-        // 设置权限(公开读)
-        ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
-        if (result != null) {
-            log.info("------OSS文件上传成功------" + fileUrl);
-        }
-        return FILE_URL;
-    }
-
-
-}

+ 0 - 38
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/oss/MinioConfig.java

@@ -1,38 +0,0 @@
-package org.jeecg.config.oss;
-
-import lombok.extern.slf4j.Slf4j;
-import org.jeecg.common.util.MinioUtil;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * Minio文件上传配置文件
- */
-@Slf4j
-@Configuration
-public class MinioConfig {
-    @Value(value = "${jeecg.minio.minio_url}")
-    private String minioUrl;
-    @Value(value = "${jeecg.minio.minio_name}")
-    private String minioName;
-    @Value(value = "${jeecg.minio.minio_pass}")
-    private String minioPass;
-    @Value(value = "${jeecg.minio.bucketName}")
-    private String bucketName;
-
-    @Bean
-    public void initMinio(){
-        if(!minioUrl.startsWith("http")){
-            minioUrl = "http://" + minioUrl;
-        }
-        if(!minioUrl.endsWith("/")){
-            minioUrl = minioUrl.concat("/");
-        }
-        MinioUtil.setMinioUrl(minioUrl);
-        MinioUtil.setMinioName(minioName);
-        MinioUtil.setMinioPass(minioPass);
-        MinioUtil.setBucketName(bucketName);
-    }
-
-}

+ 0 - 34
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/oss/OssConfiguration.java

@@ -1,34 +0,0 @@
-package org.jeecg.config.oss;
-
-import org.jeecg.common.util.oss.OssBootUtil;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * 云存储 配置
- */
-@Configuration
-public class OssConfiguration {
-
-    @Value("${jeecg.oss.endpoint}")
-    private String endpoint;
-    @Value("${jeecg.oss.accessKey}")
-    private String accessKeyId;
-    @Value("${jeecg.oss.secretKey}")
-    private String accessKeySecret;
-    @Value("${jeecg.oss.bucketName}")
-    private String bucketName;
-    @Value("${jeecg.oss.staticDomain:}")
-    private String staticDomain;
-
-
-    @Bean
-    public void initOssBootConfiguration() {
-        OssBootUtil.setEndPoint(endpoint);
-        OssBootUtil.setAccessKeyId(accessKeyId);
-        OssBootUtil.setAccessKeySecret(accessKeySecret);
-        OssBootUtil.setBucketName(bucketName);
-        OssBootUtil.setStaticDomain(staticDomain);
-    }
-}

+ 66 - 0
jeecg-boot-common/pom.xml

@@ -23,12 +23,78 @@
             <groupId>org.jeecgframework.boot</groupId>
             <artifactId>jeecg-system-local-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>1.1.2-beat1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+            <version>1.2.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.5.9</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpcore</artifactId>
+            <version>4.4</version>
+        </dependency>
+        <dependency>
+            <groupId>com.qcloud</groupId>
+            <artifactId>cos_api</artifactId>
+            <version>5.6.25</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>net.sourceforge.javacsv</groupId>
+            <artifactId>javacsv</artifactId>
+            <version>2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.github.tony19</groupId>
+            <artifactId>apktool-lib</artifactId>
+            <version>1.4.4-3</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.googlecode.plist</groupId>
+            <artifactId>dd-plist</artifactId>
+            <version>1.16</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.tencentcloudapi</groupId>
+            <artifactId>tencentcloud-sdk-java</artifactId>
+            <version>3.1.62</version><!-- 注:这里只是示例版本号,请获取并替换为 最新的版本号 -->
+        </dependency>
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-cp</artifactId>
+            <version>3.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>thirtpart</groupId>
+            <artifactId>jave</artifactId>
+            <version>1.0</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/src/main/resources/lib/jave-1.0.jar</systemPath>
+        </dependency>
     </dependencies>
     <build>
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <includeSystemScope>true</includeSystemScope>
+                </configuration>
             </plugin>
         </plugins>
     </build>

+ 1 - 1
jeecg-boot-common/src/main/java/ctop/common/module/JeecgBootCommonApplication.java

@@ -1,4 +1,4 @@
-package ctop.common.module;
+package cn.com.ctop.common.moudule;
 
 import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
 import org.springframework.boot.SpringApplication;

+ 20 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/constant/CosConstant.java

@@ -0,0 +1,20 @@
+package cn.com.ctop.common.module.constant;
+
+public class CosConstant {
+
+    //数据万象URL
+    public static final String URL="https://media-1301855440.ci.ap-chongqing.myqcloud.com/";
+    //COS地址前缀
+    public static final String COS_MEDIA_URL_PREFIX ="https://media-1301855440.cos.ap-chongqing.myqcloud.com";
+    //jobs接口URL
+    public static final String URL_JOBS=URL+"jobs";
+    //snapshot接口URL
+    public static final String URL_SNAPSHOT=URL+"snapshot";
+    //截帧模板ID
+    public static final String TEMPLATE_ID="t11931b0daf5bf4776b612b4136ad67d00";
+    //数据万象队列ID
+    public static final String QUEUE_ID="p91b206a0462d46cda49b02063c5c42c8";
+    //COS首帧地址
+    public static final String URL_COS_ADDRESS="https://media-1301855440.cos.ap-chongqing.myqcloud.com/";
+
+}

+ 5 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/constant/CtopRoleCodeConstant.java

@@ -0,0 +1,5 @@
+package cn.com.ctop.common.module.constant;
+
+public class  CtopRoleCodeConstant {
+    public static final String COMMON_ROLE_CODE_ADMIN = "admin";
+}

+ 5 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/constant/OssConstant.java

@@ -0,0 +1,5 @@
+package cn.com.ctop.common.module.constant;
+
+public class OssConstant {
+    public static final String formatUrl = "https://%s.%s.aliyuncs.com/";
+}

+ 96 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/Advertiser.java

@@ -0,0 +1,96 @@
+package cn.com.ctop.common.module.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.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+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.util.Date;
+
+/**
+ * 广告主信息表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2019-06-11
+ */
+@Data
+@TableName("ctop_advertiser")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_advertiser对象", description = "广告主信息表")
+public class Advertiser {
+
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.UUID)
+    @ApiModelProperty(value = "主键ID")
+    private String id;
+    /**
+     * 广告主名称
+     */
+    @Excel(name = "广告主名称", width = 15)
+    @ApiModelProperty(value = "广告主名称")
+    private String name;
+
+    /**
+     * 联系人姓名
+     */
+    @Excel(name = "联系人姓名", width = 15)
+    @ApiModelProperty(value = "联系人姓名")
+    private String contact;
+    /**
+     * 联系人手机
+     */
+    @Excel(name = "联系人手机", width = 15)
+    @ApiModelProperty(value = "联系人手机")
+    private String mobile;
+    /**
+     * 联系人邮箱
+     */
+    @Excel(name = "联系人邮箱", width = 15)
+    @ApiModelProperty(value = "联系人邮箱")
+    private String email;
+    /**
+     * 创建人
+     */
+    @Excel(name = "创建人", width = 15)
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改人
+     */
+    @Excel(name = "修改人", width = 15)
+    @ApiModelProperty(value = "修改人")
+    private String updateBy;
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+
+    private String userId;
+
+    private String companyId;
+
+
+}

+ 71 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/BindAccountAuth.java

@@ -0,0 +1,71 @@
+package cn.com.ctop.common.module.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.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+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.util.Date;
+
+/**
+ * 账号绑定-授权
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2019-07-31
+ */
+@Data
+@TableName("ctop_bind_account_auth")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_bind_account_auth对象", description = "账号绑定-授权")
+public class BindAccountAuth {
+
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键ID")
+    private Long id;
+    /**
+     * 广告id
+     */
+    @Excel(name = "广告id", width = 15)
+    @ApiModelProperty(value = "广告id")
+    private String advertiserId;
+    /**
+     * 授权方式
+     */
+    @Excel(name = "授权方式", width = 15)
+    @ApiModelProperty(value = "授权方式")
+    private String authType;
+    /**
+     * 回调返回广告主id
+     */
+    @Excel(name = "回调返回广告主id", width = 15)
+    @ApiModelProperty(value = "回调返回广告主id")
+    private Long accountId;
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 106 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/BindAccountLogin.java

@@ -0,0 +1,106 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+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 java.util.Date;
+
+/**
+ * 账号绑定-登陆
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2019-07-31
+ */
+@Data
+@TableName("ctop_bind_account_login")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_bind_account_login对象", description = "账号绑定-登陆")
+public class BindAccountLogin {
+
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键ID")
+    private Long id;
+    /**
+     * 广告id
+     */
+    @Excel(name = "广告id", width = 15)
+    @ApiModelProperty(value = "广告id")
+    private String advertiserId;
+
+    /**
+     * 广告名称
+     */
+    @Excel(name = "广告名称", width = 15)
+    @ApiModelProperty(value = "广告名称")
+    private String advertiserName;
+    /**
+     * 广告id
+     */
+    @Excel(name = "平台账户id", width = 15)
+    @ApiModelProperty(value = "平台账户id")
+    private String accountId;
+
+    @Dict(dicCode = "id",dictTable="sys_user",dicText="realname")
+    private String userId;
+    /**
+     * 账号
+     */
+    @Excel(name = "账号", width = 15)
+    @ApiModelProperty(value = "账号")
+    private String accountName;
+    /**
+     * 密码
+     */
+    @Excel(name = "密码", width = 15)
+    @ApiModelProperty(value = "密码")
+    private String password;
+    /**
+     * 登录方式
+     */
+    @Excel(name = "登录方式", width = 15)
+    @ApiModelProperty(value = "登录方式")
+    private String loginType;
+    /**
+     * 1未登陆 2已登陆
+     */
+    @Excel(name = "1未登陆 2已登陆", width = 15)
+    @ApiModelProperty(value = "1未登陆 2已登陆")
+    private String status;
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+
+    private String cookie;
+
+    public BindAccountLogin(Long id,String accountName) {
+        this.id = id;
+        this.accountName = accountName;
+    }
+
+    public BindAccountLogin() {
+    }
+
+    private Long projectId;
+}

+ 107 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/ByteDanceCleanMaterialReport.java

@@ -0,0 +1,107 @@
+package cn.com.ctop.common.module.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.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+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.util.Date;
+
+/**
+ * 头条-数据清洗
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-02-25
+ */
+@Data
+@TableName("ctop_bytedance_clean_material_report")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_bytedance_clean_material_report对象", description = "头条-数据清洗")
+public class ByteDanceCleanMaterialReport {
+
+    /**
+     * md5 为id
+     */
+    @TableId(type = IdType.UUID)
+    @ApiModelProperty(value = "md5 为id")
+    private String id;
+    /**
+     * 花费(元)
+     */
+    @Excel(name = "花费(元)", width = 15)
+    @ApiModelProperty(value = "花费(元)")
+    private java.math.BigDecimal cost;
+    /**
+     * 展示量
+     */
+    @Excel(name = "展示量", width = 15)
+    @ApiModelProperty(value = "展示量")
+    private Integer showNum;
+    /**
+     * 点击量
+     */
+    @Excel(name = "点击量", width = 15)
+    @ApiModelProperty(value = "点击量")
+    private Integer click;
+    /**
+     * 转化量
+     */
+    @Excel(name = "转化量", width = 15)
+    @ApiModelProperty(value = "转化量")
+    private Integer convertNum;
+    /**
+     * 激活
+     */
+    @Excel(name = "激活", width = 15)
+    @ApiModelProperty(value = "激活")
+    private Integer active;
+    /**
+     * 下载-注册
+     */
+    @Excel(name = "下载-注册", width = 15)
+    @ApiModelProperty(value = "下载-注册")
+    private Integer register;
+    /**
+     * 表单提交
+     */
+    @Excel(name = "表单提交", width = 15)
+    @ApiModelProperty(value = "表单提交")
+    private Integer form;
+    /**
+     * 视频-总播放
+     */
+    @Excel(name = "视频-总播放", width = 15)
+    @ApiModelProperty(value = "视频-总播放")
+    private Integer totalPlay;
+    /**
+     * 视频-有效播放
+     */
+    @Excel(name = "视频-有效播放", width = 15)
+    @ApiModelProperty(value = "视频-有效播放")
+    private Integer validPlay;
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 72 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/CorpFeishuUser.java

@@ -0,0 +1,72 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 飞书用户信息
+ * @author jeecg-boot
+ * @date   2020-06-23
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_corp_feishu_user")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="ctop_corp_feishu_user对象", description="飞书用户信息")
+public class CorpFeishuUser {
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+	private Long id;
+	/**email*/
+	@Excel(name = "email", width = 15)
+    @ApiModelProperty(value = "email")
+	private String email;
+	/**name*/
+	@Excel(name = "name", width = 15)
+    @ApiModelProperty(value = "name")
+	private String name;
+
+	private String openId;
+	/**avatarUrl*/
+	@Excel(name = "avatarUrl", width = 15)
+    @ApiModelProperty(value = "avatarUrl")
+	private String avatarUrl;
+	/**avatarThumb*/
+	@Excel(name = "avatarThumb", width = 15)
+    @ApiModelProperty(value = "avatarThumb")
+	private String avatarThumb;
+	/**avatarMiddle*/
+	@Excel(name = "avatarMiddle", width = 15)
+    @ApiModelProperty(value = "avatarMiddle")
+	private String avatarMiddle;
+	/**avatarBig*/
+	@Excel(name = "avatarBig", width = 15)
+    @ApiModelProperty(value = "avatarBig")
+	private String avatarBig;
+	/**userId*/
+	@Excel(name = "userId", width = 15)
+    @ApiModelProperty(value = "userId")
+	private String userId;
+	/**mobile*/
+	@Excel(name = "mobile", width = 15)
+    @ApiModelProperty(value = "mobile")
+	private String mobile;
+	/**createTime*/
+    @ApiModelProperty(value = "createTime")
+	private Date createTime;
+	/**updateTime*/
+    @ApiModelProperty(value = "updateTime")
+	private Date updateTime;
+}

+ 82 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/CtopCorpWexinUser.java

@@ -0,0 +1,82 @@
+package cn.com.ctop.common.module.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * 企业微信用户表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2019-12-08
+ */
+@Data
+@TableName("ctop_corp_wexin_user")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_corp_wexin_user对象", description = "企业微信用户表")
+public class CtopCorpWexinUser {
+
+    /**
+     * userId
+     */
+    @TableId(type = IdType.INPUT)
+    @Excel(name = "userId", width = 15)
+    @ApiModelProperty(value = "userId")
+    private String userId;
+
+    /**
+     * wexinId
+     */
+    @Excel(name = "wexinId", width = 15)
+    @ApiModelProperty(value = "wexinId")
+    private String wexinId;
+    /**
+     * wexinName
+     */
+    @Excel(name = "wexinName", width = 15)
+    @ApiModelProperty(value = "wexinName")
+    private String wexinName;
+    /**
+     * wexinMobile
+     */
+    @Excel(name = "wexinMobile", width = 15)
+    @ApiModelProperty(value = "wexinMobile")
+    private String wexinMobile;
+    /**
+     * wexinEmail
+     */
+    @Excel(name = "wexinEmail", width = 15)
+    @ApiModelProperty(value = "wexinEmail")
+    private String wexinEmail;
+    /**
+     * wexinGender
+     */
+    @Excel(name = "wexinGender", width = 15)
+    @ApiModelProperty(value = "wexinGender")
+    private String wexinGender;
+    private String corpId;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+}

+ 167 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/CtopOauthToken.java

@@ -0,0 +1,167 @@
+package cn.com.ctop.common.module.entity;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+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.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * @Description: oauth授权码
+ * @Author: jeecg-boot
+ * @Date: 2019-07-09
+ * @Version: V1.0
+ */
+@Data
+@TableName("ctop_oauth_token")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_oauth_token对象", description = "oauth授权码")
+public class CtopOauthToken {
+
+    /**
+     * 主键ID
+     */
+    @TableId()
+    @ApiModelProperty(value = "主键ID")
+    private String id;
+    /**
+     * 媒体ID(外部广告平台类型,快手/头条/抖音等)
+     */
+    @Excel(name = "媒体ID(外部广告平台类型,快手/头条/抖音等)", width = 15)
+    @ApiModelProperty(value = "媒体ID(外部广告平台类型,快手/头条/抖音等)")
+    private String mediaId;
+    /**
+     * 广告主ID(自己平台用户内部id)
+     */
+    @Excel(name = "广告主ID(自己平台用户内部id)", width = 15)
+    @ApiModelProperty(value = "广告主ID(自己平台用户内部id)")
+    private String advertiserId;
+    /**
+     * 广告账户ID(相当于头条返回的access_token数据中的advertiser_id)
+     */
+    @Excel(name = "广告账户ID(相当于头条返回的access_token数据中的advertiser_id)", width = 15)
+    @ApiModelProperty(value = "广告账户ID(相当于头条返回的access_token数据中的advertiser_id)")
+    private Long accountId;
+    /**
+     * 访问令牌
+     */
+    @Excel(name = "访问令牌", width = 15)
+    @ApiModelProperty(value = "访问令牌")
+    private String accessToken;
+    /**
+     * 访问令牌有效期
+     */
+    @Excel(name = "访问令牌有效期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "访问令牌有效期")
+    private Date accessTokenExpiresIn;
+    /**
+     * 刷新令牌
+     */
+    @Excel(name = "刷新令牌", width = 15)
+    @ApiModelProperty(value = "刷新令牌")
+    private String refreshToken;
+
+
+    private Integer agentType;
+    private Long appId;
+
+    /**
+     * 刷新令牌有效期
+     */
+    @Excel(name = "刷新令牌有效期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "刷新令牌有效期")
+    private Date refreshTokenExpiresIn;
+
+
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+
+    public CtopOauthToken(String userId, JSONObject data) {
+        Long accountId = data.getLong("advertiser_id");
+        this.id = String.valueOf(accountId);
+        this.advertiserId = userId;
+        this.mediaId = "1";
+        this.accountId = accountId;
+        String accessToken = data.getString("access_token");
+        Integer refreshTokenExpiresIn = data.getInteger("refresh_token_expires_in");
+        Integer expiresIn = data.getInteger("expires_in");
+        String refreshToken = data.getString("refresh_token");
+        this.accessToken = accessToken;
+        this.refreshToken = refreshToken;
+        Date now = new Date();
+        this.accessTokenExpiresIn = addSecond(now, expiresIn);
+        this.refreshTokenExpiresIn = addSecond(now, refreshTokenExpiresIn);
+        this.createTime = now;
+        this.updateTime = now;
+    }
+
+    public CtopOauthToken() {
+    }
+
+    public CtopOauthToken(CtopOauthToken token, JSONObject data) {
+        this.advertiserId = token.getAdvertiserId();
+        this.mediaId = "1";
+        this.accountId = token.getAccountId();
+        String accessToken = data.getString("access_token");
+        Integer refreshTokenExpiresIn = data.getInteger("refresh_token_expires_in");
+        Integer expiresIn = data.getInteger("expires_in");
+        String refreshToken = data.getString("refresh_token");
+        this.accessToken = accessToken;
+        this.refreshToken = refreshToken;
+        Date now = new Date();
+        this.accessTokenExpiresIn = addSecond(now, expiresIn);
+        this.refreshTokenExpiresIn = addSecond(now, refreshTokenExpiresIn);
+        this.updateTime = now;
+    }
+
+    private static Date addSecond(Date date, int seconds) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.SECOND, seconds);
+        return calendar.getTime();
+    }
+
+    @Override
+    public String toString() {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        return id +
+                "," + mediaId +
+                "," + advertiserId +
+                "," + accountId +
+                "," + accessToken +
+                "," + sdf.format(accessTokenExpiresIn) +
+                "," + refreshToken +
+                "," + sdf.format(refreshTokenExpiresIn) +
+                "," + sdf.format(createTime) +
+                "," + sdf.format(updateTime);
+    }
+}

+ 134 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/FileInfo.java

@@ -0,0 +1,134 @@
+package cn.com.ctop.common.module.entity;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * @Description: 文件信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("ctop_file_info")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_file_info对象", description = "文件信息")
+public class FileInfo {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 文件名称
+     */
+    @Excel(name = "文件名称", width = 15)
+    @ApiModelProperty(value = "文件名称")
+    private String fileName;
+
+    /**
+     * md5
+     */
+    @Excel(name = "md5", width = 15)
+    @ApiModelProperty(value = "文件MD5值")
+    private String md5;
+
+    /**
+     * 平台文件id
+     */
+    @Excel(name = "平台文件id")
+    @ApiModelProperty(value = "平台文件id")
+    private String fileId;
+
+    /**
+     * 文件类型
+     */
+    @Excel(name = "文件类型", width = 15)
+    @ApiModelProperty(value = "文件类型")
+    private String type;
+
+    /**
+     * 文件类型
+     */
+    @Excel(name = "所属平台类型", width = 15)
+    @ApiModelProperty(value = "所属平台类型")
+    private String platformType;
+
+    /**
+     * 文件访问路径
+     */
+    @Excel(name = "文件地址", width = 15)
+    @ApiModelProperty(value = "文件地址")
+    private String path;
+
+    @Excel(name = "头条账号id", width = 15)
+    @ApiModelProperty(value = "头条账号id")
+    private Long accountId;
+
+    @Excel(name = "广告主id", width = 15)
+    @ApiModelProperty(value = "广告主id")
+    private String advertiserId;
+
+    @Excel(name = "文件访问路径", width = 15)
+    @ApiModelProperty(value = "文件访问路径")
+    private String fileUrl;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+
+    public FileInfo(String md5Hex, JSONObject data, String advertiserId, CtopOauthToken token, String imageUrl, String imagePath, String fileType, String platformType) {
+        this.type = fileType;
+        if ("IMAGE".equals(type)) {
+            this.fileId = data.getString("id");
+        } else {
+            this.fileId = data.getString("video_id");
+        }
+        this.fileName = imagePath.substring(imagePath.lastIndexOf("/") + 1);
+        Date now = new Date();
+        this.createTime = now;
+        this.updateTime = now;
+        this.accountId = token.getAccountId();
+        this.advertiserId = token.getAdvertiserId();
+        this.fileUrl = imageUrl;
+        this.path = imagePath;
+        this.platformType = platformType;
+        this.md5 = md5Hex;
+    }
+
+    public FileInfo() {
+    }
+
+    @Override
+    public String toString() {
+        return "FileInfo{" +
+                "id=" + id +
+                ", fileName='" + fileName + '\'' +
+                ", type='" + type + '\'' +
+                ", platformType='" + platformType + '\'' +
+                ", path='" + path + '\'' +
+                ", fileUrl='" + fileUrl + '\'' +
+                ", createTime=" + createTime +
+                ", updateTime=" + updateTime +
+                '}';
+    }
+}

+ 18 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/HttpClientEntity.java

@@ -0,0 +1,18 @@
+package cn.com.ctop.common.module.entity;
+
+import lombok.Data;
+import org.apache.http.client.CookieStore;
+import org.apache.http.impl.client.CloseableHttpClient;
+
+import java.io.Serializable;
+import java.util.Map;
+
+@Data
+public class HttpClientEntity implements Serializable {
+    private String url;
+    private CloseableHttpClient closeableHttpClient;
+    private CookieStore cookieStore;
+    private Map<String, String> headers;
+    private Map<String, Object> params;
+    private String result;
+}

+ 25 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/IpPool.java

@@ -0,0 +1,25 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+@TableName("ctop_ip_pool")
+public class IpPool {
+    @TableId(value = "id", type = IdType.INPUT)
+    private Long id;
+    private String ip;
+    private Integer port;
+    private String city;
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date expireTime;
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date lastUseTime;
+    private String isp;
+    private Integer status;
+}

+ 65 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/KuaiShouOcpxActionTypeConfig.java

@@ -0,0 +1,65 @@
+package cn.com.ctop.common.module.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.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+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.util.Date;
+
+/**
+ * 转化目标字典表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2021-02-22
+ */
+@Data
+@TableName("ctop_kuaishou_ocpx_action_type_config")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_kuaishou_ocpx_action_type_config对象", description = "转化目标字典表")
+public class KuaiShouOcpxActionTypeConfig {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 优化目标
+     */
+    @Excel(name = "优化目标", width = 15)
+    @ApiModelProperty(value = "优化目标")
+    private Integer ocpxActionType;
+    /**
+     * 优化名称
+     */
+    @Excel(name = "优化名称", width = 15)
+    @ApiModelProperty(value = "优化名称")
+    private String ocpxActionName;
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 74 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MailLog.java

@@ -0,0 +1,74 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 邮箱记录表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2019-12-08
+ */
+@Data
+@TableName("ctop_mail_log")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_mail_log对象", description = "邮箱记录表")
+public class MailLog {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 账户ID
+     */
+    @Excel(name = "账户ID", width = 15)
+    @ApiModelProperty(value = "账户ID")
+    private Long accountId;
+    /**
+     * 发送邮箱
+     */
+    @Excel(name = "发送邮箱", width = 15)
+    @ApiModelProperty(value = "发送邮箱")
+    private String sendEmil;
+    /**
+     * 标题
+     */
+    @Excel(name = "标题", width = 15)
+    @ApiModelProperty(value = "标题")
+    private String subject;
+    /**
+     * 内容
+     */
+    @Excel(name = "内容", width = 15)
+    @ApiModelProperty(value = "内容")
+    private String content;
+
+
+    private Integer mailType;
+    private Integer hour;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 49 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialAscription.java

@@ -0,0 +1,49 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 素材归属标
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2019-11-23
+ */
+@Data
+@TableName("ctop_material_ascription")
+public class MaterialAscription {
+
+    @TableId(type = IdType.UUID)
+    private String id;
+    /**
+     * 素材库id
+     */
+    private String materialId;
+    /**
+     * 剪辑人id
+     */
+    private String clipId;
+    private String clipName;
+    /**
+     * 拍摄人id
+     */
+    private String shotId;
+    private String shotName;
+    /**
+     * 策划id
+     */
+    private String planId;
+    private String planName;
+    /**
+     * 平面id
+     */
+    private String planeId;
+    private String code;
+    private Date createTime;
+    private Date updateTime;
+}

+ 71 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialCutFrame.java

@@ -0,0 +1,71 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+
+/**
+ * 截屏
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2019-12-25
+ */
+@Data
+@TableName("ctop_material_cut_frame")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_material_cut_frame对象", description = "截屏")
+public class MaterialCutFrame {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 素材库id
+     */
+    @Excel(name = "素材库id", width = 15)
+    @ApiModelProperty(value = "素材库id")
+    private String videoSignature;
+    /**
+     * url
+     */
+    @Excel(name = "url", width = 15)
+    @ApiModelProperty(value = "url")
+    private String url;
+    /**
+     * md5
+     */
+    @Excel(name = "md5", width = 15)
+    @ApiModelProperty(value = "md5")
+    private String signature;
+    /**
+     * 素材标
+     */
+    @Excel(name = "素材标", width = 15)
+    @ApiModelProperty(value = "素材标")
+    private Integer imageIndex;
+
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+}

+ 65 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialCutFrameTask.java

@@ -0,0 +1,65 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 截帧 任务表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-06-01
+ */
+@Data
+@TableName("ctop_material_cut_frame_task")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_material_cut_frame_task对象", description = "截帧 任务表")
+public class MaterialCutFrameTask {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 视频md5
+     */
+    @Excel(name = "视频md5", width = 15)
+    @ApiModelProperty(value = "视频md5")
+    private String videoSignature;
+    /**
+     * jobId
+     */
+    @Excel(name = "jobId", width = 15)
+    @ApiModelProperty(value = "jobId")
+    private String jobId;
+    /**
+     * 任务状态 0 未执行 1 已完成
+     */
+    @Excel(name = "任务状态 0 未执行 1 已完成", width = 15)
+    @ApiModelProperty(value = "任务状态 0 未执行 1 已完成")
+    private Integer jobStatus;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+
+    private Integer cloud_type;
+}

+ 142 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialImageInfo.java

@@ -0,0 +1,142 @@
+package cn.com.ctop.common.module.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 io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 素材
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-03-16
+ */
+@Data
+@TableName("ctop_material_image_info")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_material_image_info对象", description = "素材")
+public class MaterialImageInfo {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * code
+     */
+    @Excel(name = "code", width = 15)
+    @ApiModelProperty(value = "code")
+    private String code;
+    /**
+     * url
+     */
+    @Excel(name = "url", width = 15)
+    @ApiModelProperty(value = "url")
+    private String url;
+    /**
+     * 素材名称
+     */
+    @Excel(name = "素材名称", width = 15)
+    @ApiModelProperty(value = "素材名称")
+    private String videoId;
+    /**
+     * 素材名称
+     */
+    @Excel(name = "素材名称", width = 15)
+    @ApiModelProperty(value = "素材名称")
+    private String materialName;
+    /**
+     * 创建人id
+     */
+    @Excel(name = "创建人id", width = 15)
+    @ApiModelProperty(value = "创建人id")
+    private String userId;
+    /**
+     * 审核人
+     */
+    @Excel(name = "审核人", width = 15)
+    @ApiModelProperty(value = "审核人")
+    private String auditorId;
+    /**
+     * 0-待审核 1-审核通过 2-审核拒绝
+     */
+    @Excel(name = "0-待审核 1-审核通过 2-审核拒绝", width = 15)
+    @ApiModelProperty(value = "0-待审核 1-审核通过 2-审核拒绝")
+    private Integer status;
+    /**
+     * 素材描述
+     */
+    @Excel(name = "素材描述", width = 15)
+    @ApiModelProperty(value = "素材描述")
+    private Object materialDescribe;
+    /**
+     * 拒绝原因
+     */
+    @Excel(name = "拒绝原因", width = 15)
+    @ApiModelProperty(value = "拒绝原因")
+    private Object refuseReason;
+    /**
+     * 拒绝截图
+     */
+    @Excel(name = "拒绝截图", width = 15)
+    @ApiModelProperty(value = "拒绝截图")
+    private Object refuseFile;
+    /**
+     * width
+     */
+    @Excel(name = "width", width = 15)
+    @ApiModelProperty(value = "width")
+    private String width;
+    /**
+     * 素材类型
+     */
+    @Excel(name = "素材类型", width = 15)
+    @ApiModelProperty(value = "素材类型")
+    private String type;
+    /**
+     * height
+     */
+    @Excel(name = "height", width = 15)
+    @ApiModelProperty(value = "height")
+    private String height;
+    /**
+     * size
+     */
+    @Excel(name = "size", width = 15)
+    @ApiModelProperty(value = "size")
+    private String size;
+
+    private Integer excellent;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private String videoUrl;
+
+    @TableField(exist = false)
+    private String auditorName;
+
+    @TableField(exist = false)
+    private String userName;
+
+}

+ 41 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialImageVideoInfo.java

@@ -0,0 +1,41 @@
+package cn.com.ctop.common.module.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * 视频封面关联表信息
+ * @author jeecg-boot
+ * @date   2020-12-17
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_material_image_video_info")
+public class MaterialImageVideoInfo {
+    
+	/**id*/
+	@TableId(type = IdType.AUTO)
+	private java.lang.Long id;
+	/**视频md5码*/
+	@Excel(name = "视频md5码", width = 15)
+	private java.lang.String videoCode;
+	/**封面md5码*/
+	@Excel(name = "封面md5码", width = 15)
+	private java.lang.String coverCode;
+	/**createTime*/
+	private java.util.Date createTime;
+	/**updateTime*/
+	private java.util.Date updateTime;
+}

+ 202 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialInfo.java

@@ -0,0 +1,202 @@
+package cn.com.ctop.common.module.entity;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+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 io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 素材信息
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2019-10-11
+ */
+@Data
+@TableName("ctop_material_info")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_material_info对象", description = "素材信息")
+public class MaterialInfo implements Serializable {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.UUID)
+    @ApiModelProperty(value = "id")
+    private String id;
+    /**
+     * 存放id的数组
+     */
+    @TableField(exist = false)
+    private String[] ids;
+    /**
+     * code
+     */
+    @Excel(name = "code", width = 15)
+    @ApiModelProperty(value = "code")
+    private String code;
+    private String watermarkCode;
+    /**
+     * url
+     */
+    @Excel(name = "url", width = 15)
+    @ApiModelProperty(value = "url")
+    private String url;
+    /**
+     * 封面url
+     */
+    private String coverUrl;
+
+    /**
+     * 水印素材链接
+     */
+    private String watermarkUrl;
+
+    private String type;
+    /**
+     * 审核人id
+     */
+    private String auditorId;
+    /**
+     * status
+     * <p>
+     * 0-待审核 1-审核通过 2-审核拒绝
+     */
+    @Excel(name = "status", width = 15)
+    @ApiModelProperty(value = "status")
+    private Integer status;
+    /**
+     * userId
+     */
+    @Excel(name = "user_id", width = 15)
+    @ApiModelProperty(value = "user_id")
+    private String userId;
+
+
+    private String materialDescribe;
+
+
+    private Long projectId;
+
+    private Long productId;
+
+    /**
+     * 素材名称
+     */
+    private String materialName;
+
+    /**
+     * 水印素材名称
+     */
+    private String watermarkMaterialName;
+
+    /**
+     * 拒绝原因
+     */
+    private String refuseReason;
+    /**
+     * 拒绝上传文件
+     */
+    private String refuseFile;
+
+    /**
+     * 创意文案
+     */
+    private String creativeCopywriter;
+
+    /**
+     * 是否优秀素材
+     */
+    private Integer excellent;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    // @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    // @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date updateTime;
+
+    //判断是否为头条有效素材0否_1是
+    private Integer toutiaoEffiType;
+    // 素造供应商
+    private String supplierCode;
+
+    //判断是否为快手有效素材0否_1是
+    private Integer kuaishouEffiType;
+
+    //判断是否已经同步到快手平台0否_1是
+    @TableField(exist = false)
+    private Integer kuaishouVideoIsUp;
+
+    //判断是否已经同步到头条平台0否_1是
+    @TableField(exist = false)
+    private Integer toutiaoVideoIsUp;
+
+    @TableField(exist = false)
+    private JSONObject byteDance;
+
+    @TableField(exist = false)
+    private JSONObject kuaiShou;
+
+    //拍摄时候担任的角色
+    @TableField(exist = false)
+    private String videoRoleCode;
+
+    //原本的角色
+    @TableField(exist = false)
+    private String originRoleName;
+
+    @TableField(exist = false)
+    private BigDecimal cost;
+
+    @TableField(exist = false)
+    private BigDecimal bytedanceCost;
+
+    @TableField(exist = false)
+    private String realname;
+
+    // 是否有未审核封面
+    @TableField(exist = false)
+    private Boolean whetherUnaudited;
+
+    @TableField(exist = false)
+    private String mediaId;  // 是否有未审核封面
+
+    @TableField(exist = false)
+    private String projectName;  // 是否有未审核封面
+
+    @TableField(exist = false)
+    private String startDate;  // 是否有未审核封面
+
+    @TableField(exist = false)
+    private String endDate;  // 是否有未审核封面
+
+    //视频关联广告语信息--头条
+    @TableField(exist = false)
+    private JSONArray slogans;
+
+    @TableField(exist = false)
+    private Integer slogansCount;
+
+    private Integer offlineFlag;
+
+    private Date confirmTime;
+}

+ 81 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialParameter.java

@@ -0,0 +1,81 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 素材归属标
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2019-11-23
+ */
+@Data
+@TableName("ctop_material_parameter")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_material_parameter对象", description = "素材归属")
+public class MaterialParameter {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.UUID)
+    @ApiModelProperty(value = "id")
+    private String id;
+    /**
+     * 素材库id
+     */
+    @Excel(name = "素材库id", width = 15)
+    @ApiModelProperty(value = "素材库id")
+    private String materialId;
+    /**
+     * 视频秒数
+     */
+    @Excel(name = "视频秒数", width = 15)
+    @ApiModelProperty(value = "视频秒数")
+    private Long second;
+    /**
+     * 格式
+     */
+    @Excel(name = "格式", width = 15)
+    @ApiModelProperty(value = "格式")
+    private String format;
+    /**
+     * 宽
+     */
+    @Excel(name = "宽", width = 15)
+    @ApiModelProperty(value = "宽")
+    private String width;
+    /**
+     * 高
+     */
+    @Excel(name = "高", width = 15)
+    @ApiModelProperty(value = "高")
+    private String height;
+    /**
+     * 小
+     */
+    @Excel(name = "小", width = 15)
+    @ApiModelProperty(value = "小")
+    private String size;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+}

+ 57 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialTag.java

@@ -0,0 +1,57 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 素材归属标
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2019-11-23
+ */
+@Data
+@TableName("ctop_material_tag")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_material_tag对象", description = "素材归属标")
+public class MaterialTag {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.UUID)
+    @ApiModelProperty(value = "id")
+    private String id;
+    /**
+     * 素材库id
+     */
+    @Excel(name = "素材库id", width = 15)
+    @ApiModelProperty(value = "素材库id")
+    private String materialId;
+    /**
+     * 剪辑人id
+     */
+    @Excel(name = "剪辑人id", width = 15)
+    @ApiModelProperty(value = "剪辑人id")
+    private String tag;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+}

+ 54 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MaterialTagInfo.java

@@ -0,0 +1,54 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+/**
+ * 素材标签信息
+ * @author jeecg-boot
+ * @date   2020-08-27
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_material_tag_info")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="ctop_material_tag_info对象", description="素材标签信息")
+public class MaterialTagInfo {
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+    private Long id;
+	private String code;
+	private Integer status;
+	private String tagName;
+	private String tagCode;
+	private Long categoryId;
+	private Long tagId;
+	private String userId;
+	private Date createTime;
+	private Date updateTime;
+
+	public MaterialTagInfo(String code, TagInfo tagInfo,String userId) {
+		this.tagId = tagInfo.getId();
+		this.code = code;
+		this.status = 1;
+		this.tagCode = tagInfo.getTagCode();
+		this.tagName = tagInfo.getTagName();
+		this.userId = userId;
+		this.categoryId = tagInfo.getTagCategoryId();
+		this.createTime = new Date();
+		this.updateTime = new Date();
+	}
+
+	public MaterialTagInfo() {
+
+	}
+}

+ 22 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MusicInfo.java

@@ -0,0 +1,22 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("ctop_music_info")
+public class MusicInfo {
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+    private String name;
+    private String author;
+    private Integer usedCount;
+    private String musicUrl;
+    private String coverUrl;
+    private Integer duration;
+    private String source;
+    private Long extId;
+    private String extInfo;
+}

+ 20 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/MusicType.java

@@ -0,0 +1,20 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("ctop_music_type")
+public class MusicType {
+    @TableId(value = "id", type = IdType.INPUT)
+    private Long id;
+    private String type;
+    private String typeValue;
+    private String extType;
+    private String extTypeValue;
+    private Long musicId;
+    private String musicName;
+    private String author;
+}

+ 95 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/OauthAgentToken.java

@@ -0,0 +1,95 @@
+package cn.com.ctop.common.module.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.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+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.util.Date;
+
+/**
+ * 代理商token
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-08-18
+ */
+@Data
+@TableName("ctop_oauth_agent_token")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_oauth_agent_token对象", description = "代理商token")
+public class OauthAgentToken {
+
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.UUID)
+    @ApiModelProperty(value = "主键ID")
+    private String id;
+    /**
+     * 媒体ID(外部广告平台类型,快手/头条/抖音等)
+     */
+    @Excel(name = "媒体ID(外部广告平台类型,快手/头条/抖音等)", width = 15)
+    @ApiModelProperty(value = "媒体ID(外部广告平台类型,快手/头条/抖音等)")
+    private String mediaId;
+
+    private Long agentId;
+    /**
+     * 访问令牌
+     */
+    @Excel(name = "访问令牌", width = 15)
+    @ApiModelProperty(value = "访问令牌")
+    private String accessToken;
+    /**
+     * 访问令牌有效期
+     */
+    @Excel(name = "访问令牌有效期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "访问令牌有效期")
+    private Date accessTokenExpiresIn;
+    /**
+     * 刷新令牌
+     */
+    @Excel(name = "刷新令牌", width = 15)
+    @ApiModelProperty(value = "刷新令牌")
+    private String refreshToken;
+    /**
+     * 刷新令牌有效期
+     */
+    @Excel(name = "刷新令牌有效期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "刷新令牌有效期")
+    private Date refreshTokenExpiresIn;
+    /**
+     * 代理商类型 0:三方代理商 1:本代理商
+     */
+    @Excel(name = "代理商类型 0:三方代理商 1:本代理商", width = 15)
+    @ApiModelProperty(value = "代理商类型 0:三方代理商 1:本代理商")
+    private Integer agentType;
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 94 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/OauthConfig.java

@@ -0,0 +1,94 @@
+package cn.com.ctop.common.module.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.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+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.util.Date;
+
+/**
+ * 授权配置信息
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2021-01-26
+ */
+@Data
+@TableName("ctop_oauth_config")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_oauth_config对象", description = "授权配置信息")
+public class OauthConfig {
+
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键ID")
+    private Long id;
+
+
+    private Integer mediaId;
+    /**
+     * 代理商名称
+     */
+    @Excel(name = "代理商名称", width = 15)
+    @ApiModelProperty(value = "代理商名称")
+    private String agentName;
+    /**
+     * appid
+     */
+    @Excel(name = "appid", width = 15)
+    @ApiModelProperty(value = "appid")
+    private Integer appId;
+    /**
+     * secret
+     */
+    @Excel(name = "secret", width = 15)
+    @ApiModelProperty(value = "secret")
+    private String secret;
+    /**
+     * 回调地址
+     */
+    @Excel(name = "回调地址", width = 15)
+    @ApiModelProperty(value = "回调地址")
+    private String redirectUri;
+
+
+    private Integer status;
+
+    private Integer oauthType;
+
+    /**
+     * 排序
+     */
+    @Excel(name = "排序", width = 15)
+    @ApiModelProperty(value = "排序")
+    private Integer agentRank;
+
+    String callbackUrl;
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 78 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/Product.java

@@ -0,0 +1,78 @@
+package cn.com.ctop.common.module.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 io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+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 java.util.Date;
+
+/**
+ * 产品表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-09-08
+ */
+@Data
+@TableName("ctop_product")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_product对象", description = "产品表")
+public class Product {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 产品名
+     */
+    @Excel(name = "产品名", width = 15)
+    @ApiModelProperty(value = "产品名")
+    private String productName;
+    /**
+     * advertiserId
+     */
+    @Excel(name = "advertiserId", width = 15)
+    @ApiModelProperty(value = "advertiserId")
+    @Dict(dicCode = "id", dictTable = "ctop_advertiser", dicText = "name")
+    private String advertiserId;
+    /**
+     * 创建人
+     */
+    @Excel(name = "创建人", width = 15)
+    @ApiModelProperty(value = "创建人")
+    @Dict(dicCode = "id", dictTable = "sys_user", dicText = "realname")
+    private String userId;
+
+    @Dict(dicCode = "id", dictTable = "sys_category", dicText = "name")
+    private String industryId;
+    /**
+     * 1正常0删除
+     */
+    @Excel(name = "1正常0删除", width = 15)
+    @ApiModelProperty(value = "1正常0删除")
+    private Integer productStatus;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+    @TableField(exist = false)
+    private String advertiserName;
+}

+ 138 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/Project.java

@@ -0,0 +1,138 @@
+package cn.com.ctop.common.module.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.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+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.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 项目
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2019-11-19
+ */
+@Data
+@TableName("ctop_project")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_project对象", description = "项目")
+public class Project {
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 项目名称
+     */
+    @Excel(name = "项目名称", width = 15)
+    @ApiModelProperty(value = "项目名称")
+    private String projectName;
+    /**
+     * 广告主id
+     */
+    @Excel(name = "广告主id", width = 15)
+    @ApiModelProperty(value = "广告主id")
+    private String advertiserId;
+
+
+    @Excel(name = "产品id", width = 15)
+    @ApiModelProperty(value = "广告主id")
+    private Long productId;
+
+    /**
+     * 创建人
+     */
+    @Excel(name = "创建人", width = 15)
+    @ApiModelProperty(value = "创建人")
+    private String userId;
+    /**
+     * 负责人id
+     */
+    @Excel(name = "负责人id", width = 15)
+    @ApiModelProperty(value = "负责人id")
+    private String responsibleId;
+
+
+    @Excel(name = "设计负责人", width = 15)
+    @ApiModelProperty(value = "设计负责人")
+    private String designResponsibleId;
+
+
+    @Excel(name = "公司id", width = 15)
+    @ApiModelProperty(value = "公司id")
+    private String companyId;
+    /**
+     * 媒体类型
+     */
+    @Excel(name = "媒体类型", width = 15)
+    @ApiModelProperty(value = "媒体类型")
+    private String mediaId;
+
+    /**
+     * 最高出价
+     */
+    private Long maxBid;
+
+    private String supplierCode;
+
+
+    // 销售
+    private String saleId;
+    /**
+     * 最高深度转化出价
+     */
+    private BigDecimal maxDeepCpaBid;
+    private Integer checkLink;
+    private Integer materialShare;
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+
+
+    private String bidType;
+    private String ocpxActionType;
+
+    @TableField(exist = false)
+    private String responsibleId_dictText; // 运营负责人
+
+    @TableField(exist = false)
+    private String saleId_dictText; // 销售
+
+    @TableField(exist = false)
+    private String designResponsibleId_dictText; // 设计负责人
+    @TableField(exist = false)
+    private String advertiserId_dictText; // 广告主名称
+    @TableField(exist = false)
+    private String productId_dictText; // 产品名称
+    @TableField(exist = false)
+    private Integer needExamine;
+    @TableField(exist = false)
+    private String supplierCode_dictText;
+}

+ 75 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/RuleDataAccount.java

@@ -0,0 +1,75 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 规则账户清洗数据
+ * @author jeecg-boot
+ * @date   2020-11-16
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_rule_data_account")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="ctop_rule_data_account对象", description="规则账户清洗数据")
+public class RuleDataAccount {
+
+	/**id*/
+    @ApiModelProperty(value = "id")
+	private Long id;
+	/**账户id*/
+	@Excel(name = "账户id", width = 15)
+    @ApiModelProperty(value = "账户id")
+	private Long accountId;
+	/**账户name*/
+	@Excel(name = "账户id", width = 15)
+	@ApiModelProperty(value = "账户id")
+	private String accountName;
+	/**消耗*/
+	@Excel(name = "消耗", width = 15)
+    @ApiModelProperty(value = "消耗")
+	private BigDecimal cost;
+	/**validBalance*/
+	@Excel(name = "validBalance", width = 15)
+    @ApiModelProperty(value = "validBalance")
+	private BigDecimal validBalance;
+	/**转化数*/
+	@Excel(name = "转化数", width = 15)
+    @ApiModelProperty(value = "转化数")
+	private Long convertNum;
+	/**转化成本*/
+	@Excel(name = "转化成本", width = 15)
+    @ApiModelProperty(value = "转化成本")
+	private BigDecimal convertCost;
+	/**次留数*/
+	@Excel(name = "次留数", width = 15)
+    @ApiModelProperty(value = "次留数")
+	private Long nextDayOpenNum;
+	/**nextDayOpenCost*/
+	@Excel(name = "nextDayOpenCost", width = 15)
+    @ApiModelProperty(value = "nextDayOpenCost")
+	private BigDecimal nextDayOpenCost;
+
+	private BigDecimal nextDayOpenRate;
+
+	/**status*/
+	@Excel(name = "status", width = 15)
+    @ApiModelProperty(value = "status")
+	private Integer status;
+	/**createTime*/
+    @ApiModelProperty(value = "createTime")
+	private Date createTime;
+	/**updateTime*/
+    @ApiModelProperty(value = "updateTime")
+	private Date updateTime;
+}

+ 45 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/RuleDataAccountKuaishou.java

@@ -0,0 +1,45 @@
+package cn.com.ctop.common.module.entity;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import lombok.Data;
+
+/**
+ * 快手预警数据账户维度
+ */
+@Data
+@TableName("ctop_rule_data_account_kuaishou")
+public class RuleDataAccountKuaishou {
+    
+	/**id*/
+	@TableId(type = IdType.AUTO)
+	private Long id;
+	/**账户id*/
+	private Long accountId;
+	/**accountName*/
+	private String accountName;
+	/**消耗*/
+	private BigDecimal cost;
+	/**validBalance*/
+	private BigDecimal validBalance;
+	/**转化数*/
+	private Long convertNum;
+	/**转化成本*/
+	private BigDecimal convertCost;
+	/**次留数*/
+	private Long nextDayOpenNum;
+	/**nextDayOpenCost*/
+	private BigDecimal nextDayOpenCost;
+	/**次留率*/
+	private BigDecimal nextDayOpenRate;
+	/**status*/
+	private Integer status;
+	/**createTime*/
+	private Date createTime;
+	/**updateTime*/
+	private Date updateTime;
+}

+ 41 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/RuleDataCreative.java

@@ -0,0 +1,41 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+/**
+ * 规则创意清洗数据
+ * @author jeecg-boot
+ * @date   2020-11-16
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_rule_data_creative")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="ctop_rule_data_creative对象", description="规则创意清洗数据")
+public class RuleDataCreative {
+
+	@TableId
+	private Long id;
+	private Long accountId;
+	private String accountName;
+	private Long planId;
+	private String planName;
+	private Long creativeId;
+	private Integer presentedVideo;
+	private String creativeTitle;
+	private String source;
+	private Integer status;
+	private Date createTime;
+	private Date updateTime;
+
+	public RuleDataCreative() {
+	}
+}

+ 95 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/RuleDataPlan.java

@@ -0,0 +1,95 @@
+package cn.com.ctop.common.module.entity;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 规则计划清洗数据
+ * @author jeecg-boot
+ * @date   2020-11-16
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_rule_data_plan")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="ctop_rule_data_plan对象", description="规则计划清洗数据")
+public class RuleDataPlan {
+
+	@TableId
+	private Long id;
+	private Long accountId;
+	private String accountName;
+	private Long planId;
+	private String planName;
+	private String externalUrl;
+	private String downloadUrl;
+	private BigDecimal cost;
+	private Long convertNum;
+	private Long convertId;
+	private String deepConvertTarget;
+	private BigDecimal convertCost;
+	private BigDecimal nextDayOpenRate;
+	private BigDecimal nextDayOpenCost;
+	private Long nextDayOpen;
+	private String pricing;
+	private BigDecimal budget;
+	private Integer status;
+	private BigDecimal cpaBid;
+	private BigDecimal deepCpabid;
+	private Date createTime;
+	private Date updateTime;
+
+	public RuleDataPlan() {
+	}
+
+	public RuleDataPlan(JSONObject data, Long accountId) {
+		Long nextDayOpen = data.getLong("attribution_next_day_open_cnt");
+		if (null != nextDayOpen) {
+			this.nextDayOpen = nextDayOpen;
+		}
+		Long convert = data.getLong("convert");
+		if (null != convert) {
+			this.convertNum = convert;
+		}
+		BigDecimal nextDayOpenCost = data.getBigDecimal("attribution_next_day_open_cost");
+		if (null != nextDayOpenCost) {
+			this.nextDayOpenCost = nextDayOpenCost;
+		}
+
+		BigDecimal nextDayOpenRate = data.getBigDecimal("attribution_next_day_open_rate");
+		if (null != nextDayOpenRate) {
+			this.nextDayOpenRate = nextDayOpenRate;
+		}
+		this.accountId = accountId;
+		BigDecimal cost = data.getBigDecimal("cost");
+		if (null != cost) {
+			this.cost = cost;
+		}
+		BigDecimal convertCost = data.getBigDecimal("convert_cost");
+		if (null != convertCost) {
+			this.convertCost = convertCost;
+		}
+		String adName = data.getString("ad_name");
+		if (null != adName) {
+			this.planName = adName;
+		}
+		Long adId = data.getLong("ad_id");
+		this.id = adId;
+		this.planId = adId;
+		this.createTime = new Date();
+		this.updateTime = new Date();
+	}
+
+
+
+
+}

+ 78 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/RuleDataTarget.java

@@ -0,0 +1,78 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 规则定向清洗数据
+ * @author jeecg-boot
+ * @date   2020-11-16
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_rule_data_target")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="ctop_rule_data_target对象", description="规则定向清洗数据")
+public class RuleDataTarget {
+
+	@TableId
+	private Long id;
+	private Long accountId;
+	private String accountName;
+	private Long planId;
+	private String planName;
+
+	/**retargetingTagsExclude*/
+	private String retargetingTagsExclude;
+	private String retargetingTagsInclude;
+
+	/**hideIfExists*/
+	@Excel(name = "hideIfExists", width = 15)
+    @ApiModelProperty(value = "hideIfExists")
+	private Integer hideIfExists;
+	/**inventoryType*/
+	@Excel(name = "inventoryType", width = 15)
+    @ApiModelProperty(value = "inventoryType")
+	private String inventoryType;
+	/**district*/
+	@Excel(name = "district", width = 15)
+    @ApiModelProperty(value = "district")
+	private String district;
+	/**gender*/
+	@Excel(name = "gender", width = 15)
+    @ApiModelProperty(value = "gender")
+	private String gender;
+	/**age*/
+	@Excel(name = "age", width = 15)
+    @ApiModelProperty(value = "age")
+	private String age;
+	/**excludeFlowPackage*/
+	@Excel(name = "excludeFlowPackage", width = 15)
+    @ApiModelProperty(value = "excludeFlowPackage")
+	private String excludeFlowPackage;
+	/**platform*/
+	@Excel(name = "platform", width = 15)
+    @ApiModelProperty(value = "platform")
+	private String platform;
+	/**hideIfConverted*/
+	@Excel(name = "hideIfConverted", width = 15)
+    @ApiModelProperty(value = "hideIfConverted")
+	private String hideIfConverted;
+	private String deepBidType;
+	private String scheduleTime;
+	private Integer status;
+	private Date createTime;
+	private Date updateTime;
+
+	public RuleDataTarget() {
+	}
+}

+ 63 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/RuleDataTargetKuaishou.java

@@ -0,0 +1,63 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import lombok.Data;
+
+/**
+ * 快手预警指标数据
+ */
+@Data
+@TableName("ctop_rule_data_target_kuaishou")
+public class RuleDataTargetKuaishou {
+
+	/**id*/
+	private Long id;
+	/**accountId*/
+	private Long accountId;
+	/**planId*/
+	private Long planId;
+	/**unitId*/
+	private Long unitId;
+	/**广告位*/
+	private String sceneId;
+	/**地域定向*/
+	private String region;
+	/**gender*/
+	private Integer gender;
+	/**操作系统*/
+	private Integer platformOs;
+	/**手机品牌*/
+	private String deviceBrand;
+	/**手机价格*/
+	private String devicePrice;
+	/**智能扩量*/
+	private Integer isOpen;
+	/**过滤已转化人群*/
+	private Integer filterConvertedLevel;
+	/**投放时段*/
+	private String scheduleTime;
+
+	private Integer status;
+
+	/**应用商店*/
+	private String appStore;
+
+	/**定向人群包*/
+	private String population;
+
+	/**排除人群包*/
+	private String excludePopulation;
+
+	/**年龄范围*/
+	private String agesRange;
+
+	/**商业兴趣*/
+	private String businessInterest;
+
+	/**网络环境*/
+	private Integer network;
+
+	private java.util.Date createTime;
+
+}

+ 29 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/RuleDatePlanKuaishou.java

@@ -0,0 +1,29 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import lombok.Data;
+
+/**
+ * 预警快手计划数据清洗
+ */
+@Data
+@TableName("ctop_rule_date_plan_kuaishou")
+public class RuleDatePlanKuaishou {
+    
+	/**id*/
+	private Long id;
+	/**accountId*/
+	private Long accountId;
+	/**accountName*/
+	private String accountName;
+	/**planId*/
+	private Long planId;
+	/**planName*/
+	private String planName;
+
+	private Integer status;
+
+	private java.util.Date createTime;
+
+}

+ 101 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/RuleDateUnitKuaishou.java

@@ -0,0 +1,101 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 快手预警组数据
+ */
+@Data
+@TableName("ctop_rule_data_unit_kuaishou")
+public class RuleDateUnitKuaishou {
+
+    /**
+     * id
+     */
+    private Long id;
+    /**
+     * accountId
+     */
+    private Long accountId;
+    /**
+     * planId
+     */
+    private Long planId;
+    /**
+     * unitId
+     */
+    private Long unitId;
+    /**
+     * unitName
+     */
+    private String unitName;
+    /**
+     * 消耗
+     */
+    private BigDecimal charge;
+
+    private Long convertNum;
+
+    private BigDecimal convertCost;
+
+    /**
+     * activation
+     */
+    private Long activation;
+    /**
+     * 激活单价
+     */
+    private BigDecimal activationCost;
+    /**
+     * 注册数
+     */
+    private Long eventRegister;
+    /**
+     * 表单
+     */
+    private BigDecimal registerCost;
+    /**
+     * 表单
+     */
+    private Long formCount;
+    /**
+     * 表单提交单价
+     */
+    private BigDecimal formCost;
+    /**
+     * 付费
+     */
+    private Long eventPay;
+    /**
+     * 深度转化目标出价
+     */
+    private BigDecimal deepConversionBid;
+    /**
+     * 深度转化目标 3: 付费,7: 次日留存,10: 完件, 11: 授信 ,0:无
+     */
+    private Integer deepConversionType;
+    /**
+     * 安卓版本  3:不限, 4: 4.x+, 5: 5.x+, 6: 6.x+, 7: 7.x+;
+     */
+    private Integer androidOsv;
+    /**
+     * 优化目标
+     * 2:行为数;180:激活数;53:表单数;190: 付费;191:首日ROI;324:唤起应用;348:有效线索;383: 授信;384: 完件;394:订单提交;;396:注册
+     */
+    private Integer ocpxActionType;
+    /**
+     * 付费单价
+     */
+    private BigDecimal payCost;
+    /**
+     * 出价
+     */
+    private BigDecimal cpaBid;
+
+    private Integer status;
+
+    private java.util.Date createTime;
+}

+ 65 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SupplierList.java

@@ -0,0 +1,65 @@
+package cn.com.ctop.common.module.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.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+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.util.Date;
+
+/**
+ * 供应商列表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-07-27
+ */
+@Data
+@TableName("ctop_supplier_list")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_supplier_list对象", description = "供应商列表")
+public class SupplierList {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Integer id;
+    /**
+     * 供应商code
+     */
+    @Excel(name = "供应商code", width = 15)
+    @ApiModelProperty(value = "供应商code")
+    private String supplierCode;
+    /**
+     * 供应商名称
+     */
+    @Excel(name = "供应商名称", width = 15)
+    @ApiModelProperty(value = "供应商名称")
+    private String supplierName;
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 65 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SupplierWatermark.java

@@ -0,0 +1,65 @@
+package cn.com.ctop.common.module.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.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+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.util.Date;
+
+/**
+ * 供应商水印
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-07-28
+ */
+@Data
+@TableName("ctop_supplier_watermark")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_supplier_watermark对象", description = "供应商水印")
+public class SupplierWatermark {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 项目名称
+     */
+    @Excel(name = "项目名称", width = 15)
+    @ApiModelProperty(value = "项目名称")
+    private String videoSignature;
+    /**
+     * 水印
+     */
+    @Excel(name = "水印", width = 15)
+    @ApiModelProperty(value = "水印")
+    private String watermarkUrl;
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 146 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysAnnouncement.java

@@ -0,0 +1,146 @@
+package cn.com.ctop.common.module.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 lombok.Data;
+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:  2019-01-02
+ * @Version: V1.0
+ */
+@Data
+@TableName("sys_announcement")
+public class SysAnnouncement implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.ID_WORKER_STR)
+    private java.lang.String id;
+    /**
+     * 标题
+     */
+    @Excel(name = "标题", width = 15)
+    private java.lang.String titile;
+    /**
+     * 内容
+     */
+    @Excel(name = "内容", width = 30)
+    private java.lang.String msgContent;
+    /**
+     * 开始时间
+     */
+    @Excel(name = "开始时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private java.util.Date startTime;
+    /**
+     * 结束时间
+     */
+    @Excel(name = "结束时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private java.util.Date endTime;
+    /**
+     * 发布人
+     */
+    @Excel(name = "发布人", width = 15)
+    private java.lang.String sender;
+    /**
+     * 优先级(L低,M中,H高)
+     */
+    @Excel(name = "优先级", width = 15, dicCode = "priority")
+    @Dict(dicCode = "priority")
+    private java.lang.String priority;
+
+    /**
+     * 消息类型1:通知公告2:系统消息
+     */
+    @Excel(name = "消息类型", width = 15, dicCode = "msg_category")
+    @Dict(dicCode = "msg_category")
+    private java.lang.String msgCategory;
+    /**
+     * 通告对象类型(USER:指定用户,ALL:全体用户)
+     */
+    @Excel(name = "通告对象类型", width = 15, dicCode = "msg_type")
+    @Dict(dicCode = "msg_type")
+    private java.lang.String msgType;
+    /**
+     * 发布状态(0未发布,1已发布,2已撤销)
+     */
+    @Excel(name = "发布状态", width = 15, dicCode = "send_status")
+    @Dict(dicCode = "send_status")
+    private java.lang.String sendStatus;
+    /**
+     * 发布时间
+     */
+    @Excel(name = "发布时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private java.util.Date sendTime;
+    /**
+     * 撤销时间
+     */
+    @Excel(name = "撤销时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private java.util.Date cancelTime;
+    /**
+     * 删除状态(0,正常,1已删除)
+     */
+    private java.lang.String delFlag;
+    /**
+     * 创建人
+     */
+    private java.lang.String createBy;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private java.util.Date createTime;
+    /**
+     * 更新人
+     */
+    private java.lang.String updateBy;
+    /**
+     * 更新时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private java.util.Date updateTime;
+    /**
+     * 指定用户
+     **/
+    private java.lang.String userIds;
+    /**
+     * 业务类型(email:邮件 bpm:流程)
+     */
+    private java.lang.String busType;
+    /**
+     * 业务id
+     */
+    private java.lang.String busId;
+    /**
+     * 打开方式 组件:component 路由:url
+     */
+    private java.lang.String openType;
+    /**
+     * 组件/路由 地址
+     */
+    private java.lang.String openPage;
+    /**
+     * 摘要
+     */
+    private java.lang.String msgAbstract;
+}

+ 48 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysAnnouncementSend.java

@@ -0,0 +1,48 @@
+package cn.com.ctop.common.module.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * @Description: 用户通告阅读标记表
+ * @Author: jeecg-boot
+ * @Date:  2019-02-21
+ * @Version: V1.0
+ */
+@Data
+@TableName("sys_announcement_send")
+public class SysAnnouncementSend implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ID_WORKER_STR)
+	private java.lang.String id;
+	/**通告id*/
+	private java.lang.String anntId;
+	/**用户id*/
+	private java.lang.String userId;
+	/**阅读状态(0未读,1已读)*/
+	private java.lang.String readFlag;
+	/**阅读时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private java.util.Date readTime;
+	/**创建人*/
+	private java.lang.String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private java.util.Date createTime;
+	/**更新人*/
+	private java.lang.String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private java.util.Date updateTime;
+}

+ 58 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysCategory.java

@@ -0,0 +1,58 @@
+package cn.com.ctop.common.module.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 lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 分类字典
+ * @Author: jeecg-boot
+ * @Date:   2019-05-29
+ * @Version: V1.0
+ */
+@Data
+@TableName("sys_category")
+public class SysCategory implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ID_WORKER_STR)
+	private java.lang.String id;
+	/**父级节点*/
+	@Excel(name = "父级节点", width = 15)
+	private java.lang.String pid;
+	/**类型名称*/
+	@Excel(name = "类型名称", width = 15)
+	private java.lang.String name;
+	/**类型编码*/
+	@Excel(name = "类型编码", width = 15)
+	private java.lang.String code;
+	/**创建人*/
+	@Excel(name = "创建人", width = 15)
+	private java.lang.String createBy;
+	/**创建日期*/
+	@Excel(name = "创建日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private java.util.Date createTime;
+	/**更新人*/
+	@Excel(name = "更新人", width = 15)
+	private java.lang.String updateBy;
+	/**更新日期*/
+	@Excel(name = "更新日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private java.util.Date updateTime;
+	/**所属部门*/
+	@Excel(name = "所属部门", width = 15)
+	private java.lang.String sysOrgCode;
+	/**是否有子节点*/
+	@Excel(name = "是否有子节点", width = 15)
+	private java.lang.String hasChild;
+}

+ 60 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysCompany.java

@@ -0,0 +1,60 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Objects;
+
+@Data
+@TableName("sys_company")
+public class SysCompany {
+
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    private String companyId;
+
+    private String companyCode;
+
+    private String companyName;
+
+    private String area;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o){
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        SysCompany that = (SysCompany) o;
+        return id.equals(that.id) &&
+                companyId.equals(that.companyId) &&
+                companyCode.equals(that.companyCode) &&
+                companyName.equals(that.companyName) &&
+                area.equals(that.area);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(id, companyId, companyCode, companyName, area);
+    }
+
+    @Override
+    public String toString() {
+        return "SysCompany{" +
+                "id=" + id +
+                ", companyId='" + companyId + '\'' +
+                ", companyCode='" + companyCode + '\'' +
+                ", companyName='" + companyName + '\'' +
+                ", area='" + area + '\'' +
+                '}';
+    }
+
+}

+ 120 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDataSource.java

@@ -0,0 +1,120 @@
+package cn.com.ctop.common.module.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.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+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;
+
+/**
+ * @Description: 多数据源管理
+ * @Author: jeecg-boot
+ * @Date: 2019-12-25
+ * @Version: V1.0
+ */
+@Data
+@TableName("sys_data_source")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "sys_data_source对象", description = "多数据源管理")
+public class SysDataSource {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.ID_WORKER_STR)
+    @ApiModelProperty(value = "id")
+    private java.lang.String id;
+    /**
+     * 数据源编码
+     */
+    @Excel(name = "数据源编码", width = 15)
+    @ApiModelProperty(value = "数据源编码")
+    private java.lang.String code;
+    /**
+     * 数据源名称
+     */
+    @Excel(name = "数据源名称", width = 15)
+    @ApiModelProperty(value = "数据源名称")
+    private java.lang.String name;
+    /**
+     * 描述
+     */
+    @Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private java.lang.String remark;
+    /**
+     * 数据库类型
+     */
+    @Dict(dicCode = "database_type")
+    @Excel(name = "数据库类型", width = 15, dicCode = "database_type")
+    @ApiModelProperty(value = "数据库类型")
+    private java.lang.String dbType;
+    /**
+     * 驱动类
+     */
+    @Excel(name = "驱动类", width = 15)
+    @ApiModelProperty(value = "驱动类")
+    private java.lang.String dbDriver;
+    /**
+     * 数据源地址
+     */
+    @Excel(name = "数据源地址", width = 15)
+    @ApiModelProperty(value = "数据源地址")
+    private java.lang.String dbUrl;
+    /**
+     * 数据库名称
+     */
+    @Excel(name = "数据库名称", width = 15)
+    @ApiModelProperty(value = "数据库名称")
+    private java.lang.String dbName;
+    /**
+     * 用户名
+     */
+    @Excel(name = "用户名", width = 15)
+    @ApiModelProperty(value = "用户名")
+    private java.lang.String dbUsername;
+    /**
+     * 密码
+     */
+    @Excel(name = "密码", width = 15)
+    @ApiModelProperty(value = "密码")
+    private java.lang.String dbPassword;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+    /**
+     * 创建日期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+    /**
+     * 更新日期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+    /**
+     * 所属部门
+     */
+    @Excel(name = "所属部门", width = 15)
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+}

+ 186 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepart.java

@@ -0,0 +1,186 @@
+package cn.com.ctop.common.module.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 lombok.Data;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 部门表
+ * <p>
+ *
+ * @Author Steve
+ * @Since 2019-01-22
+ */
+@Data
+@TableName("sys_depart")
+public class SysDepart implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(type = IdType.ID_WORKER_STR)
+    private String id;
+    /**
+     * 父机构ID
+     */
+    private String parentId;
+    /**
+     * 机构/部门名称
+     */
+    @Excel(name = "机构/部门名称", width = 15)
+    private String departName;
+    /**
+     * 英文名
+     */
+    @Excel(name = "英文名", width = 15)
+    private String departNameEn;
+    /**
+     * 缩写
+     */
+    private String departNameAbbr;
+    /**
+     * 排序
+     */
+    @Excel(name = "排序", width = 15)
+    private Integer departOrder;
+    /**
+     * 描述
+     */
+    @Excel(name = "描述", width = 15)
+    private String description;
+    /**
+     * 机构类别 1组织机构,2岗位
+     */
+    @Excel(name = "机构类别", width = 15, dicCode = "org_category")
+    private String orgCategory;
+    /**
+     * 机构类型
+     */
+    private String orgType;
+    /**
+     * 机构编码
+     */
+    @Excel(name = "机构编码", width = 15)
+    private String orgCode;
+    /**
+     * 手机号
+     */
+    @Excel(name = "手机号", width = 15)
+    private String mobile;
+    /**
+     * 传真
+     */
+    @Excel(name = "传真", width = 15)
+    private String fax;
+    /**
+     * 地址
+     */
+    @Excel(name = "地址", width = 15)
+    private String address;
+    /**
+     * 备注
+     */
+    @Excel(name = "备注", width = 15)
+    private String memo;
+    /**
+     * 状态(1启用,0不启用)
+     */
+    @Dict(dicCode = "depart_status")
+    private String status;
+    /**
+     * 删除状态(0,正常,1已删除)
+     */
+    @Dict(dicCode = "del_flag")
+    private String delFlag;
+    /**
+     * 创建人
+     */
+    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;
+    /**
+     * 更新日期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+    /**
+     * 领导 ID
+     */
+    private String leaderId;
+
+    @TableField(exist = false)
+    private String title;
+
+    /**
+     * 领导姓名
+     */
+    private String leaderName;
+
+    /**
+     * 重写equals方法
+     */
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        if (!super.equals(o)) {
+            return false;
+        }
+        SysDepart depart = (SysDepart) o;
+        return Objects.equals(id, depart.id) &&
+                Objects.equals(parentId, depart.parentId) &&
+                Objects.equals(departName, depart.departName) &&
+                Objects.equals(departNameEn, depart.departNameEn) &&
+                Objects.equals(departNameAbbr, depart.departNameAbbr) &&
+                Objects.equals(departOrder, depart.departOrder) &&
+                Objects.equals(description, depart.description) &&
+                Objects.equals(orgType, depart.orgType) &&
+                Objects.equals(orgCode, depart.orgCode) &&
+                Objects.equals(mobile, depart.mobile) &&
+                Objects.equals(fax, depart.fax) &&
+                Objects.equals(address, depart.address) &&
+                Objects.equals(memo, depart.memo) &&
+                Objects.equals(status, depart.status) &&
+                Objects.equals(delFlag, depart.delFlag) &&
+                Objects.equals(createBy, depart.createBy) &&
+                Objects.equals(createTime, depart.createTime) &&
+                Objects.equals(updateBy, depart.updateBy) &&
+                Objects.equals(updateTime, depart.updateTime);
+    }
+
+    /**
+     * 重写hashCode方法
+     */
+    @Override
+    public int hashCode() {
+        return Objects.hash(super.hashCode(), id, parentId, departName,
+                departNameEn, departNameAbbr, departOrder, description,
+                orgType, orgCode, mobile, fax, address, memo, status,
+                delFlag, createBy, createTime, updateBy, updateTime);
+    }
+}

+ 50 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepartPermission.java

@@ -0,0 +1,50 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * @Description: 部门权限表
+ * @Author: jeecg-boot
+ * @Date:   2020-02-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("sys_depart_permission")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="sys_depart_permission对象", description="部门权限表")
+public class SysDepartPermission {
+
+	/**id*/
+	@TableId(type = IdType.ID_WORKER_STR)
+    @ApiModelProperty(value = "id")
+	private java.lang.String id;
+	/**部门id*/
+	@Excel(name = "部门id", width = 15)
+    @ApiModelProperty(value = "部门id")
+	private java.lang.String departId;
+	/**权限id*/
+	@Excel(name = "权限id", width = 15)
+    @ApiModelProperty(value = "权限id")
+	private java.lang.String permissionId;
+	/**数据规则id*/
+	@ApiModelProperty(value = "数据规则id")
+	private java.lang.String dataRuleIds;
+
+	public SysDepartPermission() {
+
+	}
+
+	public SysDepartPermission(String departId, String permissionId) {
+		this.departId = departId;
+		this.permissionId = permissionId;
+	}
+}

+ 70 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepartRole.java

@@ -0,0 +1,70 @@
+package cn.com.ctop.common.module.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.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+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;
+
+/**
+ * @Description: 部门角色
+ * @Author: jeecg-boot
+ * @Date:   2020-02-12
+ * @Version: V1.0
+ */
+@Data
+@TableName("sys_depart_role")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="sys_depart_role对象", description="部门角色")
+public class SysDepartRole {
+
+	/**id*/
+	@TableId(type = IdType.ID_WORKER_STR)
+    @ApiModelProperty(value = "id")
+	private String id;
+	/**部门id*/
+	@Excel(name = "部门id", width = 15)
+	@ApiModelProperty(value = "部门id")
+	@Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id")
+	private String departId;
+	/**部门角色名称*/
+	@Excel(name = "部门角色名称", width = 15)
+    @ApiModelProperty(value = "部门角色名称")
+	private String roleName;
+	/**部门角色编码*/
+	@Excel(name = "部门角色编码", width = 15)
+    @ApiModelProperty(value = "部门角色编码")
+	private String roleCode;
+	/**描述*/
+	@Excel(name = "描述", width = 15)
+    @ApiModelProperty(value = "描述")
+	private String description;
+	/**创建人*/
+	@Excel(name = "创建人", width = 15)
+    @ApiModelProperty(value = "创建人")
+	private String createBy;
+	/**创建时间*/
+	@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+	private java.util.Date createTime;
+	/**更新人*/
+	@Excel(name = "更新人", width = 15)
+    @ApiModelProperty(value = "更新人")
+	private String updateBy;
+	/**更新时间*/
+	@Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+	private java.util.Date updateTime;
+}

+ 54 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepartRolePermission.java

@@ -0,0 +1,54 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * @Description: 部门角色权限
+ * @Author: jeecg-boot
+ * @Date:   2020-02-12
+ * @Version: V1.0
+ */
+@Data
+@TableName("sys_depart_role_permission")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="sys_depart_role_permission对象", description="部门角色权限")
+public class SysDepartRolePermission {
+
+	/**id*/
+	@TableId(type = IdType.ID_WORKER_STR)
+    @ApiModelProperty(value = "id")
+	private java.lang.String id;
+	/**部门id*/
+	@Excel(name = "部门id", width = 15)
+    @ApiModelProperty(value = "部门id")
+	private java.lang.String departId;
+	/**角色id*/
+	@Excel(name = "角色id", width = 15)
+    @ApiModelProperty(value = "角色id")
+	private java.lang.String roleId;
+	/**权限id*/
+	@Excel(name = "权限id", width = 15)
+    @ApiModelProperty(value = "权限id")
+	private java.lang.String permissionId;
+	/**dataRuleIds*/
+	@Excel(name = "dataRuleIds", width = 15)
+    @ApiModelProperty(value = "dataRuleIds")
+	private java.lang.String dataRuleIds;
+
+	public SysDepartRolePermission() {
+	}
+
+	public SysDepartRolePermission(String roleId, String permissionId) {
+		this.roleId = roleId;
+		this.permissionId = permissionId;
+	}
+}

+ 47 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDepartRoleUser.java

@@ -0,0 +1,47 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * @Description: 部门角色人员信息
+ * @Author: jeecg-boot
+ * @Date:   2020-02-13
+ * @Version: V1.0
+ */
+@Data
+@TableName("sys_depart_role_user")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="sys_depart_role_user对象", description="部门角色人员信息")
+public class SysDepartRoleUser {
+
+	/**主键id*/
+	@TableId(type = IdType.ID_WORKER_STR)
+    @ApiModelProperty(value = "主键id")
+	private String id;
+	/**用户id*/
+	@Excel(name = "用户id", width = 15)
+    @ApiModelProperty(value = "用户id")
+	private String userId;
+	/**角色id*/
+	@Excel(name = "角色id", width = 15)
+    @ApiModelProperty(value = "角色id")
+	private String droleId;
+
+	public SysDepartRoleUser() {
+
+	}
+
+	public SysDepartRoleUser(String userId, String droleId) {
+		this.userId = userId;
+		this.droleId = droleId;
+	}
+}

+ 82 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDict.java

@@ -0,0 +1,82 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 字典表
+ * </p>
+ *
+ * @Author zhangweijian
+ * @since 2018-12-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SysDict implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.ID_WORKER_STR)
+    private String id;
+
+    /**
+     * [预留字段,暂时无用]
+     * 字典类型,0 string,1 number类型,2 boolean
+     * 前端js对stirng类型和number类型 boolean 类型敏感,需要区分。在select 标签匹配的时候会用到
+     * 默认为string类型
+     */
+    private Integer type;
+
+    /**
+     * 字典名称
+     */
+    private String dictName;
+
+    /**
+     * 字典编码
+     */
+    private String dictCode;
+
+    /**
+     * 描述
+     */
+    private String description;
+
+    /**
+     * 删除状态
+     */
+    @TableLogic
+    private Integer delFlag;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新人
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+}

+ 80 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysDictItem.java

@@ -0,0 +1,80 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+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 java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @Author zhangweijian
+ * @since 2018-12-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SysDictItem implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.ID_WORKER_STR)
+    private String id;
+
+    /**
+     * 字典id
+     */
+    private String dictId;
+
+    /**
+     * 字典项文本
+     */
+    @Excel(name = "字典项文本", width = 20)
+    private String itemText;
+
+    /**
+     * 字典项值
+     */
+    @Excel(name = "字典项值", width = 30)
+    private String itemValue;
+
+    /**
+     * 描述
+     */
+    @Excel(name = "描述", width = 40)
+    private String description;
+
+    /**
+     * 排序
+     */
+    @Excel(name = "排序", width = 15,type=4)
+    private Integer sortOrder;
+
+
+    /**
+     * 状态(1启用 0不启用)
+     */
+    @Dict(dicCode = "dict_item_status")
+    private Integer status;
+
+    private String createBy;
+
+    private Date createTime;
+
+    private String updateBy;
+
+    private Date updateTime;
+
+
+}

+ 112 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysLog.java

@@ -0,0 +1,112 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+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.ID_WORKER_STR)
+	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;
+
+}

+ 183 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysPermission.java

@@ -0,0 +1,183 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecg.common.aspect.annotation.Dict;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 菜单权限表
+ * </p>
+ *
+ * @Author scott
+ * @since 2018-12-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SysPermission implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	@TableId(type = IdType.ID_WORKER_STR)
+	private String id;
+
+	/**
+	 * 父id
+	 */
+	private String parentId;
+
+	/**
+	 * 菜单名称
+	 */
+	private String name;
+
+	/**
+	 * 菜单权限编码,例如:“sys:schedule:list,sys:schedule:info”,多个逗号隔开
+	 */
+	private String perms;
+	/**
+	 * 权限策略1显示2禁用
+	 */
+	private String permsType;
+
+	/**
+	 * 菜单图标
+	 */
+	private String icon;
+
+	/**
+	 * 组件
+	 */
+	private String component;
+
+	/**
+	 * 组件名字
+	 */
+	private String componentName;
+
+	/**
+	 * 路径
+	 */
+	private String url;
+	/**
+	 * 一级菜单跳转地址
+	 */
+	private String redirect;
+
+	/**
+	 * 菜单排序
+	 */
+	private Double sortNo;
+
+	/**
+	 * 类型(0:一级菜单;1:子菜单 ;2:按钮权限)
+	 */
+	@Dict(dicCode = "menu_type")
+	private Integer menuType;
+
+	/**
+	 * 是否叶子节点: 1:是  0:不是
+	 */
+	@TableField(value="is_leaf")
+	private boolean leaf;
+
+	/**
+	 * 是否路由菜单: 0:不是  1:是(默认值1)
+	 */
+	@TableField(value="is_route")
+	private boolean route;
+
+
+	/**
+	 * 是否缓存页面: 0:不是  1:是(默认值1)
+	 */
+	@TableField(value="keep_alive")
+	private boolean keepAlive;
+
+	/**
+	 * 描述
+	 */
+	private String description;
+
+	/**
+	 * 创建人
+	 */
+	private String createBy;
+
+	/**
+	 * 删除状态 0正常 1已删除
+	 */
+	private Integer delFlag;
+
+	/**
+	 * 是否配置菜单的数据权限 1是0否 默认0
+	 */
+	private Integer ruleFlag;
+
+	/**
+	 * 是否隐藏路由菜单: 0否,1是(默认值0)
+	 */
+	private boolean hidden;
+
+	/**
+	 * 创建时间
+	 */
+	private Date createTime;
+
+	/**
+	 * 更新人
+	 */
+	private String updateBy;
+
+	/**
+	 * 更新时间
+	 */
+	private Date updateTime;
+
+	/**按钮权限状态(0无效1有效)*/
+	private String status;
+
+	/**alwaysShow*/
+    private boolean alwaysShow;
+
+
+	/*update_begin author:wuxianquan date:20190908 for:实体增加字段 */
+    /** 外链菜单打开方式 0/内部打开 1/外部打开 */
+    private boolean internalOrExternal;
+	/*update_end author:wuxianquan date:20190908 for:实体增加字段 */
+
+    public SysPermission() {
+
+    }
+    public SysPermission(boolean index) {
+    	if(index) {
+    		this.id = "9502685863ab87f0ad1134142788a385";
+        	this.name="首页";
+        	this.component="dashboard/Analysis";
+        	this.componentName="dashboard-analysis";
+        	this.url="/dashboard/analysis";
+        	this.icon="home";
+        	this.menuType=0;
+        	this.sortNo=0.0;
+        	this.ruleFlag=0;
+        	this.delFlag=0;
+        	this.alwaysShow=false;
+        	this.route=true;
+        	this.keepAlive=true;
+        	this.leaf=true;
+        	this.hidden=false;
+    	}
+
+    }
+}

+ 77 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysRole.java

@@ -0,0 +1,77 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+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;
+
+/**
+ * <p>
+ * 角色表
+ * </p>
+ *
+ * @Author scott
+ * @since 2018-12-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SysRole implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.UUID)
+    private String id;
+
+    /**
+     * 角色名称
+     */
+    @Excel(name="角色名",width=15)
+    private String roleName;
+
+    /**
+     * 角色编码
+     */
+    @Excel(name="角色编码",width=15)
+    private String roleCode;
+
+    /**
+          * 描述
+     */
+    @Excel(name="描述",width=60)
+    private String description;
+
+    /**
+     * 创建人
+     */
+    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;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+}

+ 223 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysUser.java

@@ -0,0 +1,223 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+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;
+import java.util.Date;
+
+/**
+ * <p>
+ * 用户表
+ * </p>
+ *
+ * @Author scott
+ * @since 2018-12-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SysUser implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.UUID)
+    private String id;
+
+    private String departId;
+
+    /**
+     * 登录账号
+     */
+    @Excel(name = "登录账号", width = 15)
+    private String username;
+
+    /**
+     * 真实姓名
+     */
+    @Excel(name = "真实姓名", width = 15)
+    private String realname;
+
+    /**
+     * 密码
+     */
+    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
+    private String password;
+
+    /**
+     * md5密码盐
+     */
+    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
+    private String salt;
+
+    /**
+     * 头像
+     */
+    @Excel(name = "头像", width = 15,type = 2)
+    private String avatar;
+
+    /**
+     * 生日
+     */
+    @Excel(name = "生日", width = 15, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date birthday;
+
+    /**
+     * 性别(1:男 2:女)
+     */
+    @Excel(name = "性别", width = 15, dicCode = "sex")
+    @Dict(dicCode = "sex")
+    private Integer sex;
+
+    /**
+     * 电子邮件
+     */
+    @Excel(name = "电子邮件", width = 15)
+    private String email;
+
+    /**
+     * 电话
+     */
+    @Excel(name = "电话", width = 15)
+    private String phone;
+
+    /**
+     * 部门code(当前选择登录部门)
+     */
+    private String orgCode;
+
+    /**
+     * 状态(1:正常  2:冻结 )
+     */
+    @Excel(name = "状态", width = 15,dicCode="user_status")
+    @Dict(dicCode = "user_status")
+    private Integer status;
+
+    /**
+     * 删除状态(0,正常,1已删除)
+     */
+    @Excel(name = "删除状态", width = 15,dicCode="del_flag")
+    @TableLogic
+    private Integer delFlag;
+
+    /**
+     * 工号,唯一键
+     */
+    @Excel(name = "工号", width = 15)
+    private String workNo;
+
+    /**
+     * 职务,关联职务表
+     */
+    @Excel(name = "职务", width = 15)
+    private String post;
+
+    /**
+     * 座机号
+     */
+    @Excel(name = "座机号", width = 15)
+    private String telephone;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新人
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+    /**
+     * 同步工作流引擎1同步0不同步
+     */
+    private Integer activitiSync;
+
+    /**
+     * 身份(0 普通成员 1 上级)
+     */
+    @Excel(name="(1普通成员 2上级)",width = 15)
+    private Integer userIdentity;
+
+    /**
+     * 负责部门
+     */
+    @Excel(name="负责部门",width = 15,dictTable ="sys_depart",dicText = "depart_name",dicCode = "id")
+    @Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id")
+    private String departIds;
+
+
+    /**
+     * 第三方登录的唯一标识
+     */
+    private String thirdId;
+
+    /**
+     * 第三方类型 <br>
+     * (github/github,wechat_enterprise/企业微信,dingtalk/钉钉)
+     */
+    private String thirdType;
+
+    /**
+     * 职务
+     */
+    @TableField(exist = false)
+    private String position;
+    /**
+     * 区域
+     */
+    @TableField(exist = false)
+    private String area;
+    /**
+     * 部门
+     */
+    @TableField(exist = false)
+    private String depart;
+
+    /**
+     * 角色
+     */
+    @TableField(exist = false)
+    private String roleName;
+
+    /**
+     * 组织机构名称
+     */
+    @TableField(exist = false)
+    private String departName;
+
+    /**
+     * 领导 ID
+     */
+    private String leaderId;
+
+    /**
+     * 领导姓名
+     */
+    private String leaderName;
+
+}

+ 53 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysUserDepart.java

@@ -0,0 +1,53 @@
+package cn.com.ctop.common.module.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;
+
+@Data
+@TableName("sys_user_depart")
+public class SysUserDepart implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**主键id*/
+	@TableId(type = IdType.ID_WORKER_STR)
+	private String id;
+	/**用户id*/
+	private String userId;
+	/**部门id*/
+	private String depId;
+
+	/**
+	 * 创建时间
+	 */
+	private Date createTime;
+	/**
+	 * 创建人id
+	 */
+	private String createUserId;
+
+
+	public SysUserDepart(String id, String userId, String depId, Date createTime, String createUserId) {
+		this.id = id;
+		this.userId = userId;
+		this.depId = depId;
+		this.createTime = createTime;
+		this.createUserId = createUserId;
+	}
+
+	public SysUserDepart(String id, String userId, String depId) {
+		super();
+		this.id = id;
+		this.userId = userId;
+		this.depId = depId;
+	}
+
+	public SysUserDepart(String id, String departId) {
+		this.userId = id;
+		this.depId = departId;
+	}
+}

+ 49 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/SysUserRole.java

@@ -0,0 +1,49 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 用户角色表
+ * </p>
+ *
+ * @Author scott
+ * @since 2018-12-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SysUserRole implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.ID_WORKER_STR)
+    private String id;
+
+    /**
+     * 用户id
+     */
+    private String userId;
+
+    /**
+     * 角色id
+     */
+    private String roleId;
+
+	public SysUserRole() {
+	}
+
+	public SysUserRole(String userId, String roleId) {
+		this.userId = userId;
+		this.roleId = roleId;
+	}
+
+
+
+}

+ 24 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/TagCategoryInfo.java

@@ -0,0 +1,24 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+@Data
+@TableName("ctop_tag_category")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class TagCategoryInfo {
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    private String name;
+    private String code;
+    private Integer status;
+    private Date createTime;
+    private Date updateTime;
+}

+ 57 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/TagInfo.java

@@ -0,0 +1,57 @@
+package cn.com.ctop.common.module.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 io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecg.common.aspect.annotation.Dict;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 标签信息
+ * @author jeecg-boot
+ * @date   2020-08-26
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_tag_info")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="ctop_tag_info对象", description="标签信息")
+public class TagInfo {
+	@TableId(type = IdType.AUTO)
+	private Long id;
+	@Dict(dicCode = "id",dictTable="ctop_tag_info",dicText="tag_name")
+	private Long parentId;
+	private Long tagCategoryId;
+	private String tagCategoryName;
+	@Dict(dicCode = "id",dictTable="ctop_tag_info",dicText="tag_name")
+	private Long firstTagId;
+	@Dict(dicCode = "id",dictTable="ctop_tag_info",dicText="tag_name")
+	private Long secendTagId;
+	@Dict(dicCode = "id",dictTable="sys_user",dicText="realname")
+	private String userId;
+	private String tagName;
+	private Integer tagOrder;
+	private String description;
+	private String model;
+	private String tagCode;
+	private Integer level;
+	private Integer status;
+	private Integer delFlag;
+	@TableField(value="is_leaf")
+	private boolean leaf;
+	private Date createTime;
+	private Date updateTime;
+
+	@TableField(exist = false)
+	List<TagInfo> children;
+
+
+}

+ 26 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/TencentWatermarkTemplate.java

@@ -0,0 +1,26 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@TableName("ctop_tencent_watermark_template")
+public class TencentWatermarkTemplate {
+
+    @TableId(type = IdType.UUID)
+    private Long id;
+
+    private String name;
+
+    private String radio;
+
+    private Long templateId;
+
+    private Date createTime;
+
+    private Date updateTime;
+}

+ 14 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/UReportSubscriber.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.common.module.entity;
+
+import lombok.Data;
+
+@Data
+public class UReportSubscriber {
+
+    private String fileId;
+
+    private String fileName;
+
+    private String sender;
+
+}

+ 174 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/UserAllocation.java

@@ -0,0 +1,174 @@
+package cn.com.ctop.common.module.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.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+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;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 用户分配
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2019-08-08
+ */
+@Data
+@TableName("ctop_user_allocation")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_user_allocation对象", description = "用户分配")
+public class UserAllocation implements Serializable {
+
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "主键ID")
+    private Long id;
+    /**
+     * 登陆人id
+     */
+    @Excel(name = "登陆人id", width = 15)
+    @ApiModelProperty(value = "登陆人id")
+    private String userId;
+
+
+    @Excel(name = "登陆人名称", width = 15)
+    @ApiModelProperty(value = "登陆人名称")
+    private String userName;
+
+    /**
+     * 账户id --授权
+     */
+    @Excel(name = "账户id --授权", width = 15)
+    @ApiModelProperty(value = "账户id --授权")
+    private Long accountId;
+    /**
+     * 广告主ID
+     */
+    @Excel(name = "广告主ID", width = 15)
+    @ApiModelProperty(value = "广告主ID")
+    @Dict(dicCode = "id", dictTable = "ctop_advertiser", dicText = "name")
+    private String advertiserId;
+
+    private String systemType;
+
+    /**
+     * 项目id
+     */
+    @Dict(dicCode = "id", dictTable = "ctop_project", dicText = "project_name")
+    private Long projectId;
+
+    /**
+     * 输入账号  --登陆
+     */
+    @Excel(name = "输入账号  --登陆", width = 15)
+    @ApiModelProperty(value = "输入账号  --登陆")
+    private String accountName;
+
+    /**
+     * 预警 金额
+     */
+    private BigDecimal warningAmount;
+
+    /**
+     * 预警 比例
+     */
+    private BigDecimal warningProportion;
+
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    /**
+     * 授权名称
+     */
+    @Excel(name = "授权名称", width = 15)
+    @ApiModelProperty(value = "授权名称")
+    private String authName;
+
+    /**
+     * 授权开始时间
+     */
+    @Excel(name = "授权开始时间", width = 15)
+    @ApiModelProperty(value = "授权开始时间")
+    private String authBeginTime;
+
+
+    /**
+     * 0 启动
+     * 1 禁用
+     */
+    private Integer accountStatus;
+
+    /**
+     * 检测链接预警
+     * 0 启动
+     * 1 禁用
+     */
+    private Integer monitoringLink;
+
+    /**
+     * 检测链接预警
+     * 0 启动
+     * 1 禁用
+     */
+    private Integer landingPage;
+
+    /**
+     * 是否开启删评论
+     * 0 启动
+     * 1 禁用
+     */
+    private Integer deleteComment;
+    /**
+     * 自动投放,0关闭,1开启
+     */
+    private Integer autoDelivery;
+    /**
+     * 物料类型 0-不同步,1应用包,(2人群包,3定向包)
+     */
+    private String materialType;
+
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+    /**
+     * 平台类型 1 头条 2快手
+     */
+    @Excel(name = "平台类型 1 头条 2快手", width = 15)
+    @ApiModelProperty(value = "平台类型 1 头条 2快手")
+    private String mediaId;
+
+
+
+
+   /* @TableField(exist = false)
+    private String advertiserName;
+
+    @TableField(exist = false)
+    private String projectName;*/
+
+}

+ 65 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/UserCompany.java

@@ -0,0 +1,65 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 用户够公司
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2019-11-14
+ */
+@Data
+@TableName("user_company")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "user_company对象", description = "用户够公司")
+public class UserCompany {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.UUID)
+    @ApiModelProperty(value = "id")
+    private String id;
+    /**
+     * 用户id
+     */
+    @Excel(name = "用户id", width = 15)
+    @ApiModelProperty(value = "用户id")
+    private String userId;
+    /**
+     * 用户名称
+     */
+    @Excel(name = "用户名称", width = 15)
+    @ApiModelProperty(value = "用户名称")
+    private String userName;
+    /**
+     * 部门id
+     */
+    @Excel(name = "部门id", width = 15)
+    @ApiModelProperty(value = "部门id")
+    private String companyId;
+    /**
+     * 公司名称
+     */
+    @Excel(name = "公司名称", width = 15)
+    @ApiModelProperty(value = "公司名称")
+    private String companyName;
+
+
+    private Date createTime;
+    private Date updateTime;
+
+
+}

+ 11 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/VideoMerge.java

@@ -0,0 +1,11 @@
+package cn.com.ctop.common.module.entity;
+
+import lombok.Data;
+
+import java.util.List;
+@Data
+public class VideoMerge {
+    private String startPart;
+    private String endPart;
+    private List<String> parts;
+}

+ 59 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/VideoMergeTask.java

@@ -0,0 +1,59 @@
+package cn.com.ctop.common.module.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * 视频合成任务
+ * @author jeecg-boot
+ * @date   2019-12-16
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_video_merge_task")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="ctop_video_merge_task对象", description="视频合成任务")
+public class VideoMergeTask {
+    
+	/**id*/
+	@TableId(type = IdType.UUID)
+    @ApiModelProperty(value = "id")
+	private String id;
+	/**jobId*/
+	@Excel(name = "jobId", width = 15)
+    @ApiModelProperty(value = "jobId")
+	private String jobId;
+	@Excel(name = "userId", width = 15)
+	@ApiModelProperty(value = "userId")
+	private String userId;
+	/**videoId*/
+	@Excel(name = "videoId", width = 15)
+    @ApiModelProperty(value = "videoId")
+	private String videoId;
+	@Excel(name = "videoUrl", width = 15)
+	@ApiModelProperty(value = "videoUrl")
+	private String videoUrl;
+	/**status*/
+	@Excel(name = "status", width = 15)
+    @ApiModelProperty(value = "status")
+	private String status;
+	/**createTime*/
+    @ApiModelProperty(value = "createTime")
+	private Date createTime;
+	/**updateTime*/
+    @ApiModelProperty(value = "updateTime")
+	private Date updateTime;
+}

+ 46 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/VideoPart.java

@@ -0,0 +1,46 @@
+package cn.com.ctop.common.module.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * 视频片段
+ * @author jeecg-boot
+ * @date   2019-12-16
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_video_part")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="ctop_video_part对象", description="视频片段")
+public class VideoPart {
+    
+	/**id*/
+	@TableId(type = IdType.UUID)
+    @ApiModelProperty(value = "id")
+	private String id;
+	/**videoId*/
+	@Excel(name = "jobId", width = 15)
+    @ApiModelProperty(value = "jobId")
+	private String jobId;
+	/**partId*/
+	@Excel(name = "partId", width = 15)
+    @ApiModelProperty(value = "partId")
+	private String partId;
+	/**createTime*/
+    @ApiModelProperty(value = "createTime")
+	private Date createTime;
+}

+ 61 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/VideoWatermarkTask.java

@@ -0,0 +1,61 @@
+package cn.com.ctop.common.module.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * 水印任务表
+ * @author jeecg-boot
+ * @date   2019-12-20
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_video_watermark_task")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="ctop_video_watermark_task对象", description="水印任务表")
+public class VideoWatermarkTask {
+    
+	/**id*/
+	@TableId(type = IdType.UUID)
+    @ApiModelProperty(value = "id")
+	private String id;
+	/**userId*/
+	@Excel(name = "userId", width = 15)
+    @ApiModelProperty(value = "userId")
+	private String userId;
+	/**jobId*/
+	@Excel(name = "jobId", width = 15)
+    @ApiModelProperty(value = "jobId")
+	private String jobId;
+	/**videoId*/
+	@Excel(name = "videoId", width = 15)
+    @ApiModelProperty(value = "videoId")
+	private String videoId;
+	/**videoUrl*/
+	@Excel(name = "videoUrl", width = 15)
+    @ApiModelProperty(value = "videoUrl")
+	private String videoUrl;
+	/**status*/
+	@Excel(name = "status", width = 15)
+    @ApiModelProperty(value = "status")
+	private String status;
+	/**createTime*/
+    @ApiModelProperty(value = "createTime")
+	private Date createTime;
+	/**updateTime*/
+    @ApiModelProperty(value = "updateTime")
+	private Date updateTime;
+}

+ 75 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/WarningOperationLog.java

@@ -0,0 +1,75 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 预警操作记录
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-11-11
+ */
+@Data
+@TableName("ctop_warning_operation_log")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_warning_operation_log对象", description = "预警操作记录")
+public class WarningOperationLog {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 账户ID
+     */
+    @Excel(name = "账户ID", width = 15)
+    @ApiModelProperty(value = "账户ID")
+    private Long accountId;
+    /**
+     * 账户ID
+     */
+    @Excel(name = "账户ID", width = 15)
+    @ApiModelProperty(value = "账户ID")
+    private Long unitId;
+    /**
+     * 发送人
+     */
+    @Excel(name = "发送人", width = 15)
+    @ApiModelProperty(value = "发送人")
+    private String userId;
+    /**
+     * 标题
+     */
+    @Excel(name = "标题", width = 15)
+    @ApiModelProperty(value = "标题")
+    private String subject;
+    /**
+     * 预警类型 1 出价方式  2 出价过高
+     */
+    @Excel(name = "预警类型 1 出价方式  2 出价过高 ", width = 15)
+    @ApiModelProperty(value = "预警类型 1 出价方式  2 出价过高 ")
+    private Integer warningType;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 86 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/entity/WexinConfig.java

@@ -0,0 +1,86 @@
+package cn.com.ctop.common.module.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 io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import me.chanjar.weixin.cp.api.WxCpService;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 企业微信配置信息
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2021-06-17
+ */
+@Data
+@TableName("ctop_wexin_config")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_wexin_config对象", description = "企业微信配置信息")
+public class WexinConfig {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.UUID)
+    @ApiModelProperty(value = "id")
+    private Integer id;
+    /**
+     * corpId
+     */
+    @Excel(name = "corpId", width = 15)
+    @ApiModelProperty(value = "corpId")
+    private String corpId;
+    /**
+     * agentId
+     */
+    @Excel(name = "agentId", width = 15)
+    @ApiModelProperty(value = "agentId")
+    private Integer agentId;
+    /**
+     * corpSecret
+     */
+    @Excel(name = "corpSecret", width = 15)
+    @ApiModelProperty(value = "corpSecret")
+    private String corpSecret;
+    /**
+     * aesKey
+     */
+    @Excel(name = "aesKey", width = 15)
+    @ApiModelProperty(value = "aesKey")
+    private String aesKey;
+    /**
+     * token
+     */
+    @Excel(name = "token", width = 15)
+    @ApiModelProperty(value = "token")
+    private String token;
+    /**
+     * remarks
+     */
+    @Excel(name = "remarks", width = 15)
+    @ApiModelProperty(value = "remarks")
+    private String remarks;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private WxCpService wxCpService;
+}

+ 166 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/enums/BytedanceConvertType.java

@@ -0,0 +1,166 @@
+package cn.com.ctop.common.module.enums;
+
+public enum BytedanceConvertType {
+    AD_CONVERT_TYPE_PHONE("AD_CONVERT_TYPE_PHONE", 1L, "电话拨打"),
+    AD_CONVERT_TYPE_FORM("AD_CONVERT_TYPE_FORM", 2L, "表单提交"),
+    AD_CONVERT_TYPE_MAP_SEARCH("AD_CONVERT_TYPE_MAP_SEARCH", 3L, "地图搜索"),
+    AD_CONVERT_TYPE_DOWNLOAD_FINISH("AD_CONVERT_TYPE_DOWNLOAD_FINISH", 4L, "下载完成"),
+    AD_CONVERT_TYPE_BUTTON("AD_CONVERT_TYPE_BUTTON", 5L, "按钮跳转"),
+    AD_CONVERT_TYPE_XPATH("AD_CONVERT_TYPE_XPATH", 6L, "xpath类型转换"),
+    AD_CONVERT_TYPE_VIEW("AD_CONVERT_TYPE_VIEW", 7L, "关键页面浏览"),
+    AD_CONVERT_TYPE_ACTIVE("AD_CONVERT_TYPE_ACTIVE", 8L, "激活"),
+    AD_CONVERT_TYPE_DOWNLOAD_START("AD_CONVERT_TYPE_DOWNLOAD_START", 9L, "下载按钮download_start"),
+    AD_CONVERT_TYPE_QQ("AD_CONVERT_TYPE_QQ", 10L, "qq咨询"),
+    AD_CONVERT_TYPE_LOTTERY("AD_CONVERT_TYPE_LOTTERY", 11L, "抽奖"),
+    AD_CONVERT_TYPE_VOTE("AD_CONVERT_TYPE_VOTE", 12L, "投票"),
+    AD_CONVERT_TYPE_ACTIVE_REGISTER("AD_CONVERT_TYPE_ACTIVE_REGISTER", 13L, "激活且注册"),
+    AD_CONVERT_TYPE_PAY("AD_CONVERT_TYPE_PAY", 14L, "激活且付费"),
+    AD_CONVERT_TYPE_INSTALL_FINISH("AD_CONVERT_TYPE_INSTALL_FINISH", 15L, "安装完成"),
+    AD_CONVERT_TYPE_PHONE_CONFIRM("AD_CONVERT_TYPE_PHONE_CONFIRM", 16L, "智能电话-确认拨打"),
+    AD_CONVERT_TYPE_PHONE_CONNECT("AD_CONVERT_TYPE_PHONE_CONNECT", 17L, "智能电话-确认接通"),
+    AD_CONVERT_TYPE_PHONE_EFFECTIVE("AD_CONVERT_TYPE_PHONE_EFFECTIVE", 18L, "智能电话-有效接通"),
+    AD_CONVERT_TYPE_CONSULT_EFFECTIVE("AD_CONVERT_TYPE_CONSULT_EFFECTIVE", 19L, "有效咨询"),
+    AD_CONVERT_TYPE_APP_ORDER("AD_CONVERT_TYPE_APP_ORDER", 20L, "app内下单(电商)"),
+    AD_CONVERT_TYPE_APP_UV("AD_CONVERT_TYPE_APP_UV", 21L, "app内访问"),
+    AD_CONVERT_TYPE_APP_CART("AD_CONVERT_TYPE_APP_CART", 22L, "app内添加购物车(电商)"),
+    AD_CONVERT_TYPE_APP_PAY("AD_CONVERT_TYPE_APP_PAY", 23L, "app内付费"),
+    AD_CONVERT_TYPE_SALES_LEAD("AD_CONVERT_TYPE_SALES_LEAD", 24L, "销售线索"),
+    AD_CONVERT_TYPE_GAME_ADDICTION("AD_CONVERT_TYPE_GAME_ADDICTION", 25L, "关键行为(原深度转化)"),
+    AD_CONVERT_TYPE_CUSTOMER_EFFECTIVE("AD_CONVERT_TYPE_CUSTOMER_EFFECTIVE", 26L, "有效获客"),
+    AD_CONVERT_TYPE_EFFECTIVE_COPY("AD_CONVERT_TYPE_EFFECTIVE_COPY", 27L, "关键页面到达&有效内容复制"),
+    AD_CONVERT_TYPE_COUPON("AD_CONVERT_TYPE_COUPON", 28L, "卡券领取"),
+    AD_CONVERT_TYPE_APP_DETAIL_UV("AD_CONVERT_TYPE_APP_DETAIL_UV", 29L, "app内详情页到站uv"),
+    AD_CONVERT_TYPE_RSS("AD_CONVERT_TYPE_RSS", 30L, "账号关注"),
+    AD_CONVERT_TYPE_FORM_CONNECT("AD_CONVERT_TYPE_FORM_CONNECT", 31L, "表单提交-已接通"),
+    AD_CONVERT_TYPE_FORM_ANSWER("AD_CONVERT_TYPE_FORM_ANSWER", 32L, "有效沟通"),
+    AD_CONVERT_TYPE_DIALBACK("AD_CONVERT_TYPE_DIALBACK", 33L, "提交回呼电话"),
+    AD_CONVERT_TYPE_DIALBACK_CONFIRM("AD_CONVERT_TYPE_DIALBACK_CONFIRM", 34L, "回呼电话-确认拨打"),
+    AD_CONVERT_TYPE_DIALBACK_CONNECT("AD_CONVERT_TYPE_DIALBACK_CONNECT", 35L, "回呼电话-确认接通"),
+    AD_CONVERT_TYPE_FORM_DEEP("AD_CONVERT_TYPE_FORM_DEEP", 36L, "分层表单"),
+    AD_CONVERT_TYPE_UPDATE_LEVEL("AD_CONVERT_TYPE_UPDATE_LEVEL", 37L, "激活且升级"),
+    AD_CONVERT_TYPE_CREATE_GAMEROLE("AD_CONVERT_TYPE_CREATE_GAMEROLE", 38L, "激活且创建角色"),
+    AD_CONVERT_TYPE_NEXT_DAY_OPEN("AD_CONVERT_TYPE_NEXT_DAY_OPEN", 39L, "激活且次留"),
+    AD_CONVERT_TYPE_INVALID_CLUE("AD_CONVERT_TYPE_INVALID_CLUE", 40L, "无效线索"),
+    AD_CONVERT_TYPE_INTENTION_CLUE("AD_CONVERT_TYPE_INTENTION_CLUE", 41L, "有意向客户"),
+    AD_CONVERT_TYPE_HIGH_VALUE_CLUE("AD_CONVERT_TYPE_HIGH_VALUE_CLUE", 42L, "高价值客户"),
+    AD_CONVERT_TYPE_PAID_CLUE("AD_CONVERT_TYPE_PAID_CLUE", 43L, "已成单"),
+    AD_CONVERT_TYPE_NATIVE_ACTION("AD_CONVERT_TYPE_NATIVE_ACTION", 44L, "原生互动"),
+    AD_CONVERT_TYPE_LIKE_ACTION("AD_CONVERT_TYPE_LIKE_ACTION", 45L, "视频点赞"),
+    AD_CONVERT_TYPE_FOLLOW_ACTION("AD_CONVERT_TYPE_FOLLOW_ACTION", 46L, "账户关注"),
+    AD_CONVERT_TYPE_COMMENT_ACTION("AD_CONVERT_TYPE_COMMENT_ACTION", 47L, "视频评论"),
+    AD_CONVERT_TYPE_LOCATION_ACTION("AD_CONVERT_TYPE_LOCATION_ACTION", 48L, "POI点击"),
+    AD_CONVERT_TYPE_SHOPPING_ACTION("AD_CONVERT_TYPE_SHOPPING_ACTION", 49L, "购物车点击"),
+    AD_CONVERT_TYPE_REDIRECT_TO_SHOP("AD_CONVERT_TYPE_REDIRECT_TO_SHOP", 50L, "调起店铺"),
+    AD_CONVERT_TYPE_LINK_ACTION("AD_CONVERT_TYPE_LINK_ACTION", 51L, "link点击"),
+    AD_CONVERT_TYPE_DEEP_PURCHASE("AD_CONVERT_TYPE_DEEP_PURCHASE", 52L, "多次付费"),
+    AD_CONVERT_TYPE_SUCCESSORDER_ACTION("AD_CONVERT_TYPE_SUCCESSORDER_ACTION", 53L, "小店转化"),
+    AD_CONVERT_TYPE_POI_COLLECT("AD_CONVERT_TYPE_POI_COLLECT", 60L, "poi地址点击"),
+    AD_CONVERT_TYPE_POI_ADDRESS_CLICK("AD_CONVERT_TYPE_POI_ADDRESS_CLICK", 61L, "poi收藏"),
+    AD_CONVERT_TYPE_RESERVATION("AD_CONVERT_TYPE_RESERVATION", 62L, "poi预定"),
+    AD_CONVERT_TYPE_MESSAGE_ACTION("AD_CONVERT_TYPE_MESSAGE_ACTION", 63L, "私信消息"),
+    AD_CONVERT_TYPE_SHARE_ACTION("AD_CONVERT_TYPE_SHARE_ACTION", 65L, "分享"),
+    AD_CONVERT_TYPE_CLICK_LANDING_PAGE("AD_CONVERT_TYPE_CLICK_LANDING_PAGE", 66L, "访问推广详情页"),
+    AD_CONVERT_TYPE_CLICK_SHOPWINDOW("AD_CONVERT_TYPE_CLICK_SHOPWINDOW", 67L, "访问主页商品橱窗"),
+    AD_CONVERT_TYPE_CLICK_DOWNLOAD("AD_CONVERT_TYPE_CLICK_DOWNLOAD", 68L, "访问主页下载应用"),
+    AD_CONVERT_TYPE_CLICK_CALL_DY("AD_CONVERT_TYPE_CLICK_CALL_DY", 69L, "点击主页内电话拨打"),
+    AD_CONVERT_TYPE_CLICK_WEBSITE("AD_CONVERT_TYPE_CLICK_WEBSITE", 70L, "访问主页官网"),
+    AD_CONVERT_PAGE_VIEW("AD_CONVERT_PAGE_VIEW", 93L, "访问目标页面"),
+    AD_CONVERT_TYPE_MESSAGE("AD_CONVERT_TYPE_MESSAGE", 94L, "短信"),
+    AD_CONVERT_TYPE_REDIRECT("AD_CONVERT_TYPE_REDIRECT", 95L, "页面跳转"),
+    AD_CONVERT_TYPE_SHOPPING("AD_CONVERT_TYPE_SHOPPING", 96L, "商品购买"),
+    AD_CONVERT_TYPE_CONSULT("AD_CONVERT_TYPE_CONSULT", 97L, "在线咨询"),
+    AD_CONVERT_TYPE_WECHAT("AD_CONVERT_TYPE_WECHAT", 98L, "微信"),
+    AD_CONVERT_TYPE_OTHER("AD_CONVERT_TYPE_OTHER", 99L, "其他"),
+    AD_CONVERT_TYPE_MULTIPLE("AD_CONVERT_TYPE_MULTIPLE", 100L, "多转化事件"),
+    AD_CONVERT_TYPE_POI_MULTIPLE("AD_CONVERT_TYPE_POI_MULTIPLE", 101L, "POI门店多转化目标"),
+    AD_CONVERT_TYPE_MULTI_NATIVE_ACTION("AD_CONVERT_TYPE_MULTI_NATIVE_ACTION", 102L, "互动"),
+    AD_CONVERT_TYPE_LOAN_COMPLETION("AD_CONVERT_TYPE_LOAN_COMPLETION", 103L, "互联网金融-完件"),
+    AD_CONVERT_TYPE_PRE_LOAN_CREDIT("AD_CONVERT_TYPE_PRE_LOAN_CREDIT", 104L, "互联网金融-预授信"),
+    AD_CONVERT_TYPE_LOAN_CREDIT("AD_CONVERT_TYPE_LOAN_CREDIT", 105L, "互联网金融-授信"),
+    AD_CONVERT_TYPE_IDCARD_INFORMATION("AD_CONVERT_TYPE_IDCARD_INFORMATION", 106L, "身份证信息填写完成"),
+    AD_CONVERT_TYPE_BANKCARD_INFORMATION("AD_CONVERT_TYPE_BANKCARD_INFORMATION", 107L, "银行卡信息填写完成"),
+    AD_CONVERT_TYPE_PERSONAL_INFORMATION("AD_CONVERT_TYPE_PERSONAL_INFORMATION", 108L, "补充个人信息填写完成"),
+    AD_CONVERT_TYPE_CERTIFICATION_INFORMATION("AD_CONVERT_TYPE_CERTIFICATION_INFORMATION", 109L, "用户活体认证信息上传完成"),
+    AD_CONVERT_TYPE_LT_ROI("AD_CONVERT_TYPE_LT_ROI", 110L, "广告变现ROI"),
+    AD_CONVERT_TYPE_LIVE_HOMEPAGE("AD_CONVERT_TYPE_LIVE_HOMEPAGE", 111L, "直播导流"),
+    AD_CONVERT_TYPE_REDIRECT_TO_STORE("AD_CONVERT_TYPE_REDIRECT_TO_STORE", 113L, "店铺导流"),
+    AD_CONVERT_TYPE_FEED_LIVE_HOMEPAGE("AD_CONVERT_TYPE_FEED_LIVE_HOMEPAGE", 120L, "火山feed进入直播页"),
+    AD_CONVERT_TYPE_AUTHORIZATION("AD_CONVERT_TYPE_AUTHORIZATION", 121L, "授权(电商)"),
+    AD_CONVERT_TYPE_COMMODITY_CLICK("AD_CONVERT_TYPE_COMMODITY_CLICK", 122L, "快上电商推广目的"),
+    AD_CONVERT_TYPE_CONSULT_CLUE("AD_CONVERT_TYPE_CONSULT_CLUE", 123L, "留咨咨询"),
+    AD_CONVERT_TYPE_BOOST("AD_CONVERT_TYPE_BOOST", 124L, "自然助推"),
+    AD_CONVERT_TYPE_STAY_TIME("AD_CONVERT_TYPE_STAY_TIME", 125L, "店铺停留"),
+    AD_CONVERT_TYPE_PURCHASE_OF_GOODS("AD_CONVERT_TYPE_PURCHASE_OF_GOODS", 156L, "商品签收"),
+    AD_CONVERT_TYPE_PURCHASE_ROI("AD_CONVERT_TYPE_PURCHASE_ROI", 160L, "付费ROI"),
+    AD_CONVERT_TYPE_LIVE_NATIVE_ACITON("AD_CONVERT_TYPE_LIVE_NATIVE_ACITON", 162L, "直播间原生互动"),
+    AD_CONVERT_TYPE_LIVE_FOLLOW_ACITON("AD_CONVERT_TYPE_LIVE_FOLLOW_ACITON", 163L, "直播间关注"),
+    AD_CONVERT_TYPE_LIVE_COMMENT_ACTION("AD_CONVERT_TYPE_LIVE_COMMENT_ACTION", 164L, "直播间评论"),
+    AD_CONVERT_TYPE_LIVE_GIFT_ACTION("AD_CONVERT_TYPE_LIVE_GIFT_ACTION", 165L, "直播间内打赏"),
+    AD_CONVERT_TYPE_LIVE_SLIDECART_CLICK_ACTION("AD_CONVERT_TYPE_LIVE_SLIDECART_CLICK_ACTION", 166L, "直播间查看购物车"),
+    AD_CONVERT_TYPE_LIVE_CLICK_PRODUCT_ACTION("AD_CONVERT_TYPE_LIVE_CLICK_PRODUCT_ACTION", 167L, "直播间查看商品"),
+    AD_CONVERT_TYPE_LIVE_ENTER_ACTION("AD_CONVERT_TYPE_LIVE_ENTER_ACTION", 171L, "直播间观看"),
+    AD_CONVERT_TYPE_LIVE_SUCCESSORDER_ACTION("AD_CONVERT_TYPE_LIVE_SUCCESSORDER_ACTION", 172L, "直播间成单"),
+    AD_CONVERT_TYPE_NOTIFY_DOWNLOAD("AD_CONVERT_TYPE_NOTIFY_DOWNLOAD", 173L, "预约下载"),
+    AD_CONVERT_TYPE_PREMIUM_PAYMENT("AD_CONVERT_TYPE_PREMIUM_PAYMENT", 174L, "保险支付"),
+    AD_CONVERT_TYPE_MESSAGE_CLICK("AD_CONVERT_TYPE_MESSAGE_CLICK", 177L, "私信点击"),
+    AD_CONVERT_TYPE_UG_ROI("AD_CONVERT_TYPE_UG_ROI", 178L, "内广roi"),
+    AD_CONVERT_TYPE_ENTER_HOMEPAGE("AD_CONVERT_TYPE_ENTER_HOMEPAGE", 181L, "进入个人主页"),
+    AD_CONVERT_TYPE_SHOPPING_CART("AD_CONVERT_TYPE_SHOPPING_CART", 182L, "商品购物车点击"),
+    AD_CONVERT_TYPE_WECHAT_REGISTER("AD_CONVERT_TYPE_WECHAT_REGISTER", 183L, "微信内注册"),
+    AD_CONVERT_TYPE_WECHAT_PAY("AD_CONVERT_TYPE_WECHAT_PAY", 184L, "微信内付费"),
+    AD_CONVERT_TYPE_MESSAGE_INTERACTION("AD_CONVERT_TYPE_MESSAGE_INTERACTION", 185L, "沟通互动"),
+    AD_CONVERT_TYPE_LIVE_STAY_TIME("AD_CONVERT_TYPE_LIVE_STAY_TIME", 186L, "直播间停留"),
+    AD_CONVERT_TYPE_NEW_FOLLOW_ACTION("AD_CONVERT_TYPE_NEW_FOLLOW_ACTION", 187L, "粉丝增长"),
+    AD_CONVERT_TYPE_APPLET_CLICK("AD_CONVERT_TYPE_APPLET_CLICK", 189L, "小程序互动"),
+    AD_CONVERT_TYPE_MESSAGE_SERVICE("AD_CONVERT_TYPE_MESSAGE_SERVICE", 190L, "私信服务"),
+    AD_CONVERT_TYPE_MESSAGE_CLUE("AD_CONVERT_TYPE_MESSAGE_CLUE", 192L, "私信留资"),
+    AD_CONVERT_TYPE_LIVE_FANS_ACTION("AD_CONVERT_TYPE_LIVE_FANS_ACTION", 193L, "直播间加入粉丝团"),
+    AD_CONVERT_TYPE_CLUE_CONFIRM("AD_CONVERT_TYPE_CLUE_CONFIRM", 194L, "回访_信息确认"),
+    AD_CONVERT_TYPE_CLUE_INTERFLOW("AD_CONVERT_TYPE_CLUE_INTERFLOW", 195L, "回访_加为好友"),
+    AD_CONVERT_TYPE_CLUE_HIGH_INTENTION("AD_CONVERT_TYPE_CLUE_HIGH_INTENTION", 196L, "回访_高潜成交"),
+    AD_CONVERT_TYPE_LIVE_COMPONENT_CLICK("AD_CONVERT_TYPE_LIVE_COMPONENT_CLICK", 215L, "组件点击");
+
+
+    private String code;
+    private Long num;
+    private String desc;
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public Long getNum() {
+        return num;
+    }
+
+    public void setNum(Long num) {
+        this.num = num;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+
+    BytedanceConvertType(String code, Long num, String desc) {
+        this.code = code;
+        this.num = num;
+        this.desc = desc;
+    }
+
+    public static Long getNum(String code) {
+        for (BytedanceConvertType convertType : BytedanceConvertType.values()) {
+            if (convertType.getCode().equals(code.trim())) {
+                return convertType.getNum();
+            }
+        }
+        return null;
+    }
+}

+ 108 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/enums/MaterialEnum.java

@@ -0,0 +1,108 @@
+package cn.com.ctop.common.module.enums;
+
+/**
+ * 素材类型
+ */
+public enum MaterialEnum {
+
+
+    VerticalVideoSmall(1, 720, 1280),
+    VerticalVideo787Small(1, 787, 1280),
+    VerticalVideo846Small(1, 846, 1536),
+    VerticalVideo1080mall(1, 1080, 2200),
+    VerticalVideoBig(1, 1080, 1920),
+    VerticalVideo360(1, 360, 640),
+    VerticalVideo362(1, 362, 640),
+    VerticalVideo368(1, 368, 490),
+    VerticalVideo363(1, 363, 640),
+    VerticalVideo438(1, 438, 640),
+    VerticalVideo480(1, 480, 640),
+    VerticalVideo525(1, 525, 640),
+    VerticalVideo540(1, 540, 960),
+    VerticalVideo544(1, 544, 726),
+    VerticalVideo590(1, 590, 1280),
+    VerticalVideo694(1, 694, 1236),
+    VerticalVideo704(1, 704, 1252),
+    VerticalVideo710(1, 710, 1264),
+    VerticalVideo714(1, 714, 1270),
+    VerticalVideo716(1, 716, 1276),
+    VerticalVideo718(1, 718, 1278),
+    VerticalVideo719(1, 719, 1170),
+    VerticalVideo720(1, 720, 960),
+    VerticalVideo750(1, 750, 1334),
+    VerticalVideo787(1, 787, 1280),
+    VerticalVideo864(1, 864, 1536),
+    VerticalVideo1088(1, 1088, 1920),
+    VerticalVideo1181(1, 1181, 1920),
+    VerticalVideo1216(1, 1216, 2160),
+    VerticalVideo1296(1, 1296, 2304),
+    VerticalVideo1440(1, 1440, 2560),
+    VerticalVideo2160(1, 2160, 3840),
+    HorizontalVideoSmall(2, 1280, 720),
+    HorizontalVideoBig(2, 1920, 1080),
+    HorizontalVideo640(2, 640, 368),
+    HorizontalVideo1281(2, 1281, 720),
+    HorizontalVideo1400(2, 1400, 720),
+    HorizontalVideo1700(2, 1700, 1080),
+    HorizontalVideo1902(2, 1902, 1080),
+    HorizontalVideo1920(2, 1920, 1080),
+    BianlitieImageBig(4, 540, 540),
+    BianLitieImageSmall(4, 450, 450);
+
+    private Integer type;
+    private Integer width;
+    private Integer height;
+
+
+    private MaterialEnum(Integer type, Integer width, Integer height) {
+        this.type = type;
+        this.width = width;
+        this.height = height;
+    }
+
+    public static Integer getTypeBySize(Integer widthStr, Integer heightStr) {
+        for (MaterialEnum material : MaterialEnum.values()) {
+            Integer width = material.getWidth();
+            Integer height = material.getHeight();
+            if (widthStr.equals(width) && heightStr.equals(height)) {
+                return material.getType();
+            }
+        }
+
+        return 1;
+    }
+
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public Integer getWidth() {
+        return width;
+    }
+
+    public void setWidth(Integer width) {
+        this.width = width;
+    }
+
+    public Integer getHeight() {
+        return height;
+    }
+
+    public void setHeight(Integer height) {
+        this.height = height;
+    }
+
+    @Override
+    public String toString() {
+        return "MaterialEnum{" +
+                "type=" + type +
+                ", width=" + width +
+                ", height=" + height +
+                '}';
+    }
+}

+ 71 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/enums/MaterialSupplierEnum.java

@@ -0,0 +1,71 @@
+package cn.com.ctop.common.module.enums;
+
+/**
+ * 素材类型
+ */
+public enum MaterialSupplierEnum {
+
+
+    VerticalVideoSmall(559368L, 720, 1280),
+    VerticalVideoBig(560827L, 1080, 1920),
+    HorizontalVideoSmall(560828L, 1280, 720),
+    HorizontalVideoBig(560829L, 1920, 1080);
+
+
+    private Long templateId;
+    private Integer width;
+    private Integer height;
+
+
+    private MaterialSupplierEnum(Long templateId, Integer width, Integer height) {
+        this.templateId = templateId;
+        this.width = width;
+        this.height = height;
+    }
+
+    public static Long getTemplateIdBySize(Integer widthStr, Integer heightStr) {
+        for (MaterialSupplierEnum material : MaterialSupplierEnum.values()) {
+            Integer width = material.getWidth();
+            Integer height = material.getHeight();
+            if (widthStr.equals(width)  && heightStr.equals(height)) {
+                return material.getTemplateId();
+            }
+        }
+
+        return 0L;
+    }
+
+
+    public Long getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(Long templateId) {
+        this.templateId = templateId;
+    }
+
+    public Integer getWidth() {
+        return width;
+    }
+
+    public void setWidth(Integer width) {
+        this.width = width;
+    }
+
+    public Integer getHeight() {
+        return height;
+    }
+
+    public void setHeight(Integer height) {
+        this.height = height;
+    }
+
+    @Override
+    public String toString() {
+        return "MaterialSupplierEnum{" +
+                "templateId=" + templateId +
+                ", width=" + width +
+                ", height=" + height +
+                '}';
+    }
+}

+ 44 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/enums/SceneIdEnum.java

@@ -0,0 +1,44 @@
+package cn.com.ctop.common.module.enums;
+
+/**
+ * 条件枚举
+ *
+ * @param
+ * @author ZHAOXA
+ * @return
+ * @throws
+ */
+public enum SceneIdEnum {
+    ONE(1, "优选广告位"),
+    THREE(3, "视频播放页广告"),
+    FIVE(5, "联盟广告"),
+    SIX(6, "上下滑大屏广告"),
+    SEVEN(7, "信息流广告"),
+    TEN(10, "激励视频"),
+    ELEVEN(11, "快看点场景");
+
+    private Integer id;
+    private String name;
+
+    private SceneIdEnum(Integer id, String name) {
+        this.id = id;
+        this.name = name;
+    }
+
+    public static SceneIdEnum getEnumById(Integer id) {
+        for (SceneIdEnum em : SceneIdEnum.values()) {
+            if (em.id.equals(id)) {
+                return em;
+            }
+        }
+        return null;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+}

+ 119 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/file/FileType.java

@@ -0,0 +1,119 @@
+package cn.com.ctop.common.module.file;
+
+/**
+ * 文件类型枚取
+ */
+public enum FileType {
+
+	JPEG("FFD8FF"),//JPEG (jpg)
+
+	PNG("89504E47"),//PNG (png)
+
+	GIF("47494638"),//GIF (gif)
+
+	TIFF("49492A00"),//TIFF (tif)
+
+	BMP("424D"),//Windows Bitmap (bmp)
+
+	DWG("41433130"),//CAD (dwg)
+
+	PSD("38425053"),// Adobe Photoshop.
+
+	RTF("7B5C727466"),// Rich Text Format.
+
+	XML("3C3F786D6C"),// XML.
+
+	HTML("68746D6C3E"),//HTML (html)
+
+	CSS("48544D4C207B0D0A0942"),// CSS.
+
+	JS("696B2E71623D696B2E71"),// JS.
+
+	EML("44656C69766572792D646174653A"),// Email [thorough only].
+
+	DBX("CFAD12FEC5FD746F"),// Outlook Express.
+
+	PST("2142444E"),// Outlook (pst).
+
+	XLS_DOC("D0CF11E0"), // MS Word/Excel.
+
+	XLSX_DOCX("504B030414000600080000002100"),// MS Word/Excel.
+
+	WPSUSER("504B03040A0000000000"),// WPS(个人版)文字wps、表格et、演示dps都是一样的
+
+	WPS("D0CF11E0A1B11AE10000"),// WPS(专业版)文字wps、表格et、演示dps都是一样的
+
+	VSD("d0cf11e0a1b11ae10000"),// Visio
+
+	MDB("5374616E64617264204A"),// MS Access.
+
+	TORRENT("6431303A637265617465"),// torrent
+
+	WPD("FF575043"),// WordPerfect.
+
+	EPS("252150532D41646F6265"),// Postscript.
+
+	PDF("255044462D312E"),// Adobe Acrobat.
+
+	QDF("AC9EBD8F"),// Quicken.
+
+	PWL("E3828596"),// Windows Password.
+
+	ZIP("504B03040A000008"),// ZIP Archive.
+
+	RAR("52617221"),// RAR Archive.
+
+	JSP("3C2540207061676520"),// JSP Archive.
+
+	JAVA("7061636B61676520"),// JAVA Archive.
+
+	JAR("504B03040A000000"),// JAR Archive.
+
+	MF("4D616E69666573742D56"),// MF Archive.
+
+	EXE("4D5A9000030000000400"),// EXE Archive.
+
+	CHM("49545346030000006000"),// CHM Archive.
+
+	WAV("57415645"),// Wave.
+
+	AVI("41564920"),// AVI.
+
+	RAM("2E7261FD"),// Real Audio.
+
+	RM("2E524D46"),// Real Media.
+
+	MPG("000001BA"),// MPEG (mpg).
+
+	MOV("6D6F6F76"),// Quicktime.
+
+	ASF("3026B2758E66CF11"),// Windows Media.
+
+	MID("4D546864"),// MIDI.
+
+	MP4("00000020667479706d70"),// MP4.
+
+	MP3("49443303000000002176"),// MP3.
+
+	FLV("464C5601050000000900");// FLV.
+
+	private String value = "";
+
+	/**
+	 * Constructor.
+	 *
+	 * @param type
+	 */
+	private FileType(String value) {
+		this.value = value;
+	}
+
+	public String getValue() {
+		return value;
+	}
+
+	public void setValue(String value) {
+		this.value = value;
+	}
+
+}

+ 139 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/file/FileTypeJudge.java

@@ -0,0 +1,139 @@
+package cn.com.ctop.common.module.file;
+
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+* 文件类型判断类
+*/
+@Component
+public class FileTypeJudge {
+
+   /**
+    * 将文件头转换成16进制字符串
+    * @return 16进制字符串
+    */
+   private static String bytesToHexString(byte[] src) {
+
+       StringBuilder stringBuilder = new StringBuilder();
+       if (src == null || src.length <= 0) {
+           return null;
+       }
+       for (int i = 0; i < src.length; i++) {
+           int v = src[i] & 0xFF;
+           String hv = Integer.toHexString(v);
+           if (hv.length() < 2) {
+               stringBuilder.append(0);
+           }
+           stringBuilder.append(hv);
+       }
+       return stringBuilder.toString();
+   }
+
+   /**
+    * 得到文件头
+    * @return 文件头
+    * @throws IOException ex
+    */
+   private static String getFileContent(InputStream is) throws IOException {
+
+       byte[] b = new byte[28];
+
+       InputStream inputStream = null;
+
+       try {
+           is.read(b, 0, 28);
+       } catch (IOException e) {
+           e.printStackTrace();
+           throw e;
+       } finally {
+           if (inputStream != null) {
+               try {
+                   inputStream.close();
+               } catch (IOException e) {
+                   e.printStackTrace();
+                   throw e;
+               }
+           }
+       }
+       return bytesToHexString(b);
+   }
+
+   /**
+    * 判断文件类型
+    * @return 文件类型
+    */
+   public static FileType getType(InputStream is) throws IOException {
+
+       String fileHead = getFileContent(is);
+
+       if (fileHead == null || fileHead.length() == 0) {
+           return null;
+       }
+
+       fileHead = fileHead.toUpperCase();
+
+       FileType[] fileTypes = FileType.values();
+
+
+       for (FileType type : fileTypes) {
+           if (fileHead.startsWith(type.getValue())) {
+               return type;
+           }
+       }
+
+       return null;
+   }
+
+   public static Integer isFileType(FileType value) {
+       int type = 7;// 其他
+       // 图片
+       FileType[] pics = { FileType.JPEG, FileType.PNG, FileType.GIF, FileType.TIFF, FileType.BMP, FileType.DWG, FileType.PSD };
+
+       FileType[] docs = { FileType.RTF, FileType.XML, FileType.HTML, FileType.CSS, FileType.JS, FileType.EML, FileType.DBX, FileType.PST, FileType.XLS_DOC, FileType.XLSX_DOCX, FileType.VSD,
+               FileType.MDB, FileType.WPS, FileType.WPD, FileType.EPS, FileType.PDF, FileType.QDF, FileType.PWL, FileType.ZIP, FileType.RAR, FileType.JSP, FileType.JAVA,
+               FileType.JAR, FileType.MF, FileType.EXE, FileType.CHM };
+
+       FileType[] videos = { FileType.AVI, FileType.RAM, FileType.RM, FileType.MPG, FileType.MOV, FileType.ASF, FileType.MP4, FileType.FLV, FileType.MID };
+
+       FileType[] tottents = { FileType.TORRENT };
+
+       FileType[] audios = { FileType.WAV, FileType.MP3 };
+
+       FileType[] others = {};
+
+       // 图片
+       for (FileType fileType : pics) {
+           if (fileType.equals(value)) {
+               type = 1;
+           }
+       }
+       // 文档
+       for (FileType fileType : docs) {
+           if (fileType.equals(value)) {
+               type = 2;
+           }
+       }
+       // 视频
+       for (FileType fileType : videos) {
+           if (fileType.equals(value)) {
+               type = 3;
+           }
+       }
+       // 种子
+       for (FileType fileType : tottents) {
+           if (fileType.equals(value)) {
+               type = 4;
+           }
+       }
+       // 音乐
+       for (FileType fileType : audios) {
+           if (fileType.equals(value)) {
+               type = 5;
+           }
+       }
+       return type;
+   }
+}

+ 113 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/file/FileUtil.java

@@ -0,0 +1,113 @@
+package cn.com.ctop.common.module.file;
+
+import java.nio.charset.StandardCharsets;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Random;
+
+public class FileUtil {
+
+    // office
+    private static String[] office = {"word", "excel", "ppt"};
+
+    // excel
+    private static String[] etExts = {"et", "xls", "xlt", "xlsx", "xlsm", "xltx", "xltm", "csv"};
+
+    // word
+    private static String[] wpsExts = {"doc", "docx", "txt", "dot", "wps", "wpt", "dotx", "docm", "dotm"};
+
+    // ppt
+    private static String[] wppExts = {"ppt", "pptx", "pptm", "pptm", "ppsm", "pps", "potx", "potm", "dpt", "dps"};
+
+    // pdf
+    private static String[] pdfExts = {"pdf"};
+
+    public static String getFileTypeCode(String fileType){
+        for (String et : etExts){
+            if (et.equalsIgnoreCase(fileType)){
+                return "s";
+            }
+        }
+        for (String et : wpsExts){
+            if (et.equalsIgnoreCase(fileType)){
+                return "w";
+            }
+        }
+        for (String et : wppExts){
+            if (et.equalsIgnoreCase(fileType)){
+                return "p";
+            }
+        }
+        for (String et : pdfExts){
+            if (et.equalsIgnoreCase(fileType)){
+                return "f";
+            }
+        }
+        return null;
+    }
+
+    public static boolean checkCode(String fileType){
+        for (String et : office){
+            if (et.equalsIgnoreCase(fileType)){
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public static String getTypeCode(String fileType){
+        if ("word".equalsIgnoreCase(fileType)){
+            return "w";
+        }if ("excel".equalsIgnoreCase(fileType)){
+            return "s";
+        }if ("ppt".equalsIgnoreCase(fileType)){
+            return "p";
+        }
+        return null;
+    }
+
+    public static String getFileName(String filePath){
+        String[] pathArr = filePath.split("/");
+        String fileName ;
+        if (pathArr.length>1){
+            fileName = pathArr[pathArr.length-1];
+        }else {
+            fileName = filePath;
+        }
+        return fileName;
+    }
+
+    public static String getFileTypeByPath(String filePath){
+        String fileName = getFileName(filePath);
+        String[] arr = fileName.split("\\.");
+        return arr[arr.length-1];
+    }
+
+    public static String getFileTypeByName(String fileName){
+        String[] arr = fileName.split("\\.");
+        return arr[arr.length-1];
+    }
+
+    public static String getFileUUIDName(String fileName,String fileType){
+        String uuid = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
+        String uuidFileName = fileName.replace(".","").replace(fileType,"") + uuid + "." + fileType ;
+        return new String(uuidFileName.getBytes(), StandardCharsets.UTF_8);
+    }
+
+    public static String makeNewFileName(String oldFileName){
+        String fileType = FileUtil.getFileTypeByName(oldFileName);
+        String tempFileName = oldFileName.replace("."+fileType,"");
+        Random ne = new Random();//实例化一个random的对象ne
+        int uuid = ne.nextInt(90000)+10000;//为变量赋随机值10000-99999
+        return  tempFileName + uuid + "." + fileType;
+    }
+
+    public static String makeNewFileName(String oldFileName,String fileType){
+        String tempFileName = oldFileName.replace("."+fileType,"");
+        Random ne = new Random();//实例化一个random的对象ne
+        int uuid = ne.nextInt(90000)+10000;//为变量赋随机值10000-99999
+        return  tempFileName + uuid + "." + fileType;
+    }
+
+
+}

+ 14 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/BindAccountAuthMapper.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.common.module.mapper;
+
+import cn.com.ctop.common.module.entity.BindAccountAuth;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 账号绑定-授权
+ * @Author: jeecg-boot
+ * @Date: 2019-07-31
+ * @Version: V1.0
+ */
+public interface BindAccountAuthMapper extends BaseMapper<BindAccountAuth> {
+
+}

+ 25 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/BindAccountLoginMapper.java

@@ -0,0 +1,25 @@
+package cn.com.ctop.common.module.mapper;
+
+import cn.com.ctop.common.module.entity.BindAccountLogin;
+import cn.com.ctop.common.module.vo.PangolinAccountVO;
+import cn.com.ctop.common.module.vo.PangolinProjectVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @Description: 账号绑定-登陆
+ * @Author: jeecg-boot
+ * @Date: 2019-07-31
+ * @Version: V1.0
+ */
+public interface BindAccountLoginMapper extends BaseMapper<BindAccountLogin> {
+
+    List<PangolinProjectVO> getProjectByParams(@Param(value = "userId") String userId,
+                                               @Param(value = "loginType") String loginType,
+                                               @Param(value = "projectId") Long projectId);
+    List<PangolinAccountVO> getAccountByParams(@Param(value = "userId") String userId,
+                                              @Param(value = "loginType") String loginType,
+                                              @Param(value = "projectId") Long projectId);
+}

+ 15 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/ByteDanceCleanMaterialReportMapper.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.common.module.mapper;
+
+import cn.com.ctop.common.module.entity.ByteDanceCleanMaterialReport;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 头条-数据清洗
+ *
+ * @author: jeecg-boot
+ * @date: 2020-02-25
+ * @cersion: V1.0
+ */
+public interface ByteDanceCleanMaterialReportMapper extends BaseMapper<ByteDanceCleanMaterialReport> {
+
+}

+ 18 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/CorpFeishuUserMapper.java

@@ -0,0 +1,18 @@
+package cn.com.ctop.common.module.mapper;
+
+import cn.com.ctop.common.module.entity.CorpFeishuUser;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 飞书用户信息
+ * @author: jeecg-boot
+ * @date:   2020-06-23
+ * @cersion: V1.0
+ */
+public interface CorpFeishuUserMapper extends BaseMapper<CorpFeishuUser> {
+
+    List<String> getOpenIdByParams(@Param(value = "projectId") Long projectId);
+}

+ 18 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/CtopCorpWexinUserMapper.java

@@ -0,0 +1,18 @@
+package cn.com.ctop.common.module.mapper;
+
+import cn.com.ctop.common.module.entity.CtopCorpWexinUser;
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 企业微信用户表
+ *
+ * @author: jeecg-boot
+ * @date: 2019-12-08
+ * @cersion: V1.0
+ */
+public interface CtopCorpWexinUserMapper extends BaseMapper<CtopCorpWexinUser> {
+
+    String queryEmailByUserId(@Param("userId") String userId);
+
+}

+ 62 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/CtopOauthTokenMapper.java

@@ -0,0 +1,62 @@
+package cn.com.ctop.common.module.mapper;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @Description: oauth授权码
+ * @Author: jeecg-boot
+ * @Date: 2019-07-09
+ * @Version: V1.0
+ */
+public interface CtopOauthTokenMapper extends BaseMapper<CtopOauthToken> {
+    /**
+     * 更新
+     *
+     * @param oauthToken
+     * @return
+     */
+    int updateByPrimaryKeySelective(CtopOauthToken oauthToken);
+
+    /**
+     * 根据accountId查询
+     *
+     * @param accountId
+     * @return
+     */
+    CtopOauthToken selectByAccountId(Long accountId);
+
+    List<CtopOauthToken> selectKuaiShouToken();
+
+    List<CtopOauthToken> selectKuaiShouTokenBefore();
+
+    List<CtopOauthToken> selectToutiaoToken();
+
+    CtopOauthToken getAccessTokenByAccountIdAndMediaId(@Param("mediaId") Integer mediaId, @Param("accountId") Long accountId);
+
+    List<CtopOauthToken> getToutiaoTokenByCreateTime(@Param("createTime") String createTime);
+
+    /**
+     * 查询头条token
+     *
+     * @param platformTypeByteDance
+     * @return
+     */
+    List<CtopOauthToken> selectByteDanceTokens(@Param("mediaId") String platformTypeByteDance);
+
+
+    /**
+     * 查询头条token
+     *
+     * @param platformTypeByteDance
+     * @return
+     */
+    List<CtopOauthToken> selectKuaiShouTokens(@Param("mediaId") String platformTypeByteDance);
+
+    List<CtopOauthToken> queryKsValidRuleAccountsToken();
+
+    List<CtopOauthToken> queryTtValidRuleAccountsToken();
+}

+ 30 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/CustomDataByAccountMapper.java

@@ -0,0 +1,30 @@
+package cn.com.ctop.common.module.mapper;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.ibatis.annotations.Param;
+
+public interface CustomDataByAccountMapper {
+
+    //快手查询广告组日报数据
+    JSONObject queryKsGroupData(@Param("accountId") Long accountId,@Param("date") String date);
+
+    //快手查询广告计划日报数据
+    JSONObject queryKsCampaignData(@Param("accountId") Long accountId,@Param("date") String date);
+
+    //快手查询账户日报数据
+    JSONObject queryKsAccountData(@Param("accountId") Long accountId,@Param("date") String date);
+
+
+    //快手查询物料日报数据
+    JSONObject queryKsMaterialData(@Param("accountId") Long accountId,@Param("days") Integer days);
+
+    //头条查询广告组日报数据
+    JSONObject queryByCampaignData(@Param("accountId") Long accountId,@Param("date") String date);
+
+    //头条查询广告计划日报数据
+    JSONObject queryByPlanData(@Param("accountId") Long accountId,@Param("date") String date);
+
+    //头条查询账户日报数据
+    JSONObject queryByAccountData(@Param("accountId") Long accountId,@Param("date") String date);
+
+}

+ 14 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/FileInfoMapper.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.common.module.mapper;
+
+import cn.com.ctop.common.module.entity.FileInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 文件信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-28
+ * @Version: V1.0
+ */
+public interface FileInfoMapper extends BaseMapper<FileInfo> {
+
+}

+ 7 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/IpPoolMapper.java

@@ -0,0 +1,7 @@
+package cn.com.ctop.common.module.mapper;
+
+import cn.com.ctop.common.module.entity.IpPool;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface IpPoolMapper extends BaseMapper<IpPool> {
+}

+ 15 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/KuaiShouOcpxActionTypeConfigMapper.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.common.module.mapper;
+
+import cn.com.ctop.common.module.entity.KuaiShouOcpxActionTypeConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 转化目标字典表
+ *
+ * @author: jeecg-boot
+ * @date: 2021-02-22
+ * @cersion: V1.0
+ */
+public interface KuaiShouOcpxActionTypeConfigMapper extends BaseMapper<KuaiShouOcpxActionTypeConfig> {
+
+}

+ 30 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/MailLogMapper.java

@@ -0,0 +1,30 @@
+package cn.com.ctop.common.module.mapper;
+
+import cn.com.ctop.common.module.entity.MailLog;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 邮箱记录表
+ *
+ * @author: jeecg-boot
+ * @date: 2019-12-08
+ * @cersion: V1.0
+ */
+public interface MailLogMapper extends BaseMapper<MailLog> {
+
+    Integer selectCountByAccountIdAndDate(@Param("accountId") Long accountId, @Param("createTime") String createTime, @Param("type") Integer type);
+
+    List<String> selectMailList(@Param("projectId") Long projectId);
+
+    List<JSONObject> selectWeiXinIdList(@Param("projectId") Long projectId);
+
+    JSONObject getWChatIdByUserId(@Param("userId") String responsibleId);
+
+    String getUserNameByUserId(@Param("userId") String transferor);
+
+    JSONObject getWeChatByMail(@Param("mail") String mail);
+}

+ 18 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/MaterialAscriptionMapper.java

@@ -0,0 +1,18 @@
+package cn.com.ctop.common.module.mapper;
+
+import cn.com.ctop.common.module.entity.MaterialAscription;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 素材归属标
+ *
+ * @author: jeecg-boot
+ * @date: 2019-11-23
+ * @cersion: V1.0
+ */
+public interface MaterialAscriptionMapper extends BaseMapper<MaterialAscription> {
+
+    JSONObject selectByMaterialId(@Param("materialId") String materialId);
+}

+ 0 - 0
jeecg-boot-common/src/main/java/cn/com/ctop/common/module/mapper/MaterialCutFrameMapper.java


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů