소스 검색

init code

syh 4 년 전
부모
커밋
9e5b5e81bc
31개의 변경된 파일2095개의 추가작업 그리고 170개의 파일을 삭제
  1. 25 2
      xxl-job-executor-springboot/pom.xml
  2. 0 8
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/Test.java
  3. 140 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/controller/AiKuaishouStrategyController.java
  4. 140 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/controller/AiKuaishouStrategyMapCreativeController.java
  5. 140 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/controller/AiKuaishouStrategyTargetDetailsController.java
  6. 35 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/entity/AiKuaishouStrategy.java
  7. 39 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/entity/AiKuaishouStrategyMapCreative.java
  8. 33 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/entity/AiKuaishouStrategyTargetDetails.java
  9. 14 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/mapper/AiKuaishouStrategyMapCreativeMapper.java
  10. 14 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/mapper/AiKuaishouStrategyMapper.java
  11. 14 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/mapper/AiKuaishouStrategyTargetDetailsMapper.java
  12. 5 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/mapper/xml/AiKuaishouStrategyMapCreativeMapper.xml
  13. 5 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/mapper/xml/AiKuaishouStrategyMapper.xml
  14. 5 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/mapper/xml/AiKuaishouStrategyTargetDetailsMapper.xml
  15. 14 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/service/IAiKuaishouStrategyMapCreativeService.java
  16. 14 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/service/IAiKuaishouStrategyService.java
  17. 14 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/service/IAiKuaishouStrategyTargetDetailsService.java
  18. 18 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/service/impl/AiKuaishouStrategyMapCreativeServiceImpl.java
  19. 18 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/service/impl/AiKuaishouStrategyServiceImpl.java
  20. 18 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/service/impl/AiKuaishouStrategyTargetDetailsServiceImpl.java
  21. 113 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/constant/DataBaseConstant.java
  22. 144 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/entity/vo/SysPermissionDataRuleModel.java
  23. 41 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/utils/MatchTypeEnum.java
  24. 55 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/utils/QueryCondition.java
  25. 68 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/utils/QueryRuleEnum.java
  26. 646 0
      xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/utils/oConvertUtils.java
  27. 107 0
      xxl-job-executor-springboot/src/main/resources/application-dev.yml
  28. 107 0
      xxl-job-executor-springboot/src/main/resources/application-prod.yml
  29. 107 0
      xxl-job-executor-springboot/src/main/resources/application-test.yml
  30. 2 118
      xxl-job-executor-springboot/src/main/resources/application.yml
  31. 0 42
      xxl-job-executor-springboot/src/main/resources/bytedance_config.properties

+ 25 - 2
xxl-job-executor-springboot/pom.xml

@@ -166,6 +166,29 @@
             </plugin>
         </plugins>
     </build>
-
-
+    <profiles>
+        <profile>
+            <id>dev</id>
+            <properties>
+                <!-- 环境标识,需要与配置文件的名称相对应 -->
+                <activatedProperties>dev</activatedProperties>
+            </properties>
+            <activation>
+                <!-- 默认环境 -->
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <id>test</id>
+            <properties>
+                <activatedProperties>test</activatedProperties>
+            </properties>
+        </profile>
+        <profile>
+            <id>prod</id>
+            <properties>
+                <activatedProperties>prod</activatedProperties>
+            </properties>
+        </profile>
+    </profiles>
 </project>

+ 0 - 8
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/Test.java

@@ -1,8 +0,0 @@
-package com.xxl.job.executor.ads;
-
-public class Test {
-
-
-
-
-}

+ 140 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/controller/AiKuaishouStrategyController.java

@@ -0,0 +1,140 @@
+package com.xxl.job.executor.ads.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xxl.job.executor.ads.entity.AiKuaishouStrategy;
+import com.xxl.job.executor.ads.service.IAiKuaishouStrategyService;
+import com.xxl.job.executor.entity.vo.Result;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+
+ /**
+ * 智能投放策略信息
+ * @author jeecg-boot
+ * @date   2020-12-10
+ * @version V1.0
+ */
+@Slf4j
+@RestController
+@RequestMapping("/ctop/aiKuaishouStrategy")
+public class AiKuaishouStrategyController {
+	@Autowired
+	private IAiKuaishouStrategyService aiKuaishouStrategyService;
+
+	/**
+	  * 分页列表查询
+	 * @param aiKuaishouStrategy
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@GetMapping(value = "/list")
+	public Result<IPage<AiKuaishouStrategy>> queryPageList(AiKuaishouStrategy aiKuaishouStrategy,
+                                                           @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+                                                           @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+                                                           HttpServletRequest req) {
+		Result<IPage<AiKuaishouStrategy>> result = new Result<>();
+		QueryWrapper<AiKuaishouStrategy> queryWrapper = new QueryWrapper<>();
+		Page<AiKuaishouStrategy> page = new Page<>(pageNo, pageSize);
+		IPage<AiKuaishouStrategy> pageList = aiKuaishouStrategyService.page(page, queryWrapper);
+		result.setSuccess(true);
+		result.setResult(pageList);
+		return result;
+	}
+
+	/**
+	  *   添加
+	 * @param aiKuaishouStrategy
+	 * @return
+	 */
+	@PostMapping(value = "/add")
+	public Result<AiKuaishouStrategy> add(@RequestBody AiKuaishouStrategy aiKuaishouStrategy) {
+		Result<AiKuaishouStrategy> result = new Result<>();
+		try {
+			aiKuaishouStrategyService.save(aiKuaishouStrategy);
+			result.success("添加成功!");
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+			result.error500("操作失败");
+		}
+		return result;
+	}
+
+	/**
+	  *  编辑
+	 * @param aiKuaishouStrategy
+	 * @return
+	 */
+	@PutMapping(value = "/edit")
+	public Result<AiKuaishouStrategy> edit(@RequestBody AiKuaishouStrategy aiKuaishouStrategy) {
+		Result<AiKuaishouStrategy> result = new Result<AiKuaishouStrategy>();
+		AiKuaishouStrategy aiKuaishouStrategyEntity = aiKuaishouStrategyService.getById(aiKuaishouStrategy.getId());
+		if(aiKuaishouStrategyEntity==null) {
+			result.error500("未找到对应实体");
+		}else {
+			boolean ok = aiKuaishouStrategyService.updateById(aiKuaishouStrategy);
+			if(ok) {
+				result.success("修改成功!");
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	  *   通过id删除
+	 * @param id
+	 * @return
+	 */
+	@DeleteMapping(value = "/delete")
+	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+		try {
+			aiKuaishouStrategyService.removeById(id);
+		} catch (Exception e) {
+			log.error("删除失败",e.getMessage());
+			return Result.error("删除失败!");
+		}
+		return Result.ok("删除成功!");
+	}
+
+	/**
+	  *  批量删除
+	 * @param ids
+	 * @return
+	 */
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<AiKuaishouStrategy> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		Result<AiKuaishouStrategy> result = new Result<>();
+		if(ids==null || "".equals(ids.trim())) {
+			result.error500("参数不识别!");
+		}else {
+			this.aiKuaishouStrategyService.removeByIds(Arrays.asList(ids.split(",")));
+			result.success("删除成功!");
+		}
+		return result;
+	}
+
+	/**
+	  * 通过id查询
+	 * @param id
+	 * @return
+	 */
+	@GetMapping(value = "/queryById")
+	public Result<AiKuaishouStrategy> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<AiKuaishouStrategy> result = new Result<>();
+		AiKuaishouStrategy aiKuaishouStrategy = aiKuaishouStrategyService.getById(id);
+		if(aiKuaishouStrategy==null) {
+			result.error500("未找到对应实体");
+		}else {
+			result.setResult(aiKuaishouStrategy);
+			result.setSuccess(true);
+		}
+		return result;
+	}
+}

+ 140 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/controller/AiKuaishouStrategyMapCreativeController.java

