Pārlūkot izejas kodu

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

syh 5 gadi atpakaļ
vecāks
revīzija
43373ef880
21 mainītis faili ar 1222 papildinājumiem un 6 dzēšanām
  1. 103 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialCutFrameController.java
  2. 142 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MediaReportCtrl.java
  3. 2 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/CutFrameJob.java
  4. 412 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/MediaReportMapper.xml
  5. 20 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/MediaReportMapper.java
  6. 23 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IMediaReportService.java
  7. 117 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/MediaReportServiceImpl.java
  8. 7 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ProjectMemberServiceImpl.java
  9. 4 0
      module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialCutFrameService.java
  10. 93 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialCutFrameServiceImpl.java
  11. 1 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java
  12. 148 0
      module-common/src/main/java/cn/com/ctop/common/module/utils/CosUtil.java
  13. 1 0
      module-ctop/src/main/java/cn/com/ctop/manage/modules/actor/entity/Prop.java
  14. 27 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportDailyAccountMapper.xml
  15. 27 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportDailyCampaignMapper.xml
  16. 27 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportDailyCreativeMapper.xml
  17. 27 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportDailyGroupMapper.xml
  18. 3 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/BytedanceAccountReportMapper.java
  19. 22 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/BytedanceAccountReportMapper.xml
  20. 5 1
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceAccountReportServiceImpl.java
  21. 11 0
      pom.xml

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

@@ -1,7 +1,13 @@
 package org.jeecg.modules.ctop.controller;
 
 import cn.com.ctop.common.module.entity.MaterialCutFrame;
+import cn.com.ctop.common.module.entity.MaterialCutFrameTask;
+import cn.com.ctop.common.module.entity.MaterialInfo;
+import cn.com.ctop.common.module.entity.MaterialParameter;
 import cn.com.ctop.common.module.service.IMaterialCutFrameService;
+import cn.com.ctop.common.module.service.IMaterialCutFrameTaskService;
+import cn.com.ctop.common.module.service.IMaterialInfoService;
+import cn.com.ctop.common.module.utils.Check;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -17,6 +23,8 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 
 /**
@@ -33,6 +41,10 @@ import java.util.List;
 public class MaterialCutFrameController {
     @Autowired
     private IMaterialCutFrameService materialCutFrameService;
+    @Autowired
+    private IMaterialInfoService materialInfoService;
+    @Autowired
+    private IMaterialCutFrameTaskService materialCutFrameTaskServiceTask;
 
     /**
      * 分页列表查询
@@ -168,4 +180,95 @@ public class MaterialCutFrameController {
         }
         return result;
     }
+
+
+    @AutoLog(value = "腾讯云抽帧按照素材创建时间筛选素材进行抽帧操作")
+    @ApiOperation(value = "腾讯云抽帧", notes = "腾讯云抽帧")
+    @GetMapping(value = "/getCosCutFrameByTime")
+    public Result getCosCutFrameByTime(@RequestParam(name = "startDate", required = true) String startDate,
+                                 @RequestParam(name = "endDate", required = true) String endDate) {
+        Result result = new Result();
+        result.setSuccess(true);
+
+        try {
+            List<MaterialInfo> materialInfos = materialInfoService.getListByDate(startDate, endDate);
+            if (!Check.isNull(materialInfos)) {
+                for (MaterialInfo materialInfo : materialInfos) {
+                    if (!Check.isNull(materialInfo)) {
+                        String code = materialInfo.getCode();
+                        materialCutFrameService.getCosCutFrame(materialInfo.getUrl(), code);
+                    }
+                }
+            }
+        }catch (Exception e){
+            log.error(e.getMessage());
+            e.printStackTrace();
+            result.setSuccess(false);
+        }
+
+        return result;
+    }
+
+    @AutoLog(value = "腾讯云抽帧--根据md5抽帧")
+    @ApiOperation(value = "腾讯云抽帧", notes = "腾讯云抽帧")
+    @GetMapping(value = "/getCosCutFrame")
+    public Result getCosCutFrame(@RequestParam(name = "code", required = true) String code) {
+        Result result = new Result();
+        result.setSuccess(true);
+
+        try {
+            MaterialInfo materialInfo = materialInfoService.getMaterialInfoByCode(code);
+            if (!Check.isNull(materialInfo)) {
+                materialCutFrameService.getCosCutFrame(materialInfo.getUrl(), code);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage());
+            e.printStackTrace();
+            result.setSuccess(false);
+        }
+
+        return result;
+    }
+
+
+    @AutoLog(value = "腾讯云抽帧--获取任务状态并将图片入库")
+    @ApiOperation(value = "腾讯云抽帧", notes = "腾讯云抽帧")
+    @GetMapping(value = "/loadCosCutFrame")
+    public Result loadCosCutFrame() {
+        Result result = new Result();
+        result.setSuccess(true);
+
+        log.info("开始抽帧定时任务");
+        QueryWrapper<MaterialCutFrameTask> taskQueryWrapper = new QueryWrapper<>();
+        taskQueryWrapper.eq("job_status", 0);
+        taskQueryWrapper.eq("cloud_type",2);  //2为腾讯云 1为阿里云
+        List<MaterialCutFrameTask> list = materialCutFrameTaskServiceTask.list(taskQueryWrapper);
+
+        if (Check.isNull(list)) {
+            result.setCode(500);
+            result.setSuccess(false);
+            return result;
+        }
+
+        ExecutorService executorService = Executors.newFixedThreadPool(5);
+        list.forEach(cutFrameTask -> {
+            executorService.submit(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                    //获取广告计划信息数据
+                    materialCutFrameService.loadCosCutFrame(cutFrameTask.getJobId(), cutFrameTask.getVideoSignature());
+                    }catch (Exception e){
+                        log.error(e.getMessage());
+                        e.printStackTrace();
+                    }
+                }
+            });
+        });
+
+        return result;
+    }
+
+
+
 }

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

@@ -0,0 +1,142 @@
+package org.jeecg.modules.ctop.controller;
+
+import cn.com.ctop.common.module.entity.SysCompany;
+import cn.com.ctop.common.module.service.ISysCompanyService;
+import cn.com.ctop.common.module.utils.ExportExcelUtils;
+import cn.com.ctop.common.module.utils.HttpUtils;
+import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.ctop.service.IMediaReportService;
+ import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *  Created by JQ.bi on 2020.6.30
+ */
+@Slf4j
+@RestController
+@RequestMapping("ctop/media/report")
+public class MediaReportCtrl {
+
+    @Autowired
+    ISysCompanyService sysCompanyService;
+
+    @Autowired
+    IMediaReportService mediaReportService;
+
+    @GetMapping("/getCompany")
+    public Result<List<SysCompany>> getCompany(){
+
+        Result<List<SysCompany>> result=new Result<>();
+        //TODO 没有维护渠道的信息暂时不能再库里加,会影响到绩效等其他接口查询公司的接口
+        List<SysCompany> list=sysCompanyService.list();
+        SysCompany sysCompany = new SysCompany();
+        sysCompany.setId(4L);
+        sysCompany.setCompanyId("6weq589875c040119adst08751712368");
+        sysCompany.setCompanyCode("A04");
+        sysCompany.setCompanyName("渠道");
+        sysCompany.setArea("渠道");
+        list.add(sysCompany);
+        result.setSuccess(true);
+        result.setResult(list);
+        return result;
+
+    }
+
+    @GetMapping("/getAdvertiser")
+    public Result<List<JSONObject>> getAdvertiser(String companyId){
+        Result<List<JSONObject>> result=new Result<>();
+        result.setSuccess(true);
+        result.setResult(mediaReportService.queryAdvertiserNameByCompanyId(companyId));
+        return result;
+    }
+
+    @GetMapping("/getProject")
+    public Result<List<JSONObject>> getProject(String advertiserId){
+        Result<List<JSONObject>> result=new Result<>();
+        result.setSuccess(true);
+        result.setResult(mediaReportService.queryProjectNameByAdvertiserId(advertiserId));
+        return result;
+    }
+
+    @PostMapping("/{pageNo}/{pageSize}")
+    public Result<PageInfo<JSONObject>> getReport(@PathVariable int pageNo,
+                                                  @PathVariable int pageSize,
+                                                  @RequestBody JSONObject requestBody){ Result<PageInfo<JSONObject>> result = new Result<>();
+        if(requestBody.isEmpty()){
+            log.error("requestBody is null");
+            result.setSuccess(false);
+            return result;
+        }
+        PageInfo<JSONObject> pageInfo;
+        if(requestBody.getString("companyId").isEmpty()){
+            pageInfo =mediaReportService.queryAllReportByCondition(pageNo,pageSize,requestBody);
+        }else {
+            pageInfo =mediaReportService.queryReportByCondition(pageNo,pageSize,requestBody);
+        }
+        result.setResult(pageInfo);
+        result.setSuccess(true);
+        return result;
+    }
+    /**
+     *  导出数据
+     * @param requestBody
+     * @param request
+     * @param response
+     */
+    @PostMapping("/excel")
+    public void getExcelReport(@RequestBody JSONObject requestBody,
+                               HttpServletRequest request,
+                               HttpServletResponse response) {
+        List<JSONObject> excelData;
+        if(requestBody.getString("companyId").isEmpty()){
+            excelData = mediaReportService.queryAllByCondition(requestBody);
+        }else {
+            excelData =mediaReportService.queryReportByCondition(requestBody);
+        }
+        if(excelData.isEmpty()){
+            return;
+        }
+        List<List<Object>> excelList= new ArrayList<>();
+        excelData.forEach(data->{
+            List<Object> temp= new ArrayList<>();
+            temp.add(data.get("mediaType")==null?"-":data.get("mediaType"));
+            temp.add(data.get("advertiserId")==null?"-":data.get("advertiserId"));
+            temp.add(data.get("advertiserName")==null?"-":data.get("advertiserName"));
+            temp.add(data.get("projectName")==null?"-":data.get("projectName"));
+            temp.add(data.get("operatorManger")==null?"-":data.get("operatorManger"));
+            temp.add(data.get("operator")==null?"-":data.get("operator"));
+            temp.add(data.get("sale")==null?"-":data.get("sale"));
+            temp.add(data.get("plan")==null?"-":data.get("plan"));
+            temp.add(data.get("shot")==null?"-":data.get("shot"));
+            temp.add(data.get("clip")==null?"-":data.get("clip"));
+            temp.add(data.get("todayCost"));
+            temp.add(data.get("yesterdayCost"));
+            temp.add(data.get("diffCost"));
+            excelList.add(temp);
+        });
+        try{
+            String[] headers = {"媒体类型","广告主Id","广告主","项目","运营负责人","运营","销售","策划","拍摄","剪辑",requestBody.getString("todayDate"),requestBody.getString("yesterdayDate"),"消耗差"};
+            OutputStream os = response.getOutputStream();
+            ExportExcelUtils eeu = new ExportExcelUtils();
+            XSSFWorkbook workbook = new XSSFWorkbook();
+            eeu.exportExcel(workbook, 0, "媒介报表", headers, excelList);
+            HttpUtils.setResponseHeader(response, "媒介报表.xlsx");
+            workbook.write(os);
+            os.flush();
+            os.close();
+        }catch (IOException e){
+            log.error(e.getMessage());
+        }
+    }
+}

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

