瀏覽代碼

Merge branch 'test' of http://git.tjyourong.com.cn/ctop/adsp-boot into test

hcst_sunzhen 4 年之前
父節點
當前提交
7027966bc6
共有 16 個文件被更改,包括 361 次插入39 次删除
  1. 28 0
      jeecg-boot-module-system/pom.xml
  2. 60 0
      jeecg-boot-module-system/src/main/java/org/jeecg/config/RuleEngineConfig.java
  3. 1 0
      jeecg-boot-module-system/src/main/java/org/jeecg/config/ShiroConfig.java
  4. 9 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IRuleEngineService.java
  5. 21 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/RuleEngineServiceImpl.java
  6. 9 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/vo/QueryParam.java
  7. 8 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/vo/RuleResult.java
  8. 0 6
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java
  9. 17 0
      jeecg-boot-module-system/src/main/resources/drools/rule.drl
  10. 17 0
      jeecg-boot-module-system/src/main/resources/drools/rule2.drl
  11. 28 0
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  12. 140 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/controller/ByteDanceBatchController.java
  13. 0 1
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/entity/ByteDanceAdvertisePlan.java
  14. 1 17
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/entity/ByteDanceVideoInfo.java
  15. 1 6
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/impl/ByteDanceAdvertisePlanServiceImpl.java
  16. 21 9
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/impl/ByteDanceCreativeServiceImpl.java

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

@@ -151,6 +151,34 @@
             <artifactId>pagehelper</artifactId>
             <version>5.1.11</version>
         </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>
 
     <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();
+    }
+}

+ 1 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/config/ShiroConfig.java

