Przeglądaj źródła

Merge branch 'master' into test

yumeng 5 lat temu
rodzic
commit
d0f7eaefdb
19 zmienionych plików z 227 dodań i 268 usunięć
  1. 3 36
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceTemplateController.java
  2. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TestController.java
  3. 1 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/KuaishouMaterialsLoadJob.java
  4. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/KuaishouSuZaoLoadJob.java
  5. 3 4
      module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouMaterialsLoadJob.java
  6. 2 2
      module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouSuZaoLoadJob.java
  7. 2 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/controller/BatchController.java
  8. 9 27
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/controller/BytedanceAreaInfoController.java
  9. 5 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/mapper/BytedanceAreaInfoMapper.java
  10. 22 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/mapper/xml/BytedanceAreaInfoMapper.xml
  11. 5 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/service/IBytedanceAreaInfoService.java
  12. 0 14
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/service/IBytedanceGroupApiService.java
  13. 11 1
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/service/impl/BytedanceAreaInfoServiceImpl.java
  14. 0 142
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/service/impl/BytedanceGroupApiServiceImpl.java
  15. 13 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/vo/BytedanceAreaInfoVO.java
  16. 6 32
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/entity/ByteDanceCampaign.java
  17. 8 1
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/IByteDanceCampaignService.java
  18. 1 1
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/impl/ByteDanceAdvertiserDataServiceImpl.java
  19. 133 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/impl/ByteDanceCampaignServiceImpl.java

+ 3 - 36
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ByteDanceTemplateController.java

@@ -1,14 +1,12 @@
 package org.jeecg.modules.ctop.controller;
 
-import cn.com.ctop.common.module.utils.CtopAdConstant;
-import cn.com.ctop.common.module.entity.BindAccountLogin;
 import cn.com.ctop.common.module.entity.UserAllocation;
-import cn.com.ctop.common.module.service.IBindAccountLoginService;
 import cn.com.ctop.common.module.service.IFileInfoService;
 import cn.com.ctop.common.module.service.IUserAllocationService;
 import cn.com.ctop.toutiao.modules.material.entity.ByteDanceAdvertisePlan;
 import cn.com.ctop.toutiao.modules.material.entity.ByteDanceCampaign;