@@ -35,6 +35,7 @@ public class CutFrameJob implements Job {
                 log.info("开始抽帧定时任务");
                 QueryWrapper<MaterialCutFrameTask> taskQueryWrapper = new QueryWrapper<>();
                 taskQueryWrapper.eq("job_status", 0);
+                //taskQueryWrapper.eq("cloud_type", 2);
                 List<MaterialCutFrameTask> list = taskService.list(taskQueryWrapper);
 
                 if (Check.isNull(list)) {
@@ -47,6 +48,7 @@ public class CutFrameJob implements Job {
                         public void run() {
                             //获取广告计划信息数据
                             materialCutFrameService.loadCutFrame(cutFrameTask.getJobId(), cutFrameTask.getVideoSignature());
+                            //materialCutFrameService.loadCosCutFrame(cutFrameTask.getJobId(), cutFrameTask.getVideoSignature());  //腾讯云任务状态查询以及图片下载
                         }
                     });
                 });

+ 412 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/MediaReportMapper.xml

@@ -0,0 +1,412 @@
+<?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="org.jeecg.modules.ctop.mapper.MediaReportMapper">
+    <select id="queryAdvertiserNameByCompanyId" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT id,
+               name
+        from ctop_advertiser
+        where company_id = #{companyId}
+    </select>
+
+    <select id="queryProjectNameByAdvertiserId" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT id,
+               project_name
+        from ctop_project
+        where advertiser_id = #{advertiserId}
+    </select>
+
+    <select id="queryAllBy" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT e.*
+        from (
+                 SELECT r.*, (r.todayCost - r.yesterdayCost) as diffCost
+                 from (
+                          SELECT t1.advertiser_type                                                      as mediaType,
+                                 t1.company_id                                                           as companyId,
+                                 t1.id                                                                   as advertiserId,
+                                 t1.NAME                                                                 as advertiserName,
+                                 t2.id                                                                   as projectId,
+                                 t2.project_name                                                         as projectName,
+                                 t2.responsible_name                                                     as operatorManger,
+                                 t2.design_responsible_name                                              as designManger,
+                                 (SELECT GROUP_CONCAT(DISTINCT user_name)
+                                  from ctop_user_allocation t3
+                                  where t2.id = t3.project_id)                                           as operator,
+                                 (SELECT realname from sys_user u WHERE u.id = t1.sale_id)               as sale,
+                                 (SELECT GROUP_CONCAT(DISTINCT user_name)
+                                  from ctop_project_member member
+                                  where t2.id = member.project_id
+                                    and role_code = 'plan')                                              as plan,
+                                 (SELECT GROUP_CONCAT(DISTINCT user_name)
+                                  from ctop_project_member member
+                                  where t2.id = member.project_id
+                                    and role_code = 'shot')                                              as shot,
+                                 (SELECT GROUP_CONCAT(DISTINCT user_name)
+                                  from ctop_project_member member
+                                  where t2.id = member.project_id
+                                    and role_code = 'clip')                                              as clip,
+                                 case
+                                     when
+                                         (SELECT sum(cost)
+                                          from ctop_bytedance_report_advertiser_daily report
+                                          where report.advertiser_id in (SELECT account_id
+                                                                         from ctop_user_allocation t3
+                                                                         where t2.id = t3.project_id)
+                                            and report.stat_datetime = '${todayDate} 00:00:00') is null then 0
+                                     else (SELECT sum(cost)
+                                           from ctop_bytedance_report_advertiser_daily report
+                                           where report.advertiser_id in (SELECT account_id
+                                                                          from ctop_user_allocation t3
+                                                                          where t2.id = t3.project_id)
+                                             and report.stat_datetime = '${todayDate} 00:00:00') END     as todayCost,
+                                 case
+                                     when
+                                         (SELECT sum(cost)
+                                          from ctop_bytedance_report_advertiser_daily report
+                                          where report.advertiser_id in (SELECT account_id
+                                                                         from ctop_user_allocation t3
+                                                                         where t2.id = t3.project_id)
+                                            and report.stat_datetime = '${yesterdayDate} 00:00:00') is null then 0
+                                     else (SELECT sum(cost)
+                                           from ctop_bytedance_report_advertiser_daily report
+                                           where report.advertiser_id in (SELECT account_id
+                                                                          from ctop_user_allocation t3
+                                                                          where t2.id = t3.project_id)
+                                             and report.stat_datetime = '${yesterdayDate} 00:00:00') end as yesterdayCost
+                          FROM ctop_advertiser t1
+                                   LEFT JOIN ctop_project t2 ON t1.id = t2.advertiser_id
+                          where t1.advertiser_type = 1 and t2.id is not null) as r
+
+                 UNION
+
+                 SELECT r.*, (r.todayCost - r.yesterdayCost) as diffCost
+                 from (
+                          SELECT t1.advertiser_type                                         as mediaType,
+                                 t1.company_id                                              as companyId,
+                                 t1.id                                                      as advertiserId,
+                                 t1.NAME                                                    as advertiserName,
+                                 t2.id                                                      as projectId,
+                                 t2.project_name                                            as projectName,
+                                 t2.responsible_name                                        as operatorManger,
+                                 t2.design_responsible_name                                 as designManger,
+                                 (SELECT GROUP_CONCAT(DISTINCT user_name)
+                                  from ctop_user_allocation t3
+                                  where t2.id = t3.project_id)                              as operator,
+                                 (SELECT realname from sys_user u WHERE u.id = t1.sale_id)  as sale,
+                                 (SELECT GROUP_CONCAT(DISTINCT user_name)
+                                  from ctop_project_member member
+                                  where t2.id = member.project_id
+                                    and role_code = 'plan')                                 as plan,
+                                 (SELECT GROUP_CONCAT(DISTINCT user_name)
+                                  from ctop_project_member member
+                                  where t2.id = member.project_id
+                                    and role_code = 'shot')                                 as shot,
+                                 (SELECT GROUP_CONCAT(DISTINCT user_name)
+                                  from ctop_project_member member
+                                  where t2.id = member.project_id
+                                    and role_code = 'clip')                                 as clip,
+                                 case
+                                     when
+                                         (SELECT sum(charge)
+                                          from ctop_kuaishou_report_daily_account report
+                                          where report.account_id in (SELECT account_id
+                                                                      from ctop_user_allocation t3
+                                                                      where t2.id = t3.project_id)
+                                            and report.stat_date = '${todayDate}') is null then 0
+                                     ELSE (SELECT sum(charge)
+                                           from ctop_kuaishou_report_daily_account report
+                                           where report.account_id in (SELECT account_id
+                                                                       from ctop_user_allocation t3
+                                                                       where t2.id = t3.project_id)
+                                             and report.stat_date = '${todayDate}') END     as todayCost,
+                                 case
+                                     when
+                                         (SELECT sum(charge)
+                                          from ctop_kuaishou_report_daily_account report
+                                          where report.account_id in (SELECT account_id
+                                                                      from ctop_user_allocation t3
+                                                                      where t2.id = t3.project_id)
+                                            and report.stat_date = '${yesterdayDate}') is null then 0
+                                     ELSE (SELECT sum(charge)
+                                           from ctop_kuaishou_report_daily_account report
+                                           where report.account_id in (SELECT account_id
+                                                                       from ctop_user_allocation t3
+                                                                       where t2.id = t3.project_id)
+                                             and report.stat_date = '${yesterdayDate}') end as yesterdayCost
+                          FROM ctop_advertiser t1
+                                   LEFT JOIN ctop_project t2 ON t1.id = t2.advertiser_id
+                          where t1.advertiser_type = 2 and t2.id is not null) as r
+
+                 union
+
+                 SELECT r.*, (r.todayCost - r.yesterdayCost) as diffCost
+                 from (
+                          SELECT '0'                                                               as mediaType,
+                                 '-'                                                                as companyId,
+                                 id                                                                as advertiserId,
+                                 corporation_name                                                  as advertiserName,
+                                 '-'                                                                as projectId,
+                                 account_name                                                      as projectName,
+                                 '-'                                                                as operatorManger,
+                                 '-'                                                                as designManger,
+                                 '-'                                                                as operator,
+                                 '-'                                                                as sale,
+                                 '-'                                                                as plan,
+                                 '-'                                                                as shot,
+                                 '-'                                                                as clip,
+                                 case
+                                     WHEN
+                                         (SELECT sum(balance)
+                                          from ctop_kuaishou_agent_account report
+                                          where report.id = t1.id
+                                            and report.create_time like '%${todayDate}%') is null THEN 0
+                                     ELSE (SELECT sum(balance)
+                                           from ctop_kuaishou_agent_account report
+                                           where report.id = t1.id
+                                             and report.create_time like '%${todayDate}%') end     as todayCost,
+                                 case
+                                     WHEN
+                                         (SELECT sum(balance)
+                                          from ctop_kuaishou_agent_account report
+                                          where report.id = t1.id
+                                            and report.create_time like '%${yesterdayDate}%') is null THEN 0
+                                     ELSE (SELECT sum(balance)
+                                           from ctop_kuaishou_agent_account report
+                                           where report.id = t1.id
+                                             and report.create_time like '%${yesterdayDate}%') end as yesterdayCost
+                          from ctop_kuaishou_agent_account t1
+                          where t1.create_time like '%${yesterdayDate}%'
+                          GROUP by advertiserName, projectName) as r) as e
+    </select>
+
+    <select id="queryMediaReportBy" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT e.*
+        FROM (
+                 SELECT r.*,
+                        (r.todayCost - r.yesterdayCost) AS diffCost
+                 FROM (
+                          SELECT t1.advertiser_type         AS mediaType,
+                                 t1.company_id              as companyId,
+                                 t1.id                      as advertiserId,
+                                 t1.NAME                    as advertiserName,
+                                 t2.id                      as projectId,
+                                 t2.project_name            AS projectName,
+                                 t2.responsible_name        AS operatorManger,
+                                 t2.design_responsible_name AS designManger,
+                                 (
+                                     SELECT GROUP_CONCAT(DISTINCT user_name)
+                                     FROM ctop_user_allocation t3
+                                     WHERE t2.id = t3.project_id
+                                 )                          AS operator,
+                                 (
+                                     SELECT realname
+                                     FROM sys_user u
+                                     WHERE u.id = t1.sale_id
+                                 )                          AS sale,
+                                 (
+                                     SELECT GROUP_CONCAT(DISTINCT user_name)
+                                     FROM ctop_project_member member
+                                     WHERE t2.id = member.project_id
+                                       AND role_code = 'plan'
+                                 )                          AS plan,
+                                 (
+                                     SELECT GROUP_CONCAT(DISTINCT user_name)
+                                     FROM ctop_project_member member
+                                     WHERE t2.id = member.project_id
+                                       AND role_code = 'shot'
+                                 )                          AS shot,
+                                 (
+                                     SELECT GROUP_CONCAT(DISTINCT user_name)
+                                     FROM ctop_project_member member
+                                     WHERE t2.id = member.project_id
+                                       AND role_code = 'clip'
+                                 )                          AS clip,
+                                 CASE
+                                     WHEN (
+                                         SELECT sum(cost)
+                                         FROM ctop_bytedance_report_advertiser_daily report
+                                         WHERE report.advertiser_id IN (
+                                             SELECT account_id
+                                             FROM ctop_user_allocation t3
+                                             WHERE t2.id = t3.project_id
+                                         )
+                                           AND report.stat_datetime = '${todayDate} 00:00:00'
+                                     ) IS NULL THEN
+                                         0
+                                     ELSE
+                                         (
+                                             SELECT sum(cost)
+                                             FROM ctop_bytedance_report_advertiser_daily report
+                                             WHERE report.advertiser_id IN (
+                                                 SELECT account_id
+                                                 FROM ctop_user_allocation t3
+                                                 WHERE t2.id = t3.project_id
+                                             )
+                                               AND report.stat_datetime = '${todayDate} 00:00:00'
+                                         )
+                                     END                    AS todayCost,
+                                 CASE
+                                     WHEN (
+                                         SELECT sum(cost)
+                                         FROM ctop_bytedance_report_advertiser_daily report
+                                         WHERE report.advertiser_id IN (
+                                             SELECT account_id
+                                             FROM ctop_user_allocation t3
+                                             WHERE t2.id = t3.project_id
+                                         )
+                                           AND report.stat_datetime = '${yesterdayDate} 00:00:00'
+                                     ) IS NULL THEN
+                                         0
+                                     ELSE
+                                         (
+                                             SELECT sum(cost)
+                                             FROM ctop_bytedance_report_advertiser_daily report
+                                             WHERE report.advertiser_id IN (
+                                                 SELECT account_id
+                                                 FROM ctop_user_allocation t3
+                                                 WHERE t2.id = t3.project_id
+                                             )
+                                               AND report.stat_datetime = '${yesterdayDate} 00:00:00'
+                                         )
+                                     END                    AS yesterdayCost
+                          FROM ctop_advertiser t1
+                                   LEFT JOIN ctop_project t2 ON t1.id = t2.advertiser_id
+                          WHERE t1.advertiser_type = 1 and t2.id is not null
+                      ) AS r
+                 UNION
+                 SELECT r.*,
+                        (r.todayCost - r.yesterdayCost) AS diffCost
+                 FROM (
+                          SELECT t1.advertiser_type         AS mediaType,
+                                 t1.company_id              as companyId,
+                                 t1.id                      as advertiserId,
+                                 t1.NAME                    as advertiserName,
+                                 t2.id                      as projectId,
+                                 t2.project_name            AS projectName,
+                                 t2.responsible_name        AS operatorManger,
+                                 t2.design_responsible_name AS designManger,
+                                 (
+                                     SELECT GROUP_CONCAT(DISTINCT user_name)
+                                     FROM ctop_user_allocation t3
+                                     WHERE t2.id = t3.project_id
+                                 )                          AS operator,
+                                 (
+                                     SELECT realname
+                                     FROM sys_user u
+                                     WHERE u.id = t1.sale_id
+                                 )                          AS sale,
+                                 (
+                                     SELECT GROUP_CONCAT(DISTINCT user_name)
+                                     FROM ctop_project_member member
+                                     WHERE t2.id = member.project_id
+                                       AND role_code = 'plan'
+                                 )                          AS plan,
+                                 (
+                                     SELECT GROUP_CONCAT(DISTINCT user_name)
+                                     FROM ctop_project_member member
+                                     WHERE t2.id = member.project_id
+                                       AND role_code = 'shot'
+                                 )                          AS shot,
+                                 (
+                                     SELECT GROUP_CONCAT(DISTINCT user_name)
+                                     FROM ctop_project_member member
+                                     WHERE t2.id = member.project_id
+                                       AND role_code = 'clip'
+                                 )                          AS clip,
+                                 CASE
+                                     WHEN (
+                                         SELECT sum(charge)
+                                         FROM ctop_kuaishou_report_daily_account report
+                                         WHERE report.account_id IN (
+                                             SELECT account_id
+                                             FROM ctop_user_allocation t3
+                                             WHERE t2.id = t3.project_id
+                                         )
+                                           AND report.stat_date = '${todayDate}'
+                                     ) IS NULL THEN
+                                         0
+                                     ELSE
+                                         (
+                                             SELECT sum(charge)
+                                             FROM ctop_kuaishou_report_daily_account report
+                                             WHERE report.account_id IN (
+                                                 SELECT account_id
+                                                 FROM ctop_user_allocation t3
+                                                 WHERE t2.id = t3.project_id
+                                             )
+                                               AND report.stat_date = '${todayDate}'
+                                         )
+                                     END                    AS todayCost,
+                                 CASE
+                                     WHEN (
+                                         SELECT sum(charge)
+                                         FROM ctop_kuaishou_report_daily_account report
+                                         WHERE report.account_id IN (
+                                             SELECT account_id
+                                             FROM ctop_user_allocation t3
+                                             WHERE t2.id = t3.project_id
+                                         )
+                                           AND report.stat_date = '${yesterdayDate}'
+                                     ) IS NULL THEN
+                                         0
+                                     ELSE
+                                         (
+                                             SELECT sum(charge)
+                                             FROM ctop_kuaishou_report_daily_account report
+                                             WHERE report.account_id IN (
+                                                 SELECT account_id
+                                                 FROM ctop_user_allocation t3
+                                                 WHERE t2.id = t3.project_id
+                                             )
+                                               AND report.stat_date = '${yesterdayDate}'
+                                         )
+                                     END                    AS yesterdayCost
+                          FROM ctop_advertiser t1
+                                   LEFT JOIN ctop_project t2 ON t1.id = t2.advertiser_id
+                          WHERE t1.advertiser_type = 2 and t2.id is not null
+                      ) AS r) as e
+        where companyId = ${condition}
+    </select>
+
+    <select id="queryAgentReportBy" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT e.* from(
+                           SELECT r.*, (r.todayCost - r.yesterdayCost) as diffCost
+                           from (
+                                    SELECT '0'                                                               as mediaType,
+                                           '-'                                                                as companyId,
+                                           id                                                                as advertiserId,
+                                           corporation_name                                                  as advertiserName,
+                                           '-'                                                                as projectId,
+                                           account_name                                                      as projectName,
+                                           '-'                                                                as operatorManger,
+                                           '-'                                                                as designManger,
+                                           '-'                                                                as operator,
+                                           '-'                                                                as sale,
+                                           '-'                                                                as plan,
+                                           '-'                                                                as shot,
+                                           '-'                                                                as clip,
+                                           case
+                                               WHEN
+                                                   (SELECT sum(balance)
+                                                    from ctop_kuaishou_agent_account report
+                                                    where report.id = t1.id
+                                                      and report.create_time like '%${todayDate}%') is null THEN 0
+                                               ELSE (SELECT sum(balance)
+                                                     from ctop_kuaishou_agent_account report
+                                                     where report.id = t1.id
+                                                       and report.create_time like '%${todayDate}%') end     as todayCost,
+                                           case
+                                               WHEN
+                                                   (SELECT sum(balance)
+                                                    from ctop_kuaishou_agent_account report
+                                                    where report.id = t1.id
+                                                      and report.create_time like '%${yesterdayDate}%') is null THEN 0
+                                               ELSE (SELECT sum(balance)
+                                                     from ctop_kuaishou_agent_account report
+                                                     where report.id = t1.id
+                                                       and report.create_time like '%${yesterdayDate}%') end as yesterdayCost
+                                    from ctop_kuaishou_agent_account t1
+                                    where t1.create_time like '%${yesterdayDate}%'
+                                    GROUP by advertiserName, projectName
+                                )as r) as e
+    </select>
+</mapper>

