瀏覽代碼

Merge remote-tracking branch 'origin/test' into test

syh 5 年之前
父節點
當前提交
d4ccf0a940
共有 23 個文件被更改,包括 1261 次插入166 次删除
  1. 336 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialImageInfoController.java
  2. 32 7
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialInfoController.java
  3. 38 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/fileupload/controller/FileController.java
  4. 76 2
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  5. 0 1
      module-common/src/main/java/cn/com/ctop/common/module/entity/CtopOauthToken.java
  6. 145 0
      module-common/src/main/java/cn/com/ctop/common/module/entity/MaterialImageInfo.java
  7. 5 0
      module-common/src/main/java/cn/com/ctop/common/module/entity/MaterialInfo.java
  8. 16 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/MaterialImageInfoMapper.java
  9. 122 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/MaterialImageInfoMapper.xml
  10. 26 0
      module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialImageInfoService.java
  11. 19 2
      module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialInfoService.java
  12. 1 1
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/BindAccountAuthServiceImpl.java
  13. 99 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialImageInfoServiceImpl.java
  14. 119 4
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java
  15. 6 0
      module-common/src/main/java/cn/com/ctop/common/module/utils/Check.java
  16. 5 79
      module-common/src/main/java/cn/com/ctop/common/module/utils/ExportExcelUtils.java
  17. 7 0
      module-ctop/src/main/java/cn/com/ctop/manage/modules/material/service/IMaterialUploadImageService.java
  18. 164 0
      module-ctop/src/main/java/cn/com/ctop/manage/modules/material/service/impl/MaterialUploadImageServiceImpl.java
  19. 31 57
      module-ctop/src/main/java/cn/com/ctop/manage/modules/material/service/impl/MaterialUploadServiceImpl.java
  20. 7 6
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouInterfaceServiceImpl.java
  21. 1 0
      module-kuaishou/src/main/resources/kuaishou_config.properties
  22. 5 6
      module-report/src/main/java/cn/com/ctop/bytedance/controller/KuaiShouYiCheReportController.java
  23. 1 1
      module-report/src/main/java/cn/com/ctop/bytedance/service/impl/KuaiShouYiCheReportServiceImpl.java

+ 336 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialImageInfoController.java

