浏览代码

修改创意批量代码接口

syh 4 年之前
父节点
当前提交
a7d6c1ac58

+ 28 - 0
jeecg-boot-module-system/pom.xml

@@ -151,6 +151,34 @@
             <artifactId>pagehelper</artifactId>
             <artifactId>pagehelper</artifactId>
             <version>5.1.11</version>
             <version>5.1.11</version>
         </dependency>
         </dependency>
+
+        <!--drools规则引擎-->
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-core</artifactId>
+            <version>7.6.0.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-compiler</artifactId>
+            <version>7.6.0.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-templates</artifactId>
+            <version>7.6.0.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>org.kie</groupId>
+            <artifactId>kie-api</artifactId>
+            <version>7.6.0.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>org.kie</groupId>
+            <artifactId>kie-spring</artifactId>
+            <version>7.6.0.Final</version>
+        </dependency>
+
     </dependencies>
     </dependencies>
 
 
     <dependencyManagement>
     <dependencyManagement>

+ 60 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/config/RuleEngineConfig.java

@@ -0,0 +1,60 @@
+package org.jeecg.config;
+
+import org.kie.api.KieBase;
+import org.kie.api.KieServices;
+import org.kie.api.builder.KieBuilder;
+import org.kie.api.builder.KieFileSystem;
+import org.kie.api.builder.KieRepository;
+import org.kie.api.runtime.KieContainer;
+import org.kie.api.runtime.KieSession;
+import org.kie.internal.io.ResourceFactory;
+import org.kie.spring.KModuleBeanFactoryPostProcessor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.core.io.support.ResourcePatternResolver;
+
+import java.io.IOException;
+
+@Configuration
+public class RuleEngineConfig {
+    private static final Logger LOGGER = LoggerFactory.getLogger(RuleEngineConfig.class) ;
+    private static final String RULES_PATH = "drools/";
+    private final KieServices kieServices = KieServices.Factory.get();
+    @Bean
+    public KieFileSystem kieFileSystem() throws IOException {
+        KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
+        ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
+        Resource[] files = resourcePatternResolver.getResources("classpath*:" + RULES_PATH + "*.*");
+        String path = null;
+        for (Resource file : files) {
+            path = RULES_PATH + file.getFilename();
+            LOGGER.info("path="+path);
+            kieFileSystem.write(ResourceFactory.newClassPathResource(path, "UTF-8"));
+        }
+        return kieFileSystem;
+    }
+    @Bean
+    public KieContainer kieContainer() throws IOException {
+        KieRepository kieRepository = kieServices.getRepository();
+        kieRepository.addKieModule(kieRepository::getDefaultReleaseId);
+        KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem());
+        kieBuilder.buildAll();
+        return kieServices.newKieContainer(kieRepository.getDefaultReleaseId());
+    }
+    @Bean
+    public KieBase kieBase() throws IOException {
+        return kieContainer().getKieBase();
+    }
+    @Bean
+    public KieSession kieSession() throws IOException {
+        return kieContainer().newKieSession();
+    }
+    @Bean
+    public KModuleBeanFactoryPostProcessor kiePostProcessor() {
+        return new KModuleBeanFactoryPostProcessor();
+    }
+}

+ 9 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IRuleEngineService.java

@@ -0,0 +1,9 @@
+package org.jeecg.modules.ctop.service;
+
+import org.jeecg.modules.ctop.vo.QueryParam;
+
+public interface IRuleEngineService {
+    void executeAddRule(QueryParam param);
+
+    void executeRemoveRule(QueryParam param);
+}

+ 21 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/RuleEngineServiceImpl.java

@@ -0,0 +1,21 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.modules.ctop.service.IRuleEngineService;
+import org.jeecg.modules.ctop.vo.QueryParam;
+import org.springframework.stereotype.Service;
+
+@Service
+@Slf4j
+public class RuleEngineServiceImpl implements IRuleEngineService {
+    @Override
+    public void executeAddRule(QueryParam param) {
+        log.info("参数数据:"+param.getParamId()+";"+param.getParamSign());
+        System.out.println("add success");
+    }
+    @Override
+    public void executeRemoveRule(QueryParam param) {
+        log.info("参数数据:"+param.getParamId()+";"+param.getParamSign());
+        System.out.println("remove success");
+    }
+}