+ 20 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/MediaReportMapper.java

@@ -0,0 +1,20 @@
+package org.jeecg.modules.ctop.mapper;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface MediaReportMapper {
+
+    List<JSONObject> queryAdvertiserNameByCompanyId(@Param("companyId") String companyId);
+
+    List<JSONObject> queryProjectNameByAdvertiserId(@Param("advertiserId") String advertiserId);
+
+    List<JSONObject> queryAllBy(@Param("todayDate") String todayDate ,@Param("yesterdayDate") String yesterdayDate);
+
+    List<JSONObject> queryMediaReportBy(@Param("todayDate") String todayDate ,@Param("yesterdayDate") String yesterdayDate,@Param("condition") String condition);
+
+    List<JSONObject> queryAgentReportBy(@Param("todayDate") String todayDate ,@Param("yesterdayDate") String yesterdayDate);
+
+}

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

@@ -0,0 +1,23 @@
+package org.jeecg.modules.ctop.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageInfo;
+
+import java.util.List;
+
+public interface IMediaReportService {
+
+    List<JSONObject> queryAdvertiserNameByCompanyId(String companyId);
+
+    List<JSONObject> queryProjectNameByAdvertiserId(String advertiserId);
+
+    PageInfo<JSONObject> queryReportByCondition(int pageNo,int pageSize,JSONObject requestBody);
+
+    PageInfo<JSONObject> queryAllReportByCondition(int pageNo,int pageSize,JSONObject requestBody);
+
+    List<JSONObject> queryAllByCondition(JSONObject requestBody);
+
+    List<JSONObject> queryReportByCondition(JSONObject requestBody);
+
+
+}

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