@@ -0,0 +1,336 @@
+package org.jeecg.modules.ctop.controller;
+
+import cn.com.ctop.common.module.entity.MaterialImageInfo;
+import cn.com.ctop.common.module.entity.MaterialInfo;
+import cn.com.ctop.common.module.mapper.MaterialInfoMapper;
+import cn.com.ctop.common.module.service.IMaterialImageInfoService;
+import cn.com.ctop.common.module.service.IMaterialInfoService;
+import cn.com.ctop.common.module.utils.Check;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+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 io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 素材
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-03-16
+ */
+@Slf4j
+@Api(tags = "素材")
+@RestController
+@RequestMapping("/ctop/MaterialImageInfo")
+public class MaterialImageInfoController {
+    @Autowired
+    private IMaterialImageInfoService MaterialImageInfoService;
+    @Autowired
+    private IMaterialInfoService materialInfoService;
+    @Autowired
+    private MaterialInfoMapper materialInfoMapper;
+
+
+    @ApiOperation(value = "截屏-分页列表查询", notes = "截屏-分页列表查询")
+    @GetMapping(value = "/pageList")
+    public Result<IPage<MaterialImageInfo>> pageList(MaterialImageInfo materialImageInfo,
+                                                     @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                     @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                     HttpServletRequest req) {
+        Result<IPage<MaterialImageInfo>> result = new Result<IPage<MaterialImageInfo>>();
+        QueryWrapper<MaterialImageInfo> queryWrapper = QueryGenerator.initQueryWrapper(materialImageInfo, req.getParameterMap());
+        Page<MaterialImageInfo> page = new Page<MaterialImageInfo>(pageNo, pageSize);
+        IPage<MaterialImageInfo> pageList = MaterialImageInfoService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+
+    /**
+     * 分页列表查询
+     *
+     * @param MaterialImageInfo
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "素材-分页列表查询")
+    @ApiOperation(value = "素材-分页列表查询", notes = "素材-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<List<MaterialImageInfo>> queryPageList(MaterialImageInfo MaterialImageInfo,
+                                                         HttpServletRequest req) {
+        Result<List<MaterialImageInfo>> result = new Result<>();
+        QueryWrapper<MaterialImageInfo> queryWrapper = QueryGenerator.initQueryWrapper(MaterialImageInfo, req.getParameterMap());
+        List<MaterialImageInfo> list = MaterialImageInfoService.list(queryWrapper);
+        result.setSuccess(true);
+        result.setResult(list);
+        return result;
+    }
+
+
+    @GetMapping(value = "/getDetail")
+    public Result<MaterialImageInfo> getDetail(String id) {
+        Result<MaterialImageInfo> result = new Result<>();
+        MaterialImageInfo materialImageInfo = MaterialImageInfoService.getById(id);
+        if (!Check.isNull(materialImageInfo)) {
+            MaterialInfo materialmInfo = materialInfoService.getById(materialImageInfo.getVideoId());
+            if (!Check.isNull(materialmInfo)) {
+                materialImageInfo.setVideoUrl(materialmInfo.getUrl());
+
+            }
+
+            String auditorName = materialInfoMapper.selectUserNameById(materialImageInfo.getAuditorId());
+            materialImageInfo.setAuditorName(auditorName);
+
+        }
+
+        result.setSuccess(true);
+        result.setResult(materialImageInfo);
+        return result;
+    }
+
+
+    /**
+     * 添加
+     *
+     * @param MaterialImageInfo
+     * @return
+     */
+    @AutoLog(value = "素材-添加")
+    @ApiOperation(value = "素材-添加", notes = "素材-添加")
+    @PostMapping(value = "/add")
+    public Result<MaterialImageInfo> add(@RequestBody MaterialImageInfo MaterialImageInfo) {
+        Result<MaterialImageInfo> result = new Result<MaterialImageInfo>();
+        try {
+            MaterialImageInfoService.save(MaterialImageInfo);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param
+     * @return
+     */
+    @AutoLog(value = "素材-编辑")
+
+    @ApiOperation(value = "素材-编辑", notes = "素材-编辑")
+    @PutMapping(value = "/edit")
+    public Result<MaterialImageInfo> edit(@RequestBody MaterialImageInfo MaterialImageInfo) {
+        Result<MaterialImageInfo> result = new Result<MaterialImageInfo>();
+        MaterialImageInfo MaterialImageInfoEntity = MaterialImageInfoService.getById(MaterialImageInfo.getId());
+        if (MaterialImageInfoEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            String url = (String) MaterialImageInfo.getUrl();
+            String urlStr = "https:" + url;
+            MaterialImageInfo.setUrl(urlStr);
+            boolean ok = MaterialImageInfoService.updateById(MaterialImageInfo);
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+
+    @AutoLog(value = "素材-编辑")
+    @ApiOperation(value = "素材-编辑", notes = "素材-编辑")
+    @PutMapping(value = "/batchEdit")
+    public Result<MaterialImageInfo> batchEdit(@RequestBody JSONArray updateArr) {
+        Result<MaterialImageInfo> result = new Result<MaterialImageInfo>();
+        try {
+            if (!Check.isNull(updateArr)) {
+                LoginUser user = (LoginUser) SecurityUtils.getSubject()
+                        .getPrincipal();
+                for (int i = 0; i < updateArr.size(); i++) {
+                    JSONObject updateJson = updateArr.getJSONObject(i);
+                    if (!Check.isNull(updateJson)) {
+                        MaterialImageInfo materialImageInfo = new MaterialImageInfo();
+                        Long id = updateJson.getLong("id");
+                        materialImageInfo.setId(id);
+                        Integer status = updateJson.getInteger("status");
+                        materialImageInfo.setStatus(status);
+                        if (status == 2) {
+                            materialImageInfo.setRefuseReason(updateJson.getString("refuseReason"));
+                        }
+                        materialImageInfo.setAuditorId(user.getId());
+                        MaterialImageInfoService.updateById(materialImageInfo);
+                    }
+                }
+            }
+            result.success("修改成功!");
+            result.setSuccess(true);
+        } catch (Exception e) {
+            result.setSuccess(false);
+            e.printStackTrace();
+        }
+
+        return result;
+    }
+
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "素材-通过id删除")
+    @ApiOperation(value = "素材-通过id删除", notes = "素材-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            MaterialImageInfoService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "素材-批量删除")
+    @ApiOperation(value = "素材-批量删除", notes = "素材-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<MaterialImageInfo> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<MaterialImageInfo> result = new Result<MaterialImageInfo>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.MaterialImageInfoService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "素材-通过id查询")
+    @ApiOperation(value = "素材-通过id查询", notes = "素材-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<MaterialImageInfo> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<MaterialImageInfo> result = new Result<MaterialImageInfo>();
+        MaterialImageInfo MaterialImageInfo = MaterialImageInfoService.getById(id);
+        if (MaterialImageInfo == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(MaterialImageInfo);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+        // Step.1 组装查询条件
+        QueryWrapper<MaterialImageInfo> queryWrapper = null;
+        try {
+            String paramsStr = request.getParameter("paramsStr");
+            if (oConvertUtils.isNotEmpty(paramsStr)) {
+                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+                MaterialImageInfo MaterialImageInfo = JSON.parseObject(deString, MaterialImageInfo.class);
+                queryWrapper = QueryGenerator.initQueryWrapper(MaterialImageInfo, request.getParameterMap());
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<MaterialImageInfo> pageList = MaterialImageInfoService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME, "素材列表");
+        mv.addObject(NormalExcelConstants.CLASS, MaterialImageInfo.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("素材列表数据", "导出人:Jeecg", "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<MaterialImageInfo> listMaterialImageInfos = ExcelImportUtil.importExcel(file.getInputStream(), MaterialImageInfo.class, params);
+                MaterialImageInfoService.saveBatch(listMaterialImageInfos);
+                return Result.ok("文件导入成功!数据行数:" + listMaterialImageInfos.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.ok("文件导入失败!");
+    }
+
+}

+ 32 - 7
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialInfoController.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.ctop.controller;
 
 
+import cn.com.ctop.common.module.entity.MaterialImageInfo;
 import cn.com.ctop.common.module.entity.MaterialInfo;
 import cn.com.ctop.common.module.service.*;
 import cn.com.ctop.common.module.utils.Check;
@@ -44,8 +45,10 @@ import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 素材信息
@@ -74,6 +77,17 @@ public class MaterialInfoController {
     @Autowired
     private IVideoWatermarkTaskService watermarkTaskService;
 
+
+    @PostMapping("/correlationUpload")
+    public Map<String, Object> insertFile(@RequestBody JSONObject json) {
+        LoginUser user = (LoginUser) SecurityUtils.getSubject()
+                .getPrincipal();
+
+        json.put("userId", user.getId());
+        return materialInfoService.correlationUpload(json);
+    }
+
+
     @GetMapping(value = "/report")
     public JSONObject report(String userId) {
         return materialInfoService.report(userId);
@@ -149,6 +163,9 @@ public class MaterialInfoController {
         return result;
     }
 
+    @Autowired
+    private IMaterialImageInfoService iMaterialImageInfoService;
+
     @AutoLog(value = "素材信息-分页列表查询")
     @ApiOperation(value = "素材信息-分页列表查询", notes = "素材信息-分页列表查询")
     @GetMapping(value = "/list")
@@ -180,7 +197,6 @@ public class MaterialInfoController {
                         return result;
                     }
                 }
-
             } else {
                 queryWrapper = QueryGenerator.initQueryWrapper(materialInfo, req.getParameterMap());
             }
@@ -195,12 +211,9 @@ public class MaterialInfoController {
                 }
             }
         }
-
         Page<MaterialInfo> page = new Page<>(pageNo, pageSize);
         IPage<MaterialInfo> pageList = materialInfoService.page(page, queryWrapper);
-
         List<MaterialInfo> materialInfoList = pageList.getRecords();
-
         if (materialInfoList.size() != 0) {
             for (MaterialInfo material : materialInfoList) {
                 //判断是否已经同步到快手平台
@@ -236,7 +249,20 @@ public class MaterialInfoController {
                     material.setGeneralization(generalizationJson);
                 }*/
 
+
+                QueryWrapper<MaterialImageInfo> imageInfoQueryWrapper = new QueryWrapper<>();
+                imageInfoQueryWrapper.eq("video_id", material.getId());
+                imageInfoQueryWrapper.eq("status", 0);
+                List<MaterialImageInfo> imageInfoList = iMaterialImageInfoService.list(imageInfoQueryWrapper);
+                if (Check.isNull(imageInfoList)) {
+                    material.setWhetherUnaudited(false);
+                } else {
+                    material.setWhetherUnaudited(true);
+                }
+
             }
+
+
         }
 
         result.setSuccess(true);
@@ -245,7 +271,6 @@ public class MaterialInfoController {
     }
 
 
-
     /**
      * 添加
      *

+ 38 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/fileupload/controller/FileController.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.fileupload.controller;
 
+import cn.com.ctop.common.module.service.IMaterialImageInfoService;
 import cn.com.ctop.common.module.service.IMaterialInfoService;
 import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.ResultMapUtils;
@@ -27,11 +28,48 @@ public class FileController {
     @Autowired
     private IMaterialInfoService materialInfoService;
 
+    @Autowired
+    private IMaterialImageInfoService materialImageInfoService;
+
     @RequestMapping("file/check")
     public Map<String, Object> chenckFile(String code, Long projectId) {
         return materialInfoService.checkMaterialInfo(code, projectId);
     }
 
+
+
+    @RequestMapping("file/imageCheck")
+    public Map<String, Object> imageCheck(String code, Long projectId) {
+        return materialImageInfoService.checkMaterialInfo(code, projectId);
+    }
+
+
+
+    @PostMapping("/insertV2")
+    public Map<String, Object> insertV2(@RequestBody JSONObject json) {
+        LoginUser user = (LoginUser) SecurityUtils.getSubject()
+                .getPrincipal();
+
+        json.put("userId", user.getId());
+        return materialInfoService.correlationUpload(json);
+    }
+
+
+
+
+    @PostMapping("/insertImage")
+    public Map<String, Object> insertImage(@RequestBody JSONObject json) {
+        LoginUser user = (LoginUser) SecurityUtils.getSubject()
+                .getPrincipal();
+
+        json.put("userId", user.getId());
+        return materialInfoService.insertImage(json);
+    }
+
+
+
+
+
     @PostMapping("file/insert")
     public Map<String, Object> insertFile(@RequestBody JSONObject json) {
         LoginUser user = (LoginUser) SecurityUtils.getSubject()

+ 76 - 2
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -7,8 +7,11 @@ import cn.com.ctop.common.module.mapper.CtopOauthTokenMapper;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.service.IUserAllocationService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
+import cn.com.ctop.common.module.utils.HttpUtils;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouHistoryReportTaskService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.util.DateUtils;
@@ -44,12 +47,12 @@ public class SampleTest {
         try {
 
             QueryWrapper<CtopOauthToken> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("account_id",3727345L);
+            queryWrapper.eq("account_id", 3727345L);
             CtopOauthToken token = tokenMapper.selectOne(queryWrapper);
 
             SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
             Date parse = simpleDateFormat.parse("2020-03-12");
-            kuaishouInterfaceService.getAdvertiserReportDaily(token,parse,parse);
+            kuaishouInterfaceService.getAdvertiserReportDaily(token, parse, parse);
 
 
 //            reportTaskService.createTask(3727345L, "871fc2c248782a94ad2962c941555abc", "");
@@ -147,7 +150,78 @@ public class SampleTest {
     @Autowired
     private IUserAllocationService userAllocationService;
 
+    @Test
+    public void wanHuaTong() {
+        String url = "https://ad.oceanengine.com/open_api/2/kaleidoscope/job/smart_cut/submit/";
+
+        JSONObject conditions = new JSONObject();
+
+        // 1629785592929294
+
+        conditions.put("advertiser_id", "109437044830");
+        JSONObject job = new JSONObject();
+        job.put("job_conf_id", 10);
+        JSONArray input = new JSONArray();
+        JSONObject inputJson = new JSONObject();
+        inputJson.put("task_id", 1);
+        JSONArray videoIds = new JSONArray();
+        videoIds.add("v02033290000bgq1cejpqv6e4k29b2jg");
+        inputJson.put("video_ids", videoIds);
+        JSONArray music_id = new JSONArray();
+        JSONArray image_urls = new JSONArray();
+        JSONArray texts = new JSONArray();
+
+        texts.add("哈哈哈哈,这是一个测试文案");
+        inputJson.put("texts", texts);
+
+        JSONArray tts = new JSONArray();
+        tts.add("true");
+        inputJson.put("tts", tts);
+
+        JSONArray video_ratio = new JSONArray();
+        video_ratio.add("1");
+        inputJson.put("video_ratio", video_ratio);
+
+
+        JSONArray music_style = new JSONArray();
+        music_style.add("1");
+        inputJson.put("music_style", music_style);
+
+        JSONArray video_duration = new JSONArray();
+        video_duration.add("8");
+        inputJson.put("video_duration", video_duration);
+
+
+        JSONArray speed = new JSONArray();
+        speed.add("1.2");
+        inputJson.put("speed", speed);
+
+        job.put("input", inputJson);
+        job.put("mesg", "测试万花筒");
+        conditions.put("job", job);
+
+
+        JSONObject jsonObject = HttpUtils.bytedancePostRequest("8ea30cb02cab8d92b480c4ab01cfc4545fdce33e", url, conditions);
+        System.err.println(jsonObject);
+
+
+    }
+
+
 }
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 0 - 1
module-common/src/main/java/cn/com/ctop/common/module/entity/CtopOauthToken.java

@@ -133,7 +133,6 @@ public class CtopOauthToken {
         Date now = new Date();
         this.accessTokenExpiresIn = addSecond(now, expiresIn);
         this.refreshTokenExpiresIn = addSecond(now, refreshTokenExpiresIn);
-        this.createTime = now;
         this.updateTime = now;
     }
 

+ 145 - 0
module-common/src/main/java/cn/com/ctop/common/module/entity/MaterialImageInfo.java

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

+ 5 - 0
module-common/src/main/java/cn/com/ctop/common/module/entity/MaterialInfo.java

@@ -148,4 +148,9 @@ public class MaterialInfo {
 
     @TableField(exist = false)
     private String realname;
+
+    @TableField(exist = false)
+    private Boolean whetherUnaudited;  // 是否有未审核封面
+
+
 }

+ 16 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/MaterialImageInfoMapper.java

@@ -0,0 +1,16 @@
+package cn.com.ctop.common.module.mapper;
+
+import cn.com.ctop.common.module.entity.MaterialImageInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 素材
+ *
+ * @author: jeecg-boot
+ * @date: 2020-03-16
+ * @cersion: V1.0
+ */
+public interface MaterialImageInfoMapper extends BaseMapper<MaterialImageInfo> {
+    void insertSelective(MaterialImageInfo materialImageInfo);
+
+}

+ 122 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/MaterialImageInfoMapper.xml

@@ -0,0 +1,122 @@
+<?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="cn.com.ctop.common.module.mapper.MaterialImageInfoMapper">
+
+    <insert id="insertSelective" parameterType="cn.com.ctop.common.module.entity.MaterialImageInfo" >
+        replace into ctop_material_image_info
+        <trim prefix="(" suffix=")" suffixOverrides="," >
+            <if test="id != null" >
+                id,
+            </if>
+            <if test="code != null" >
+                code,
+            </if>
+            <if test="videoId != null" >
+                video_id,
+            </if>
+            <if test="materialName != null" >
+                material_name,
+            </if>
+            <if test="userId != null" >
+                user_id,
+            </if>
+            <if test="auditorId != null" >
+                auditor_id,
+            </if>
+            <if test="status != null" >
+                status,
+            </if>
+            <if test="projectId != null" >
+                project_id,
+            </if>
+            <if test="width != null" >
+                width,
+            </if>
+            <if test="type != null" >
+                type,
+            </if>
+            <if test="height != null" >
+                height,
+            </if>
+            <if test="size != null" >
+                size,
+            </if>
+            <if test="createTime != null" >
+                create_time,
+            </if>
+            <if test="updateTime != null" >
+                update_time,
+            </if>
+            <if test="url != null" >
+                url,
+            </if>
+            <if test="materialDescribe != null" >
+                material_describe,
+            </if>
+            <if test="refuseReason != null" >
+                refuse_reason,
+            </if>
+            <if test="refuseFile != null" >
+                refuse_file,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides="," >
+            <if test="id != null" >
+                #{id,jdbcType=VARCHAR},
+            </if>
+            <if test="code != null" >
+                #{code,jdbcType=VARCHAR},
+            </if>
+            <if test="videoId != null" >
+                #{videoId,jdbcType=VARCHAR},
+            </if>
+            <if test="materialName != null" >
+                #{materialName,jdbcType=VARCHAR},
+            </if>
+            <if test="userId != null" >
+                #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="auditorId != null" >
+                #{auditorId,jdbcType=VARCHAR},
+            </if>
+            <if test="status != null" >
+                #{status,jdbcType=INTEGER},
+            </if>
+            <if test="projectId != null" >
+                #{projectId,jdbcType=BIGINT},
+            </if>
+            <if test="width != null" >
+                #{width,jdbcType=VARCHAR},
+            </if>
+            <if test="type != null" >
+                #{type,jdbcType=VARCHAR},
+            </if>
+            <if test="height != null" >
+                #{height,jdbcType=VARCHAR},
+            </if>
+            <if test="size != null" >
+                #{size,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null" >
+                #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateTime != null" >
+                #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="url != null" >
+                #{url},
+            </if>
+            <if test="materialDescribe != null" >
+                #{materialDescribe},
+            </if>
+            <if test="refuseReason != null" >
+                #{refuseReason},
+            </if>
+            <if test="refuseFile != null" >
+                #{refuseFile},
+            </if>
+        </trim>
+    </insert>
+
+
+</mapper>

+ 26 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialImageInfoService.java

@@ -0,0 +1,26 @@
+package cn.com.ctop.common.module.service;
+
+import cn.com.ctop.common.module.entity.MaterialImageInfo;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ * 素材
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-03-16
+ */
+public interface IMaterialImageInfoService extends IService<MaterialImageInfo> {
+
+    /**
+     * 根据视频id  关联封面
+     */
+    void insertImage(JSONObject imageJson);
+
+    Map<String, Object> checkMaterialInfo(String code, Long projectId);
+
+
+}

+ 19 - 2
module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialInfoService.java

@@ -35,9 +35,26 @@ public interface IMaterialInfoService extends IService<MaterialInfo> {
 
     void setExcellent(String id, Integer excellent);
 
-    Integer getKuaishouUpVideoCount(@Param("code")String code);
+    Integer getKuaishouUpVideoCount(@Param("code") String code);
 
-    Integer getToutiaoUpVideoCount(@Param("code")String code);
+    Integer getToutiaoUpVideoCount(@Param("code") String code);
 
     JSONObject getGeneralizationInfo(String code);
+
+    /**
+     * 素材库 关联上传素材
+     *
+     * @param json
+     * @return
+     */
+    Map<String, Object> correlationUpload(JSONObject json);
+
+
+    /**
+     * 关联上传封面
+     *
+     * @param json
+     * @return
+     */
+    Map<String, Object> insertImage(JSONObject json);
 }

+ 1 - 1
module-common/src/main/java/cn/com/ctop/common/module/service/impl/BindAccountAuthServiceImpl.java

@@ -63,7 +63,7 @@ public class BindAccountAuthServiceImpl extends ServiceImpl<BindAccountAuthMappe
                 .append(KuaishouInterfaceConstant.AUTH_PATH)
                 .append("?app_id=" + PropertiesUtils.getValue("kuaishou_config", "kuaishou_appid"))
                 .append("&state=" + URLEncoder.encode(URLEncoder.encode(state)))
-                .append("&scope=%5B%22report_service%22%2C%22ad_query%22%2C%22ad_manage%22%5D")
+                .append("&scope=%5B%22report_service%22%2C%22ad_query%22%2C%22account_service%22%2C%22ad_manage%22%5D")
                 .append("&redirect_uri=" + URLEncoder.encode(PropertiesUtils.getValue("kuaishou_config", "kuaishou_callback_url"), "UTF-8"));
         return sb.toString();
     }

+ 99 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialImageInfoServiceImpl.java

@@ -0,0 +1,99 @@
+package cn.com.ctop.common.module.service.impl;
+
+import cn.com.ctop.common.module.entity.MaterialImageInfo;
+import cn.com.ctop.common.module.mapper.MaterialImageInfoMapper;
+import cn.com.ctop.common.module.service.IMaterialImageInfoService;
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.common.module.utils.ResultMapUtils;
+import cn.com.ctop.common.module.utils.StatusCode;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 素材
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-03-16
+ */
+@Slf4j
+@Service
+public class MaterialImageInfoServiceImpl extends ServiceImpl<MaterialImageInfoMapper, MaterialImageInfo> implements IMaterialImageInfoService {
+
+    @Value("${oss.replace.download}")
+    private String downloadUrl;
+
+    @Autowired
+    private MaterialImageInfoMapper materialImageInfoMapper;
+
+
+    @Override
+    public void insertImage(JSONObject imageJson) {
+        String videoId = imageJson.getString("videoId");
+        if (Check.isNull(videoId)) {
+            log.error("视频id不能为空");
+
+        }
+        String userId = imageJson.getString("userId");
+        Long projectId = imageJson.getLong("projectId");
+        JSONArray imageArr = imageJson.getJSONArray("imageArr");
+        for (int i = 0; i < imageArr.size(); i++) {
+            JSONObject json = imageArr.getJSONObject(i);
+            if (!Check.isNull(json)) {
+                MaterialImageInfo materialImageInfo = new MaterialImageInfo();
+                materialImageInfo.setVideoId(videoId);
+                materialImageInfo.setCode(json.getString("code"));
+                materialImageInfo.setMaterialDescribe(json.getString("materialDescribe"));
+                materialImageInfo.setType("IMAGE");
+                materialImageInfo.setHeight(json.getString("height"));
+                materialImageInfo.setWidth(json.getString("width"));
+
+
+                materialImageInfo.setSize(String.valueOf(json.getLong("size") / 1024));
+                materialImageInfo.setUrl("https:" + json.getString("url"));
+                materialImageInfo.setMaterialName(json.getString("materialName"));
+                materialImageInfo.setStatus(0);
+                materialImageInfo.setProjectId(projectId);
+                materialImageInfo.setUserId(userId);
+                materialImageInfoMapper.insertSelective(materialImageInfo);
+
+            }
+
+        }
+
+    }
+
+    @Override
+    public Map<String, Object> checkMaterialInfo(String code, Long projectId) {
+
+
+        Map<String, Object> result = new HashMap<>();
+        QueryWrapper<MaterialImageInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("code", code);
+        queryWrapper.eq("project_id", projectId);
+        queryWrapper.last("limit 1");
+        MaterialImageInfo info = this.getOne(queryWrapper);
+        if (null != info) {
+            //文件已存在
+            ResultMapUtils.setResultMap(result, StatusCode.FILE_HAS_UPLOAD.getCode());
+            result.put("url", info.getUrl());
+            return result;
+        } else {
+            //文件尚未上传
+            ResultMapUtils.setResultMap(result, StatusCode.FILE_HAS_NOT_UPLOAD.getCode());
+            return result;
+        }
+
+    }
+
+
+}

+ 119 - 4
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java

@@ -5,10 +5,7 @@ import cn.com.ctop.common.module.mapper.MaterialAscriptionMapper;
 import cn.com.ctop.common.module.mapper.MaterialInfoMapper;
 import cn.com.ctop.common.module.mapper.MaterialParameterMapper;
 import cn.com.ctop.common.module.mapper.MaterialTagMapper;
-import cn.com.ctop.common.module.service.IMaterialCutFrameService;
-import cn.com.ctop.common.module.service.IMaterialInfoService;
-import cn.com.ctop.common.module.service.IVideoWatermarkTaskService;
-import cn.com.ctop.common.module.service.IVideoWatermarkTemplateService;
+import cn.com.ctop.common.module.service.*;
 import cn.com.ctop.common.module.utils.*;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -424,6 +421,7 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
 
     /**
      * 获取素材概括信息
+     *
      * @param code
      * @return
      */
@@ -431,4 +429,121 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
     public JSONObject getGeneralizationInfo(String code) {
         return materialInfoMapper.getGeneralizationInfo(code);
     }
+
+
+    @Autowired
+    private IMaterialImageInfoService materialImageInfoService;
+
+    /**
+     * 素材库关联上传素材 1
+     *
+     * @param json
+     * @return
+     */
+    @Override
+    public Map<String, Object> correlationUpload(JSONObject json) {
+        String userId = json.getString("userId");
+        Map<String, Object> resultMap = new HashMap<>();
+        try {
+            String type = json.getString("type");
+            String url = "";
+            if (!Check.isNull(json.getString("url"))) {
+                url = "https:" + json.getString("url");
+            }
+
+            MaterialInfo info = new MaterialInfo();
+            Long projectId = json.getLong("projectId");
+            String code = json.getString("code");
+            info.setId(code + projectId);
+            info.setCode(code);
+            if (!Check.isNull(json.getString("watermarkUrl"))) {
+                info.setWatermarkUrl(json.getString("watermarkUrl"));
+            }
+            info.setUrl(url);
+            info.setUserId(userId);
+            info.setProjectId(projectId);
+            info.setWatermarkCode(json.getString("watermarkCode"));
+            info.setStatus(0);
+            info.setMaterialName(json.getString("materialName"));
+            info.setWatermarkMaterialName(json.getString("watermarkMaterialName"));
+            info.setMaterialDescribe(json.getString("materialDescribe"));
+            info.setCreateTime(new Date());
+            info.setUpdateTime(new Date());
+            info.setType(type);
+            this.save(info);
+
+            JSONArray imageArr = json.getJSONArray("imageArr");
+            if (!Check.isNull(imageArr)) {
+                JSONObject imageJson = new JSONObject();
+                imageJson.put("videoId", info.getId());
+                imageJson.put("userId", userId);
+                imageJson.put("projectId", projectId);
+                imageJson.put("imageArr", imageArr);
+                materialImageInfoService.insertImage(imageJson);
+            }
+
+            Map<String, Object> deleteMap = new HashMap<>();
+            deleteMap.put("material_id", info.getId());
+            JSONObject ascription = json.getJSONObject("ascription");
+            if (!Check.isNull(ascription)) {
+                MaterialAscription materialAscription = new MaterialAscription();
+                materialAscription.setMaterialId(info.getId());
+                // 剪辑人
+                materialAscription.setClipId(ascription.getString("clipId"));
+                // 拍摄人id
+                materialAscription.setShotId(ascription.getString("shotId"));
+                // 策划id
+                materialAscription.setPlanId(ascription.getString("planId"));
+                //平面id
+                materialAscription.setPlaneId(ascription.getString("planeId"));
+                materialAscriptionMapper.deleteByMap(deleteMap);
+                int i = materialAscriptionMapper.insert(materialAscription);
+                if (i > 0) {
+                    log.info("素材归属信息入库完成,MaterialId:{}", info.getId());
+                }
+
+            }
+
+            JSONArray tag = json.getJSONArray("tag");
+            if (!Check.isNull(tag)) {
+                materialTagMapper.deleteByMap(deleteMap);
+                for (int i = 0; i < tag.size(); i++) {
+                    String tagStr = tag.getString(i);
+                    if (!Check.isNull(tagStr)) {
+                        MaterialTag materialTag = new MaterialTag();
+                        materialTag.setMaterialId(info.getId());
+                        materialTag.setTag(tagStr);
+                        materialTagMapper.insert(materialTag);
+                    }
+                }
+            }
+
+            getFile(info);
+
+            ResultMapUtils.setResultMap(resultMap, StatusCode.COMMON_SUCCESS.getCode());
+        } catch (Exception e) {
+            ResultMapUtils.setResultMap(resultMap, StatusCode.MATERIAL_UPLOAD_FAIL.getCode());
+            e.printStackTrace();
+
+        }
+
+
+        return resultMap;
+
+
+    }
+
+    @Override
+    public Map<String, Object> insertImage(JSONObject imageJson) {
+        Map<String, Object> resultMap = new HashMap<>();
+        ResultMapUtils.setResultMap(resultMap, StatusCode.COMMON_SUCCESS.getCode());
+        try {
+            materialImageInfoService.insertImage(imageJson);
+        } catch (Exception e) {
+            ResultMapUtils.setResultMap(resultMap, StatusCode.MATERIAL_UPLOAD_FAIL.getCode());
+            e.printStackTrace();
+        }
+
+        return resultMap;
+    }
 }

+ 6 - 0
module-common/src/main/java/cn/com/ctop/common/module/utils/Check.java

@@ -1,5 +1,6 @@
 package cn.com.ctop.common.module.utils;
 
+import com.alibaba.fastjson.JSONArray;
 import org.apache.commons.lang3.StringUtils;
 
 import java.util.Collection;
@@ -20,6 +21,11 @@ public class Check {
         return collection == null || collection.size() == 0 ? true : false;
     }
 
+    public static boolean isNull(JSONArray jsonArray) {
+        return jsonArray == null || jsonArray.size() == 0 ? true : false;
+    }
+
+
     public static boolean isNull(String str) {
         return str == null || str.length() <= 0;
     }

+ 5 - 79
module-common/src/main/java/cn/com/ctop/common/module/utils/ExportExcelUtils.java

@@ -1,13 +1,7 @@
 package cn.com.ctop.common.module.utils;
 
-import org.apache.poi.hssf.usermodel.HSSFCellStyle;
-import org.apache.poi.hssf.usermodel.HSSFFont;
-import org.apache.poi.hssf.usermodel.HSSFRichTextString;
-import org.apache.poi.hssf.util.HSSFColor;
-import org.apache.poi.ss.usermodel.BorderStyle;
-import org.apache.poi.ss.usermodel.FillPatternType;
-import org.apache.poi.ss.usermodel.HorizontalAlignment;
-import org.apache.poi.ss.usermodel.IndexedColors;
+
+import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.usermodel.*;
 
 import java.math.BigDecimal;
@@ -27,75 +21,6 @@ public class ExportExcelUtils {
      * @Title: exportExcel
      * @Description: 导出Excel的方法
      */
-    public void exportExcelOld(XSSFWorkbook workbook, int sheetNum,
-                               String sheetTitle, String[] headers, List<List<Object>> result) throws Exception {
-        // 生成一个表格
-        XSSFSheet sheet = workbook.createSheet();
-        workbook.setSheetName(sheetNum, sheetTitle);
-        // 设置表格默认列宽度为20个字节
-        sheet.setDefaultColumnWidth((short) 20);
-        // 生成一个样式
-        XSSFCellStyle style = workbook.createCellStyle();
-        // 设置这些样式
-        style.setFillForegroundColor(HSSFColor.PALE_BLUE.index);
-        //  style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
-        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
-        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
-        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
-        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
-        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
-        // 生成一个字体
-        XSSFFont font = workbook.createFont();
-        font.setColor(HSSFColor.BLACK.index);
-        font.setFontHeightInPoints((short) 12);
-        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
-        // 把字体应用到当前的样式
-        style.setFont(font);
-
-        // 指定当单元格内容显示不下时自动换行
-        style.setWrapText(true);
-
-        // 产生表格标题行
-        XSSFRow row = sheet.createRow(0);
-        for (int i = 0; i < headers.length; i++) {
-            XSSFCell cell = row.createCell((short) i);
-
-            cell.setCellStyle(style);
-            HSSFRichTextString text = new HSSFRichTextString(headers[i]);
-            cell.setCellValue(text.toString());
-        }
-        // 遍历集合数据,产生数据行
-        if (result != null) {
-            int index = 1;
-            for (List<Object> m : result) {
-                row = sheet.createRow(index);
-                int cellIndex = 0;
-                for (Object obj : m) {
-                    XSSFCell cell = row.createCell((short) cellIndex);
-                    if (!Check.isNull(obj)) {
-                        if (obj instanceof String) {
-                            cell.setCellValue((String) obj);
-                        } else if (obj instanceof Double) {
-                            cell.setCellValue((Double) obj);
-                        } else if (obj instanceof BigDecimal) {
-                            BigDecimal bigDecimal = (BigDecimal) obj;
-                            cell.setCellValue(bigDecimal.doubleValue());
-                        } else if (obj instanceof Long) {
-                            Long aLong = Long.valueOf(String.valueOf(obj));
-                            cell.setCellValue(aLong.doubleValue());
-                        } else {
-                            cell.setCellValue(obj.toString());
-                        }
-                    } else {
-                        cell.setCellValue(0);
-                    }
-
-                    cellIndex++;
-                }
-                index++;
-            }
-        }
-    }
 
     public void exportExcel(XSSFWorkbook workbook, int sheetNum,
                             String sheetTitle, String[] headers, List<List<Object>> result) throws Exception {
@@ -113,7 +38,9 @@ public class ExportExcelUtils {
         style.setBorderLeft(BorderStyle.THIN);
         style.setBorderRight(BorderStyle.THIN);
         style.setBorderTop(BorderStyle.THIN);
+        // style.setAlignment(HorizontalAlignment.CENTER);
         style.setAlignment(HorizontalAlignment.CENTER);
+        style.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
         // 生成一个字体
         XSSFFont font = workbook.createFont();
         font.setColor(IndexedColors.BLACK.index);
@@ -129,10 +56,9 @@ public class ExportExcelUtils {
         XSSFRow row = sheet.createRow(0);
         for (int i = 0; i < headers.length; i++) {
             XSSFCell cell = row.createCell((short) i);
-
             cell.setCellStyle(style);
             XSSFRichTextString text = new XSSFRichTextString(headers[i]);
-            cell.setCellValue(headers[i]);
+            cell.setCellValue(text.toString());
         }
         // 遍历集合数据,产生数据行
         if (result != null) {

+ 7 - 0
module-ctop/src/main/java/cn/com/ctop/manage/modules/material/service/IMaterialUploadImageService.java

@@ -0,0 +1,7 @@
+package cn.com.ctop.manage.modules.material.service;
+
+public interface IMaterialUploadImageService {
+
+
+    void uploadImage(String id, Long accountId, String accessToken);
+}

+ 164 - 0
module-ctop/src/main/java/cn/com/ctop/manage/modules/material/service/impl/MaterialUploadImageServiceImpl.java

@@ -0,0 +1,164 @@
+package cn.com.ctop.manage.modules.material.service.impl;
+
+import cn.com.ctop.common.module.entity.MaterialImageInfo;
+import cn.com.ctop.common.module.enums.MaterialEnum;
+import cn.com.ctop.common.module.service.IMaterialImageInfoService;
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.common.module.utils.KuaishouInterfaceConstant;
+import cn.com.ctop.common.module.utils.LoadFileUtil;
+import cn.com.ctop.common.module.utils.PropertiesUtils;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouImageGet;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouImageGetService;
+import cn.com.ctop.manage.modules.material.service.IMaterialUploadImageService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.ParseException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+@Slf4j
+@Service
+public class MaterialUploadImageServiceImpl implements IMaterialUploadImageService {
+    static ExecutorService executorService = Executors.newFixedThreadPool(4);
+    @Value("${oss.replace.replace-value}")
+    private String replaceValue;
+    @Value("${oss.replace.replace-old-value}")
+    private String replaceOldValue;
+    @Value("${oss.replace.download}")
+    private String downloadUrl;
+
+
+    @Autowired
+    private IMaterialImageInfoService materialImageInfoService;
+    @Autowired
+    private IKuaiShouImageGetService imageGetService;
+
+
+    /**
+     * 同步素材到账号下
+     */
+    @Override
+    public void uploadImage(String videoId, Long accountId, String accessToken) {
+
+
+        try {
+            QueryWrapper<MaterialImageInfo> imageInfoQueryWrapper = new QueryWrapper<>();
+            imageInfoQueryWrapper.eq("video_id", videoId);
+            imageInfoQueryWrapper.eq("status", 0);
+            List<MaterialImageInfo> imageList = materialImageInfoService.list(imageInfoQueryWrapper);
+            if (!Check.isNull(imageList)) {
+                for (MaterialImageInfo imageInfo : imageList) {
+
+                    QueryWrapper<KuaiShouImageGet> imageQueryWrapper = new QueryWrapper<>();
+                    imageQueryWrapper.eq("account_id", accountId);
+                    imageQueryWrapper.eq("signature", imageInfo.getCode());
+                    List<KuaiShouImageGet> imageGetList = imageGetService.list(imageQueryWrapper);
+                    if (!Check.isNull(imageGetList)) {
+                        log.info("此封面已上传");
+                        continue;
+                    }
+
+                    String url = String.valueOf(imageInfo.getUrl());
+                    String localUrl = LoadFileUtil.downLoadFromUrl(url, downloadUrl);
+                    FileSystemResource resource = new FileSystemResource(new File(localUrl));
+                    Map<String, String> headerMap = new HashMap<>();
+                    JSONObject requestJson = new JSONObject();
+                    requestJson.put("advertiser_id", accountId);
+                    headerMap.put("Access-Token", accessToken);
+                    headerMap.put("Content-Type", "multipart/form-data");
+
+                    requestJson.put("file", resource);
+                    requestJson.put("signature", imageInfo.getCode());
+                    requestJson.put("type", "2");
+                    requestJson.put("upload_type", "1");
+                    String requestUrl = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.IMAGE_UPLOAD;
+                    String result = exceptInfoForRestTemplate(requestUrl, requestJson, headerMap);
+                    JSONObject resultJson = JSONObject.parseObject(result);
+                    if (!Check.isNull(resultJson)) {
+                        if (resultJson.getInteger("code") == 0) {
+                            JSONObject dataJson = resultJson.getJSONObject("data");
+                            if (!Check.isNull(dataJson)) {
+                                String signature = dataJson.getString("signature");
+                                String image_token = dataJson.getString("image_token");
+                                KuaiShouImageGet imageGet = new KuaiShouImageGet();
+                                imageGet.setId(accountId + image_token);
+                                imageGet.setAccountId(accountId);
+                                imageGet.setUrl(dataJson.getString("url"));
+                                imageGet.setWidth(dataJson.getInteger("width"));
+                                imageGet.setHeight(dataJson.getInteger("height"));
+                                imageGet.setSize(dataJson.getInteger("size"));
+                                imageGet.setFormat(dataJson.getString("format"));
+                                Integer type = MaterialEnum.getTypeBySize(dataJson.getInteger("width"), dataJson.getInteger("height"));
+                                if (!Check.isNull(type)) {
+                                    imageGet.setMaterialType(type);
+                                }
+                                imageGet.setSignature(signature);
+                                imageGet.setImageToken(image_token);
+                                imageGetService.saveOrUpdate(imageGet);
+                            }
+
+
+                            log.info("快手封面素材素材同步完成,accountId:{},code:{},返回信息:{}", accountId, imageInfo.getCode(), resultJson);
+                        } else {
+                            log.error("快手同步封面素材失败,返回信息:{},请求参数:{}", resultJson, requestJson);
+                        }
+                    }
+
+
+                }
+
+
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+
+        }
+
+    }
+
+
+    @Autowired
+    private RestTemplate rest;
+
+    private String exceptInfoForRestTemplate(String url, Map<String, Object> paramMap, Map<String, String> headerMap) throws ParseException {
+        try {
+            MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
+            if (!Check.isNullMap(paramMap)) {
+                for (String key : paramMap.keySet()) {
+                    param.add(key, paramMap.get(key));
+                }
+                HttpHeaders headers = new HttpHeaders();
+                if (!Check.isNullMap(headerMap)) {
+                    for (String key : headerMap.keySet()) {
+                        headers.add(key, headerMap.get(key));
+                    }
+                }
+                HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(param, headers);
+                ResponseEntity<String> responseEntity = rest.exchange(url, HttpMethod.POST, httpEntity, String.class);
+                return responseEntity.getBody();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+}

+ 31 - 57
module-ctop/src/main/java/cn/com/ctop/manage/modules/material/service/impl/MaterialUploadServiceImpl.java

@@ -13,11 +13,11 @@ import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.KuaishouInterfaceConstant;
 import cn.com.ctop.common.module.utils.LoadFileUtil;
 import cn.com.ctop.common.module.utils.PropertiesUtils;
-import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouImageGet;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouVideoGet;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouImageGetService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouVideoGetService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
+import cn.com.ctop.manage.modules.material.service.IMaterialUploadImageService;
 import cn.com.ctop.manage.modules.material.service.IMaterialUploadService;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -71,6 +71,8 @@ public class MaterialUploadServiceImpl implements IMaterialUploadService {
     private MaterialParameterMapper parameterMapper;
     @Autowired
     private IKuaiShouVideoGetService kuaiShouVideoGetService;
+    @Autowired
+    private IMaterialUploadImageService materialUploadImageService;
 
 
     /**
@@ -195,15 +197,7 @@ public class MaterialUploadServiceImpl implements IMaterialUploadService {
                         public void run() {
                             try {
                                 log.info("快手文件多线程上传:{},accountId:{}", Thread.currentThread().getName(), accountId);
-                                String url = "";
-                                if ("VIDEO".equals(materialInfo.getType())) {
-                                    url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.VIDEO_UPLOAD;
-
-                                } else if ("IMAGE".equals(materialInfo.getType())) {
-                                    url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.IMAGE_UPLOAD;
-                                    requestJson.put("type", "2");
-                                    requestJson.put("upload_type", "1");
-                                }
+                                String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.VIDEO_UPLOAD;
 
                                 String result = exceptInfoForRestTemplate(url, requestJson, headerMap);
                                 JSONObject resultJson = JSONObject.parseObject(result);
@@ -211,56 +205,36 @@ public class MaterialUploadServiceImpl implements IMaterialUploadService {
                                     if (resultJson.getInteger("code") == 0) {
                                         JSONObject dataJson = resultJson.getJSONObject("data");
                                         if (!Check.isNull(dataJson)) {
-                                            if ("IMAGE".equals(materialInfo.getType())) {
-                                                //   kuaishouInterfaceService.imageGet(accountId, ctopOauthToken.getAccessToken(), dataJson.getString("image_token"));
-                                                if (!Check.isNull(dataJson)) {
-                                                    String signature = dataJson.getString("signature");
-                                                    String image_token = dataJson.getString("image_token");
-                                                    KuaiShouImageGet imageGet = new KuaiShouImageGet();
-                                                    imageGet.setId(accountId + image_token);
-                                                    imageGet.setAccountId(accountId);
-                                                    imageGet.setUrl(dataJson.getString("url"));
-                                                    imageGet.setWidth(dataJson.getInteger("width"));
-                                                    imageGet.setHeight(dataJson.getInteger("height"));
-                                                    imageGet.setSize(dataJson.getInteger("size"));
-                                                    imageGet.setFormat(dataJson.getString("format"));
-                                                    Integer type = MaterialEnum.getTypeBySize(dataJson.getInteger("width"), dataJson.getInteger("height"));
-                                                    if (!Check.isNull(type)) {
-                                                        imageGet.setMaterialType(type);
-                                                    }
-                                                    imageGet.setSignature(signature);
-                                                    imageGet.setImageToken(image_token);
-                                                    iKuaiShouImageGetService.saveOrUpdate(imageGet);
-                                                }
 
-                                            } else if ("VIDEO".equals(materialInfo.getType())) {
-                                                // kuaishouInterfaceService.videoGet(accountId, ctopOauthToken.getAccessToken(), dataJson.getString("photo_id"), dataJson.getString("signature"));
-                                                String photoId = dataJson.getString("photo_id");
-                                                String signature = dataJson.getString("signature");
-                                                KuaiShouVideoGet videoGet = new KuaiShouVideoGet();
-                                                videoGet.setAccountId(accountId);
-                                                videoGet.setId(accountId + photoId);
-                                                videoGet.setUrl(materialInfo.getUrl());
-                                                QueryWrapper<MaterialParameter> parameterQueryWrapper = new QueryWrapper<>();
-                                                parameterQueryWrapper.eq("material_id", materialId);
-                                                parameterQueryWrapper.last("limit 1");
-
-                                                MaterialParameter materialParameter = parameterMapper.selectOne(parameterQueryWrapper);
-                                                if (!Check.isNull(materialParameter)) {
-                                                    String width = materialParameter.getWidth();
-                                                    String height = materialParameter.getHeight();
-                                                    videoGet.setWidth(Integer.valueOf(width));
-                                                    videoGet.setHeight(Integer.valueOf(height));
-                                                    Integer type = MaterialEnum.getTypeBySize(Integer.valueOf(width), Integer.valueOf(height));
-                                                    if (!Check.isNull(type)) {
-                                                        videoGet.setMaterialType(type);
-                                                    }
+
+                                            // kuaishouInterfaceService.videoGet(accountId, ctopOauthToken.getAccessToken(), dataJson.getString("photo_id"), dataJson.getString("signature"));
+                                            String photoId = dataJson.getString("photo_id");
+                                            String signature = dataJson.getString("signature");
+                                            KuaiShouVideoGet videoGet = new KuaiShouVideoGet();
+                                            videoGet.setAccountId(accountId);
+                                            videoGet.setId(accountId + photoId);
+                                            videoGet.setUrl(materialInfo.getUrl());
+                                            QueryWrapper<MaterialParameter> parameterQueryWrapper = new QueryWrapper<>();
+                                            parameterQueryWrapper.eq("material_id", materialId);
+                                            parameterQueryWrapper.last("limit 1");
+
+                                            MaterialParameter materialParameter = parameterMapper.selectOne(parameterQueryWrapper);
+                                            if (!Check.isNull(materialParameter)) {
+                                                String width = materialParameter.getWidth();
+                                                String height = materialParameter.getHeight();
+                                                videoGet.setWidth(Integer.valueOf(width));
+                                                videoGet.setHeight(Integer.valueOf(height));
+                                                Integer type = MaterialEnum.getTypeBySize(Integer.valueOf(width), Integer.valueOf(height));
+                                                if (!Check.isNull(type)) {
+                                                    videoGet.setMaterialType(type);
                                                 }
-                                                videoGet.setPhotoId(photoId);
-                                                //    videoGet.setCoverUrl(dataJson.getString("cover_url"));
-                                                videoGet.setSignature(signature);
-                                                kuaiShouVideoGetService.saveOrUpdate(videoGet);
                                             }
+                                            videoGet.setPhotoId(photoId);
+                                            //    videoGet.setCoverUrl(dataJson.getString("cover_url"));
+                                            videoGet.setSignature(signature);
+                                            kuaiShouVideoGetService.saveOrUpdate(videoGet);
+                                            materialUploadImageService.uploadImage(videoGet.getId(), accountId, ctopOauthToken.getAccessToken());
+
                                         }
                                         log.info("快手素材同步完成,accountId:{},code:{},返回信息:{}", accountId, materialInfo.getCode(), resultJson);
                                     } else {

+ 7 - 6
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouInterfaceServiceImpl.java

@@ -1052,12 +1052,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
 
     @Override
     public void loadKuaishouDataSingle(CtopOauthToken token) throws java.text.ParseException {
-        log.info("----------------开始历史数据获取,accountId:{}", token.getAccountId());
 
-        String endDateStr = DateUtils.getDate("yyyy-MM-dd");
-        String startDate = DateUtils.addMonth(endDateStr, -6);
-
-        historyReportTaskService.createTask(token.getAccountId(), token.getAccessToken(), startDate, endDateStr, CtopAdConstant.KUAISHOU_LOAD_JOB_TYPE_HISTORY);
 
         Date endDate = new Date();
         for (int i = 0; i < 7; i++) {
@@ -1083,9 +1078,15 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
         //获取图片信息数据
         getImageList(token, null, null);
 
-
         getAppList(token.getAccountId(), token.getAccessToken());
 
+        log.info("----------------开始历史数据获取,accountId:{}", token.getAccountId());
+
+        String endDateStr = DateUtils.getDate("yyyy-MM-dd");
+        String startDate = DateUtils.addMonth(endDateStr, -6);
+
+        historyReportTaskService.createTask(token.getAccountId(), token.getAccessToken(), startDate, endDateStr, CtopAdConstant.KUAISHOU_LOAD_JOB_TYPE_HISTORY);
+
 
     }
 

+ 1 - 0
module-kuaishou/src/main/resources/kuaishou_config.properties

@@ -1,6 +1,7 @@
 kuaishou_api_url=https://ad.e.kuaishou.com
 kuaishou_auth_url=https://ad.e.kuaishou.com
 kuaishou_appid=27
+oauth_type=agent
 kuaishou_secret=QovprB1tNhXptgDc
 kuaishou_callback_url=http://adsp.c-top.com.cn:8080/jeecg-boot/kuaishou
 

+ 5 - 6
module-report/src/main/java/cn/com/ctop/bytedance/controller/KuaiShouYiCheReportController.java

@@ -117,7 +117,7 @@ public class KuaiShouYiCheReportController {
             android.add(androidJson.getString("agent"));
             android.add(androidJson.getString("media"));
             android.add(androidJson.getString("systemType"));
-            android.add(androidJson.getString("statDate"));
+            android.add(androidJson.getString("statDate").replace("-","/"));
             android.add(androidJson.getBigDecimal("charge"));
             android.add(androidJson.getBigDecimal("cashCost"));
             android.add(androidJson.getLong("photoShow"));
@@ -151,7 +151,7 @@ public class KuaiShouYiCheReportController {
             ios.add(iosJson.getString("agent"));
             ios.add(iosJson.getString("media"));
             ios.add(iosJson.getString("systemType"));
-            ios.add(iosJson.getString("statDate"));
+            ios.add(iosJson.getString("statDate").replace("-","/"));
             ios.add(iosJson.getBigDecimal("charge"));
             ios.add(iosJson.getBigDecimal("cashCost"));
             ios.add(iosJson.getLong("photoShow"));
@@ -183,7 +183,7 @@ public class KuaiShouYiCheReportController {
             directApplication.add(directApplicationJson.getString("agent"));
             directApplication.add(directApplicationJson.getString("media"));
             directApplication.add(directApplicationJson.getString("systemType"));
-            directApplication.add(directApplicationJson.getString("statDate"));
+            directApplication.add(directApplicationJson.getString("statDate").replace("-","/"));
             directApplication.add(directApplicationJson.getBigDecimal("charge"));
             directApplication.add(directApplicationJson.getBigDecimal("cashCost"));
             directApplication.add(directApplicationJson.getLong("photoShow"));
@@ -215,9 +215,8 @@ public class KuaiShouYiCheReportController {
                 JSONObject channelSubcontractingJson = channelSubcontractingArr.getJSONObject(i);
                 List<Object> channelSubcontracting = new ArrayList();
                 channelSubcontracting.add(channelSubcontractingJson.getString("agent"));
-                channelSubcontracting.add(channelSubcontractingJson.getString("media"));
                 channelSubcontracting.add(channelSubcontractingJson.getString("systemType"));
-                channelSubcontracting.add(channelSubcontractingJson.getString("statDate"));
+                channelSubcontracting.add(channelSubcontractingJson.getString("statDate").replace("-","/"));
                 channelSubcontracting.add(channelSubcontractingJson.getString("campaignName"));
                 channelSubcontracting.add(channelSubcontractingJson.getBigDecimal("charge"));
                 channelSubcontracting.add(channelSubcontractingJson.getBigDecimal("cashCost"));
@@ -246,7 +245,7 @@ public class KuaiShouYiCheReportController {
         String[] iosHeaders = {"代理商", "媒体", "设备", "日期", "账面花费", "现金花费", "曝光", "点击", "点击率", "千次曝光花费", "行为量", "下载完成数", "账户激活量", "友盟激活量", "TD激活量", "账户激活成本", "友盟激活成本", "TD激活成本", "平均行为单价", "平均点击单价", "行为率", "下载完成行为率", "下载完成激活率"};
         String[] androidHeaders = {"代理商", "媒体", "设备", "日期", "账面花费", "现金花费", "曝光", "点击", "点击率", "千次曝光花费", "行为量", "下载完成数", "账户激活量", "友盟激活量", "TD激活量", "账户激活成本", "友盟激活成本", "TD激活成本", "平均行为单价", "平均点击单价", "行为率", "下载完成行为率", "下载完成激活率"};
         String[] directApplicationHeaders = {"代理商", "媒体", "设备", "日期", "账面花费", "现金花费", "曝光", "点击", "点击率", "千次曝光花费", "行为量", "下载完成数", "账户激活量", "友盟激活量", "TD激活量", "账户激活成本", "友盟激活成本", "TD激活成本", "平均行为单价", "平均点击单价", "行为率", "下载完成行为率", "下载完成激活率"};
-        String[] channelSubcontractingHeaders = {"代理商", "媒体", "设备", "日期", "渠道包", "账面花费", "现金花费", "曝光", "点击", "点击率", "千次曝光花费", "行为量", "下载完成数", "账户激活量", "友盟激活量", "TD激活量", "账户激活成本", "友盟激活成本", "TD激活成本", "平均行为单价", "平均点击单价", "行为率", "下载完成行为率", "下载完成激活率"};
+        String[] channelSubcontractingHeaders = {"代理商", "设备", "日期", "渠道包", "账面花费", "现金花费", "曝光", "点击", "点击率", "千次曝光花费", "行为量", "下载完成数", "账户激活量", "友盟激活量", "TD激活量", "账户激活成本", "友盟激活成本", "TD激活成本", "平均行为单价", "平均点击单价", "行为率", "下载完成行为率", "下载完成激活率"};
 
         OutputStream os = response.getOutputStream();
         ExportExcelUtils eeu = new ExportExcelUtils();

+ 1 - 1
module-report/src/main/java/cn/com/ctop/bytedance/service/impl/KuaiShouYiCheReportServiceImpl.java

@@ -24,7 +24,7 @@ public class KuaiShouYiCheReportServiceImpl implements IKuaiShouYiCheReportServi
         log.info("易车时报数据统计开始:requestJson:{}", requestJson);
         Long projectId = requestJson.getLong("projectId");
         BigDecimal disCount = requestJson.getBigDecimal("disCount");
-        String statDate = DateUtils.getNowDate("yyyy-MM-dd");
+        String statDate = requestJson.getString("statDate");
 
         JSONObject returnJson = new JSONObject();
         Integer maxHour = kuaiShouYiCheReportMapper.getMaxHourByProjectIdAndStatDate(statDate, projectId);