@@ -144,6 +144,7 @@ public class ShiroConfig {
         filterChainDefinitionMap.put("/ks/web/test", "anon");
         filterChainDefinitionMap.put("/ureport/**", "anon");
         filterChainDefinitionMap.put("/job/test/*", "anon");
+        filterChainDefinitionMap.put("/kuaishou/**", "anon");
 
         // 添加自己的过滤器并且取名为jwt
         Map<String, Filter> filterMap = new HashMap<>(1);

+ 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
 	@Cacheable(value = CacheConstant.DICT_CACHE,key = "#code")
 	public List<DictModel> queryDictItemsByCode(String code) {
-		log.info("无缓存dictCache的时候调用这里!");
 		return sysDictMapper.queryDictItemsByCode(code);
 	}
 
@@ -57,7 +56,6 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
 	@Override
 	@Cacheable(value = CacheConstant.DICT_CACHE)
 	public String queryDictTextByKey(String code, String key,String extendsKey,String extendsValue) {
-		log.info("无缓存dictText的时候调用这里!");
 		if(null == extendsKey||extendsKey.trim().equals("")){
 			extendsKey = null;
 		}
@@ -77,13 +75,11 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
 	 */
 	@Override
 	public List<DictModel> queryTableDictItemsByCode(String table, String text, String code) {
-		log.info("无缓存dictTableList的时候调用这里!");
 		return sysDictMapper.queryTableDictItemsByCode(table,text,code);
 	}
 
 	@Override
 	public List<DictModel> queryTableDictItemsByCodeAndFilter(String table, String text, String code, String filterSql) {
-		log.info("无缓存dictTableList的时候调用这里!");
 		return sysDictMapper.queryTableDictItemsByCodeAndFilter(table,text,code,filterSql);
 	}
 
@@ -99,7 +95,6 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
 	@Override
 	@Cacheable(value = "dictTableCache")
 	public String queryTableDictTextByKey(String table,String text,String code, String key,String extendsKey,String extendsValue) {
-		log.info("无缓存dictTable的时候调用这里!");
 		if(null == extendsKey||extendsKey.trim().equals("")){
 			extendsKey = null;
 		}
@@ -121,7 +116,6 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
     @Override
     @Transactional
     public void saveMain(SysDict sysDict, List<SysDictItem> sysDictItemList) {
-
         sysDictMapper.insert(sysDict);
         if (sysDictItemList != null) {
             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.modules.ctop.entity.KuaishouEffectVideoInfo;
 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.runner.RunWith;
+import org.kie.api.runtime.KieSession;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import javax.annotation.Resource;
 import java.util.HashMap;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
@@ -192,6 +197,29 @@ public class SampleTest {
             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();
+    }
 }
 
 

+ 140 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/controller/ByteDanceBatchController.java

@@ -0,0 +1,140 @@
+package cn.com.ctop.toutiao.modules.batch.controller;
+
+import cn.com.ctop.common.module.service.IFileInfoService;
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.toutiao.modules.batch.service.IBytedanceIndustryInfoService;
+import cn.com.ctop.toutiao.modules.material.entity.ByteDanceVideoInfo;
+import cn.com.ctop.toutiao.modules.material.entity.BytedanceImageInfo;
+import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertisePlanService;
+import cn.com.ctop.toutiao.modules.material.service.IByteDanceCreativeService;
+import cn.com.ctop.toutiao.modules.material.service.IByteDanceVideoInfoService;
+import cn.com.ctop.toutiao.modules.material.service.IBytedanceImageInfoService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+
+@Slf4j
+@RestController
+@RequestMapping("/bytedance/batch")
+public class ByteDanceBatchController {
+    @Autowired
+    IByteDanceAdvertisePlanService byteDanceAdvertisePlanService;
+    @Autowired
+    private IBytedanceIndustryInfoService bytedanceIndustryInfoService;
+    @Autowired
+    private IFileInfoService fileInfoService;
+    @Autowired
+    private IByteDanceCreativeService creativeService;
+    @Autowired
+    private IByteDanceVideoInfoService videoInfoService;
+
+    /**
+     * 获取动态词包信息
+     *
+     * @param accountId
+     * @return
+     */
+    @GetMapping("creative/words/get")
+    public Map<String, Object> getCreativeWords(Long accountId) {
+        return fileInfoService.getCreativeWords(accountId);
+    }
+
+    @GetMapping("action/text")
+    public Map<String,Object>getActionText(Long accountId,String landType){
+        return fileInfoService.getActionText(accountId,landType);
+    }
+
+    @GetMapping("industry/list")
+    public Map<String,Object>getIndustryList(){
+        return bytedanceIndustryInfoService.getIndustryList();
+    }
+    @GetMapping("load/industry")
+    public Map<String,Object>loadIndustryList(Long accountId,Integer level){
+        return bytedanceIndustryInfoService.getBytedanceIndustryList(accountId,level);
+    }
+
+    @GetMapping(value = "/getVideoList")
+    public Result<IPage<ByteDanceVideoInfo>> getBytedqanceVideoList(
+            @RequestParam(name = "type") Integer type,
+            @RequestParam(name = "accountId") Long accountId,
+            @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+            @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+            @RequestParam(name = "startDate", defaultValue = "") String startDate,
+            @RequestParam(name = "endDate", defaultValue = "") String endDate) {
+        Result<IPage<ByteDanceVideoInfo>> result = new Result<>();
+        try {
+            if (Check.isNull(accountId)) {
+                throw new Exception("账户id不能为空");
+            }
+
+            QueryWrapper<ByteDanceVideoInfo> queryWrapper = new QueryWrapper<>();
+            if (!Check.isNull(startDate) && !Check.isNull(endDate)) {
+                queryWrapper.between("create_time", startDate+" 00:00:00", endDate+" 23:59:59");
+            }
+            if(null!=type&&type!=0){
+                queryWrapper.eq("type",type);
+            }
+            queryWrapper.eq("account_id",accountId);
+            queryWrapper.orderByDesc("material_upload_time");
+            queryWrapper.groupBy("signature");
+            Page<ByteDanceVideoInfo> page = new Page<>(pageNo, pageSize);
+            IPage<ByteDanceVideoInfo> pageList = videoInfoService.page(page, queryWrapper);
+            result.setSuccess(true);
+            result.setResult(pageList);
+            return result;
+        } catch (Exception e) {
+            e.printStackTrace();
+            result.setSuccess(false);
+        }
+        return result;
+    }
+    @Autowired
+    private IBytedanceImageInfoService imageInfoService;
+
+    @GetMapping(value = "/getImageList")
+    public Result<IPage<BytedanceImageInfo>> getBytedqanceVideoList(@RequestParam(name = "accountId")Long accountId, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                                    @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                                    @RequestParam(name = "startDate", defaultValue = "") String startDate,
+                                                                    @RequestParam(name = "endDate", defaultValue = "") String endDate, HttpServletRequest req) {
+        Result<IPage<BytedanceImageInfo>> result = new Result<>();
+        try {
+            if (Check.isNull(accountId)) {
+                throw new Exception("账户id不能为空");
+            }
+            QueryWrapper<BytedanceImageInfo> queryWrapper = new QueryWrapper<>();
+            if (!Check.isNull(startDate) && !Check.isNull(endDate)) {
+                queryWrapper.between("image_create_time", startDate+" 00:00:00", endDate+" 23:59:59");
+            }
+            queryWrapper.eq("account_id",accountId);
+            queryWrapper.orderByDesc("image_create_time");
+            queryWrapper.groupBy("signature");
+            Page<BytedanceImageInfo> page = new Page<>(pageNo, pageSize);
+            IPage<BytedanceImageInfo> pageList = imageInfoService.page(page, queryWrapper);
+            result.setSuccess(true);
+            result.setResult(pageList);
+            return result;
+        } catch (Exception e) {
+            e.printStackTrace();
+            result.setSuccess(false);
+        }
+        return result;
+    }
+
+    /**
+     *  批量创建创意
+     */
+    @PostMapping("/create/creative")
+    public Map<String,Object>addCreative(@RequestBody JSONObject data){
+        return creativeService.batchCreate(data);
+    }
+}
+

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

@@ -12,7 +12,6 @@ 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;

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

@@ -59,48 +59,32 @@ public class ByteDanceVideoInfo {
     /**
      * 视频高度
      */
-    @Excel(name = "视频高度", width = 15)
-    @ApiModelProperty(value = "视频高度")
     private Integer height;
     /**
      * 视频时长
      */
-    @Excel(name = "视频时长", width = 15)
-    @ApiModelProperty(value = "视频时长")
     private Double duration;
     /**
      * 视频大小
      */
-    @Excel(name = "视频大小", width = 15)
-    @ApiModelProperty(value = "视频大小")
     private Long size;
     /**
      * 视频地址
      */
-    @ApiModelProperty(value = "视频地址")
     private String videoUrl;
-    @ApiModelProperty(value = "md5码")
     private String signature;
     private Integer status;
     private Date createTime;
-
     private Date updateTime;
-
     private String url;
-
     private String format;
-
     private String posterUrl;
-
     private Long bitRate;
-
     private Long materialId;
-
     private String source;
-
     private Date materialUploadTime;
-
     private String filename;
+    private Integer type;
 
     public ByteDanceVideoInfo(JSONObject data, CtopOauthToken token) {
         this.id = data.getString("id");

+ 1 - 6
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/impl/ByteDanceAdvertisePlanServiceImpl.java

@@ -7,7 +7,6 @@ import cn.com.ctop.common.module.utils.StringUtils;
 import cn.com.ctop.toutiao.modules.material.entity.ByteDanceAdvertisePlan;
 import cn.com.ctop.toutiao.modules.material.mapper.ByteDanceAdvertisePlanMapper;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertisePlanService;
-import cn.com.ctop.toutiao.modules.tool.service.IByteDanceConvertToolService;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -23,13 +22,8 @@ import java.util.Map;
 @Slf4j
 @Service
 public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdvertisePlanMapper, ByteDanceAdvertisePlan> implements IByteDanceAdvertisePlanService {
-
     @Autowired
     private ByteDanceAdvertisePlanMapper byteDanceAdvertisePlanMapper;
-
-    @Autowired
-    private IByteDanceConvertToolService byteDanceConvertToolService;
-
     @Override
     public Map<String, Object> getAdvertiserPlan(CtopOauthToken token, String ids, String date, String updateDate) {
         getAd(token, 1, ids, date, updateDate);
@@ -220,6 +214,7 @@ public class ByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdve
         return resultMap;
     }
 
+    @Override
     public Map<String, Object> updateAdvertiserPlanBudget(CtopOauthToken token, JSONArray adIds, JSONArray budgets) {
         JSONArray data = new JSONArray();
         if (adIds.size() > 0) {

+ 21 - 9
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);
         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);
+        System.out.println(result);
         Integer code = result.getInteger("code");
         String message = result.getString("message");
         if (null == code || code != 0) {
@@ -272,7 +273,7 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
     public Map<String, Object> batchCreate(JSONObject data) {
         log.info(data.toJSONString());
         Map<String,Object>result = new HashMap<>();
-        Long accountId = data.getLong("advertiserId");
+        Long accountId = data.getLong("accountId");
         CtopOauthToken token = tokenService.getTokenByAccountId(accountId);
         if(null == token){
             ResultMapUtils.setResultMap(result,StatusCode.COMMON_PARAM_ERROR);
@@ -285,8 +286,13 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
         }
         //拼接参数
         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) {
@@ -294,14 +300,17 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
         String creativeWay = data.getString("creativeWay");
         params.put("advertiser_id",data.getLong("accountId"));
         //###############公共参数开始################################
-        JSONArray inventoryType = data.getJSONArray("inventoryType");
-        if(null!=inventoryType){
-            params.put("inventory_type",inventoryType);
-        }
+        //优选广告位
         Integer smartInventory = data.getInteger("smartInventory");
         if(null!=smartInventory){
             params.put("smart_inventory",smartInventory);
         }
+        //媒体指定位置
+        JSONArray inventoryType = data.getJSONArray("inventoryType");
+        if(null!=inventoryType){
+            params.put("inventory_type",inventoryType);
+        }
+        //场景指定位置
         String sceneInventory = data.getString("sceneInventory");
         if(null!=sceneInventory&&!sceneInventory.trim().equals("")){
             params.put("scene_inventory",sceneInventory);
@@ -315,6 +324,9 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
             params.put("third_industry_id",thirdIndustryId);
         }
 
+        /**
+         * 创意展现方式
+         */
         String creativeDisplayMode = data.getString("creativeDisplayMode");
         if(null!=creativeDisplayMode&&creativeDisplayMode.trim().equals("")){
             params.put("creative_display_mode",creativeDisplayMode);
@@ -351,12 +363,12 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
         if(null!=generateDerivedAd&&generateDerivedAd!=0){
             params.put("generate_derived_ad",generateDerivedAd);
         }
-        String playableUrl = data.getString("playable_url");
+        String playableUrl = data.getString("playableUrl");
         if(null!=playableUrl&&!"".equals(playableUrl.trim())){
             params.put("playable_url",playableUrl);
         }
         Long isPresentedVideo = data.getLong("isPresentedVideo");
-        if(null!=isCommentDisable&&isPresentedVideo!=0){
+        if(null!=isPresentedVideo&&isPresentedVideo!=0){
             params.put("is_presented_video",isPresentedVideo);
         }
         Long creativeAutoGenerateSwitch = data.getLong("creativeAutoGenerateSwitch");