@@ -0,0 +1,117 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import org.jeecg.modules.ctop.mapper.MediaReportMapper;
+import org.jeecg.modules.ctop.service.IMediaReportService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class MediaReportServiceImpl implements IMediaReportService {
+
+    @Autowired
+    MediaReportMapper mediaReportMapper;
+
+    @Override
+    public List<JSONObject> queryAdvertiserNameByCompanyId(String companyId) {
+        return mediaReportMapper.queryAdvertiserNameByCompanyId(companyId);
+    }
+
+    @Override
+    public List<JSONObject> queryProjectNameByAdvertiserId(String advertiserId) {
+        return mediaReportMapper.queryProjectNameByAdvertiserId(advertiserId);
+    }
+
+    @Override
+    public PageInfo<JSONObject> queryReportByCondition(int pageNO, int pageSize, JSONObject requestBody) {
+        PageInfo<JSONObject> pageInfo;
+        if(requestBody.getString("companyId").equals("6weq589875c040119adst08751712368")){
+            pageInfo=getAgentReportByCondition(pageNO,pageSize,requestBody);
+        }else {
+            pageInfo=getMediaReportByCondition(pageNO,pageSize,requestBody);
+        }
+        return pageInfo;
+    }
+
+    @Override
+    public PageInfo<JSONObject> queryAllReportByCondition(int pageNo, int pageSize, JSONObject requestBody) {
+        String todayDate = requestBody.getString("todayDate");
+        String yesterdayDate = requestBody.getString("yesterdayDate");
+        PageHelper.startPage(pageNo, pageSize);
+        List<JSONObject> jsonObjectList = mediaReportMapper.queryAllBy(todayDate, yesterdayDate);
+        return new PageInfo<JSONObject>(jsonObjectList);
+    }
+
+    @Override
+    public List<JSONObject> queryAllByCondition(JSONObject requestBody) {
+        String todayDate = requestBody.getString("todayDate");
+        String yesterdayDate = requestBody.getString("yesterdayDate");
+        return mediaReportMapper.queryAllBy(todayDate, yesterdayDate);
+    }
+
+    @Override
+    public List<JSONObject> queryReportByCondition(JSONObject requestBody) {
+        List<JSONObject> list;
+        if(requestBody.getString("companyId").equals("6weq589875c040119adst08751712368")){
+            list=getAgentReportListByCondition(requestBody);
+        }else {
+            list=getMediaReportListByCondition(requestBody);
+        }
+        return list;
+    }
+
+    private PageInfo<JSONObject> getMediaReportByCondition(int pageNo, int pageSize, JSONObject requestBody) {
+        String condition = getSqlByCondition(requestBody);
+        PageHelper.startPage(pageNo, pageSize);
+        List<JSONObject> jsonObjectList = mediaReportMapper.queryMediaReportBy(requestBody.getString("todayDate"), requestBody.getString("yesterdayDate"), condition);
+        return new PageInfo<JSONObject>(jsonObjectList);
+    }
+
+    private PageInfo<JSONObject> getAgentReportByCondition(int pageNo, int pageSize, JSONObject requestBody) {
+        PageHelper.startPage(pageNo, pageSize);
+        List<JSONObject> jsonObjectList = mediaReportMapper.queryAgentReportBy(requestBody.getString("todayDate"), requestBody.getString("yesterdayDate"));
+        return new PageInfo<JSONObject>(jsonObjectList);
+    }
+
+    private List<JSONObject> getMediaReportListByCondition(JSONObject requestBody) {
+        String condition = getSqlByCondition(requestBody);
+        return mediaReportMapper.queryMediaReportBy(requestBody.getString("todayDate"), requestBody.getString("yesterdayDate"), condition);
+    }
+
+    private List<JSONObject> getAgentReportListByCondition(JSONObject requestBody) {
+        return mediaReportMapper.queryAgentReportBy(requestBody.getString("todayDate"), requestBody.getString("yesterdayDate"));
+    }
+
+    private String getSqlByCondition(JSONObject requestBody) {
+        StringBuilder sql = new StringBuilder();
+        if (!requestBody.getString("companyId").isEmpty()) {
+            sql.append(" '")
+                    .append(requestBody.getString("companyId"))
+                    .append("' and ");
+        }
+        if (!requestBody.getString("advertiserId").isEmpty()) {
+            sql.append("advertiserId='")
+                    .append(requestBody.getString("advertiserId"))
+                    .append("' and ");
+        }
+        if (!requestBody.getString("projectId").isEmpty()) {
+            sql.append("projectId=")
+                    .append(requestBody.getString("projectId"))
+                    .append(" and ");
+        }
+        if (!requestBody.getString("mediaType").isEmpty()) {
+            sql.append("mediaType=")
+                    .append(requestBody.getString("mediaType"))
+                    .append(" and ");
+        }
+        String result = sql.toString();
+        if (result.endsWith("and ")) {
+            result = result.substring(0,result.length() - 4);
+        }
+        return result;
+    }
+}