-import cn.com.ctop.toutiao.modules.material.service.*;
+import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertisePlanService;
+import cn.com.ctop.toutiao.modules.material.service.IByteDanceCampaignService;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -33,8 +31,6 @@ import java.util.Map;
 @RequestMapping("template")
 public class ByteDanceTemplateController {
     @Autowired
-    private IByteDanceCreativeService creativeService;
-    @Autowired
     private IUserAllocationService userAllocationService;
     @Autowired
     private IFileInfoService fileInfoService;
@@ -67,35 +63,6 @@ public class ByteDanceTemplateController {
         return result;
     }
 
-    @Autowired
-    private IBindAccountLoginService bindAccountLoginService;
-
-    /**
-     * 获取头条授权用户信息列表
-     *
-     * @param accountLogin
-     * @param pageNo
-     * @param pageSize
-     * @param req
-     * @return
-     */
-    @PostMapping(value = "bind/login/list")
-    public Result<IPage<BindAccountLogin>> queryBindLoginList(@RequestBody BindAccountLogin accountLogin,
-                                                              @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
-                                                              @RequestParam(name = "pageSize", defaultValue = "100") Integer pageSize,
-                                                              HttpServletRequest req) {
-        Result<IPage<BindAccountLogin>> result = new Result<>();
-        QueryWrapper<BindAccountLogin> queryWrapper = QueryGenerator.initQueryWrapper(accountLogin, req.getParameterMap());
-        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        queryWrapper.eq("user_id", user.getId()).eq("login_type", CtopAdConstant.PLATFORM_TYPE_BYTEDANCE_PY);
-        Page<BindAccountLogin> page = new Page<>(pageNo, pageSize);
-        IPage<BindAccountLogin> pageList = bindAccountLoginService.page(page, queryWrapper);
-        result.setSuccess(true);
-        result.setResult(pageList);
-        return result;
-    }
-
-
     /**
      * @param pageNo
      * @param pageSize
@@ -108,7 +75,7 @@ public class ByteDanceTemplateController {
                                                              @RequestParam(name = "pageSize", defaultValue = "1000") Integer pageSize, HttpServletRequest req) {
         Result<IPage<ByteDanceCampaign>> result = new Result<>();
         QueryWrapper<ByteDanceCampaign> queryWrapper = QueryGenerator.initQueryWrapper(campaign, req.getParameterMap());
-        queryWrapper.eq("toutiao_id", campaign.getToutiaoId()).orderByAsc("id");
+        queryWrapper.eq("account_id", campaign.getId()).orderByAsc("id");
         Page<ByteDanceCampaign> page = new Page<>(pageNo, pageSize);
         IPage<ByteDanceCampaign> pageList = campaignService.page(page, queryWrapper);
         result.setSuccess(true);

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TestController.java

@@ -190,7 +190,7 @@ public class TestController {
                                 try {
                                     kuaishouInterfaceService.getSuZaoList(token.getAccessToken(), token.getAccountId(), 1, null, null);
                                     kuaishouInterfaceService.getVideoList(token, null, null);
-                                    Thread.sleep(500);
+                                    Thread.sleep(5000);
                                      /*String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
                                     String videoEndDate = DateUtils.addDay(nowDate, -180);
                                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

+ 1 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/KuaishouMaterialsLoadJob.java

@@ -28,10 +28,9 @@ public class KuaishouMaterialsLoadJob implements Job {
         Thread thread = new Thread() {
             @Override
             public void run() {
-
                 List<CtopOauthToken> tokens = tokenService.selectKuaiShouToken();
                 String endDate = DateUtils.getNowDate("yyyy-MM-dd");
-                String startDate = DateUtils.getAnotherDay("yyyy-mm-dd", endDate, -1);
+                String startDate = DateUtils.getAnotherDay("yyyy-MM-dd", endDate, -1);
                 executorService = Executors.newFixedThreadPool(8);
                 tokens.forEach(token -> {
                     executorService.submit(new Runnable() {
@@ -54,6 +53,5 @@ public class KuaishouMaterialsLoadJob implements Job {
             }
         };
         thread.start();
-
     }
 }

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/KuaishouSuZaoLoadJob.java

@@ -36,8 +36,8 @@ public class KuaishouSuZaoLoadJob implements Job {
                         public void run() {
                             try {
                                 String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
-                                String endDate = DateUtils.getAnotherDay("yyyy-mm-dd", nowDate, 1);
-                                String startDate = DateUtils.getAnotherDay("yyyy-mm-dd", nowDate, -1);
+                                String endDate = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, 1);
+                                String startDate = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1);
                                 kuaishouInterfaceService.getSuZaoList(token.getAccessToken(), token.getAccountId(), 1, startDate, endDate);
                             } catch (Exception e) {
                                 e.printStackTrace();

+ 3 - 4
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouMaterialsLoadJob.java

@@ -10,7 +10,6 @@ import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.Date;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -27,14 +26,14 @@ public class KuaishouMaterialsLoadJob {
     @XxlJob("kuaishouMaterials")
     public ReturnT<String> execute(String param) throws Exception {
         //增加接口的开始和结束日期
-        Date startDate = DateUtils.addDay(new Date(), -1);
-        Date endDate = new Date();
+        String endDate = DateUtils.getNowDate("yyyy-MM-dd");
+        String startDate = DateUtils.getAnotherDay("yyyy-MM-dd", endDate, -1);
         //1:查询当日数据
         List<CtopOauthToken> tokens = tokenService.selectKuaiShouToken();
         executorService = Executors.newFixedThreadPool(8);
         tokens.forEach(token -> executorService.submit(() -> {
             //获取全量视频素材数据
-            kuaishouInterfaceService.getVideoList(token, DateUtils.getNowDate("yyyy-MM-dd"));
+            kuaishouInterfaceService.getVideoList(token, startDate, endDate);
             // 获取图片信息数据
             kuaishouInterfaceService.getImageList(token, DateUtils.getNowDate("yyyy-MM-dd"));
         }));

+ 2 - 2
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouSuZaoLoadJob.java

@@ -27,8 +27,8 @@ public class KuaishouSuZaoLoadJob {
         List<CtopOauthToken> tokens = tokenService.selectKuaiShouToken();
         executorService = Executors.newFixedThreadPool(8);
         String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
-        String endDate = DateUtils.getAnotherDay("yyyy-mm-dd", nowDate, 1);
-        String startDate = DateUtils.getAnotherDay("yyyy-mm-dd", nowDate, -1);
+        String endDate = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, 1);
+        String startDate = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1);
         tokens.forEach(token -> executorService.submit(() -> kuaishouInterfaceService.getSuZaoList(token.getAccessToken(), token.getAccountId(), 1, startDate, endDate)));
         XxlJobLogger.log("快手素造数据同步完成");
         return ReturnT.SUCCESS;

+ 2 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/controller/BatchController.java

@@ -117,8 +117,8 @@ public class BatchController {
             result.setResult(spendVo);
 
             String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
-            String startDate = DateUtils.getAnotherDay("yyyy-mm-dd", nowDate, -1);
-            String endDate = DateUtils.getAnotherDay("yyyy-mm-dd", nowDate, 1);
+            String startDate = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1);
+            String endDate = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, 1);
 
 
             Thread planThread = new Thread() {

+ 9 - 27
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/controller/BytedanceAreaInfoController.java

@@ -1,11 +1,12 @@
 package cn.com.ctop.toutiao.modules.batch.controller;
 
+import cn.com.ctop.common.module.utils.ResultMapUtils;
+import cn.com.ctop.common.module.utils.StatusCode;
 import cn.com.ctop.toutiao.modules.batch.entity.BytedanceAreaInfo;
 import cn.com.ctop.toutiao.modules.batch.service.IBytedanceAreaInfoService;
+import cn.com.ctop.toutiao.modules.batch.vo.BytedanceAreaInfoVO;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -29,8 +30,8 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
-import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -53,34 +54,15 @@ public class BytedanceAreaInfoController {
      * 分页列表查询
      *
      * @param bytedanceAreaInfo
-     * @param pageNo
-     * @param pageSize
      * @param req
      * @return
      */
-    @AutoLog(value = "省市县信息-分页列表查询")
-    @ApiOperation(value = "省市县信息-分页列表查询", notes = "省市县信息-分页列表查询")
     @GetMapping(value = "/list")
-    public Result<IPage<BytedanceAreaInfo>> queryPageList(BytedanceAreaInfo bytedanceAreaInfo,
-                                                          @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
-                                                          @RequestParam(name = "pageSize", defaultValue = "1000") Integer pageSize,
-                                                          HttpServletRequest req) {
-        Result<IPage<BytedanceAreaInfo>> result = new Result<>();
-        QueryWrapper<BytedanceAreaInfo> queryWrapper = QueryGenerator.initQueryWrapper(bytedanceAreaInfo, req.getParameterMap());
-        Page<BytedanceAreaInfo> page = new Page<>(pageNo, pageSize);
-        IPage<BytedanceAreaInfo> pageList = bytedanceAreaInfoService.page(page, queryWrapper);
-        List<BytedanceAreaInfo> areaInfos = pageList.getRecords();
-        if(null!=areaInfos&&!areaInfos.isEmpty()){
-            List<BytedanceAreaInfo>setAreas = new ArrayList<>();
-            areaInfos.forEach(areaInfo->{
-                boolean hasChild = bytedanceAreaInfoService.hasChild(areaInfo);
-                areaInfo.setHasChild(hasChild);
-                setAreas.add(areaInfo);
-            });
-            pageList.setRecords(setAreas);
-        }
-        result.setSuccess(true);
-        result.setResult(pageList);
+    public Map<String,Object> queryPageList(BytedanceAreaInfo bytedanceAreaInfo,HttpServletRequest req) {
+        Map<String,Object> result = new HashMap<>();
+        List<BytedanceAreaInfoVO> vos = bytedanceAreaInfoService.getListByParams(bytedanceAreaInfo);
+        ResultMapUtils.setResultMap(result, StatusCode.COMMON_SUCCESS);
+        result.put("data",vos);
         return result;
     }
 

+ 5 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/mapper/BytedanceAreaInfoMapper.java

@@ -1,7 +1,11 @@
 package cn.com.ctop.toutiao.modules.batch.mapper;
 
 import cn.com.ctop.toutiao.modules.batch.entity.BytedanceAreaInfo;
+import cn.com.ctop.toutiao.modules.batch.vo.BytedanceAreaInfoVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 省市县信息
@@ -12,4 +16,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface BytedanceAreaInfoMapper extends BaseMapper<BytedanceAreaInfo> {
 
+    List<BytedanceAreaInfoVO> getListByParams(@Param(value = "parentCode") String parentCode, @Param(value = "level") Integer level);
 }

+ 22 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/mapper/xml/BytedanceAreaInfoMapper.xml

@@ -2,4 +2,26 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.com.ctop.toutiao.modules.batch.mapper.BytedanceAreaInfoMapper">
 
+    <select id="getListByParams" resultType="cn.com.ctop.toutiao.modules.batch.vo.BytedanceAreaInfoVO">
+        select
+            a.id,
+            a.name,
+            a.code,
+            a.parent_code,
+            a.level,
+            (
+                select
+                    count(1) from ctop_bytedance_area_info b
+                where
+                    b.parent_code = a.code
+                <if test="level!=null">
+                    and b.level &lt;= #{level}
+                </if>
+            ) as 'hasChild'
+        from ctop_bytedance_area_info a
+        where 1=1
+        <if test="parentCode!=null">
+           and a.parent_code = #{parentCode}
+        </if>
+    </select>
 </mapper>

+ 5 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/service/IBytedanceAreaInfoService.java

@@ -1,8 +1,11 @@
 package cn.com.ctop.toutiao.modules.batch.service;
 
 import cn.com.ctop.toutiao.modules.batch.entity.BytedanceAreaInfo;
+import cn.com.ctop.toutiao.modules.batch.vo.BytedanceAreaInfoVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * 省市县信息
  *
@@ -13,4 +16,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
 public interface IBytedanceAreaInfoService extends IService<BytedanceAreaInfo> {
 
     boolean hasChild(BytedanceAreaInfo areaInfo);
+
+    List<BytedanceAreaInfoVO> getListByParams(BytedanceAreaInfo bytedanceAreaInfo);
 }

+ 0 - 14
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/service/IBytedanceGroupApiService.java

@@ -1,14 +0,0 @@
-package cn.com.ctop.toutiao.modules.batch.service;
-
-import cn.com.ctop.common.module.entity.CtopOauthToken;
-import cn.com.ctop.toutiao.modules.material.entity.ByteDanceCampaign;
-import com.alibaba.fastjson.JSONArray;
-
-import java.util.List;
-import java.util.Map;
-
-public interface IBytedanceGroupApiService {
-    List<ByteDanceCampaign> getGroupListByParams(CtopOauthToken token, JSONArray ids, String campaignName, String landingType, String status, String campaignCreateTime, Integer page, Integer pageSize);
-    Map<String,Object>createGroup(CtopOauthToken token,String campaignName,String operation,String budgetMode,String budget,String landingType,String uniqueFk);
-    Map<String,Object>updateGroup(CtopOauthToken token, String campaignId, String campaignName, String modifyTime,String budget);
-}

+ 11 - 1
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/service/impl/BytedanceAreaInfoServiceImpl.java

@@ -3,10 +3,13 @@ package cn.com.ctop.toutiao.modules.batch.service.impl;
 import cn.com.ctop.toutiao.modules.batch.entity.BytedanceAreaInfo;
 import cn.com.ctop.toutiao.modules.batch.mapper.BytedanceAreaInfoMapper;
 import cn.com.ctop.toutiao.modules.batch.service.IBytedanceAreaInfoService;
+import cn.com.ctop.toutiao.modules.batch.vo.BytedanceAreaInfoVO;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -18,7 +21,8 @@ import java.util.List;
  */
 @Service
 public class BytedanceAreaInfoServiceImpl extends ServiceImpl<BytedanceAreaInfoMapper, BytedanceAreaInfo> implements IBytedanceAreaInfoService {
-
+    @Autowired
+    private BytedanceAreaInfoMapper bytedanceAreaInfoMapper;
     @Override
     public boolean hasChild(BytedanceAreaInfo areaInfo) {
         QueryWrapper<BytedanceAreaInfo>queryWrapper = new QueryWrapper<>();
@@ -30,4 +34,10 @@ public class BytedanceAreaInfoServiceImpl extends ServiceImpl<BytedanceAreaInfoM
             return true;
         }
     }
+
+    @Override
+    public List<BytedanceAreaInfoVO> getListByParams(BytedanceAreaInfo bytedanceAreaInfo) {
+        List<BytedanceAreaInfoVO>areaInfos = bytedanceAreaInfoMapper.getListByParams(bytedanceAreaInfo.getParentCode(),bytedanceAreaInfo.getLevel());
+        return areaInfos;
+    }
 }

+ 0 - 142
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/service/impl/BytedanceGroupApiServiceImpl.java

@@ -1,142 +0,0 @@
-package cn.com.ctop.toutiao.modules.batch.service.impl;
-
-import cn.com.ctop.common.module.entity.CtopOauthToken;
-import cn.com.ctop.common.module.utils.HttpUtils;
-import cn.com.ctop.common.module.utils.PropertiesUtils;
-import cn.com.ctop.common.module.utils.ResultMapUtils;
-import cn.com.ctop.common.module.utils.StatusCode;
-import cn.com.ctop.toutiao.modules.batch.service.IBytedanceGroupApiService;
-import cn.com.ctop.toutiao.modules.material.entity.ByteDanceCampaign;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@Service
-@Slf4j
-public class BytedanceGroupApiServiceImpl implements IBytedanceGroupApiService {
-    @Override
-    /**
-     * 获取广告组数据
-     */
-    public List<ByteDanceCampaign> getGroupListByParams(CtopOauthToken token, JSONArray ids, String campaignName, String landingType, String status, String campaignCreateTime, Integer page, Integer pageSize) {
-        List<ByteDanceCampaign> campaigns = new ArrayList<>();
-        // 请求地址
-        String url = PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_campaign_get");
-        // 请求参数
-        JSONObject filtering = new JSONObject();
-        if(null!=ids&&!ids.isEmpty()){
-            filtering.put("ids",ids);
-        }
-        if(null!=campaignName&&!campaignName.equals("")){
-            filtering.put("campaign_name",campaignName);
-        }
-        if(null!=landingType&&!landingType.equals("")){
-            filtering.put("landing_type",landingType);
-        }
-        if(null!=status&&!status.equals("")){
-            filtering.put("status",status);
-        }
-        if(null!=campaignCreateTime&&!campaignCreateTime.equals("")){
-            filtering.put("campaign_create_time",landingType);
-        }
-
-        JSONObject params = new JSONObject();
-        params.put("advertiser_id", token.getAccountId());
-        params.put("page", page);
-        params.put("page_size", pageSize);
-        params.put("filtering", filtering);
-        JSONObject result = HttpUtils.bytedanceGetRequest(token.getAccessToken(),url,params);
-        if(result == null){
-            log.error("获取广告组数据异常=>param:{}",params.toJSONString());
-            return campaigns;
-        }
-        Integer code = result.getInteger("code");
-        String message = result.getString("message");
-        if(null == code||!code.equals(0)){
-            log.error("获取广告组数据异常=>{},param:{}",message,params.toJSONString());
-            return campaigns;
-        }
-        JSONArray dataList = result.getJSONObject("data").getJSONArray("list");
-        if(null == dataList||dataList.isEmpty()){
-            log.info("获取广告组数据为空=>param:{}",params.toJSONString());
-            return campaigns;
-        }
-        for(int i=0;i<dataList.size();i++){
-            JSONObject data = dataList.getJSONObject(i);
-            ByteDanceCampaign campaign = new ByteDanceCampaign(data,token.getAccountId().toString());
-            campaigns.add(campaign);
-        }
-        return campaigns;
-    }
-
-    /**
-     * 每个广告主账号下最多可允许创建500个广告组,如超出需要先删除一部分广告组后才可继续创建。
-     * @param token
-     * @param campaignName
-     * @param operation
-     * @param budgetMode
-     * @param budget
-     * @param landingType
-     * @param uniqueFk
-     * @return
-     */
-    @Override
-    public Map<String, Object> createGroup(CtopOauthToken token, String campaignName, String operation, String budgetMode, String budget, String landingType, String uniqueFk) {
-        Map<String,Object>result = new HashMap<>();
-        // 请求地址
-        String url = PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_campaign_create");
-        // 请求参数
-        JSONObject param = new JSONObject();
-        param.put("advertiser_id",token.getAccountId());
-        param.put("campaign_name",campaignName);
-        if(null!=operation&&!operation.trim().equals("")){
-            param.put("operation",operation);
-        }
-        param.put("budget_mode", budgetMode);
-        if(null != budget&&!budget.trim().equals("")){
-            param.put("budget",budget);
-        }
-        param.put("landing_type", landingType);
-        if(null != uniqueFk&&!uniqueFk.trim().equals("")){
-            param.put("unique_fk",uniqueFk);
-        }
-        JSONObject data = HttpUtils.bytedancePostRequest(url,token.getAccessToken(),param);
-        if(data == null){
-            log.error("创建广告组异常=>param:{}",param.toJSONString());
-            ResultMapUtils.setResultMap(result, StatusCode.BYTEDACNE_API_GROUP_CREATE_ERROR);
-            return result;
-        }
-        Integer code = data.getInteger("code");
-        String message = data.getString("message");
-        if(null == code||!code.equals(0)){
-            log.error("获取广告组数据异常=>{},parmas:{}",message,param.toJSONString());
-            ResultMapUtils.setResultMap(result,-1,message,false);
-            return result;
-        }
-        Long campaignId = data.getJSONObject("data").getLong("campaign_id");
-        ResultMapUtils.setResultMap(result,StatusCode.COMMON_SUCCESS);
-        result.put("campaign_id",campaignId);
-        return result;
-    }
-
-    @Override
-    public Map<String, Object> updateGroup(CtopOauthToken token, String campaignId, String campaignName, String modifyTime,String budget) {
-        // 请求地址
-        String url = "https://ad.oceanengine.com/open_api/2/campaign/update/";
-        // 请求参数
-        JSONObject data = new JSONObject();
-        data.put("advertiser_id",token.getAccountId());
-        data.put("campaign_name",campaignName);
-        data.put("budget",budget);
-        data.put("campaign_id", campaignId);
-        data.put("modify_time", modifyTime);
-        JSONObject result = HttpUtils.bytedancePostRequest(token.getAccessToken(),url,data);
-        return new HashMap<>();
-    }
-}

+ 13 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/vo/BytedanceAreaInfoVO.java

@@ -0,0 +1,13 @@
+package cn.com.ctop.toutiao.modules.batch.vo;
+
+import lombok.Data;
+
+@Data
+public class BytedanceAreaInfoVO {
+    private Long id;
+    private String name;
+    private String code;
+    private String parentCode;
+    private Integer level;
+    private Integer hasChild;
+}

+ 6 - 32
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/entity/ByteDanceCampaign.java

@@ -34,24 +34,8 @@ public class ByteDanceCampaign {
     @TableId
     @ApiModelProperty(value = "今日头条广告组id")
     private Long id;
-    /**
-     * 平台用户id
-     */
-    @Excel(name = "平台用户id", width = 15)
-    @ApiModelProperty(value = "平台用户id")
-    private String advertiserId;
-    /**
-     * 头条账号id
-     */
-    @Excel(name = "头条账号id", width = 15)
-    @ApiModelProperty(value = "头条账号id")
-    private Long toutiaoId;
-    /**
-     * 头条账号id
-     */
-    @Excel(name = "模板id", width = 15)
-    @ApiModelProperty(value = "模板id")
-    private Long templateId;
+
+    private Long accountId;
     /**
      * 广告组名称
      */
@@ -119,8 +103,7 @@ public class ByteDanceCampaign {
 
     public ByteDanceCampaign(Long id, String advertiserId, Long toutiaoId, String name, BigDecimal budget, String budgetMode, String landingType, String modifyTime, String status, String optStatus, String campaignCreateTime, String campaignModifyTime, Date createTime, Date updateTime) {
         this.id = id;
-        this.advertiserId = advertiserId;
-        this.toutiaoId = toutiaoId;
+
         this.name = name;
         this.budget = budget;
         this.budgetMode = budgetMode;
@@ -134,14 +117,10 @@ public class ByteDanceCampaign {
         this.updateTime = updateTime;
     }
 
-    public ByteDanceCampaign(JSONObject dataObject, String accountId) {
+    public ByteDanceCampaign(JSONObject dataObject, Long accountId) {
         Long id = dataObject.getLong("id");
         this.id = id;
-        this.advertiserId = accountId;
-        Long toutiaoId = dataObject.getLong("advertiser_id");
-        if (null != toutiaoId) {
-            this.toutiaoId = toutiaoId;
-        }
+        this.accountId = accountId;
         String name = dataObject.getString("name");
         if (null != name && !"".equals(name.trim())) {
             this.name = name;
@@ -185,18 +164,13 @@ public class ByteDanceCampaign {
 
     public ByteDanceCampaign(Long id, CtopOauthToken oauthToken, String campaignName, String budgetMode, Integer budget, String landingType) {
         this.id = id;
-        this.advertiserId = oauthToken.getAdvertiserId();
+        this.accountId = oauthToken.getAccountId();
         this.name = campaignName;
         this.budgetMode = budgetMode;
         this.budget = BigDecimal.valueOf(budget);
         this.landingType = landingType;
-        this.toutiaoId = oauthToken.getAccountId();
         Date now = new Date();
         this.createTime = now;
         this.updateTime = now;
     }
-
-    public ByteDanceCampaign(JSONObject data, CtopOauthToken token) {
-
-    }
 }

+ 8 - 1
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/IByteDanceCampaignService.java

@@ -1,8 +1,13 @@
 package cn.com.ctop.toutiao.modules.material.service;
 
+import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.toutiao.modules.material.entity.ByteDanceCampaign;
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * @Description: 今日头条广告组信息
  * @Author: jeecg-boot
@@ -10,5 +15,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @Version: V1.0
  */
 public interface IByteDanceCampaignService extends IService<ByteDanceCampaign> {
-
+    List<ByteDanceCampaign> getGroupListByParams(CtopOauthToken token, JSONArray ids, String campaignName, String landingType, String status, String campaignCreateTime, Integer page, Integer pageSize);
+    Map<String,Object> createGroup(CtopOauthToken token, String campaignName, String operation, String budgetMode, String budget, String landingType, String uniqueFk);
+    Map<String,Object>updateGroup(CtopOauthToken token, String campaignId, String campaignName, String modifyTime,String budget);
 }

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

@@ -798,7 +798,7 @@ public class ByteDanceAdvertiserDataServiceImpl implements IByteDanceAdvertiserD
         }
         for (int i = 0; i < data.size(); i++) {
             JSONObject dataObject = data.getJSONObject(i);
-            ByteDanceCampaign campaign = new ByteDanceCampaign(dataObject, accountId);
+            ByteDanceCampaign campaign = new ByteDanceCampaign(dataObject, Long.parseLong(accountId));
             campaignService.saveOrUpdate(campaign);
         }
         getAdvertiserCampaignByPageNumber(accountId, pageNumber + 1, ids, date);

+ 133 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/impl/ByteDanceCampaignServiceImpl.java

@@ -1,11 +1,24 @@
 package cn.com.ctop.toutiao.modules.material.service.impl;
 
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.utils.HttpUtils;
+import cn.com.ctop.common.module.utils.PropertiesUtils;
+import cn.com.ctop.common.module.utils.ResultMapUtils;
+import cn.com.ctop.common.module.utils.StatusCode;
 import cn.com.ctop.toutiao.modules.material.entity.ByteDanceCampaign;
 import cn.com.ctop.toutiao.modules.material.mapper.ByteDanceCampaignMapper;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceCampaignService;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
  * @Description: 今日头条广告组信息
  * @Author: jeecg-boot
@@ -14,6 +27,126 @@ import org.springframework.stereotype.Service;
  */
 
 @Service
+@Slf4j
 public class ByteDanceCampaignServiceImpl extends ServiceImpl<ByteDanceCampaignMapper, ByteDanceCampaign> implements IByteDanceCampaignService {
+    @Override
+    /**
+     * 获取广告组数据
+     */
+    public List<ByteDanceCampaign> getGroupListByParams(CtopOauthToken token, JSONArray ids, String campaignName, String landingType, String status, String campaignCreateTime, Integer page, Integer pageSize) {
+        List<ByteDanceCampaign> campaigns = new ArrayList<>();
+        // 请求地址
+        String url = PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_campaign_get");
+        // 请求参数
+        JSONObject filtering = new JSONObject();
+        if(null!=ids&&!ids.isEmpty()){
+            filtering.put("ids",ids);
+        }
+        if(null!=campaignName&&!campaignName.equals("")){
+            filtering.put("campaign_name",campaignName);
+        }
+        if(null!=landingType&&!landingType.equals("")){
+            filtering.put("landing_type",landingType);
+        }
+        if(null!=status&&!status.equals("")){
+            filtering.put("status",status);
+        }
+        if(null!=campaignCreateTime&&!campaignCreateTime.equals("")){
+            filtering.put("campaign_create_time",landingType);
+        }
+
+        JSONObject params = new JSONObject();
+        params.put("advertiser_id", token.getAccountId());
+        params.put("page", page);
+        params.put("page_size", pageSize);
+        params.put("filtering", filtering);
+        JSONObject result = HttpUtils.bytedanceGetRequest(token.getAccessToken(),url,params);
+        if(result == null){
+            log.error("获取广告组数据异常=>param:{}",params.toJSONString());
+            return campaigns;
+        }
+        Integer code = result.getInteger("code");
+        String message = result.getString("message");
+        if(null == code||!code.equals(0)){
+            log.error("获取广告组数据异常=>{},param:{}",message,params.toJSONString());
+            return campaigns;
+        }
+        JSONArray dataList = result.getJSONObject("data").getJSONArray("list");
+        if(null == dataList||dataList.isEmpty()){
+            log.info("获取广告组数据为空=>param:{}",params.toJSONString());
+            return campaigns;
+        }
+        for(int i=0;i<dataList.size();i++){
+            JSONObject data = dataList.getJSONObject(i);
+            ByteDanceCampaign campaign = new ByteDanceCampaign(data,token.getAccountId());
+            this.saveOrUpdate(campaign);
+            campaigns.add(campaign);
+        }
+        return campaigns;
+    }
+
+    /**
+     * 每个广告主账号下最多可允许创建500个广告组,如超出需要先删除一部分广告组后才可继续创建。
+     * @param token
+     * @param campaignName
+     * @param operation
+     * @param budgetMode
+     * @param budget
+     * @param landingType
+     * @param uniqueFk
+     * @return
+     */
+    @Override
+    public Map<String, Object> createGroup(CtopOauthToken token, String campaignName, String operation, String budgetMode, String budget, String landingType, String uniqueFk) {
+        Map<String,Object>result = new HashMap<>();
+        // 请求地址
+        String url = PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_campaign_create");
+        // 请求参数
+        JSONObject param = new JSONObject();
+        param.put("advertiser_id",token.getAccountId());
+        param.put("campaign_name",campaignName);
+        if(null!=operation&&!operation.trim().equals("")){
+            param.put("operation",operation);
+        }
+        param.put("budget_mode", budgetMode);
+        if(null != budget&&!budget.trim().equals("")){
+            param.put("budget",budget);
+        }
+        param.put("landing_type", landingType);
+        if(null != uniqueFk&&!uniqueFk.trim().equals("")){
+            param.put("unique_fk",uniqueFk);
+        }
+        JSONObject data = HttpUtils.bytedancePostRequest(url,token.getAccessToken(),param);
+        if(data == null){
+            log.error("创建广告组异常=>param:{}",param.toJSONString());
+            ResultMapUtils.setResultMap(result, StatusCode.BYTEDACNE_API_GROUP_CREATE_ERROR);
+            return result;
+        }
+        Integer code = data.getInteger("code");
+        String message = data.getString("message");
+        if(null == code||!code.equals(0)){
+            log.error("获取广告组数据异常=>{},parmas:{}",message,param.toJSONString());
+            ResultMapUtils.setResultMap(result,-1,message,false);
+            return result;
+        }
+        Long campaignId = data.getJSONObject("data").getLong("campaign_id");
+        ResultMapUtils.setResultMap(result,StatusCode.COMMON_SUCCESS);
+        result.put("campaign_id",campaignId);
+        return result;
+    }
 
+    @Override
+    public Map<String, Object> updateGroup(CtopOauthToken token, String campaignId, String campaignName, String modifyTime,String budget) {
+        // 请求地址
+        String url = "https://ad.oceanengine.com/open_api/2/campaign/update/";
+        // 请求参数
+        JSONObject data = new JSONObject();
+        data.put("advertiser_id",token.getAccountId());
+        data.put("campaign_name",campaignName);
+        data.put("budget",budget);
+        data.put("campaign_id", campaignId);
+        data.put("modify_time", modifyTime);
+        JSONObject result = HttpUtils.bytedancePostRequest(token.getAccessToken(),url,data);
+        return new HashMap<>();
+    }
 }