+ 9 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/vo/QueryParam.java

@@ -0,0 +1,9 @@
+package org.jeecg.modules.ctop.vo;
+
+import lombok.Data;
+
+@Data
+public class QueryParam {
+    private String paramId;
+    private String paramSign;
+}

+ 8 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/vo/RuleResult.java

@@ -0,0 +1,8 @@
+package org.jeecg.modules.ctop.vo;
+
+import lombok.Data;
+
+@Data
+public class RuleResult {
+    private boolean postCodeResult;
+}

+ 0 - 6
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java

@@ -43,7 +43,6 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
 	@Override
 	@Override
 	@Cacheable(value = CacheConstant.DICT_CACHE,key = "#code")
 	@Cacheable(value = CacheConstant.DICT_CACHE,key = "#code")
 	public List<DictModel> queryDictItemsByCode(String code) {
 	public List<DictModel> queryDictItemsByCode(String code) {
-		log.info("无缓存dictCache的时候调用这里!");
 		return sysDictMapper.queryDictItemsByCode(code);
 		return sysDictMapper.queryDictItemsByCode(code);
 	}
 	}
 
 
@@ -57,7 +56,6 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
 	@Override
 	@Override
 	@Cacheable(value = CacheConstant.DICT_CACHE)
 	@Cacheable(value = CacheConstant.DICT_CACHE)
 	public String queryDictTextByKey(String code, String key,String extendsKey,String extendsValue) {
 	public String queryDictTextByKey(String code, String key,String extendsKey,String extendsValue) {
-		log.info("无缓存dictText的时候调用这里!");
 		if(null == extendsKey||extendsKey.trim().equals("")){
 		if(null == extendsKey||extendsKey.trim().equals("")){
 			extendsKey = null;
 			extendsKey = null;
 		}
 		}
@@ -77,13 +75,11 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
 	 */
 	 */
 	@Override
 	@Override
 	public List<DictModel> queryTableDictItemsByCode(String table, String text, String code) {
 	public List<DictModel> queryTableDictItemsByCode(String table, String text, String code) {
-		log.info("无缓存dictTableList的时候调用这里!");
 		return sysDictMapper.queryTableDictItemsByCode(table,text,code);
 		return sysDictMapper.queryTableDictItemsByCode(table,text,code);
 	}
 	}
 
 
 	@Override
 	@Override
 	public List<DictModel> queryTableDictItemsByCodeAndFilter(String table, String text, String code, String filterSql) {
 	public List<DictModel> queryTableDictItemsByCodeAndFilter(String table, String text, String code, String filterSql) {
-		log.info("无缓存dictTableList的时候调用这里!");
 		return sysDictMapper.queryTableDictItemsByCodeAndFilter(table,text,code,filterSql);
 		return sysDictMapper.queryTableDictItemsByCodeAndFilter(table,text,code,filterSql);
 	}
 	}
 
 
@@ -99,7 +95,6 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
 	@Override
 	@Override
 	@Cacheable(value = "dictTableCache")
 	@Cacheable(value = "dictTableCache")
 	public String queryTableDictTextByKey(String table,String text,String code, String key,String extendsKey,String extendsValue) {
 	public String queryTableDictTextByKey(String table,String text,String code, String key,String extendsKey,String extendsValue) {
-		log.info("无缓存dictTable的时候调用这里!");
 		if(null == extendsKey||extendsKey.trim().equals("")){
 		if(null == extendsKey||extendsKey.trim().equals("")){
 			extendsKey = null;
 			extendsKey = null;
 		}
 		}
@@ -121,7 +116,6 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
     @Override
     @Override
     @Transactional
     @Transactional
     public void saveMain(SysDict sysDict, List<SysDictItem> sysDictItemList) {
     public void saveMain(SysDict sysDict, List<SysDictItem> sysDictItemList) {
-
         sysDictMapper.insert(sysDict);
         sysDictMapper.insert(sysDict);
         if (sysDictItemList != null) {
         if (sysDictItemList != null) {
             for (SysDictItem entity : sysDictItemList) {
             for (SysDictItem entity : sysDictItemList) {

+ 17 - 0
jeecg-boot-module-system/src/main/resources/drools/rule.drl

@@ -0,0 +1,17 @@
+import org.jeecg.modules.ctop.service.impl.RuleEngineServiceImpl
+import org.slf4j.LoggerFactory
+import org.slf4j.Logger
+import org.jeecg.modules.ctop.vo.QueryParam;
+import org.jeecg.modules.ctop.vo.RuleResult;
+dialect  "java"
+rule "paramcheck1"
+    salience 99
+    when queryParam : QueryParam(paramId != null && paramSign.equals("+"))
+        resultParam : RuleResult()
+    then
+        final Logger LOGGER = LoggerFactory.getLogger("param-check-one 规则引擎") ;
+        LOGGER.info("参数:getParamId="+queryParam.getParamId()+";getParamSign="+queryParam.getParamSign());
+        RuleEngineServiceImpl ruleEngineService = new RuleEngineServiceImpl() ;
+        ruleEngineService.executeAddRule(queryParam);
+        resultParam.setPostCodeResult(true);
+end

+ 17 - 0
jeecg-boot-module-system/src/main/resources/drools/rule2.drl

@@ -0,0 +1,17 @@
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+import org.jeecg.modules.ctop.service.impl.RuleEngineServiceImpl
+import org.jeecg.modules.ctop.vo.QueryParam;
+import org.jeecg.modules.ctop.vo.RuleResult;
+dialect  "java"
+rule "paramcheck2"
+    salience 88
+    when queryParam : QueryParam(paramId != null && paramSign.equals("-"))
+        resultParam : RuleResult()
+    then
+        final Logger LOGGER = LoggerFactory.getLogger("param-check-two 规则引擎") ;
+        LOGGER.info("参数:getParamId="+queryParam.getParamId()+";getParamSign="+queryParam.getParamSign());
+        RuleEngineServiceImpl ruleEngineService = new RuleEngineServiceImpl() ;
+        ruleEngineService.executeRemoveRule(queryParam);
+        resultParam.setPostCodeResult(true);
+end

+ 28 - 0
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -21,12 +21,17 @@ import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.util.DateUtils;
 import org.jeecg.common.util.DateUtils;
 import org.jeecg.modules.ctop.entity.KuaishouEffectVideoInfo;
 import org.jeecg.modules.ctop.entity.KuaishouEffectVideoInfo;
 import org.jeecg.modules.ctop.service.IKuaishouEffectVideoInfoService;
 import org.jeecg.modules.ctop.service.IKuaishouEffectVideoInfoService;
+import org.jeecg.modules.ctop.service.IRuleEngineService;
+import org.jeecg.modules.ctop.vo.QueryParam;
+import org.jeecg.modules.ctop.vo.RuleResult;
 import org.junit.Test;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runner.RunWith;
+import org.kie.api.runtime.KieSession;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.context.junit4.SpringRunner;
 
 
+import javax.annotation.Resource;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.CountDownLatch;
@@ -192,6 +197,29 @@ public class SampleTest {
             Thread.sleep(1000L);
             Thread.sleep(1000L);
         }
         }
     }
     }
+
+    @Resource
+    private KieSession kieSession;
+    @Autowired
+    private IRuleEngineService ruleEngineService ;
+
+    @Test
+    public void testEngine(){
+        QueryParam queryParam1 = new QueryParam() ;
+        queryParam1.setParamId("1");
+        queryParam1.setParamSign("+");
+        QueryParam queryParam2 = new QueryParam() ;
+        queryParam2.setParamId("2");
+        queryParam2.setParamSign("-");
+        // 入参
+        kieSession.insert(queryParam1);
+        kieSession.insert(queryParam2);
+        kieSession.insert(this.ruleEngineService);
+        // 返参
+        RuleResult resultParam = new RuleResult();
+        kieSession.insert(resultParam);
+        kieSession.fireAllRules();
+    }
 }
 }
 
 
 
 

+ 1 - 2
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/entity/ByteDanceAdvertisePlan.java

@@ -11,7 +11,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import lombok.experimental.Accessors;
-import org.jeecgframework.poi.excel.annotation.Excel;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.Date;
@@ -46,7 +45,7 @@ public class ByteDanceAdvertisePlan {
     private String name;
     private String name;
 
 
     // 广告组id
     // 广告组id
-    @Dict(dicCode = "campaign_id",dictTable="ctop_bytedance_campaign",dicText="name")
+    @Dict(dicCode = "id",dictTable="ctop_bytedance_campaign",dicText="name")
     private Long campaignId;
     private Long campaignId;
 
 
     private String operation;
     private String operation;

+ 11 - 5
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/impl/ByteDanceCreativeServiceImpl.java

@@ -170,6 +170,7 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
         data.put("ad_id", adId);
         data.put("ad_id", adId);
         String url = PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_creative_create_v2");
         String url = PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_creative_create_v2");
         JSONObject result = HttpUtils.bytedancePostRequest(token.getAccessToken(),url,data);
         JSONObject result = HttpUtils.bytedancePostRequest(token.getAccessToken(),url,data);
+        System.out.println(result);
         Integer code = result.getInteger("code");
         Integer code = result.getInteger("code");
         String message = result.getString("message");
         String message = result.getString("message");
         if (null == code || code != 0) {
         if (null == code || code != 0) {
@@ -272,7 +273,7 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
     public Map<String, Object> batchCreate(JSONObject data) {
     public Map<String, Object> batchCreate(JSONObject data) {
         log.info(data.toJSONString());
         log.info(data.toJSONString());
         Map<String,Object>result = new HashMap<>();
         Map<String,Object>result = new HashMap<>();
-        Long accountId = data.getLong("advertiserId");
+        Long accountId = data.getLong("accountId");
         CtopOauthToken token = tokenService.getTokenByAccountId(accountId);
         CtopOauthToken token = tokenService.getTokenByAccountId(accountId);
         if(null == token){
         if(null == token){
             ResultMapUtils.setResultMap(result,StatusCode.COMMON_PARAM_ERROR);
             ResultMapUtils.setResultMap(result,StatusCode.COMMON_PARAM_ERROR);
@@ -285,8 +286,13 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
         }
         }
         //拼接参数
         //拼接参数
         JSONObject params  = initParams(data);
         JSONObject params  = initParams(data);
-
-        return null;
+        JSONArray array = new JSONArray();
+        for(int i=0;i<planIds.size();i++){
+            Map<String,Object> getData = creativeCreate(accountId+"",planIds.getLong(i),params);
+            array.add(getData);
+        }
+        result.put("data",array);
+        return result;
     }
     }
 
 
     private JSONObject initParams(JSONObject data) {
     private JSONObject initParams(JSONObject data) {
@@ -351,12 +357,12 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
         if(null!=generateDerivedAd&&generateDerivedAd!=0){
         if(null!=generateDerivedAd&&generateDerivedAd!=0){
             params.put("generate_derived_ad",generateDerivedAd);
             params.put("generate_derived_ad",generateDerivedAd);
         }
         }
-        String playableUrl = data.getString("playable_url");
+        String playableUrl = data.getString("playableUrl");
         if(null!=playableUrl&&!"".equals(playableUrl.trim())){
         if(null!=playableUrl&&!"".equals(playableUrl.trim())){
             params.put("playable_url",playableUrl);
             params.put("playable_url",playableUrl);
         }
         }
         Long isPresentedVideo = data.getLong("isPresentedVideo");
         Long isPresentedVideo = data.getLong("isPresentedVideo");
-        if(null!=isCommentDisable&&isPresentedVideo!=0){
+        if(null!=isPresentedVideo&&isPresentedVideo!=0){
             params.put("is_presented_video",isPresentedVideo);
             params.put("is_presented_video",isPresentedVideo);
         }
         }
         Long creativeAutoGenerateSwitch = data.getLong("creativeAutoGenerateSwitch");
         Long creativeAutoGenerateSwitch = data.getLong("creativeAutoGenerateSwitch");