+ 7 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ProjectMemberServiceImpl.java

@@ -86,9 +86,15 @@ public class ProjectMemberServiceImpl extends ServiceImpl<ProjectMemberMapper, P
         } else if (roleCode.equals("admin")) {
             projectMemberList = memberMapper.adminProjects(mediaIds);
         } else if (roleCode.equals("operator") || roleCode.equals("operationAssistant") || roleCode.equals("touTiaoOperationManager")) {
-            projectMemberList = memberMapper.operationProjects(userId, mediaIds);
+            projectMemberList = memberMapper.designProjects(userId, mediaIds);
+        }else{
+            //如果以上角色都不是的话直接查询此角色所属项目
+            projectMemberList = memberMapper.designProjects(userId, mediaIds);
         }
 
+        if(null == projectMemberList){
+            projectMemberList = new ArrayList<>();
+        }
         return projectMemberList;
     }
 

+ 4 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialCutFrameService.java

@@ -21,4 +21,8 @@ public interface IMaterialCutFrameService extends IService<MaterialCutFrame> {
 
     List<MaterialCutFrame> getListByVideoSignature(String signature);
 
+    void getCosCutFrame(String url, String materialId) throws IOException;  //腾讯云抽帧
+
+    void loadCosCutFrame(String jobId, String videoSignature);  //腾讯云抽帧任务状态查询以及数据入库
+
 }