@@ -0,0 +1,140 @@
+package com.xxl.job.executor.ads.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xxl.job.executor.ads.entity.AiKuaishouStrategyMapCreative;
+import com.xxl.job.executor.ads.service.IAiKuaishouStrategyMapCreativeService;
+import com.xxl.job.executor.entity.vo.Result;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+
+ /**
+ * 智能投放快手定向策略详细信息
+ * @author jeecg-boot
+ * @date   2020-12-10
+ * @version V1.0
+ */
+@Slf4j
+@RestController
+@RequestMapping("/ctop/aiKuaishouStrategyMapCreative")
+public class AiKuaishouStrategyMapCreativeController {
+	@Autowired
+	private IAiKuaishouStrategyMapCreativeService aiKuaishouStrategyMapCreativeService;
+
+	/**
+	  * 分页列表查询
+	 * @param aiKuaishouStrategyMapCreative
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@GetMapping(value = "/list")
+	public Result<IPage<AiKuaishouStrategyMapCreative>> queryPageList(AiKuaishouStrategyMapCreative aiKuaishouStrategyMapCreative,
+																	  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+																	  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+																	  HttpServletRequest req) {
+		Result<IPage<AiKuaishouStrategyMapCreative>> result = new Result<>();
+		QueryWrapper<AiKuaishouStrategyMapCreative> queryWrapper = new QueryWrapper<>();
+		Page<AiKuaishouStrategyMapCreative> page = new Page<>(pageNo, pageSize);
+		IPage<AiKuaishouStrategyMapCreative> pageList = aiKuaishouStrategyMapCreativeService.page(page, queryWrapper);
+		result.setSuccess(true);
+		result.setResult(pageList);
+		return result;
+	}
+
+	/**
+	  *   添加
+	 * @param aiKuaishouStrategyMapCreative
+	 * @return
+	 */
+	@PostMapping(value = "/add")
+	public Result<AiKuaishouStrategyMapCreative> add(@RequestBody AiKuaishouStrategyMapCreative aiKuaishouStrategyMapCreative) {
+		Result<AiKuaishouStrategyMapCreative> result = new Result<>();
+		try {
+			aiKuaishouStrategyMapCreativeService.save(aiKuaishouStrategyMapCreative);
+			result.success("添加成功!");
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+			result.error500("操作失败");
+		}
+		return result;
+	}
+
+	/**
+	  *  编辑
+	 * @param aiKuaishouStrategyMapCreative
+	 * @return
+	 */
+	@PutMapping(value = "/edit")
+	public Result<AiKuaishouStrategyMapCreative> edit(@RequestBody AiKuaishouStrategyMapCreative aiKuaishouStrategyMapCreative) {
+		Result<AiKuaishouStrategyMapCreative> result = new Result<AiKuaishouStrategyMapCreative>();
+		AiKuaishouStrategyMapCreative aiKuaishouStrategyMapCreativeEntity = aiKuaishouStrategyMapCreativeService.getById(aiKuaishouStrategyMapCreative.getId());
+		if(aiKuaishouStrategyMapCreativeEntity==null) {
+			result.error500("未找到对应实体");
+		}else {
+			boolean ok = aiKuaishouStrategyMapCreativeService.updateById(aiKuaishouStrategyMapCreative);
+			if(ok) {
+				result.success("修改成功!");
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	  *   通过id删除
+	 * @param id
+	 * @return
+	 */
+	@DeleteMapping(value = "/delete")
+	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+		try {
+			aiKuaishouStrategyMapCreativeService.removeById(id);
+		} catch (Exception e) {
+			log.error("删除失败",e.getMessage());
+			return Result.error("删除失败!");
+		}
+		return Result.ok("删除成功!");
+	}
+
+	/**
+	  *  批量删除
+	 * @param ids
+	 * @return
+	 */
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<AiKuaishouStrategyMapCreative> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		Result<AiKuaishouStrategyMapCreative> result = new Result<>();
+		if(ids==null || "".equals(ids.trim())) {
+			result.error500("参数不识别!");
+		}else {
+			this.aiKuaishouStrategyMapCreativeService.removeByIds(Arrays.asList(ids.split(",")));
+			result.success("删除成功!");
+		}
+		return result;
+	}
+
+	/**
+	  * 通过id查询
+	 * @param id
+	 * @return
+	 */
+	@GetMapping(value = "/queryById")
+	public Result<AiKuaishouStrategyMapCreative> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<AiKuaishouStrategyMapCreative> result = new Result<>();
+		AiKuaishouStrategyMapCreative aiKuaishouStrategyMapCreative = aiKuaishouStrategyMapCreativeService.getById(id);
+		if(aiKuaishouStrategyMapCreative==null) {
+			result.error500("未找到对应实体");
+		}else {
+			result.setResult(aiKuaishouStrategyMapCreative);
+			result.setSuccess(true);
+		}
+		return result;
+	}
+}

+ 140 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/controller/AiKuaishouStrategyTargetDetailsController.java

@@ -0,0 +1,140 @@
+package com.xxl.job.executor.ads.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xxl.job.executor.ads.entity.AiKuaishouStrategyTargetDetails;
+import com.xxl.job.executor.ads.service.IAiKuaishouStrategyTargetDetailsService;
+import com.xxl.job.executor.entity.vo.Result;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+
+ /**
+ * 智能投放快手定向策略详细信息
+ * @author jeecg-boot
+ * @date   2020-12-10
+ * @version V1.0
+ */
+@Slf4j
+@RestController
+@RequestMapping("/ctop/aiKuaishouStrategyTargetDetails")
+public class AiKuaishouStrategyTargetDetailsController {
+	@Autowired
+	private IAiKuaishouStrategyTargetDetailsService aiKuaishouStrategyTargetDetailsService;
+
+	/**
+	  * 分页列表查询
+	 * @param aiKuaishouStrategyTargetDetails
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@GetMapping(value = "/list")
+	public Result<IPage<AiKuaishouStrategyTargetDetails>> queryPageList(AiKuaishouStrategyTargetDetails aiKuaishouStrategyTargetDetails,
+																		@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+																		@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+																		HttpServletRequest req) {
+		Result<IPage<AiKuaishouStrategyTargetDetails>> result = new Result<>();
+		QueryWrapper<AiKuaishouStrategyTargetDetails> queryWrapper = new QueryWrapper<>();
+		Page<AiKuaishouStrategyTargetDetails> page = new Page<AiKuaishouStrategyTargetDetails>(pageNo, pageSize);
+		IPage<AiKuaishouStrategyTargetDetails> pageList = aiKuaishouStrategyTargetDetailsService.page(page, queryWrapper);
+		result.setSuccess(true);
+		result.setResult(pageList);
+		return result;
+	}
+
+	/**
+	  *   添加
+	 * @param aiKuaishouStrategyTargetDetails
+	 * @return
+	 */
+	@PostMapping(value = "/add")
+	public Result<AiKuaishouStrategyTargetDetails> add(@RequestBody AiKuaishouStrategyTargetDetails aiKuaishouStrategyTargetDetails) {
+		Result<AiKuaishouStrategyTargetDetails> result = new Result<>();
+		try {
+			aiKuaishouStrategyTargetDetailsService.save(aiKuaishouStrategyTargetDetails);
+			result.success("添加成功!");
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+			result.error500("操作失败");
+		}
+		return result;
+	}
+
+	/**
+	  *  编辑
+	 * @param aiKuaishouStrategyTargetDetails
+	 * @return
+	 */
+	@PutMapping(value = "/edit")
+	public Result<AiKuaishouStrategyTargetDetails> edit(@RequestBody AiKuaishouStrategyTargetDetails aiKuaishouStrategyTargetDetails) {
+		Result<AiKuaishouStrategyTargetDetails> result = new Result<AiKuaishouStrategyTargetDetails>();
+		AiKuaishouStrategyTargetDetails aiKuaishouStrategyTargetDetailsEntity = aiKuaishouStrategyTargetDetailsService.getById(aiKuaishouStrategyTargetDetails.getId());
+		if(aiKuaishouStrategyTargetDetailsEntity==null) {
+			result.error500("未找到对应实体");
+		}else {
+			boolean ok = aiKuaishouStrategyTargetDetailsService.updateById(aiKuaishouStrategyTargetDetails);
+			if(ok) {
+				result.success("修改成功!");
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	  *   通过id删除
+	 * @param id
+	 * @return
+	 */
+	@DeleteMapping(value = "/delete")
+	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+		try {
+			aiKuaishouStrategyTargetDetailsService.removeById(id);
+		} catch (Exception e) {
+			log.error("删除失败",e.getMessage());
+			return Result.error("删除失败!");
+		}
+		return Result.ok("删除成功!");
+	}
+
+	/**
+	  *  批量删除
+	 * @param ids
+	 * @return
+	 */
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<AiKuaishouStrategyTargetDetails> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		Result<AiKuaishouStrategyTargetDetails> result = new Result<>();
+		if(ids==null || "".equals(ids.trim())) {
+			result.error500("参数不识别!");
+		}else {
+			this.aiKuaishouStrategyTargetDetailsService.removeByIds(Arrays.asList(ids.split(",")));
+			result.success("删除成功!");
+		}
+		return result;
+	}
+
+	/**
+	  * 通过id查询
+	 * @param id
+	 * @return
+	 */
+	@GetMapping(value = "/queryById")
+	public Result<AiKuaishouStrategyTargetDetails> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<AiKuaishouStrategyTargetDetails> result = new Result<>();
+		AiKuaishouStrategyTargetDetails aiKuaishouStrategyTargetDetails = aiKuaishouStrategyTargetDetailsService.getById(id);
+		if(aiKuaishouStrategyTargetDetails==null) {
+			result.error500("未找到对应实体");
+		}else {
+			result.setResult(aiKuaishouStrategyTargetDetails);
+			result.setSuccess(true);
+		}
+		return result;
+	}
+}