+ 93 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialCutFrameServiceImpl.java

@@ -7,9 +7,11 @@ import cn.com.ctop.common.module.mapper.MaterialCutFrameMapper;
 import cn.com.ctop.common.module.service.IMaterialCutFrameService;
 import cn.com.ctop.common.module.service.IMaterialCutFrameTaskService;
 import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.common.module.utils.CosUtil;
 import cn.com.ctop.common.module.utils.LoadFileUtil;
 import cn.com.ctop.common.module.utils.MpsUtils;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.aliyuncs.DefaultAcsClient;
 import com.aliyuncs.IAcsClient;
@@ -20,7 +22,9 @@ import com.aliyuncs.mts.model.v20140618.SubmitSnapshotJobResponse;
 import com.aliyuncs.profile.DefaultProfile;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.gson.JsonObject;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -224,5 +228,94 @@ public class MaterialCutFrameServiceImpl extends ServiceImpl<MaterialCutFrameMap
     }
 
 
+    //腾讯云抽帧
+    @Override
+    public void getCosCutFrame(String url, String materialId) throws IOException {
+        try {
+
+            QueryWrapper<MaterialCutFrameTask> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("video_signature", materialId);
+            queryWrapper.last("limit 1");
+            MaterialCutFrameTask checkCutFrame = cutFrameTaskService.getOne(queryWrapper);
+            if (!Check.isNull(checkCutFrame)) {
+                log.info("已存推荐封面");
+                return;
+            }
+
+            //抽帧ossOutputObject1
+            String ossOutputObject1 = "/cutFrame/" + materialId + "/_";
+            String replaceUrl = url.replace("https://" + CosUtil.bucket + ".cos.ap-chongqing.myqcloud.com", "");  //地址
+            String resp = CosUtil.processMedia(replaceUrl, ossOutputObject1);
+            JSONObject respJson = JSONObject.parseObject(resp);
+            String jobId = respJson.getString("TaskId"); //{"Response": {"TaskId": "2600000655-WorkflowTask-c0b385f27c4993437029b5da175542aet0","RequestId": "4c23ce23-087f-4d4b-b73b-907d77d6d78d" } }
+            MaterialCutFrameTask cutFrameTask = new MaterialCutFrameTask();
+            cutFrameTask.setJobStatus(0);
+            cutFrameTask.setJobId(jobId);
+            cutFrameTask.setVideoSignature(materialId);
+            cutFrameTaskService.save(cutFrameTask);
+        } catch (Exception e) {
+            log.error(e.getMessage());
+        }
+    }
+
+
+    //抽帧任务状态查询,如果完成则把抽帧入库
+    @Override
+    public void loadCosCutFrame(String jobId, String videoSignature) {
+        try {
+            String resp = CosUtil.describeTaskDetail(jobId);
+            if(StringUtils.isBlank(resp)){
+                return;
+            }
+
+            JSONObject respJson = JSONObject.parseObject(resp);
+            String status = respJson.getString("Status");
+
+            if(!"FINISH".equals(status)){
+                return;
+            }
+
+            JSONArray resultSetArray = respJson.getJSONObject("WorkflowTask").getJSONArray("MediaProcessResultSet");
+            if (Check.isNull(resultSetArray)) {
+                return;
+            }
+            JSONObject resultSetObject = resultSetArray.getJSONObject(0);
+            if (Check.isNull(resultSetObject)) {
+                return;
+            }
+            JSONArray snapshotArray = resultSetObject.getJSONObject("SampleSnapshotTask").getJSONObject("Output").getJSONArray("ImagePathSet");
+
+            if (Check.isNull(snapshotArray)) {
+                return;
+            }
+
+            for (int i=0; i< snapshotArray.size(); i++){
+                String imagePath = snapshotArray.getString(i);
+                String urlStr = "https://" + CosUtil.bucket + ".cos.ap-chongqing.myqcloud.com" + imagePath;
+
+                //下载到本地获取图片md5
+                String cutFramePath = LoadFileUtil.downLoadFromUrl(urlStr, imageUpLoadPath);
+                String cutFrameMd5 = LoadFileUtil.getMD5(cutFramePath);
+
+                MaterialCutFrame cutFrame = new MaterialCutFrame();
+                cutFrame.setSignature(cutFrameMd5);
+                cutFrame.setUrl(urlStr);
+                cutFrame.setVideoSignature(videoSignature);
+                cutFrame.setImageIndex(i);
+                this.save(cutFrame);
+            }
+
+            QueryWrapper<MaterialCutFrameTask> updateQueryWrapper = new QueryWrapper<>();
+            updateQueryWrapper.eq("job_id", jobId);
+            updateQueryWrapper.eq("video_signature", videoSignature);
+            MaterialCutFrameTask updateTask = new MaterialCutFrameTask();
+            updateTask.setJobStatus(1);
+            cutFrameTaskService.update(updateTask, updateQueryWrapper);
+        } catch (Exception e) {
+            log.error(e.getMessage());
+        }
+
+    }
+
 
 }

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

@@ -380,6 +380,7 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
                                 try {
                                     log.info("开始抽帧");
                                     materialCutFrameService.getCutFrame(videoUrl, materialInfo.getCode(), secondDuration, height, width);
+                                    //materialCutFrameService.getCosCutFrame(videoUrl, materialInfo.getCode());  //腾讯云抽帧
                                 } catch (Exception e) {
                                     e.printStackTrace();
                                 }

+ 148 - 0
module-common/src/main/java/cn/com/ctop/common/module/utils/CosUtil.java

@@ -0,0 +1,148 @@
+package cn.com.ctop.common.module.utils;
+
+import com.tencentcloudapi.common.Credential;
+import com.tencentcloudapi.common.exception.TencentCloudSDKException;
+import com.tencentcloudapi.common.profile.ClientProfile;
+import com.tencentcloudapi.common.profile.HttpProfile;
+import com.tencentcloudapi.mps.v20190612.MpsClient;
+import com.tencentcloudapi.mps.v20190612.models.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.codec.Base64;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import java.io.UnsupportedEncodingException;
+import java.util.HashMap;
+import java.util.Map;
+
+
+//@Slf4j
+public class CosUtil {
+    public static final String secretId = "AKIDE6IpMi8fJQRCg1iuWzFajjRs43kbbets";
+    public static final String secretKey = "tXzuwMfplTTK3c9GFUyETilasvQfePu9";
+    public static final String region = "ap-chongqing";
+    public static final String bucket = "part-1301855440";
+    public static final String host = "https://media-1301855440.cos.ap-chongqing.myqcloud.com";
+
+
+    //创建采样视频截图模板
+    public static void createSampleSnapshotTemplate(){
+        try{
+
+            Credential cred = new Credential(secretId, secretKey);
+
+            HttpProfile httpProfile = new HttpProfile();
+            httpProfile.setEndpoint("mps.tencentcloudapi.com");
+
+            ClientProfile clientProfile = new ClientProfile();
+            clientProfile.setHttpProfile(httpProfile);
+
+            MpsClient client = new MpsClient(cred, region, clientProfile);
+
+            String params = "{\"Name\":\"sampleSnapshotTemplate1\",\"SampleType\":\"Percent\",\"SampleInterval\":7}";
+
+            CreateSampleSnapshotTemplateRequest req = CreateSampleSnapshotTemplateRequest.fromJsonString(params, CreateSampleSnapshotTemplateRequest.class);
+
+            CreateSampleSnapshotTemplateResponse resp = client.CreateSampleSnapshotTemplate(req);
+
+            System.out.println(CreateSampleSnapshotTemplateRequest.toJsonString(resp));
+        } catch (TencentCloudSDKException e) {
+            System.out.println(e.toString());
+        }
+    }
+
+    /**
+     * 视频处理模块
+     * 查询已经创建的模板
+     */
+    public static void DescribeSampleSnapshotTemplates(){
+            try{
+                Credential cred = new Credential(secretId, secretKey);
+
+                HttpProfile httpProfile = new HttpProfile();
+                httpProfile.setEndpoint("mps.tencentcloudapi.com");
+
+                ClientProfile clientProfile = new ClientProfile();
+                clientProfile.setHttpProfile(httpProfile);
+
+                MpsClient client = new MpsClient(cred, region, clientProfile);
+
+                String params = "{}";
+                DescribeSampleSnapshotTemplatesRequest req = DescribeSampleSnapshotTemplatesRequest.fromJsonString(params, DescribeSampleSnapshotTemplatesRequest.class);
+
+                DescribeSampleSnapshotTemplatesResponse resp = client.DescribeSampleSnapshotTemplates(req);
+
+                System.out.println(DescribeSampleSnapshotTemplatesRequest.toJsonString(resp));
+            } catch (TencentCloudSDKException e) {
+                System.out.println(e.toString());
+            }
+    }
+
+    //查询抽帧任务状态
+    public static String describeTaskDetail(String taskId){
+            try{
+                Credential cred = new Credential(secretId, secretKey);
+
+                HttpProfile httpProfile = new HttpProfile();
+                httpProfile.setEndpoint("mps.tencentcloudapi.com");
+
+                ClientProfile clientProfile = new ClientProfile();
+                clientProfile.setHttpProfile(httpProfile);
+
+                MpsClient client = new MpsClient(cred, region, clientProfile);
+
+                String params = "{\"TaskId\":\"" + taskId + "\"}";
+                DescribeTaskDetailRequest req = DescribeTaskDetailRequest.fromJsonString(params, DescribeTaskDetailRequest.class);
+
+                DescribeTaskDetailResponse resp = client.DescribeTaskDetail(req);
+
+                System.out.println(DescribeTaskDetailRequest.toJsonString(resp));
+                return DescribeTaskDetailRequest.toJsonString(resp);
+            } catch (TencentCloudSDKException e) {
+                System.out.println(e.toString());
+                return null;
+            }
+    }
+
+    //抽帧      42095--已经创建好的采样截图模板,每7%抽一张,一共15张,第一张首帧
+    //videoPath视频路径,包括文件名 高清.mp4     snapshotPath 视频截图路径(包括名字) /高清
+    public static String processMedia(String videoPath, String snapshotPath){
+        try{
+            Credential cred = new Credential(secretId, secretKey);
+
+            HttpProfile httpProfile = new HttpProfile();
+            httpProfile.setEndpoint("mps.tencentcloudapi.com");
+
+            ClientProfile clientProfile = new ClientProfile();
+            clientProfile.setHttpProfile(httpProfile);
+
+            MpsClient client = new MpsClient(cred, region, clientProfile);
+
+            String params = "{\"InputInfo\":{\"Type\":\"COS\",\"CosInputInfo\":{\"Bucket\":\"" + bucket + "\",\"Region\":\"" + region + "\",\"Object\":\"" + videoPath + "\"}},\"MediaProcessTask\":{\"SampleSnapshotTaskSet\":[{\"Definition\":42095,\"OutputStorage\":{\"Type\":\"COS\",\"CosOutputStorage\":{\"Bucket\":\"part-1301855440\",\"Region\":\"" + region + "\"}},\"OutputObjectPath\":\"" + snapshotPath + "\"}]}}";
+
+            ProcessMediaRequest req = ProcessMediaRequest.fromJsonString(params, ProcessMediaRequest.class);
+
+            ProcessMediaResponse resp = client.ProcessMedia(req);
+
+            System.out.println(ProcessMediaRequest.toJsonString(resp));
+            return ProcessMediaRequest.toJsonString(resp);
+        } catch (TencentCloudSDKException e) {
+            System.out.println(e.toString());
+            return null;
+        }
+    }
+
+
+    public static void main(String[] args) {
+        //创建采样截图模板
+        createSampleSnapshotTemplate();
+        //查询采样截图模板
+        //DescribeSampleSnapshotTemplates();
+        //查询抽帧任务状态
+        //describeTaskDetail();
+
+    }
+
+
+}

+ 1 - 0
module-ctop/src/main/java/cn/com/ctop/manage/modules/actor/entity/Prop.java

@@ -20,6 +20,7 @@ public class Prop {
     @TableId(type = IdType.AUTO)
     private Long id;
     private String name;
+    @TableField(value = "`desc`")
     private String desc;
     private String type;
     private String coverUrl;

+ 27 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportDailyAccountMapper.xml

@@ -487,7 +487,33 @@
         event_next_day_stay,
         play_3s_ratio,
         @event_valid_clues,
-        @event_valid_clues_cost
+        @event_valid_clues_cost,
+        @ad_product_cnt,
+        @event_goods_view,
+        @merchant_reco_fans,
+        @event_order_amount_roi,
+        @event_goods_view_cost,
+        @merchant_reco_fans_cost,
+        @event_new_user_pay_cost,
+        @event_new_user_pay_ratio,
+        @event_button_click,
+        @event_button_click_cost,
+        @event_button_click_ratio,
+        @play_5s_ratio,
+        @play_end_ratio,
+        @event_order_paid_roi,
+        @event_new_user_jinjian_app,
+        @event_new_user_jinjian_app_cost,
+        @event_new_user_jinjian_app_roi,
+        @event_new_user_credit_grant_app,
+        @event_new_user_credit_grant_app_cost,
+        @event_new_user_credit_grant_app_roi,
+        @event_new_user_jinjian_page,
+        @event_new_user_jinjian_page_cost,
+        @event_new_user_jinjian_page_roi,
+        @event_new_user_credit_grant_page,
+        @event_new_user_credit_grant_page_cost,
+        @event_new_user_credit_grant_page_roi
         )
           set account_id = #{accountId}
     </insert>

+ 27 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportDailyCampaignMapper.xml

@@ -66,7 +66,33 @@
         event_next_day_stay,
         play_3s_ratio,
         @event_valid_clues,