+ 35 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/entity/AiKuaishouStrategy.java

@@ -0,0 +1,35 @@
+package com.xxl.job.executor.ads.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
+ * @date   2020-12-10
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_ai_kuaishou_strategy")
+public class AiKuaishouStrategy {
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+	private Long id;
+	/**账户id*/
+	private Integer accountId;
+	/**名称*/
+	private String strategyName;
+	/**素材选择方式*/
+	private String materialCombinationMode;
+	/**策略类型*/
+	private String strategyType;
+	/**状态1可用 0不可用*/
+	private Integer status;
+	private Date createTime;
+	private Date updateTime;
+}

+ 39 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/entity/AiKuaishouStrategyMapCreative.java

@@ -0,0 +1,39 @@
+package com.xxl.job.executor.ads.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
+ * @date   2020-12-10
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_ai_kuaishou_strategy_map_creative")
+public class AiKuaishouStrategyMapCreative {
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+	private Long id;
+	/**账户id*/
+	private Integer accountId;
+	/**计划id*/
+	private Integer campaignId;
+	/**组id*/
+	private Integer unitId;
+	/**创意id*/
+	private Integer creativeId;
+	/**定向id*/
+	private Integer targetId;
+	/**是否创建成功*/
+	private Integer createSuccess;
+	/**失败原因*/
+	private String detail;
+	private Date createTime;
+	private Date updateTime;
+}

+ 33 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/entity/AiKuaishouStrategyTargetDetails.java

@@ -0,0 +1,33 @@
+package com.xxl.job.executor.ads.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
+ * @date   2020-12-10
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_ai_kuaishou_strategy_target_details")
+public class AiKuaishouStrategyTargetDetails {
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+	private Long id;
+	/**策略id*/
+	private Long strategyId;
+	/**定向id*/
+	private Long targetId;
+	/**测试方向: age 、 devices、  用户行为 、 行业偏好 、付费人群包 等*/
+	private String type;
+	/**status*/
+	private Integer status;
+	private Date createTime;
+	private Date updateTime;
+}

+ 14 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/mapper/AiKuaishouStrategyMapCreativeMapper.java

@@ -0,0 +1,14 @@
+package com.xxl.job.executor.ads.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xxl.job.executor.ads.entity.AiKuaishouStrategyMapCreative;
+
+/**
+ * 智能投放快手定向策略详细信息
+ * @author: jeecg-boot
+ * @date:   2020-12-10
+ * @cersion: V1.0
+ */
+public interface AiKuaishouStrategyMapCreativeMapper extends BaseMapper<AiKuaishouStrategyMapCreative> {
+
+}

+ 14 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/mapper/AiKuaishouStrategyMapper.java

@@ -0,0 +1,14 @@
+package com.xxl.job.executor.ads.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xxl.job.executor.ads.entity.AiKuaishouStrategy;
+
+/**
+ * 智能投放策略信息
+ * @author: jeecg-boot
+ * @date:   2020-12-10
+ * @cersion: V1.0
+ */
+public interface AiKuaishouStrategyMapper extends BaseMapper<AiKuaishouStrategy> {
+
+}

+ 14 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/mapper/AiKuaishouStrategyTargetDetailsMapper.java

@@ -0,0 +1,14 @@
+package com.xxl.job.executor.ads.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xxl.job.executor.ads.entity.AiKuaishouStrategyTargetDetails;
+
+/**
+ * 智能投放快手定向策略详细信息
+ * @author: jeecg-boot
+ * @date:   2020-12-10
+ * @cersion: V1.0
+ */
+public interface AiKuaishouStrategyTargetDetailsMapper extends BaseMapper<AiKuaishouStrategyTargetDetails> {
+
+}

+ 5 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/mapper/xml/AiKuaishouStrategyMapCreativeMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xxl.job.executor.ads.mapper.AiKuaishouStrategyMapCreativeMapper">
+
+</mapper>

+ 5 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/mapper/xml/AiKuaishouStrategyMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xxl.job.executor.ads.mapper.AiKuaishouStrategyMapper">
+
+</mapper>

+ 5 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/mapper/xml/AiKuaishouStrategyTargetDetailsMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xxl.job.executor.ads.mapper.AiKuaishouStrategyTargetDetailsMapper">
+
+</mapper>

+ 14 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/service/IAiKuaishouStrategyMapCreativeService.java

@@ -0,0 +1,14 @@
+package com.xxl.job.executor.ads.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xxl.job.executor.ads.entity.AiKuaishouStrategyMapCreative;
+
+/**
+ * @Description: 智能投放快手定向策略详细信息
+ * @Author: jeecg-boot
+ * @Date:   2020-12-10
+ * @Version: V1.0
+ */
+public interface IAiKuaishouStrategyMapCreativeService extends IService<AiKuaishouStrategyMapCreative> {
+
+}

+ 14 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/service/IAiKuaishouStrategyService.java

@@ -0,0 +1,14 @@
+package com.xxl.job.executor.ads.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xxl.job.executor.ads.entity.AiKuaishouStrategy;
+
+/**
+ * @Description: 智能投放策略信息
+ * @Author: jeecg-boot
+ * @Date:   2020-12-10
+ * @Version: V1.0
+ */
+public interface IAiKuaishouStrategyService extends IService<AiKuaishouStrategy> {
+
+}

+ 14 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/service/IAiKuaishouStrategyTargetDetailsService.java

@@ -0,0 +1,14 @@
+package com.xxl.job.executor.ads.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xxl.job.executor.ads.entity.AiKuaishouStrategyTargetDetails;
+
+/**
+ * @Description: 智能投放快手定向策略详细信息
+ * @Author: jeecg-boot
+ * @Date:   2020-12-10
+ * @Version: V1.0
+ */
+public interface IAiKuaishouStrategyTargetDetailsService extends IService<AiKuaishouStrategyTargetDetails> {
+
+}

+ 18 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/service/impl/AiKuaishouStrategyMapCreativeServiceImpl.java

@@ -0,0 +1,18 @@
+package com.xxl.job.executor.ads.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xxl.job.executor.ads.entity.AiKuaishouStrategyMapCreative;
+import com.xxl.job.executor.ads.mapper.AiKuaishouStrategyMapCreativeMapper;
+import com.xxl.job.executor.ads.service.IAiKuaishouStrategyMapCreativeService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 智能投放快手定向策略详细信息
+ * @author jeecg-boot
+ * @date   2020-12-10
+ * @version V1.0
+ */
+@Service
+public class AiKuaishouStrategyMapCreativeServiceImpl extends ServiceImpl<AiKuaishouStrategyMapCreativeMapper, AiKuaishouStrategyMapCreative> implements IAiKuaishouStrategyMapCreativeService {
+
+}

+ 18 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/service/impl/AiKuaishouStrategyServiceImpl.java

@@ -0,0 +1,18 @@
+package com.xxl.job.executor.ads.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xxl.job.executor.ads.entity.AiKuaishouStrategy;
+import com.xxl.job.executor.ads.mapper.AiKuaishouStrategyMapper;
+import com.xxl.job.executor.ads.service.IAiKuaishouStrategyService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 智能投放策略信息
+ * @author jeecg-boot
+ * @date   2020-12-10
+ * @version V1.0
+ */
+@Service
+public class AiKuaishouStrategyServiceImpl extends ServiceImpl<AiKuaishouStrategyMapper, AiKuaishouStrategy> implements IAiKuaishouStrategyService {
+
+}

+ 18 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/ads/service/impl/AiKuaishouStrategyTargetDetailsServiceImpl.java

@@ -0,0 +1,18 @@
+package com.xxl.job.executor.ads.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xxl.job.executor.ads.entity.AiKuaishouStrategyTargetDetails;
+import com.xxl.job.executor.ads.mapper.AiKuaishouStrategyTargetDetailsMapper;
+import com.xxl.job.executor.ads.service.IAiKuaishouStrategyTargetDetailsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 智能投放快手定向策略详细信息
+ * @author jeecg-boot
+ * @date   2020-12-10
+ * @version V1.0
+ */
+@Service
+public class AiKuaishouStrategyTargetDetailsServiceImpl extends ServiceImpl<AiKuaishouStrategyTargetDetailsMapper, AiKuaishouStrategyTargetDetails> implements IAiKuaishouStrategyTargetDetailsService {
+
+}

+ 113 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/constant/DataBaseConstant.java