-        @event_valid_clues_cost
+        @event_valid_clues_cost,
+        @ad_product_cnt,
+        @event_goods_view,
+        @merchant_reco_fans,
+        @event_order_amount_roi,
+        @event_goods_view_cost,
+        @merchant_reco_fans_cost,
+        @event_new_user_pay_cost,
+        @event_new_user_pay_ratio,
+        @event_button_click,
+        @event_button_click_cost,
+        @event_button_click_ratio,
+        @play_5s_ratio,
+        @play_end_ratio,
+        @event_order_paid_roi,
+        @event_new_user_jinjian_app,
+        @event_new_user_jinjian_app_cost,
+        @event_new_user_jinjian_app_roi,
+        @event_new_user_credit_grant_app,
+        @event_new_user_credit_grant_app_cost,
+        @event_new_user_credit_grant_app_roi,
+        @event_new_user_jinjian_page,
+        @event_new_user_jinjian_page_cost,
+        @event_new_user_jinjian_page_roi,
+        @event_new_user_credit_grant_page,
+        @event_new_user_credit_grant_page_cost,
+        @event_new_user_credit_grant_page_roi
         )
           set account_id = #{accountId}
     </insert>

+ 27 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportDailyCreativeMapper.xml

@@ -71,7 +71,33 @@
         event_next_day_stay,
         play_3s_ratio,
         @event_valid_clues,
-        @event_valid_clues_cost
+        @event_valid_clues_cost,
+        @ad_product_cnt,
+        @event_goods_view,
+        @merchant_reco_fans,
+        @event_order_amount_roi,
+        @event_goods_view_cost,
+        @merchant_reco_fans_cost,
+        @event_new_user_pay_cost,
+        @event_new_user_pay_ratio,
+        @event_button_click,
+        @event_button_click_cost,
+        @event_button_click_ratio,
+        @play_5s_ratio,
+        @play_end_ratio,
+        @event_order_paid_roi,
+        @event_new_user_jinjian_app,
+        @event_new_user_jinjian_app_cost,
+        @event_new_user_jinjian_app_roi,
+        @event_new_user_credit_grant_app,
+        @event_new_user_credit_grant_app_cost,
+        @event_new_user_credit_grant_app_roi,
+        @event_new_user_jinjian_page,
+        @event_new_user_jinjian_page_cost,
+        @event_new_user_jinjian_page_roi,
+        @event_new_user_credit_grant_page,
+        @event_new_user_credit_grant_page_cost,
+        @event_new_user_credit_grant_page_roi
         )
           set account_id = #{accountId}
     </insert>

+ 27 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportDailyGroupMapper.xml

@@ -68,7 +68,33 @@
         event_next_day_stay,
         play_3s_ratio,
         @event_valid_clues,
-        @event_valid_clues_cost
+        @event_valid_clues_cost,
+        @ad_product_cnt,
+        @event_goods_view,
+        @merchant_reco_fans,
+        @event_order_amount_roi,
+        @event_goods_view_cost,
+        @merchant_reco_fans_cost,
+        @event_new_user_pay_cost,
+        @event_new_user_pay_ratio,
+        @event_button_click,
+        @event_button_click_cost,
+        @event_button_click_ratio,
+        @play_5s_ratio,
+        @play_end_ratio,
+        @event_order_paid_roi,
+        @event_new_user_jinjian_app,
+        @event_new_user_jinjian_app_cost,
+        @event_new_user_jinjian_app_roi,
+        @event_new_user_credit_grant_app,
+        @event_new_user_credit_grant_app_cost,
+        @event_new_user_credit_grant_app_roi,
+        @event_new_user_jinjian_page,
+        @event_new_user_jinjian_page_cost,
+        @event_new_user_jinjian_page_roi,
+        @event_new_user_credit_grant_page,
+        @event_new_user_credit_grant_page_cost,
+        @event_new_user_credit_grant_page_roi
         )
           set account_id = #{accountId}
     </insert>

+ 3 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/BytedanceAccountReportMapper.java

@@ -32,6 +32,9 @@ public interface BytedanceAccountReportMapper {
     //根据时间查询数据按账户分组
     List<JSONObject> querySumByDateGroupAccount(@Param("filed") String filed,@Param("endDate") String endDate, @Param("startDate") String startDate,@Param("accountIds") JSONArray accountIds,String target, String order);
 
+    //根据时间查询数据按账户时间分组
+    List<JSONObject> querySumByDateGroupAccountAndDate(@Param("filed") String filed,@Param("endDate") String endDate, @Param("startDate") String startDate,@Param("accountIds") JSONArray accountIds,String target, String order);
+
     //根据开始、结束时间 查询明细数据
     List<JSONObject> queryDetailByStartEndDate(@Param("endDate") String endDate, @Param("startDate") String startDate,@Param("accountIds") JSONArray accountIds);
 

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

@@ -123,6 +123,7 @@
 
     <select id="querySumByDateGroupAccount" resultType="com.alibaba.fastjson.JSONObject">
         SELECT
+          DATE_FORMAT(t1.stat_datetime,'%Y-%m-%d') as statDate,
           t2.account_id as accountId,
           t2.auth_name as authName,
           ${filed}
@@ -141,6 +142,27 @@
         order by ${target} ${order}
     </select>
 
+    <select id="querySumByDateGroupAccountAndDate" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+        DATE_FORMAT(t1.stat_datetime,'%Y-%m-%d') as statDate,
+        t2.account_id as accountId,
+        t2.auth_name as authName,
+        ${filed}
+        FROM
+        ctop_bytedance_report_advertiser_daily t1
+        left join ctop_user_allocation t2 on t1.advertiser_id=t2.account_id
+        WHERE
+        t1.stat_datetime &lt;= #{endDate} '00:00:00'
+        AND t1.stat_datetime &gt;= #{startDate}
+        AND t1.advertiser_id in
+        <foreach item="item" index="index" collection="accountIds"
+                 open="(" separator="," close=")">
+            #{item}
+        </foreach>
+        group by t1.stat_datetime
+        order by ${target} ${order}
+    </select>
+
     <select id="queryDetailByStartEndDate" resultType="com.alibaba.fastjson.JSONObject">
         SELECT
           ROUND(sum(cost),2) cost,

+ 5 - 1
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceAccountReportServiceImpl.java

@@ -95,7 +95,11 @@ public class BytedanceAccountReportServiceImpl implements IBytedanceAccountRepor
             result.add(beforeSum);
             result.add(countTotal(afterSum, beforeSum));
         } else {
-            result = bytedanceAccountReportMapper.querySumByDateGroupAccount(filedAll, endDate, startDate, accounts, target, order);
+            if(accounts.size()>1){
+                result = bytedanceAccountReportMapper.querySumByDateGroupAccount(filedAll, endDate, startDate, accounts, target, order);
+            }else{
+                result = bytedanceAccountReportMapper.querySumByDateGroupAccountAndDate(filedAll, endDate, startDate, accounts, target, order);
+            }
             result.add(bytedanceAccountReportMapper.queryAllSumByStartEndDate(filedAll, endDate, startDate, accounts));
         }
         return result;

+ 11 - 0
pom.xml

@@ -395,6 +395,17 @@
             <artifactId>javacv-platform</artifactId>
             <version>1.4.2</version>
         </dependency>
+        <dependency>
+            <groupId>com.qcloud</groupId>
+            <artifactId>cos_api</artifactId>
+            <version>5.6.24</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.tencentcloudapi</groupId>
+            <artifactId>tencentcloud-sdk-java</artifactId>
+            <version>3.1.62</version><!-- 注:这里只是示例版本号,请获取并替换为 最新的版本号 -->
+        </dependency>
     </dependencies>
 
     <dependencyManagement>