@@ -0,0 +1,113 @@
+package com.xxl.job.executor.constant;
+/**
+ * 数据库上下文常量
+ */
+public interface DataBaseConstant {
+	//*********数据库类型****************************************
+	public static final String DB_TYPE_MYSQL = "MYSQL";
+	public static final String DB_TYPE_ORACLE = "ORACLE";
+	public static final String DB_TYPE_POSTGRESQL = "POSTGRESQL";
+	public static final String DB_TYPE_SQLSERVER = "SQLSERVER";
+
+	// 数据库类型,对应 database_type 字典
+	public static final String DB_TYPE_MYSQL_NUM = "1";
+	public static final String DB_TYPE_ORACLE_NUM = "2";
+	public static final String DB_TYPE_SQLSERVER_NUM = "3";
+	public static final String DB_TYPE_POSTGRESQL_NUM = "4";
+	//*********系统上下文变量****************************************
+	/**
+	 * 数据-所属机构编码
+	 */
+	public static final String SYS_ORG_CODE = "sysOrgCode";
+	/**
+	 * 数据-所属机构编码
+	 */
+	public static final String SYS_ORG_CODE_TABLE = "sys_org_code";
+	/**
+	 * 数据-所属机构编码
+	 */
+	public static final String SYS_MULTI_ORG_CODE = "sysMultiOrgCode";
+	/**
+	 * 数据-所属机构编码
+	 */
+	public static final String SYS_MULTI_ORG_CODE_TABLE = "sys_multi_org_code";
+	/**
+	 * 数据-系统用户编码(对应登录用户账号)
+	 */
+	public static final String SYS_USER_CODE = "sysUserCode";
+	/**
+	 * 数据-系统用户编码(对应登录用户账号)
+	 */
+	public static final String SYS_USER_CODE_TABLE = "sys_user_code";
+
+	/**
+	 * 登录用户真实姓名
+	 */
+	public static final String SYS_USER_NAME = "sysUserName";
+	/**
+	 * 登录用户真实姓名
+	 */
+	public static final String SYS_USER_NAME_TABLE = "sys_user_name";
+	/**
+	 * 系统日期"yyyy-MM-dd"
+	 */
+	public static final String SYS_DATE = "sysDate";
+	/**
+	 * 系统日期"yyyy-MM-dd"
+	 */
+	public static final String SYS_DATE_TABLE = "sys_date";
+	/**
+	 * 系统时间"yyyy-MM-dd HH:mm"
+	 */
+	public static final String SYS_TIME = "sysTime";
+	/**
+	 * 系统时间"yyyy-MM-dd HH:mm"
+	 */
+	public static final String SYS_TIME_TABLE = "sys_time";
+	//*********系统上下文变量****************************************
+
+
+	//*********系统建表标准字段****************************************
+	/**
+	 * 创建者登录名称
+	 */
+	public static final String CREATE_BY_TABLE = "create_by";
+	/**
+	 * 创建者登录名称
+	 */
+	public static final String CREATE_BY = "createBy";
+	/**
+	 * 创建日期时间
+	 */
+	public static final String CREATE_TIME_TABLE = "create_time";
+	/**
+	 * 创建日期时间
+	 */
+	public static final String CREATE_TIME = "createTime";
+	/**
+	 * 更新用户登录名称
+	 */
+	public static final String UPDATE_BY_TABLE = "update_by";
+	/**
+	 * 更新用户登录名称
+	 */
+	public static final String UPDATE_BY = "updateBy";
+	/**
+	 * 更新日期时间
+	 */
+	public static final String UPDATE_TIME = "updateTime";
+	/**
+	 * 更新日期时间
+	 */
+	public static final String UPDATE_TIME_TABLE = "update_time";
+
+	/**
+	 * 业务流程状态
+	 */
+	public static final String BPM_STATUS = "bpmStatus";
+	/**
+	 * 业务流程状态
+	 */
+	public static final String BPM_STATUS_TABLE = "bpm_status";
+	//*********系统建表标准字段****************************************
+}

+ 144 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/entity/vo/SysPermissionDataRuleModel.java

@@ -0,0 +1,144 @@
+package com.xxl.job.executor.entity.vo;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 菜单权限规则表
+ * </p>
+ *
+ * @Author huangzhilin
+ * @since 2019-03-29
+ */
+public class SysPermissionDataRuleModel {
+
+    /**
+     * id
+     */
+    private String id;
+
+    /**
+     * 对应的菜单id
+     */
+    private String permissionId;
+
+    /**
+     * 规则名称
+     */
+    private String ruleName;
+
+    /**
+     * 字段
+     */
+    private String ruleColumn;
+
+    /**
+     * 条件
+     */
+    private String ruleConditions;
+
+    /**
+     * 规则值
+     */
+    private String ruleValue;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+
+    /**
+     * 修改人
+     */
+    private String updateBy;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getPermissionId() {
+        return permissionId;
+    }
+
+    public void setPermissionId(String permissionId) {
+        this.permissionId = permissionId;
+    }
+
+    public String getRuleName() {
+        return ruleName;
+    }
+
+    public void setRuleName(String ruleName) {
+        this.ruleName = ruleName;
+    }
+
+    public String getRuleColumn() {
+        return ruleColumn;
+    }
+
+    public void setRuleColumn(String ruleColumn) {
+        this.ruleColumn = ruleColumn;
+    }
+
+    public String getRuleConditions() {
+        return ruleConditions;
+    }
+
+    public void setRuleConditions(String ruleConditions) {
+        this.ruleConditions = ruleConditions;
+    }
+
+    public String getRuleValue() {
+        return ruleValue;
+    }
+
+    public void setRuleValue(String ruleValue) {
+        this.ruleValue = ruleValue;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy;
+    }
+}

+ 41 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/utils/MatchTypeEnum.java

@@ -0,0 +1,41 @@
+package com.xxl.job.executor.utils;
+
+/**
+ * 查询链接规则
+ *
+ * @Author Sunjianlei
+ */
+public enum MatchTypeEnum {
+
+    AND("AND"),
+    OR("OR");
+
+    private String value;
+
+    MatchTypeEnum(String value) {
+        this.value = value;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public static MatchTypeEnum getByValue(Object value) {
+        if (oConvertUtils.isEmpty(value)) {
+            return null;
+        }
+        return getByValue(value.toString());
+    }
+
+    public static MatchTypeEnum getByValue(String value) {
+        if (oConvertUtils.isEmpty(value)) {
+            return null;
+        }
+        for (MatchTypeEnum val : values()) {
+            if (val.getValue().toLowerCase().equals(value.toLowerCase())) {
+                return val;
+            }
+        }
+        return null;
+    }
+}

+ 55 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/utils/QueryCondition.java

@@ -0,0 +1,55 @@
+package com.xxl.job.executor.utils;
+
+import java.io.Serializable;
+
+public class QueryCondition implements Serializable {
+
+	private static final long serialVersionUID = 4740166316629191651L;
+
+	private String field;
+	private String type;
+	private String rule;
+	private String val;
+
+	public String getField() {
+		return field;
+	}
+
+	public void setField(String field) {
+		this.field = field;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getRule() {
+		return rule;
+	}
+
+	public void setRule(String rule) {
+		this.rule = rule;
+	}
+
+	public String getVal() {
+		return val;
+	}
+
+	public void setVal(String val) {
+		this.val = val;
+	}
+
+	@Override
+	public String toString(){
+		StringBuffer sb =new StringBuffer();
+		if(field == null || "".equals(field)){
+			return "";
+		}
+		sb.append(this.field).append(" ").append(this.rule).append(" ").append(this.type).append(" ").append(this.val);
+		return sb.toString();
+	}
+}

+ 68 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/utils/QueryRuleEnum.java

@@ -0,0 +1,68 @@
+package com.xxl.job.executor.utils;
+/**
+ * Query 规则 常量
+ * @Author Scott
+ * @Date 2019年02月14日
+ */
+public enum QueryRuleEnum {
+
+    GT(">","gt","大于"),
+    GE(">=","ge","大于等于"),
+    LT("<","lt","小于"),
+    LE("<=","le","小于等于"),
+    EQ("=","eq","等于"),
+    NE("!=","ne","不等于"),
+    IN("IN","in","包含"),
+    LIKE("LIKE","like","全模糊"),
+    LEFT_LIKE("LEFT_LIKE","left_like","左模糊"),
+    RIGHT_LIKE("RIGHT_LIKE","right_like","右模糊"),
+    SQL_RULES("USE_SQL_RULES","ext","自定义SQL片段");
+
+    private String value;
+
+    private String condition;
+
+    private String msg;
+
+    QueryRuleEnum(String value, String condition, String msg){
+        this.value = value;
+        this.condition = condition;
+        this.msg = msg;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public String getCondition() {
+		return condition;
+	}
+
+	public void setCondition(String condition) {
+		this.condition = condition;
+	}
+
+	public static QueryRuleEnum getByValue(String value){
+    	if(oConvertUtils.isEmpty(value)) {
+    		return null;
+    	}
+        for(QueryRuleEnum val :values()){
+            if (val.getValue().equals(value) || val.getCondition().equals(value)){
+                return val;
+            }
+        }
+        return  null;
+    }
+}

+ 646 - 0
xxl-job-executor-springboot/src/main/java/com/xxl/job/executor/utils/oConvertUtils.java

@@ -0,0 +1,646 @@
+package com.xxl.job.executor.utils;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.net.UnknownHostException;
+import java.sql.Date;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ *
+ * @Author  张代浩
+ *
+ */
+@Slf4j
+public class oConvertUtils {
+	public static boolean isEmpty(Object object) {
+		if (object == null) {
+			return (true);
+		}
+		if ("".equals(object)) {
+			return (true);
+		}
+		if ("null".equals(object)) {
+			return (true);
+		}
+		return (false);
+	}
+
+	public static boolean isNotEmpty(Object object) {
+		if (object != null && !"".equals(object) && !"null".equals(object)) {
+			return (true);
+		}
+		return (false);
+	}
+
+	public static String decode(String strIn, String sourceCode, String targetCode) {
+		String temp = code2code(strIn, sourceCode, targetCode);
+		return temp;
+	}
+
+	public static String StrToUTF(String strIn, String sourceCode, String targetCode) {
+		strIn = "";
+		try {
+			strIn = new String(strIn.getBytes("ISO-8859-1"), "GBK");
+		} catch (UnsupportedEncodingException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		return strIn;
+
+	}
+
+	private static String code2code(String strIn, String sourceCode, String targetCode) {
+		String strOut = null;
+		if (strIn == null || "".equals(strIn.trim())) {
+			return strIn;
+		}
+		try {
+			byte[] b = strIn.getBytes(sourceCode);
+			strOut = new String(b, targetCode);
+		} catch (Exception e) {
+			e.printStackTrace();
+			return null;
+		}
+		return strOut;
+	}
+
+	public static int getInt(String s, int defval) {
+		if (s == null || s == "") {
+			return (defval);
+		}
+		try {
+			return (Integer.parseInt(s));
+		} catch (NumberFormatException e) {
+			return (defval);
+		}
+	}
+
+	public static int getInt(String s) {
+		if (s == null || s == "") {
+			return 0;
+		}
+		try {
+			return (Integer.parseInt(s));
+		} catch (NumberFormatException e) {
+			return 0;
+		}
+	}
+
+	public static int getInt(String s, Integer df) {
+		if (s == null || s == "") {
+			return df;
+		}
+		try {
+			return (Integer.parseInt(s));
+		} catch (NumberFormatException e) {
+			return 0;
+		}
+	}
+
+	public static Integer[] getInts(String[] s) {
+		Integer[] integer = new Integer[s.length];
+		if (s == null) {
+			return null;
+		}
+		for (int i = 0; i < s.length; i++) {
+			integer[i] = Integer.parseInt(s[i]);
+		}
+		return integer;
+
+	}
+
+	public static double getDouble(String s, double defval) {
+		if (s == null || s == "") {
+			return (defval);
+		}
+		try {
+			return (Double.parseDouble(s));
+		} catch (NumberFormatException e) {
+			return (defval);
+		}
+	}
+
+	public static double getDou(Double s, double defval) {
+		if (s == null) {
+			return (defval);
+		}
+		return s;
+	}
+
+	/*public static Short getShort(String s) {
+		if (StringUtil.isNotEmpty(s)) {
+			return (Short.parseShort(s));
+		} else {
+			return null;
+		}
+	}*/
+
+	public static int getInt(Object object, int defval) {
+		if (isEmpty(object)) {
+			return (defval);
+		}
+		try {
+			return (Integer.parseInt(object.toString()));
+		} catch (NumberFormatException e) {
+			return (defval);
+		}
+	}
+
+	public static Integer getInt(Object object) {
+		if (isEmpty(object)) {
+			return null;
+		}
+		try {
+			return (Integer.parseInt(object.toString()));
+		} catch (NumberFormatException e) {
+			return null;
+		}
+	}
+
+	public static int getInt(BigDecimal s, int defval) {
+		if (s == null) {
+			return (defval);
+		}
+		return s.intValue();
+	}
+
+	public static Integer[] getIntegerArry(String[] object) {
+		int len = object.length;
+		Integer[] result = new Integer[len];
+		try {
+			for (int i = 0; i < len; i++) {
+				result[i] = new Integer(object[i].trim());
+			}
+			return result;
+		} catch (NumberFormatException e) {
+			return null;
+		}
+	}
+
+	public static String getString(String s) {
+		return (getString(s, ""));
+	}
+
+	/**
+	 * 转义成Unicode编码
+	 * @param s
+	 * @return
+	 */
+	/*public static String escapeJava(Object s) {
+		return StringEscapeUtils.escapeJava(getString(s));
+	}*/
+
+	public static String getString(Object object) {
+		if (isEmpty(object)) {
+			return "";
+		}
+		return (object.toString().trim());
+	}
+
+	public static String getString(int i) {
+		return (String.valueOf(i));
+	}
+
+	public static String getString(float i) {
+		return (String.valueOf(i));
+	}
+
+	public static String getString(String s, String defval) {
+		if (isEmpty(s)) {
+			return (defval);
+		}
+		return (s.trim());
+	}
+
+	public static String getString(Object s, String defval) {
+		if (isEmpty(s)) {
+			return (defval);
+		}
+		return (s.toString().trim());
+	}
+
+	public static long stringToLong(String str) {
+		Long test = new Long(0);
+		try {
+			test = Long.valueOf(str);
+		} catch (Exception e) {
+		}
+		return test.longValue();
+	}
+
+	/**
+	 * 获取本机IP
+	 */
+	public static String getIp() {
+		String ip = null;
+		try {
+			InetAddress address = InetAddress.getLocalHost();
+			ip = address.getHostAddress();
+
+		} catch (UnknownHostException e) {
+			e.printStackTrace();
+		}
+		return ip;
+	}
+
+	/**
+	 * 判断一个类是否为基本数据类型。
+	 *
+	 * @param clazz
+	 *            要判断的类。
+	 * @return true 表示为基本数据类型。
+	 */
+	private static boolean isBaseDataType(Class clazz) throws Exception {
+		return (clazz.equals(String.class) || clazz.equals(Integer.class) || clazz.equals(Byte.class) || clazz.equals(Long.class) || clazz.equals(Double.class) || clazz.equals(Float.class) || clazz.equals(Character.class) || clazz.equals(Short.class) || clazz.equals(BigDecimal.class) || clazz.equals(BigInteger.class) || clazz.equals(Boolean.class) || clazz.equals(Date.class) || clazz.isPrimitive());
+	}
+
+	/**
+	 * @param request
+	 *            IP
+	 * @return IP Address
+	 */
+	public static String getIpAddrByRequest(HttpServletRequest request) {
+		String ip = request.getHeader("x-forwarded-for");
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getHeader("Proxy-Client-IP");
+		}
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getHeader("WL-Proxy-Client-IP");
+		}
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getRemoteAddr();
+		}
+		return ip;
+	}
+
+	/**
+	 * @return 本机IP
+	 * @throws SocketException
+	 */
+	public static String getRealIp() throws SocketException {
+		String localip = null;// 本地IP,如果没有配置外网IP则返回它
+		String netip = null;// 外网IP
+
+		Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces();
+		InetAddress ip = null;
+		boolean finded = false;// 是否找到外网IP
+		while (netInterfaces.hasMoreElements() && !finded) {
+			NetworkInterface ni = netInterfaces.nextElement();
+			Enumeration<InetAddress> address = ni.getInetAddresses();
+			while (address.hasMoreElements()) {
+				ip = address.nextElement();
+				if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {// 外网IP
+					netip = ip.getHostAddress();
+					finded = true;
+					break;
+				} else if (ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {// 内网IP
+					localip = ip.getHostAddress();
+				}
+			}
+		}
+
+		if (netip != null && !"".equals(netip)) {
+			return netip;
+		} else {
+			return localip;
+		}
+	}
+
+	/**
+	 * java去除字符串中的空格、回车、换行符、制表符
+	 *
+	 * @param str
+	 * @return
+	 */
+	public static String replaceBlank(String str) {
+		String dest = "";
+		if (str != null) {
+			Pattern p = Pattern.compile("\\s*|\t|\r|\n");
+			Matcher m = p.matcher(str);
+			dest = m.replaceAll("");
+		}
+		return dest;
+
+	}
+
+	/**
+	 * 判断元素是否在数组内
+	 *
+	 * @param substring
+	 * @param source
+	 * @return
+	 */
+	public static boolean isIn(String substring, String[] source) {
+		if (source == null || source.length == 0) {
+			return false;
+		}
+		for (int i = 0; i < source.length; i++) {
+			String aSource = source[i];
+			if (aSource.equals(substring)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * 获取Map对象
+	 */
+	public static Map<Object, Object> getHashMap() {
+		return new HashMap<Object, Object>();
+	}
+
+	/**
+	 * SET转换MAP
+	 *
+	 * @param str
+	 * @return
+	 */
+	public static Map<Object, Object> SetToMap(Set<Object> setobj) {
+		Map<Object, Object> map = getHashMap();
+		for (Iterator iterator = setobj.iterator(); iterator.hasNext();) {
+			Map.Entry<Object, Object> entry = (Map.Entry<Object, Object>) iterator.next();
+			map.put(entry.getKey().toString(), entry.getValue() == null ? "" : entry.getValue().toString().trim());
+		}
+		return map;
+
+	}
+
+	public static boolean isInnerIP(String ipAddress) {
+		boolean isInnerIp = false;
+		long ipNum = getIpNum(ipAddress);
+		/**
+		 * 私有IP:A类 10.0.0.0-10.255.255.255 B类 172.16.0.0-172.31.255.255 C类 192.168.0.0-192.168.255.255 当然,还有127这个网段是环回地址
+		 **/
+		long aBegin = getIpNum("10.0.0.0");
+		long aEnd = getIpNum("10.255.255.255");
+		long bBegin = getIpNum("172.16.0.0");
+		long bEnd = getIpNum("172.31.255.255");
+		long cBegin = getIpNum("192.168.0.0");
+		long cEnd = getIpNum("192.168.255.255");
+		isInnerIp = isInner(ipNum, aBegin, aEnd) || isInner(ipNum, bBegin, bEnd) || isInner(ipNum, cBegin, cEnd) || "127.0.0.1".equals(ipAddress);
+		return isInnerIp;
+	}
+
+	private static long getIpNum(String ipAddress) {
+		String[] ip = ipAddress.split("\\.");
+		long a = Integer.parseInt(ip[0]);
+		long b = Integer.parseInt(ip[1]);
+		long c = Integer.parseInt(ip[2]);
+		long d = Integer.parseInt(ip[3]);
+
+		long ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;
+		return ipNum;
+	}
+
+	private static boolean isInner(long userIp, long begin, long end) {
+		return (userIp >= begin) && (userIp <= end);
+	}
+
+	/**
+	 * 将下划线大写方式命名的字符串转换为驼峰式。
+	 * 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
+	 * 例如:hello_world->helloWorld
+	 *
+	 * @param name
+	 *            转换前的下划线大写方式命名的字符串
+	 * @return 转换后的驼峰式命名的字符串
+	 */
+	public static String camelName(String name) {
+		StringBuilder result = new StringBuilder();
+		// 快速检查
+		if (name == null || name.isEmpty()) {
+			// 没必要转换
+			return "";
+		} else if (!name.contains("_")) {
+			// 不含下划线,仅将首字母小写
+			//update-begin--Author:zhoujf  Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能
+			//update-begin--Author:zhoujf  Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能
+			return name.substring(0, 1).toLowerCase() + name.substring(1).toLowerCase();
+			//update-end--Author:zhoujf  Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能
+		}
+		// 用下划线将原始字符串分割
+		String camels[] = name.split("_");
+		for (String camel : camels) {
+			// 跳过原始字符串中开头、结尾的下换线或双重下划线
+			if (camel.isEmpty()) {
+				continue;
+			}
+			// 处理真正的驼峰片段
+			if (result.length() == 0) {
+				// 第一个驼峰片段,全部字母都小写
+				result.append(camel.toLowerCase());
+			} else {
+				// 其他的驼峰片段,首字母大写
+				result.append(camel.substring(0, 1).toUpperCase());
+				result.append(camel.substring(1).toLowerCase());
+			}
+		}
+		return result.toString();
+	}
+
+	/**
+	 * 将下划线大写方式命名的字符串转换为驼峰式。
+	 * 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
+	 * 例如:hello_world,test_id->helloWorld,testId
+	 *
+	 * @param name
+	 *            转换前的下划线大写方式命名的字符串
+	 * @return 转换后的驼峰式命名的字符串
+	 */
+	public static String camelNames(String names) {
+		if(names==null|| "".equals(names)){
+			return null;
+		}
+		StringBuffer sf = new StringBuffer();
+		String[] fs = names.split(",");
+		for (String field : fs) {
+			field = camelName(field);
+			sf.append(field + ",");
+		}
+		String result = sf.toString();
+		return result.substring(0, result.length() - 1);
+	}
+
+	//update-begin--Author:zhoujf  Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能
+	/**
+	 * 将下划线大写方式命名的字符串转换为驼峰式。(首字母写)
+	 * 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
+	 * 例如:hello_world->HelloWorld
+	 *
+	 * @param name
+	 *            转换前的下划线大写方式命名的字符串
+	 * @return 转换后的驼峰式命名的字符串
+	 */
+	public static String camelNameCapFirst(String name) {
+		StringBuilder result = new StringBuilder();
+		// 快速检查
+		if (name == null || name.isEmpty()) {
+			// 没必要转换
+			return "";
+		} else if (!name.contains("_")) {
+			// 不含下划线,仅将首字母小写
+			return name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase();
+		}
+		// 用下划线将原始字符串分割
+		String camels[] = name.split("_");
+		for (String camel : camels) {
+			// 跳过原始字符串中开头、结尾的下换线或双重下划线
+			if (camel.isEmpty()) {
+				continue;
+			}
+			// 其他的驼峰片段,首字母大写
+			result.append(camel.substring(0, 1).toUpperCase());
+			result.append(camel.substring(1).toLowerCase());
+		}
+		return result.toString();
+	}
+	//update-end--Author:zhoujf  Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能
+
+	/**
+	 * 将驼峰命名转化成下划线
+	 * @param para
+	 * @return
+	 */
+	public static String camelToUnderline(String para){
+        if(para.length()<3){
+        	return para.toLowerCase();
+        }
+        StringBuilder sb=new StringBuilder(para);
+        int temp=0;//定位
+        //从第三个字符开始 避免命名不规范
+        for(int i=2;i<para.length();i++){
+            if(Character.isUpperCase(para.charAt(i))){
+                sb.insert(i+temp, "_");
+                temp+=1;
+            }
+        }
+        return sb.toString().toLowerCase();
+	}
+
+	/**
+	 * 随机数
+	 * @param place 定义随机数的位数
+	 */
+	public static String randomGen(int place) {
+		String base = "qwertyuioplkjhgfdsazxcvbnmQAZWSXEDCRFVTGBYHNUJMIKLOP0123456789";
+		StringBuffer sb = new StringBuffer();
+		Random rd = new Random();
+		for(int i=0;i<place;i++) {
+			sb.append(base.charAt(rd.nextInt(base.length())));
+		}
+		return sb.toString();
+	}
+
+	/**
+	 * 获取类的所有属性,包括父类
+	 *
+	 * @param object
+	 * @return
+	 */
+	public static Field[] getAllFields(Object object) {
+		Class<?> clazz = object.getClass();
+		List<Field> fieldList = new ArrayList<>();
+		while (clazz != null) {
+			fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
+			clazz = clazz.getSuperclass();
+		}
+		Field[] fields = new Field[fieldList.size()];
+		fieldList.toArray(fields);
+		return fields;
+	}
+
+	/**
+	  * 将map的key全部转成小写
+	 * @param list
+	 * @return
+	 */
+	public static List<Map<String, Object>> toLowerCasePageList(List<Map<String, Object>> list){
+		List<Map<String, Object>> select = new ArrayList<>();
+		for (Map<String, Object> row : list) {
+			 Map<String, Object> resultMap = new HashMap<>();
+			 Set<String> keySet = row.keySet();
+			 for (String key : keySet) {
+				 String newKey = key.toLowerCase();
+				 resultMap.put(newKey, row.get(key));
+			 }
+			 select.add(resultMap);
+		}
+		return select;
+	}
+
+	/**
+	 * 将entityList转换成modelList
+	 * @param fromList
+	 * @param tClass
+	 * @param <F>
+	 * @param <T>
+	 * @return
+	 */
+	public static<F,T> List<T> entityListToModelList(List<F> fromList, Class<T> tClass){
+		if(fromList.isEmpty() || fromList == null){
+			return null;
+		}
+		List<T> tList = new ArrayList<>();
+		for(F f : fromList){
+			T t = entityToModel(f, tClass);
+			tList.add(t);
+		}
+		return tList;
+	}
+
+	public static<F,T> T entityToModel(F entity, Class<T> modelClass) {
+		log.debug("entityToModel : Entity属性的值赋值到Model");
+		Object model = null;
+		if (entity == null || modelClass ==null) {
+			return null;
+		}
+
+		try {
+			model = modelClass.newInstance();
+		} catch (InstantiationException e) {
+			log.error("entityToModel : 实例化异常", e);
+		} catch (IllegalAccessException e) {
+			log.error("entityToModel : 安全权限异常", e);
+		}
+		BeanUtils.copyProperties(entity, model);
+		return (T)model;
+	}
+
+	/**
+	 * 判断 list 是否为空
+	 *
+	 * @param list
+	 * @return true or false
+	 * list == null		: true
+	 * list.size() == 0	: true
+	 */
+	public static boolean listIsEmpty(Collection list) {
+		return (list == null || list.size() == 0);
+	}
+
+	/**
+	 * 判断 list 是否不为空
+	 *
+	 * @param list
+	 * @return true or false
+	 * list == null		: false
+	 * list.size() == 0	: false
+	 */
+	public static boolean listIsNotEmpty(Collection list) {
+		return !listIsEmpty(list);
+	}
+
+}

+ 107 - 0
xxl-job-executor-springboot/src/main/resources/application-dev.yml

@@ -0,0 +1,107 @@
+spring:
+  servlet:
+    multipart:
+      max-file-size: -1
+      max-request-size: -1
+  mail:
+    host: smtp.163.com
+    username: jeecgos@163.com
+    password: ??
+    properties:
+      mail:
+        smtp:
+          auth: true
+          starttls:
+            enable: true
+            required: true
+  #json 时间戳统一转换
+  jackson:
+    date-format:   yyyy-MM-dd HH:mm:ss
+    time-zone:   GMT+8
+  aop:
+    proxy-target-class: true
+  # 设置静态文件路径,js,css等
+  mvc:
+    static-path-pattern: /**
+  resource:
+    static-locations: classpath:/static/,classpath:/public/
+  autoconfigure:
+    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
+  datasource:
+    druid:
+      removeAbandoned: true
+      removeAbandonedTimeout: 300
+      stat-view-servlet:
+        enabled: true
+        loginUsername: admin
+        loginPassword: 123456
+      web-stat-filter:
+        enabled: true
+    dynamic:
+      druid:
+        connection-init-sql: set names utf8mb4
+        initial-size: 5
+        min-idle: 5
+        maxActive: 20
+        maxWait: 60000
+        timeBetweenEvictionRunsMillis: 60000
+        minEvictableIdleTimeMillis: 300000
+        validationQuery: SELECT 1 FROM DUAL
+        testWhileIdle: true
+        testOnBorrow: false
+        testOnReturn: false
+        poolPreparedStatements: true
+        maxPoolPreparedStatementPerConnectionSize: 20
+        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+        filters: stat,slf4j
+        # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
+        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
+      datasource:
+        master:
+          url: jdbc:mysql://139.186.27.96:4000/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
+          username: hcst
+          password: hcst@2020
+          driver-class-name: com.mysql.jdbc.Driver
+xxl:
+  job:
+    accessToken:
+    executor:
+      appname: datapull-job-bytedance
+      port: 9988
+      ip:
+      logpath: /data/applogs/xxl-job/jobhandler
+      logretentiondays: 30
+      address:
+    admin:
+      addresses: http://127.0.0.1:8090/xxl-job-admin
+#mybatis plus 设置
+mybatis-plus:
+  mapper-locations: classpath*:com/xxl/job/executor/**/*.xml
+  global-config:
+    banner: false
+    db-config:
+      id-type: 4
+      table-underline: true
+    configuration:
+      # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
+      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+jeecg:
+  path:
+    #文件上传根目录 设置
+    upload: /mnt/upload
+    #webapp文件路径
+    webapp: /mnt/webapp
+    video-upload: /mnt/upload/video/
+    image-upload: D://data//image//
+    kuaishou-agent-image: D://temp.png
+    kuaishou-account-captcha-image: D://captcha.png
+    chrome-driver: D://chromedriver.exe
+    csv-upload: /mnt/upload/csv/
+    bak-database-file: /mnt/data/bak/
+    report-history: D://mnt//reportKs//
+    report-daily: D://mnt//reportKs//
+oss:
+  replace:
+    replace-value: oss-cn-beijing
+    replace-old-value: oss-cn-beijing
+    download: /data/file/video/

+ 107 - 0
xxl-job-executor-springboot/src/main/resources/application-prod.yml

@@ -0,0 +1,107 @@
+spring:
+  servlet:
+    multipart:
+      max-file-size: -1
+      max-request-size: -1
+  mail:
+    host: smtp.163.com
+    username: jeecgos@163.com
+    password: ??
+    properties:
+      mail:
+        smtp:
+          auth: true
+          starttls:
+            enable: true
+            required: true
+  #json 时间戳统一转换
+  jackson:
+    date-format:   yyyy-MM-dd HH:mm:ss
+    time-zone:   GMT+8
+  aop:
+    proxy-target-class: true
+  # 设置静态文件路径,js,css等
+  mvc:
+    static-path-pattern: /**
+  resource:
+    static-locations: classpath:/static/,classpath:/public/
+  autoconfigure:
+    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
+  datasource:
+    druid:
+      removeAbandoned: true
+      removeAbandonedTimeout: 300
+      stat-view-servlet:
+        enabled: true
+        loginUsername: admin
+        loginPassword: 123456
+      web-stat-filter:
+        enabled: true
+    dynamic:
+      druid:
+        connection-init-sql: set names utf8mb4
+        initial-size: 5
+        min-idle: 5
+        maxActive: 20
+        maxWait: 60000
+        timeBetweenEvictionRunsMillis: 60000
+        minEvictableIdleTimeMillis: 300000
+        validationQuery: SELECT 1 FROM DUAL
+        testWhileIdle: true
+        testOnBorrow: false
+        testOnReturn: false
+        poolPreparedStatements: true
+        maxPoolPreparedStatementPerConnectionSize: 20
+        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+        filters: stat,slf4j
+        # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
+        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
+      datasource:
+        master:
+          url: jdbc:mysql://139.186.27.96:4000/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
+          username: hcst
+          password: hcst@2020
+          driver-class-name: com.mysql.jdbc.Driver
+xxl:
+  job:
+    accessToken:
+    executor:
+      appname: datapull-job-bytedance
+      port: 9988
+      ip:
+      logpath: /data/applogs/xxl-job/jobhandler
+      logretentiondays: 30
+      address:
+    admin:
+      addresses: http://127.0.0.1:8090/xxl-job-admin
+#mybatis plus 设置
+mybatis-plus:
+  mapper-locations: classpath*:com/xxl/job/executor/**/*.xml
+  global-config:
+    banner: false
+    db-config:
+      id-type: 4
+      table-underline: true
+    configuration:
+      # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
+      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+jeecg:
+  path:
+    #文件上传根目录 设置
+    upload: /mnt/upload
+    #webapp文件路径
+    webapp: /mnt/webapp
+    video-upload: /mnt/upload/video/
+    image-upload: D://data//image//
+    kuaishou-agent-image: D://temp.png
+    kuaishou-account-captcha-image: D://captcha.png
+    chrome-driver: D://chromedriver.exe
+    csv-upload: /mnt/upload/csv/
+    bak-database-file: /mnt/data/bak/
+    report-history: D://mnt//reportKs//
+    report-daily: D://mnt//reportKs//
+oss:
+  replace:
+    replace-value: oss-cn-beijing
+    replace-old-value: oss-cn-beijing
+    download: /data/file/video/

+ 107 - 0
xxl-job-executor-springboot/src/main/resources/application-test.yml

@@ -0,0 +1,107 @@
+spring:
+  servlet:
+    multipart:
+      max-file-size: -1
+      max-request-size: -1
+  mail:
+    host: smtp.163.com
+    username: jeecgos@163.com
+    password: ??
+    properties:
+      mail:
+        smtp:
+          auth: true
+          starttls:
+            enable: true
+            required: true
+  #json 时间戳统一转换
+  jackson:
+    date-format:   yyyy-MM-dd HH:mm:ss
+    time-zone:   GMT+8
+  aop:
+    proxy-target-class: true
+  # 设置静态文件路径,js,css等
+  mvc:
+    static-path-pattern: /**
+  resource:
+    static-locations: classpath:/static/,classpath:/public/
+  autoconfigure:
+    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
+  datasource:
+    druid:
+      removeAbandoned: true
+      removeAbandonedTimeout: 300
+      stat-view-servlet:
+        enabled: true
+        loginUsername: admin
+        loginPassword: 123456
+      web-stat-filter:
+        enabled: true
+    dynamic:
+      druid:
+        connection-init-sql: set names utf8mb4
+        initial-size: 5
+        min-idle: 5
+        maxActive: 20
+        maxWait: 60000
+        timeBetweenEvictionRunsMillis: 60000
+        minEvictableIdleTimeMillis: 300000
+        validationQuery: SELECT 1 FROM DUAL
+        testWhileIdle: true
+        testOnBorrow: false
+        testOnReturn: false
+        poolPreparedStatements: true
+        maxPoolPreparedStatementPerConnectionSize: 20
+        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+        filters: stat,slf4j
+        # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
+        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
+      datasource:
+        master:
+          url: jdbc:mysql://139.186.27.96:4000/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
+          username: hcst
+          password: hcst@2020
+          driver-class-name: com.mysql.jdbc.Driver
+xxl:
+  job:
+    accessToken:
+    executor:
+      appname: datapull-job-bytedance
+      port: 9988
+      ip:
+      logpath: /data/applogs/xxl-job/jobhandler
+      logretentiondays: 30
+      address:
+    admin:
+      addresses: http://127.0.0.1:8090/xxl-job-admin
+#mybatis plus 设置
+mybatis-plus:
+  mapper-locations: classpath*:com/xxl/job/executor/**/*.xml
+  global-config:
+    banner: false
+    db-config:
+      id-type: 4
+      table-underline: true
+    configuration:
+      # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
+      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+jeecg:
+  path:
+    #文件上传根目录 设置
+    upload: /mnt/upload
+    #webapp文件路径
+    webapp: /mnt/webapp
+    video-upload: /mnt/upload/video/
+    image-upload: D://data//image//
+    kuaishou-agent-image: D://temp.png
+    kuaishou-account-captcha-image: D://captcha.png
+    chrome-driver: D://chromedriver.exe
+    csv-upload: /mnt/upload/csv/
+    bak-database-file: /mnt/data/bak/
+    report-history: D://mnt//reportKs//
+    report-daily: D://mnt//reportKs//
+oss:
+  replace:
+    replace-value: oss-cn-beijing
+    replace-old-value: oss-cn-beijing
+    download: /data/file/video/

+ 2 - 118
xxl-job-executor-springboot/src/main/resources/application.yml

@@ -6,123 +6,7 @@ management:
 server:
   port: 8092
 spring:
+  profiles:
+    active: @activatedProperties@
   application:
     name: system-web
-  servlet:
-    multipart:
-      max-file-size: -1
-      max-request-size: -1
-  mail:
-    host: smtp.163.com
-    username: jeecgos@163.com
-    password: ??
-    properties:
-      mail:
-        smtp:
-          auth: true
-          starttls:
-            enable: true
-            required: true
-  #json 时间戳统一转换
-  jackson:
-    date-format:   yyyy-MM-dd HH:mm:ss
-    time-zone:   GMT+8
-  aop:
-    proxy-target-class: true
-  # 设置静态文件路径,js,css等
-  mvc:
-    static-path-pattern: /**
-  resource:
-    static-locations: classpath:/static/,classpath:/public/
-  autoconfigure:
-    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
-  datasource:
-    druid:
-      removeAbandoned: true
-      removeAbandonedTimeout: 300
-      stat-view-servlet:
-        enabled: true
-        loginUsername: admin
-        loginPassword: 123456
-      web-stat-filter:
-        enabled: true
-    dynamic:
-      druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
-        # 连接池的配置信息
-        # 初始化大小,最小,最大
-        connection-init-sql: set names utf8mb4
-
-        initial-size: 5
-        min-idle: 5
-        maxActive: 20
-        # 配置获取连接等待超时的时间
-        maxWait: 60000
-        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
-        timeBetweenEvictionRunsMillis: 60000
-        # 配置一个连接在池中最小生存的时间,单位是毫秒
-        minEvictableIdleTimeMillis: 300000
-        validationQuery: SELECT 1 FROM DUAL
-        testWhileIdle: true
-        testOnBorrow: false
-        testOnReturn: false
-        # 打开PSCache,并且指定每个连接上PSCache的大小
-        poolPreparedStatements: true
-        maxPoolPreparedStatementPerConnectionSize: 20
-        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
-        filters: stat,slf4j
-        # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
-        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
-      datasource:
-        master:
-#          url: jdbc:mysql://172.30.0.4:4000/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
-          url: jdbc:mysql://139.186.27.96:4000/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
-          username: hcst
-          password: hcst@2020
-          driver-class-name: com.mysql.jdbc.Driver
-xxl:
-  job:
-    accessToken:
-    executor:
-      appname: datapull-job-bytedance
-      port: 9988
-      ip:
-      logpath: /data/applogs/xxl-job/jobhandler
-      logretentiondays: 30
-      address:
-    admin:
-#      addresses: http://139.186.29.76:8090/xxl-job-admin/
-      addresses: http://127.0.0.1:8090/xxl-job-admin
-#mybatis plus 设置
-mybatis-plus:
-  mapper-locations: classpath*:com/xxl/job/executor/**/*.xml
-  global-config:
-    # 关闭MP3.0自带的banner
-    banner: false
-    db-config:
-      #主键类型  0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
-      id-type: 4
-      # 默认数据库表下划线命名
-      table-underline: true
-    configuration:
-      # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
-      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-jeecg:
-  path:
-    #文件上传根目录 设置
-    upload: /mnt/upload
-    #webapp文件路径
-    webapp: /mnt/webapp
-    video-upload: /mnt/upload/video/
-    image-upload: D://data//image//
-    kuaishou-agent-image: D://temp.png
-    kuaishou-account-captcha-image: D://captcha.png
-    chrome-driver: D://chromedriver.exe
-    csv-upload: /mnt/upload/csv/
-    bak-database-file: /mnt/data/bak/
-    report-history: D://mnt//reportKs//
-    report-daily: D://mnt//reportKs//
-oss:
-  replace:
-    replace-value: oss-cn-beijing
-    replace-old-value: oss-cn-beijing
-    download: /data/file/video/

+ 0 - 42
xxl-job-executor-springboot/src/main/resources/bytedance_config.properties

@@ -1,42 +0,0 @@
-#release
-bytedance_appid=1635316529903624
-# bytedance_appid=1634953881401358
-bytedance_secret=0c51523e90d6166418fc8421a4896808e90e26f4
-# bytedance_secret=34bc59f53955c66871ce111a1f15a6051cfa3f12
-#release
-bytedance_api_url=https://ad.oceanengine.com/open_api
-bytedance_auth_url=https://ad.oceanengine.com/openapi
-
-#sandbox
-#bytedance_api_url=https://test-ad.toutiao.com/open_api
-#bytedance_auth_url=https://test-ad.toutiao.com/open_api
-#bytedance_callback_url=http://callback.c-top.com.cn/bytedance
-bytedance_callback_url=http://adsp.c-top.com.cn:8080/jeecg-boot/bytedance
-bytedance_v2_advertiser_info=/2/advertiser/public_info/
-bytedance_v2_ad_get=/2/ad/get/
-bytedance_v2_advertiser_fund_daily_stat=/2/advertiser/fund/daily_stat/
-bytedance_v2_ad_create=/2/ad/create/
-bytedance_v2_ad_update=/2/ad/update/
-bytedance_v2_ad_update_status=/2/ad/update/status/
-bytedance_v2_ad_update_bid=/2/ad/update/bid/
-bytedance_v2_ad_update_budget=/2/ad/update/budget/
-bytedance_v2_ad_update_reject_reason=2/ad/reject_reason/
-bytedance_v2_campaign_get=/2/campaign/get/
-bytedance_v2_campaign_create=/2/campaign/create/
-bytedance_v2_campaign_update_status=/2/campaign/update/status/
-bytedance_v2_campaign_update=/2/campaign/update/
-bytedance_v2_dmp_custom_audience_select=/2/dmp/custom_audience/select/
-bytedance_v2_file_video_ad=/2/file/video/ad/
-bytedance_v2_file_image_ad=/2/file/image/ad/
-bytedance_v2_creative_update_status=/2/creative/update/status/
-bytedance_v2_creative_material_get=/2/creative/material/read/
-bytedance_v2_creative_create_v2=/2/creative/create_v2/
-bytedance_v2_creative_get=/2/creative/get/
-bytedance_v2_creative_read=/2/creative/read_v2/
-bytedance_v2_creative_update=/2/creative/update_v2/
-bytedance_v2_creative_reject_reason=/2/creative/reject_reason/
-##报表相关
-bytedance_v2_advertiser_report_get=/2/report/advertiser/get/
-bytedance_v2_campaign_report_get=/2/report/campaign/get/
-bytedance_v2_ad_report_get=/2/report/ad/get/
-bytedance_v2_ad_creative_get=/2/report/creative/get/