Browse Source

Merge branch 'master' of http://39.106.184.70:3000/ctop/adsp-boot

syh 5 năm trước cách đây
mục cha
commit
37295dfb18
56 tập tin đã thay đổi với 1895 bổ sung712 xóa
  1. 24 28
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/DateUtils.java
  2. 24 22
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/AdvertiserController.java
  3. 34 12
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialInfoController.java
  4. 23 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ProjectController.java
  5. 30 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ProjectMemberController.java
  6. 40 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TestController.java
  7. 8 6
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/UserAllocationController.java
  8. 4 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/Advertiser.java
  9. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/Project.java
  10. 0 11
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/KuaishouCrawlerJob.java
  11. 37 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/MaterialReportAccountUpdateJob.java
  12. 8 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/MaterialTopMapper.java
  13. 13 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ProjectMemberMapper.java
  14. 199 19
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/MaterialTopMapper.xml
  15. 97 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ProjectMemberMapper.xml
  16. 1 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IMaterialTopService.java
  17. 2 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IProjectMemberService.java
  18. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/MaterialTopServiceImpl.java
  19. 30 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ProjectMemberServiceImpl.java
  20. 0 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/opencv/utils/CornerCheck.java
  21. 0 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/opencv/utils/Perspective.java
  22. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictController.java
  23. 15 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
  24. 5 5
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysCategoryService.java
  25. 7 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysCategoryServiceImpl.java
  26. 1 1
      jeecg-boot-module-system/src/main/resources/application-test.yml
  27. 0 5
      module-common/src/main/java/cn/com/ctop/common/module/utils/LoadFileUtil.java
  28. 0 11
      module-common/src/main/java/cn/com/ctop/common/module/utils/OSSUtils.java
  29. 0 10
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/dataeye/service/impl/DataeyeCompanyServiceImpl.java
  30. 0 10
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/dataeye/service/impl/DataeyeLabelServiceImpl.java
  31. 14 18
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/dataeye/service/impl/DataeyeMediaServiceImpl.java
  32. 0 7
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/dataeye/service/impl/DataeyeProductServiceImpl.java
  33. 0 6
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/pangolin/service/impl/PangolinLoginServiceImpl.java
  34. 0 6
      module-ctop/src/main/java/cn/com/ctop/manage/modules/edu/service/impl/EduLessonServiceImpl.java
  35. 1 1
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDanceVideoReportJob.java
  36. 0 3
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceAdvertiserDailyReportLoadJob.java
  37. 1 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouInterfaceServiceImpl.java
  38. 1 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/AccountReportMapper.xml
  39. 1 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportDailyCreativeMapper.xml
  40. 12 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/DTO/AccountVideoDTO.java
  41. 2 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/DTO/DateDTO.java
  42. 1 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/DTO/PageDTO.java
  43. 72 29
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/controller/ByteDanceVideoReportDailyController.java
  44. 0 2
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/controller/BytedanceHomepageReportCtrl.java
  45. 13 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/controller/BytedanceReportController.java
  46. 4 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/entity/ByteDanceVideoReportDaily.java
  47. 0 1
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/entity/BytedanceFundDaily.java
  48. 38 3
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/ByteDanceVideoReportDailyMapper.java
  49. 4 4
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/BytedanceHomepageMapper.java
  50. 523 431
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/ByteDanceVideoReportDailyMapper.xml
  51. 218 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/BytedanceReportMapper.xml
  52. 10 5
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/IByteDanceVideoReportDailyService.java
  53. 351 40
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/ByteDanceVideoReportDailyServiceImpl.java
  54. 2 1
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceHomepageReportServiceImpl.java
  55. 0 3
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceReportServiceImpl.java
  56. 0 2
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/ReportServiceImpl.java

+ 24 - 28
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/DateUtils.java

@@ -241,7 +241,7 @@ public class DateUtils extends PropertyEditorSupport {
         Date dt = new Date();
         DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String nowTime = df.format(dt);
-        java.sql.Timestamp buydate = java.sql.Timestamp.valueOf(nowTime);
+        Timestamp buydate = Timestamp.valueOf(nowTime);
         return buydate;
     }
 
@@ -784,10 +784,6 @@ public class DateUtils extends PropertyEditorSupport {
         return sdf.format(calendar.getTime());
     }
 
-    //public static void main(String[] args) throws ParseException {
-    //    System.out.println(DateUtils.addDay( "2020-01-03",  7));
-    //}
-
     public static Date addDay(Date date, int day) {
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
@@ -892,7 +888,7 @@ public class DateUtils extends PropertyEditorSupport {
         try {
             date = dateFormat.parse(nowTime);
         } catch (ParseException e) {
-            logger.error(e.getMessage(),e);
+            logger.error(e.getMessage(), e);
         }
 
         //得到日历
@@ -1217,10 +1213,9 @@ public class DateUtils extends PropertyEditorSupport {
      * @param dateEnd
      * @return
      */
-    public static long getDiscrepantDays(String dateStart, String dateEnd){
+    public static long getDiscrepantDays(String dateStart, String dateEnd) {
         //设置转换的日期格式
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-
         //结束时间
         Date startDate = null;
         Date endDate = null;
@@ -1231,32 +1226,27 @@ public class DateUtils extends PropertyEditorSupport {
         } catch (ParseException e) {
             e.printStackTrace();
         }
-
         //得到相差的天数 betweenDate
-        long betweenDate = (endDate.getTime() - startDate.getTime())/(60*60*24*1000);
-
-        //打印控制台相差的天数
-        System.out.println(betweenDate);
-        return betweenDate;
+        return  (endDate.getTime() - startDate.getTime())/(60*60*24*1000);
     }
 
     /***
      * 两个日期之间间隔的月数(不考虑日期的情况)
      */
-    public static int calDiffMonth(Date start, Date end){
+    public static int calDiffMonth(Date start, Date end) {
         GregorianCalendar startCalendar = new GregorianCalendar();
         startCalendar.setTime(start);
         GregorianCalendar endCalendar = new GregorianCalendar();
         endCalendar.setTime(end);
 
-        int startYear=startCalendar.get(Calendar.YEAR);
-        int startMonth=startCalendar.get(Calendar.MONTH)+1;
-        int startDay=startCalendar.get(Calendar.DAY_OF_MONTH);
-        int endYear=endCalendar.get(Calendar.YEAR);
-        int endMonth=endCalendar.get(Calendar.MONTH)+1;
-        int endDay=endCalendar.get(Calendar.DAY_OF_MONTH);
+        int startYear = startCalendar.get(Calendar.YEAR);
+        int startMonth = startCalendar.get(Calendar.MONTH) + 1;
+        int startDay = startCalendar.get(Calendar.DAY_OF_MONTH);
+        int endYear = endCalendar.get(Calendar.YEAR);
+        int endMonth = endCalendar.get(Calendar.MONTH) + 1;
+        int endDay = endCalendar.get(Calendar.DAY_OF_MONTH);
 
-        return (endYear-startYear)*12 + (endMonth - startMonth);
+        return (endYear - startYear) * 12 + (endMonth - startMonth);
     }
 
     public static int getDaysOfMonth(int year, int month) {
@@ -1273,11 +1263,12 @@ public class DateUtils extends PropertyEditorSupport {
 
     /**
      * 获取指定日期下个月的第一天
+     *
      * @param dateStr
      * @param format
      * @return
      */
-    public static Map<String, String> getMaxMinDaysOfAddMonth(String dateStr,String format, int addMonth){
+    public static Map<String, String> getMaxMinDaysOfAddMonth(String dateStr, String format, int addMonth) {
         SimpleDateFormat sdf = new SimpleDateFormat(format);
         Map<String, String> dateMap = new HashMap<>();
         try {
@@ -1285,7 +1276,7 @@ public class DateUtils extends PropertyEditorSupport {
             Calendar calendar = Calendar.getInstance();
             calendar.setTime(date);
             calendar.add(Calendar.MONTH, addMonth);
-            calendar.set(Calendar.DAY_OF_MONTH,1);
+            calendar.set(Calendar.DAY_OF_MONTH, 1);
             dateMap.put("startDate", sdf.format(calendar.getTime()));
 
             calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DATE));
@@ -1297,7 +1288,8 @@ public class DateUtils extends PropertyEditorSupport {
         return null;
     }
 
-    public static int dateDiff(String start, String end){
+
+    public static int dateDiff(String start, String end) {
         //设置转换的日期格式
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         //开始时间
@@ -1311,16 +1303,20 @@ public class DateUtils extends PropertyEditorSupport {
         }
 
         //得到相差的天数 betweenDate
-        long betweenDate = (endDate.getTime() - startDate.getTime())/(60*60*24*1000);
-        return (int)betweenDate;
+        long betweenDate = (endDate.getTime() - startDate.getTime()) / (60 * 60 * 24 * 1000);
+        return (int) betweenDate;
     }
 
-    public static Date addMonth(Date date){
+    public static Date addMonth(Date date) {
         Calendar calendar = Calendar.getInstance();//日历对象
         calendar.add(Calendar.MONTH, -1);//月份减一
         return calendar.getTime();
     }
 
+    public static void main(String[] args) throws ParseException {
+        System.out.println(calDiffMonth(DateUtils.parseDate("2019-04-01", "yyyy-MM-dd"), new Date()));
+    }
+
 }
 
 

+ 24 - 22
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/AdvertiserController.java

@@ -27,11 +27,9 @@ import org.jeecg.modules.ctop.service.IProjectService;
 import org.jeecg.modules.ctop.vo.SheetInfoVo;
 import org.jeecg.modules.excelutil.entity.KuaishouXxlEntity;
 import org.jeecg.modules.system.entity.SysCategory;
-import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.entity.UserCompany;
 import org.jeecg.modules.system.mapper.UserCompanyMapper;
 import org.jeecg.modules.system.service.ISysCategoryService;
-import org.jeecg.modules.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -114,13 +112,14 @@ public class AdvertiserController {
                                                    @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                                    @RequestParam(name = "pageSize", defaultValue = "1000") Integer pageSize,
                                                    HttpServletRequest req) {
-
         Result<IPage<Advertiser>> result = new Result<>();
         String roleCode = sysRoleService.getRoleCodeByUserId(advertiser.getUserId());
         String userId = advertiser.getUserId();
         if ("admin".equals(roleCode) || "kuaishouOperationManager".equals(roleCode) || "touTiaoOperationManager".equals(roleCode) || "sale".equals(roleCode) || "saleDirector".equals(roleCode)) {
             advertiser.setUserId(null);
         }
+        String industryId = advertiser.getIndustryId();
+        advertiser.setIndustryId(null);
         QueryWrapper<Advertiser> queryWrapper = QueryGenerator.initQueryWrapper(advertiser, req.getParameterMap());
         if ("kuaishouOperationManager".equals(roleCode)) {
             QueryWrapper<UserCompany> userCompanyQueryWrapper = new QueryWrapper<>();
@@ -132,32 +131,19 @@ public class AdvertiserController {
                 queryWrapper.eq("company_id", userCompany.getCompanyId());
             }
         }
-        Page<Advertiser> page = new Page<>(pageNo, pageSize);
-        IPage<Advertiser> pageList = advertiserService.page(page, queryWrapper);
-        if (pageList != null && pageList.getRecords() != null && !pageList.getRecords().isEmpty()) {
-            List<Advertiser> list = new ArrayList<>();
-            for (int i = 0; i < pageList.getRecords().size(); i++) {
-                Advertiser advertiserRecord = pageList.getRecords().get(i);
-                SysCategory sysCategory = sysCategoryService.getById(advertiserRecord.getIndustryId());
-                if (sysCategory != null) {
-                    advertiserRecord.setIndustryId(sysCategory.getName());
-                }
-                SysUser user = sysUserService.getById(advertiserRecord.getSaleId());
-                if (null != user) {
-                    advertiserRecord.setSaleName(user.getRealname());
-                }
-                list.add(advertiserRecord);
+        if(null!=industryId&&!"".equals(industryId.trim())){
+            SysCategory category = sysCategoryService.getById(industryId);
+            if(null!=category){
+                queryWrapper.likeRight("industry_code",category.getCode());
             }
-            pageList.setRecords(list);
         }
+        Page<Advertiser> page = new Page<>(pageNo, pageSize);
+        IPage<Advertiser> pageList = advertiserService.page(page, queryWrapper);
         result.setSuccess(true);
         result.setResult(pageList);
         return result;
     }
 
-    @Autowired
-    private ISysUserService sysUserService;
-
     /**
      * 添加
      *
@@ -191,6 +177,14 @@ public class AdvertiserController {
             if (!Check.isNull(userCompany)) {
                 advertiser.setCompanyId(userCompany.getCompanyId());
             }
+            String industryId = advertiser.getIndustryId();
+            if(null!=industryId&&!"".equals(industryId.trim())){
+                SysCategory category = sysCategoryService.getById(industryId);
+                if(null!=category){
+                    advertiser.setIndustryId(category.getId());
+                    advertiser.setIndustryCode(category.getCode());
+                }
+            }
             advertiserService.save(advertiser);
             result.success("添加成功!");
         } catch (Exception e) {
@@ -218,6 +212,14 @@ public class AdvertiserController {
         if (advertiserEntity == null) {
             result.error500("未找到对应实体");
         } else {
+            String industryId = advertiser.getIndustryId();
+            if(null!=industryId&&!"".equals(industryId.trim())){
+                SysCategory category = sysCategoryService.getById(industryId);
+                if(null!=category){
+                    advertiser.setIndustryId(category.getId());
+                    advertiser.setIndustryCode(category.getCode());
+                }
+            }
             boolean ok = advertiserService.updateById(advertiser);
             QueryWrapper<Project> projectQueryWrapper = new QueryWrapper<>();
             projectQueryWrapper.eq("advertiser_id", advertiser.getId());

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

@@ -1,8 +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.entity.*;
 import cn.com.ctop.common.module.service.*;
 import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.JsonUtil;
@@ -336,7 +335,29 @@ public class MaterialInfoController {
                 materialInfo.setUrl(url);
             }
 
+            //  修改素材库 相关联code
+            if (!Check.isNull(materialInfo.getCode())) {
+                String code = materialInfoEntity.getCode();
+                if (!Check.isNull(code)) {
+                    MaterialTag updateMaterialTag = new MaterialTag();
+                    updateMaterialTag.setMaterialId(materialInfo.getCode());
+                    QueryWrapper<MaterialTag> tagQueryWrapper = new QueryWrapper<>();
+                    tagQueryWrapper.eq("material_id", code);
+                    materialTagService.update(updateMaterialTag, tagQueryWrapper);
+                    MaterialParameter updateParameter = new MaterialParameter();
+                    updateParameter.setMaterialId(materialInfo.getCode());
+                    QueryWrapper<MaterialParameter> parameterQueryWrapper = new QueryWrapper<>();
+                    parameterQueryWrapper.eq("material_id", code);
+                    materialParameterService.update(updateParameter, parameterQueryWrapper);
+                    MaterialAscription updateMaterialAscription = new MaterialAscription();
+                    updateMaterialAscription.setMaterialId(materialInfo.getCode());
+                    QueryWrapper<MaterialAscription> ascriptionQueryWrapper = new QueryWrapper<>();
+                    ascriptionQueryWrapper.eq("material_id", code);
+                    materialAscriptionService.update(updateMaterialAscription, ascriptionQueryWrapper);
+                }
+            }
 
+            //  审核通过自动同步到到媒体后台
            /* Long projectId = materialInfoEntity.getProjectId();
             Project project = projectService.getById(projectId);
             if (!Check.isNull(projectId)) {
@@ -358,7 +379,6 @@ public class MaterialInfoController {
 
             }*/
 
-
             boolean ok = materialInfoService.updateById(materialInfo);
             if (ok) {
                 result.success("修改成功!");
@@ -381,16 +401,18 @@ public class MaterialInfoController {
     @DeleteMapping(value = "/delete")
     public Result<Object> delete(@RequestParam(name = "id", required = true) String id) {
         try {
+            MaterialInfo materialInfo = materialInfoService.getById(id);
+            if (!Check.isNull(materialInfo)) {
+                Map<String, Object> deleteMap = new HashMap<>();
+                deleteMap.put("material_id", materialInfo.getCode());
+                materialAscriptionService.removeByMap(deleteMap);
+                materialParameterService.removeByMap(deleteMap);
+                materialTagService.removeByMap(deleteMap);
+                Map<String, Object> deleteWatermarkMap = new HashMap<>();
+                deleteWatermarkMap.put("video_id", id);
+                watermarkTaskService.removeByMap(deleteWatermarkMap);
+            }
             materialInfoService.removeById(id);
-            Map<String, Object> deleteMap = new HashMap<>();
-            deleteMap.put("material_id", id);
-            materialAscriptionService.removeByMap(deleteMap);
-            materialParameterService.removeByMap(deleteMap);
-            materialTagService.removeByMap(deleteMap);
-            Map<String, Object> deleteWatermarkMap = new HashMap<>();
-            deleteWatermarkMap.put("video_id", id);
-            watermarkTaskService.removeByMap(deleteWatermarkMap);
-
         } catch (Exception e) {
             log.error("删除失败", e.getMessage());
             return Result.error("删除失败!");

+ 23 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ProjectController.java

@@ -25,7 +25,9 @@ import org.jeecg.modules.ctop.service.IAdvertiserService;
 import org.jeecg.modules.ctop.service.IProjectMemberService;
 import org.jeecg.modules.ctop.service.IProjectService;
 import org.jeecg.modules.ctop.service.ITransferAccountService;
+import org.jeecg.modules.system.entity.SysCategory;
 import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.ISysCategoryService;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -61,7 +63,6 @@ public class ProjectController {
     private IUserAllocationService userAllocationService;
 
     /**
-     *
      * @param advertiserId
      * @param mediaId
      * @return
@@ -151,6 +152,8 @@ public class ProjectController {
         return map;
     }
 
+    @Autowired
+    private ISysCategoryService sysCategoryService;
 
     /**
      * 分页列表查询
@@ -169,6 +172,8 @@ public class ProjectController {
                                                 @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                                 HttpServletRequest req) {
         Result<IPage<Project>> result = new Result<>();
+        String industryId = project.getIndustryId();
+        project.setIndustryId(null);
         QueryWrapper<Project> queryWrapper = QueryGenerator.initQueryWrapper(project, req.getParameterMap());
         Page<Project> page = new Page<>(pageNo, pageSize);
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@@ -177,6 +182,12 @@ public class ProjectController {
             queryWrapper.eq("user_id", sysUser.getId());
             queryWrapper.orderByDesc("create_time");
         }
+        if(null!=industryId&&"".equals(industryId.trim())){
+            SysCategory category = sysCategoryService.getById(industryId);
+            if(null!=category){
+                queryWrapper.likeLeft("industry_code",category.getCode());
+            }
+        }
         IPage<Project> pageList = projectService.page(page, queryWrapper);
         result.setSuccess(true);
         result.setResult(pageList);
@@ -203,7 +214,11 @@ public class ProjectController {
             Map<String, String> memberMap = new HashMap<>();
             if (!Check.isNull(advertiser)) {
                 project.setCompanyId(advertiser.getCompanyId());
-
+            }
+            SysCategory category = sysCategoryService.getById(project.getIndustryId());
+            if(null!=category){
+                project.setIndustryCode(category.getCode());
+                project.setIndustryId(category.getId());
             }
             SysUser sysUser = sysUserService.getById(project.getResponsibleId());
             if (!Check.isNull(sysUser)) {
@@ -266,6 +281,11 @@ public class ProjectController {
             projectMemberService.addMember(sysUser, project);
         }
 
+        SysCategory category = sysCategoryService.getById(project.getIndustryId());
+        if(null!=category){
+            project.setIndustryCode(category.getCode());
+            project.setIndustryId(category.getId());
+        }
         SysUser designSysUser = sysUserService.getById(project.getDesignResponsibleId());
         if (!Check.isNull(designSysUser)) {
             project.setDesignResponsibleName(designSysUser.getRealname());
@@ -287,6 +307,7 @@ public class ProjectController {
             userAllocationQueryWrapper.eq("project_id", project.getId());
             UserAllocation updateUserAllocation = new UserAllocation();
             updateUserAllocation.setProjectName(project.getProjectName());
+           // updateUserAllocation.setMediaId(project.getMediaId());
             userAllocationService.update(updateUserAllocation, userAllocationQueryWrapper);
 
             if (ok) {

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

@@ -10,9 +10,11 @@ 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.modules.ctop.entity.Project;
 import org.jeecg.modules.ctop.entity.ProjectMember;
 import org.jeecg.modules.ctop.mapper.ProjectMemberMapper;
@@ -318,4 +320,32 @@ public class ProjectMemberController {
         }
         return result;
     }
+
+    /**
+     * 我参与项目
+     *
+     * @return
+     */
+    @AutoLog(value = "头条视频报表-参与项目列表")
+    @ApiOperation(value = "头条视频报表-参与项目列表", notes = "头条视频报表-参与项目列表")
+    @GetMapping(value = "/bytedanceProjectParticipateInList")
+    public  Result<List<ProjectMember>> bytedanceProjectParticipateInList() {
+        Result<List<ProjectMember>> result = new Result<>();
+        List<Integer> mediaIds = new ArrayList<>();
+        mediaIds.add(1);
+        mediaIds.add(3);
+        List<ProjectMember> projectMemberList = projectMemberService.getProjects(mediaIds);
+        if (projectMemberList == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(projectMemberList);
+            result.setSuccess(true);
+        }
+        return result;
+
+    }
+
+
+
+
 }

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

@@ -95,6 +95,46 @@ public class TestController {
     }
 
 
+    @GetMapping(value = "/getAccountReport")
+    public String getAccountReport(Long accountId, String startDate, String endDate) throws ParseException {
+        QueryWrapper<CtopOauthToken> oauthTokenQueryWrapper = new QueryWrapper<>();
+        oauthTokenQueryWrapper.eq("media_id", 2);
+        oauthTokenQueryWrapper.eq("account_id", accountId);
+        oauthTokenQueryWrapper.last("limit 1");
+        CtopOauthToken token = oauthTokenMapper.selectOne(oauthTokenQueryWrapper);
+        SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
+        Date date1 = sim.parse(startDate);
+        Date date2 = sim.parse(endDate);
+        kuaishouInterfaceService.getAdvertiserReportDaily(token, date1, date2);
+        return "Success";
+    }
+
+
+    @GetMapping(value = "/getAccountReportList")
+    public String getAccountReportList(String startDate, String endDate) {
+        Result<String> result = new Result<>();
+        try {
+            SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
+            Date date1 = sim.parse(startDate);
+            Date date2 = sim.parse(endDate);
+
+            QueryWrapper<CtopOauthToken> tokenQueryWrapper = new QueryWrapper<>();
+            tokenQueryWrapper.eq("media_id", 2);
+            List<CtopOauthToken> ctopOauthTokens = oauthTokenMapper.selectList(tokenQueryWrapper);
+            if (!Check.isNull(ctopOauthTokens)) {
+                for (CtopOauthToken token : ctopOauthTokens) {
+                    kuaishouInterfaceService.getAdvertiserReportDaily(token, date1, date2);
+                }
+
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            result.setSuccess(false);
+        }
+        return "success";
+    }
+
+
     @GetMapping(value = "/updateCode")
     public String updateCode() {
         List<MaterialInfo> list = materialInfoService.list();
@@ -386,9 +426,6 @@ public class TestController {
     private IReportService reportService;
 
 
-
-
-
     @Autowired
     private IBytedancePlanHourlyReportService planHourlyReportService;
 

+ 8 - 6
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/UserAllocationController.java

@@ -148,10 +148,11 @@ public class UserAllocationController {
         try {
             QueryWrapper<UserAllocation> queryWrapper = new QueryWrapper<>();
             queryWrapper.eq("project_id", projectId);
+
+           /* if (!Check.isNull(project)) {
             Project project = projectService.getById(projectId);
-            if (!Check.isNull(project)) {
                 queryWrapper.eq("media_id", project.getMediaId());
-            }
+            }*/
 
             String roleCode = sysRoleService.getRoleCodeByUserId(userId);
             if (!"admin".equals(roleCode) && !"kuaishouOperationManager".equals(roleCode) && !"designTeamLeader".equals(roleCode) && !"touTiaoOperationManager".equals(roleCode)) {
@@ -184,10 +185,11 @@ public class UserAllocationController {
 
             QueryWrapper<UserAllocation> queryWrapper = new QueryWrapper<>();
             queryWrapper.eq("project_id", projectId);
-            Project project = projectService.getById(projectId);
-            if (!Check.isNull(project)) {
-                queryWrapper.eq("media_id", project.getMediaId());
-            }
+
+           /* if (!Check.isNull(project)) {
+                 Project project = projectService.getById(projectId);
+                 queryWrapper.eq("media_id", project.getMediaId());
+            }*/
             queryWrapper.isNotNull("account_id");
             List<UserAllocation> userAllocations = userAllocationMapper.selectList(queryWrapper);
             result.setSuccess(true);

+ 4 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/Advertiser.java

@@ -10,6 +10,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.jeecg.common.aspect.annotation.Dict;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 
@@ -46,12 +47,15 @@ public class Advertiser {
      */
     @Excel(name = "行业ID", width = 15)
     @ApiModelProperty(value = "行业ID")
+    @Dict(dicCode = "id",dictTable="sys_category",dicText="name")
     private String industryId;
+    private String industryCode;
     /**
      * 销售ID
      */
     @Excel(name = "销售ID", width = 15)
     @ApiModelProperty(value = "销售ID")
+    @Dict(dicCode = "id",dictTable="sys_user",dicText="realname")
     private String saleId;
     /**
      * 销售ID

+ 5 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/Project.java

@@ -10,6 +10,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.jeecg.common.aspect.annotation.Dict;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 
@@ -52,6 +53,10 @@ public class Project {
     @Excel(name = "广告主名称", width = 15)
     @ApiModelProperty(value = "广告主名称")
     private String advertiserName;
+
+    @Dict(dicCode = "id",dictTable="sys_category",dicText="name")
+    private String industryId;
+    private String industryCode;
     /**
      * 创建人
      */

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

@@ -53,15 +53,4 @@ public class KuaishouCrawlerJob implements Job {
             e.printStackTrace();
         }
     }
-
-    public static void main(String[] args) {
-        for (int i = 0; i < 100; i++) {
-            System.out.println(i);
-            try {
-                System.out.println(1 / 0);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-    }
 }

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

@@ -0,0 +1,37 @@
+package org.jeecg.modules.ctop.job;
+
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.constant.SystemDateConstant;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.ctop.service.IMaterialTopService;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ *  Created by JQ.bi on 2020.5.25
+ *  定时更新素材报表的 快手头条整合数据
+ */
+@Slf4j
+public class MaterialReportAccountUpdateJob implements Job {
+
+    @Autowired
+    IMaterialTopService materialTopService;
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+
+        log.info("MaterialReportAccountUpdateJob is start");
+
+        boolean result=materialTopService.insertMaterialReportAccount(DateUtils.getAnotherDay(SystemDateConstant.yyyy_MM_dd,
+                DateUtils.getNowDate(SystemDateConstant.yyyy_MM_dd), -1));
+
+        if(!result){
+            log.error("MaterialReportAccountUpdateJob is error");
+        } else {
+            log.info("MaterialReportAccountUpdateJob is done");
+        }
+    }
+
+}

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

@@ -8,5 +8,13 @@ import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.ctop.vo.MaterialTopVO;
 
 public interface MaterialTopMapper {
+
     IPage<MaterialTopVO> selectMapsPage(Page<MaterialTopVO> page, @Param(Constants.WRAPPER)QueryWrapper<MaterialTopVO> wrapper);
+
+    int insertByteDanceMaterialReportAccountByDate(@Param("statDate") String statDate);
+
+    int insertKuaiShouMaterialReportAccountByDate(@Param("statDate") String statDate);
+
+    int deletedMaterialReportAccountByDate(@Param("statDate") String statDate);
+
 }

+ 13 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ProjectMemberMapper.java

@@ -16,4 +16,17 @@ import java.util.List;
 public interface ProjectMemberMapper extends BaseMapper<ProjectMember> {
 
     List<Long> selectProjectsByUserId(@Param("userId") String userId);
+
+    List<ProjectMember> adminProjects(@Param("mediaIds")List<Integer> mediaIds);
+
+    List<ProjectMember> designLeaderProjects(@Param("companyId")String companyId ,@Param("mediaIds")List<Integer> mediaIds);
+
+    List<ProjectMember> designProjects(@Param("userId")String userId, @Param("mediaIds")List<Integer> mediaIds);
+
+    List<ProjectMember> operationProjects(@Param("userId")String userId, @Param("mediaIds")List<Integer> mediaIds);
+
+    String getRoleCodeByUserId(@Param("userId")String userId);
+
+    String getCompanyIdByUserId(@Param("userId")String userId);
+
 }

+ 199 - 19
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/MaterialTopMapper.xml

@@ -2,26 +2,206 @@
 <!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.MaterialTopMapper">
     <select id="selectMapsPage" resultType="org.jeecg.modules.ctop.vo.MaterialTopVO">
-        SELECT
-        url,
-        name,
-        stat_date ,
-        sum(cost) as cost,
-        sum(click) as click,
-        sum(show_num) as show_num,
-        sum(active) as active,
-        sum(register) as register,
-        sum(pay) as pay,
-        sum(phone_convert) as phone_convert,
-        sum(form_convert) as form_convert,
-        convert_rate,
-        sum(residue) as residue,
-        sum(play3s) as play3s,
-        sum(play10s) as play10s
-        FROM
-        ctop_material_report_total_result
-        where
+       SELECT
+          url,
+          name,
+          stat_date ,
+          sum(cost) as cost,
+          sum(click) as click,
+          sum(show_num) as show_num,
+          sum(active) as active,
+          sum(register) as register,
+          sum(pay) as pay,
+          sum(phone_convert) as phone_convert,
+          sum(form_convert) as form_convert,
+          convert_rate,
+          sum(residue) as residue,
+          sum(play3s) as play3s,
+          sum(play10s) as play10s
+       FROM
+          ctop_material_report_total_result
+       where
         ${ew.sqlSegment}
     </select>
 
+    <insert id="insertByteDanceMaterialReportAccountByDate">
+        INSERT INTO ctop_material_report_total_result (
+            CODE,
+            url,
+            NAME,
+            stat_date,
+            cost,
+            click,
+            show_num,
+            active,
+            register,
+            pay,
+            phone_convert,
+            form_convert,
+            residue,
+            play3s,
+            play10s,
+            media_type
+        ) SELECT
+              t2.signature,
+              CASE
+                  WHEN (
+                      SELECT
+                          info.url
+                      FROM
+                          ctop_material_info info
+                      WHERE
+                          info. CODE = t2.signature
+                      ORDER BY
+                          create_time DESC
+                      LIMIT 1
+                  ) IS NULL THEN
+                      ""
+                  ELSE
+                      (
+                          SELECT
+                              info.url
+                          FROM
+                              ctop_material_info info
+                          WHERE
+                              info. CODE = t2.signature
+                          ORDER BY
+                              create_time DESC
+                          LIMIT 1
+                      )
+                  END AS url,
+              CASE
+                  WHEN (
+                      SELECT
+                          info.material_name
+                      FROM
+                          ctop_material_info info
+                      WHERE
+                          info. CODE = t2.signature
+                      ORDER BY
+                          create_time DESC
+                      LIMIT 1
+                  ) IS NULL THEN
+                      ""
+                  ELSE
+                      (
+                          SELECT
+                              info.material_name
+                          FROM
+                              ctop_material_info info
+                          WHERE
+                              info. CODE = t2.signature
+                          ORDER BY
+                              create_time DESC
+                          LIMIT 1
+                      )
+                  END AS NAME,
+              t1.stat_datetime AS statDate,
+              sum(t1.cost) AS cost,
+              sum(t1.click) click,
+              0 AS showNum,
+              sum(t1.active) AS active,
+              sum(t1.register) AS register,
+              sum(t1.pay_count) AS pay,
+              sum(t1.phone_confirm) AS phoneConvert,
+              sum(t1.form) AS formConvert,
+              sum(t1.next_day_open) AS residue,
+              sum(t1.play_duration_3s) AS play3s,
+              sum(t1.play_duration_10s) AS play3s,
+              0 AS mediaType
+        FROM
+            ctop_bytedance_report_material_daily t1
+                LEFT JOIN ctop_bytedance_video_info t2 ON t1.material_id = t2.material_id
+        WHERE
+            1 = 1
+          AND t1.stat_datetime = #{statDate}
+          AND t1.image_mode != 'MATERIAL_IMAGE_MODE_TITLE'
+          AND t2.signature IS NOT NULL
+          AND t2.signature != ""
+        GROUP BY
+            t2.signature,
+            t1.stat_datetime;
+    </insert>
+
+    <insert id ="insertKuaiShouMaterialReportAccountByDate">
+        INSERT INTO ctop_material_report_total_result (
+            CODE,
+            url,
+            NAME,
+            stat_date,
+            cost,
+            click,
+            show_num,
+            active,
+            register,
+            form_convert,
+            media_type
+        ) SELECT
+              t1.signature AS 'code',
+              CASE
+                  WHEN (
+                      SELECT
+                          url
+                      FROM
+                          ctop_material_info
+                      WHERE
+                          `code` = t1.signature
+                      LIMIT 1
+                  ) IS NULL THEN
+                      ""
+                  ELSE
+                      (
+                          SELECT
+                              url
+                          FROM
+                              ctop_material_info
+                          WHERE
+                              `code` = t1.signature
+                          LIMIT 1
+                      )
+                  END AS 'url',
+              CASE
+                  WHEN (
+                      SELECT
+                          material_name
+                      FROM
+                          ctop_material_info
+                      WHERE
+                          `code` = t1.signature
+                      LIMIT 1
+                  ) IS NULL THEN
+                      ""
+                  ELSE
+                      (
+                          SELECT
+                              material_name
+                          FROM
+                              ctop_material_info
+                          WHERE
+                              `code` = t1.signature
+                          LIMIT 1
+                      )
+                  END AS 'name',
+              t1.stat_date AS 'stat_date',
+              sum(t1.charge) AS 'cost',
+              sum(t1.photo_click) AS 'click',
+              sum(t1.photo_show) AS 'show_num',
+              sum(t1.activation) AS 'active',
+              sum(t1.event_register) AS 'register',
+              sum(t1.form_count) AS 'form_convert',
+              '2' AS 'media_type'
+        FROM
+            ctop_kuaishou_report_daily_creative t1
+        WHERE
+            t1.signature IS NOT NULL
+          AND t1.stat_date = #{statDate}
+        GROUP BY
+            t1.stat_date,
+            t1.signature;
+    </insert>
+
+    <delete id="deletedMaterialReportAccountByDate">
+        DELETE FROM ctop_material_report_total_result where stat_date= #{statDate}
+    </delete>
+
 </mapper>

+ 97 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ProjectMemberMapper.xml

@@ -9,4 +9,100 @@
         where user_id = #{userId}
     </select>
 
-</mapper>
+    <!-- 设计师展示所有自己的角色下制作的视频 -->
+    <select id="adminProjects" resultType="org.jeecg.modules.ctop.entity.ProjectMember">
+        select
+        id as projectId,
+        project_name as projectName,
+        advertiser_id as advertiserId,
+        advertiser_name as advertiserName,
+        media_id as mediaId,
+        max_bid as maxBid,
+        advertiser_name as advertiserName ,
+        responsible_name as responsibleName
+        from
+        ctop_project
+        where
+        media_id in
+        <foreach collection="mediaIds" item="item" separator=","
+                 open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
+
+    <!-- 视频报表设计师leader展示自己所在公司的所有项目 -->
+    <select id="designLeaderProjects" resultType="org.jeecg.modules.ctop.entity.ProjectMember">
+        select
+            distinct b.id as projectId,
+            b.project_name as projectName,
+            b.advertiser_id as advertiserId,
+            b.advertiser_name as advertiserName,
+            b.media_id as mediaId
+        from
+        ctop_project_member a
+        left join ctop_project b on a.project_id = b.id
+        where
+        b.company_id = #{companyId}
+        and b.media_id in
+        <foreach collection="mediaIds" item="item" separator=","
+                 open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
+
+    <!-- 设计师展示所有自己的角色下制作的视频 -->
+    <select id="designProjects" resultType="org.jeecg.modules.ctop.entity.ProjectMember">
+        select
+            distinct a.project_id as projectId,
+            b.project_name as projectName,
+            b.advertiser_id as advertiserId,
+            b.advertiser_name as advertiserName,
+            b.media_id as mediaId
+        from
+        ctop_project_member a
+        left join ctop_project b on a.project_id = b.id
+        where a.user_id = #{userId}
+        and b.media_id in
+        <foreach collection="mediaIds" item="item" separator=","
+                 open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
+
+    <!-- 运营和运营负责人展示所在项目视频 -->
+    <select id="operationProjects" resultType="org.jeecg.modules.ctop.entity.ProjectMember">
+        select
+           distinct b.id as projectId,
+           b.project_name as projectName,
+           b.advertiser_id as advertiserId,
+           b.advertiser_name as advertiserName,
+           b.media_id as mediaId
+        from
+        ctop_user_allocation a
+        left join ctop_project b on a.project_id = b.id
+        where a.user_id = #{userId}
+        and b.media_id in
+        <foreach collection="mediaIds" item="item" separator=","
+                 open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
+
+    <select id="getRoleCodeByUserId" resultType="string">
+        select
+        role_code
+        from
+        sys_user_role a
+        left join sys_role b on a.role_id = b.id
+        where a.user_id = #{userId}
+    </select>
+
+    <select id="getCompanyIdByUserId" resultType="string">
+            select
+            company_id
+        from
+        user_company
+        where user_id = #{userId}
+    </select>
+
+</mapper>

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

@@ -5,4 +5,5 @@ import org.jeecg.modules.ctop.vo.MaterialTopVO;
 
 public interface IMaterialTopService {
     IPage<MaterialTopVO> selectByPage(String endDate, String startDate, String target, String order, int pageNo, int pageSize);
+    boolean insertMaterialReportAccount(String statDate);
 }

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

@@ -19,4 +19,6 @@ public interface IProjectMemberService extends IService<ProjectMember> {
 
 
     List<Long> selectProjectsByUserId(String userId);
+
+    List<ProjectMember> getProjects(List<Integer> mediaIds);
 }

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

@@ -5,6 +5,7 @@ import cn.com.ctop.common.module.utils.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
 import org.jeecg.modules.ctop.mapper.MaterialTopMapper;
 import org.jeecg.modules.ctop.service.IMaterialTopService;
 import org.jeecg.modules.ctop.vo.MaterialTopVO;
@@ -14,11 +15,13 @@ import org.springframework.stereotype.Service;
 /**
  *  Created by JQ.bi on 2020.05.22
  */
+@Slf4j
 @Service
 public class MaterialTopServiceImpl  implements IMaterialTopService {
 
     @Autowired
     MaterialTopMapper materialTopMapper;
+
     @Override
     public IPage<MaterialTopVO> selectByPage(String endDate, String startDate, String target, String order, int pageNo, int pageSize) {
         QueryWrapper<MaterialTopVO> wrapper = new QueryWrapper<>();
@@ -34,4 +37,20 @@ public class MaterialTopServiceImpl  implements IMaterialTopService {
         return materialTopMapper.selectMapsPage(page, wrapper);
     }
 
+    @Override
+    public boolean insertMaterialReportAccount(String statDate) {
+
+        int resultByteDance=materialTopMapper.insertByteDanceMaterialReportAccountByDate(statDate);
+        int resultKuaishou=materialTopMapper.insertKuaiShouMaterialReportAccountByDate(statDate);
+
+        if(resultByteDance == 0 || resultKuaishou == 0){
+            log.error("整合素材报表信息失败");
+            log.info("delete dirty data is start");
+            materialTopMapper.deletedMaterialReportAccountByDate(statDate);
+            log.info("delete dirty data is success");
+        }
+
+        return resultByteDance != 0 && resultKuaishou != 0;
+    }
+
 }

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

@@ -3,6 +3,8 @@ package org.jeecg.modules.ctop.service.impl;
 import cn.com.ctop.common.module.service.ISysRoleService;
 import cn.com.ctop.common.module.utils.Check;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.ctop.entity.Project;
 import org.jeecg.modules.ctop.entity.ProjectMember;
 import org.jeecg.modules.ctop.mapper.ProjectMemberMapper;
@@ -11,6 +13,7 @@ import org.jeecg.modules.system.entity.SysUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -59,4 +62,31 @@ public class ProjectMemberServiceImpl extends ServiceImpl<ProjectMemberMapper, P
         return memberMapper.selectProjectsByUserId(userId);
     }
 
+    //视频报表
+    public List<ProjectMember> getProjects(List<Integer> mediaIds){
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String userId = sysUser.getId();
+        String roleCode = memberMapper.getRoleCodeByUserId(userId);
+        String companyId = memberMapper.getCompanyIdByUserId(userId);
+
+        //List<Integer> mediaIds = new ArrayList<>();
+        //mediaIds.add(1);
+        //mediaIds.add(3);
+        //角色权限判断
+        List<ProjectMember> projectMemberList = null;
+        if(roleCode.equals("plan") || roleCode.equals("clip") || roleCode.equals("shot") || roleCode.equals("plane")|| roleCode.equals("planeLeader")){
+            projectMemberList = memberMapper.designProjects(userId, mediaIds);
+        }else if( roleCode.equals("designTeamLeader")){
+            projectMemberList = memberMapper.designLeaderProjects(companyId, mediaIds);
+        }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);
+        }
+
+        return projectMemberList;
+    }
+
+
+
 }

+ 0 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/opencv/utils/CornerCheck.java

@@ -224,7 +224,6 @@ public class CornerCheck {
                 System.out.println(imageGR.get((int) point.y, (int) point.x)[1]);
                 if (imageGR.get((int) point.y, (int) point.x)[1] >= 120) {
                     if (point.x <= rightDown.x) {
-                        System.out.println("greenPoint:" + point.toString());
                         checkPoints.add(point);
                     }
                 }

+ 0 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/opencv/utils/Perspective.java

@@ -48,7 +48,6 @@ public class Perspective {
             Imgcodecs.imwrite(targetFileName, dst);
         } catch (Exception e) {
             e.printStackTrace();
-            System.out.println("例外:" + e);
         }
     }
 

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

@@ -405,7 +405,7 @@ public class SysDictController {
 			@RequestParam(name="text") String text,
 			@RequestParam(name="code") String code,
 			@RequestParam(name="hasChildField") String hasChildField) {
-		Result<List<TreeSelectModel>> result = new Result<List<TreeSelectModel>>();
+		Result<List<TreeSelectModel>> result = new Result<>();
 		List<TreeSelectModel> ls = sysDictService.queryTreeList(tbname, text, code, pidField, pid,hasChildField);
 		result.setSuccess(true);
 		result.setResult(ls);

+ 15 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java

@@ -79,6 +79,8 @@ public class SysUserController {
     private ISysRoleService roleService;
     @Autowired
     private IProjectMemberService memberService;
+    @Autowired
+    private ISysDepartService departService;
 
 
     @RequestMapping(value = "/getRoleInfo", method = RequestMethod.GET)
@@ -172,7 +174,14 @@ public class SysUserController {
         String selectedRoles = jsonObject.getString("selectedroles");
         String selectedDeparts = jsonObject.getString("selecteddeparts");
         try {
+
             SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class);
+            if (!Check.isNull(selectedDeparts)) {
+                SysDepart depart = departService.getById(selectedDeparts);
+                if (!Check.isNull(depart)) {
+                    user.setOrgCode(depart.getOrgCode());
+                }
+            }
             //设置创建时间
             user.setCreateTime(new Date());
             String salt = oConvertUtils.randomGen(8);
@@ -209,6 +218,12 @@ public class SysUserController {
                 user.setPassword(sysUser.getPassword());
                 String roles = jsonObject.getString("selectedroles");
                 String departs = jsonObject.getString("selecteddeparts");
+                if (!Check.isNull(departs)) {
+                    SysDepart depart = departService.getById(departs);
+                    if (!Check.isNull(depart)) {
+                        user.setOrgCode(depart.getOrgCode());
+                    }
+                }
                 sysUserService.editUserWithRole(user, roles);
                 sysUserService.editUserWithDepart(user, departs);
                 userCompanyService.addOrUpdateUserWithCompany(user);

+ 5 - 5
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysCategoryService.java

@@ -1,13 +1,12 @@
 package org.jeecg.modules.system.service;
 
-import java.util.List;
-
 import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.modules.system.entity.SysCategory;
 import org.jeecg.modules.system.model.TreeSelectModel;
 
-import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
 
 /**
  * @Description: 分类字典
@@ -33,13 +32,14 @@ public interface ISysCategoryService extends IService<SysCategory> {
 	 * @param pcode
 	 * @return
 	 */
-	public List<TreeSelectModel> queryListByCode(String pcode) throws JeecgBootException;
+    List<TreeSelectModel> queryListByCode(String pcode) throws JeecgBootException;
 
     /**
 	  * 根据pid查询子节点集合
 	 * @param pid
 	 * @return
 	 */
-	public List<TreeSelectModel> queryListByPid(String pid);
+    List<TreeSelectModel> queryListByPid(String pid);
 
+    SysCategory getByCode(String getCode);
 }

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

@@ -121,4 +121,11 @@ public class SysCategoryServiceImpl extends ServiceImpl<SysCategoryMapper, SysCa
 		return baseMapper.queryListByPid(pid);
 	}
 
+	@Override
+	public SysCategory getByCode(String getCode) {
+		QueryWrapper<SysCategory>queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("code",getCode).orderByDesc("create_time").last("limit 1");
+		return this.getOne(queryWrapper);
+	}
+
 }

+ 1 - 1
jeecg-boot-module-system/src/main/resources/application-test.yml

@@ -102,7 +102,7 @@ spring:
 #          password: test@20190531
       datasource:
         master:
-          url: jdbc:mysql://39.97.120.42:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
+          url: jdbc:mysql://39.106.184.70:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
           username: hcst
           password: test@20190531
           driver-class-name: com.mysql.jdbc.Driver

+ 0 - 5
module-common/src/main/java/cn/com/ctop/common/module/utils/LoadFileUtil.java

@@ -108,11 +108,6 @@ public class LoadFileUtil {
         return DigestUtils.md5Hex(inputStream);
     }
 
-
-    public static void main(String[] args) throws IOException {
-        System.out.println(LoadFileUtil.getMD5("D://video/BMjAyMDAzMDQxODMyMTlfMTU3ODQ0ODY5MV8yNDQ1ODc0Mzk1OF8wXzM=_b_Bd696ca7f28234aac3713b18edd139469.mp4"));
-    }
-
     public static void checkFile(String filePackageName) {
         File file = new File(filePackageName);
         if (!file.exists()) {

+ 0 - 11
module-common/src/main/java/cn/com/ctop/common/module/utils/OSSUtils.java

@@ -71,20 +71,9 @@ public class OSSUtils {
             UploadFileResult uploadResult = ossClient.uploadFile(uploadFileRequest);
 
             CompleteMultipartUploadResult multipartUploadResult = uploadResult.getMultipartUploadResult();
-            System.out.println(multipartUploadResult.getETag());
 
         } catch (OSSException oe) {
-            System.out.println("Caught an OSSException, which means your request made it to OSS, "
-                    + "but was rejected with an error response for some reason.");
-            System.out.println("Error Message: " + oe.getErrorMessage());
-            System.out.println("Error Code:       " + oe.getErrorCode());
-            System.out.println("Request ID:      " + oe.getRequestId());
-            System.out.println("Host ID:           " + oe.getHostId());
         } catch (ClientException ce) {
-            System.out.println("Caught an ClientException, which means the client encountered "
-                    + "a serious internal problem while trying to communicate with OSS, "
-                    + "such as not being able to access the network.");
-            System.out.println("Error Message: " + ce.getMessage());
         } catch (Throwable e) {
             e.printStackTrace();
         } finally {

+ 0 - 10
module-crawler/src/main/java/cn/com/ctop/crawler/modules/dataeye/service/impl/DataeyeCompanyServiceImpl.java

@@ -28,7 +28,6 @@ public class DataeyeCompanyServiceImpl extends ServiceImpl<DataeyeCompanyMapper,
         Map<String,Object> paramMap = new HashMap<>();
         paramMap.put("companyId",companyId);
         String response = HttpUtils.httpPostFormRequest("https://blzs.dataeye.com/company/getCompanyInfo",paramMap,null);
-        System.out.println(response);
         ObjectMapper mapper = new ObjectMapper();
         mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
         try {
@@ -40,7 +39,6 @@ public class DataeyeCompanyServiceImpl extends ServiceImpl<DataeyeCompanyMapper,
                 if(company != null && company.getCompanyName() != null){
                     this.saveOrUpdate(company);
                     String result = HttpUtils.httpPostFormRequest("https://blzs.dataeye.com/company/listProductDistribution?companyId="+companyId,null,null);
-                    System.out.println(result);
                     rootNode = mapper.readTree(result);
                     statusCode = rootNode.get("statusCode").asInt();
                     if (statusCode == 200) {
@@ -48,14 +46,6 @@ public class DataeyeCompanyServiceImpl extends ServiceImpl<DataeyeCompanyMapper,
                         while (nodes.hasNext()){
                             JsonNode node = nodes.next();
                             Long productId = node.get("id").asLong();
-//                            Map<String,Long> map = new HashMap<>();
-//                            map.put("companyId",companyId.longValue());
-//                            map.put("productId",productId);
-//                            try {
-//                                DataeyeProductServiceImpl.taskQueue.put(map);
-//                            } catch (InterruptedException e) {
-//                                e.printStackTrace();
-//                            }
                             dataeyeProductService.getProductInfo(companyId.longValue(),productId);
                         }
                     }

+ 0 - 10
module-crawler/src/main/java/cn/com/ctop/crawler/modules/dataeye/service/impl/DataeyeLabelServiceImpl.java

@@ -2,12 +2,8 @@ package cn.com.ctop.crawler.modules.dataeye.service.impl;
 
 import cn.com.ctop.common.module.utils.HttpUtils;
 import cn.com.ctop.crawler.modules.dataeye.entity.DataeyeAdArtStyle;
-import cn.com.ctop.crawler.modules.dataeye.entity.DataeyeCompany;
 import cn.com.ctop.crawler.modules.dataeye.entity.DataeyePlayRules;
 import cn.com.ctop.crawler.modules.dataeye.entity.DataeyeThemes;
-import cn.com.ctop.crawler.modules.dataeye.mapper.DataeyeAdArtStyleMapper;
-import cn.com.ctop.crawler.modules.dataeye.mapper.DataeyePlayRulesMapper;
-import cn.com.ctop.crawler.modules.dataeye.mapper.DataeyeThemesMapper;
 import cn.com.ctop.crawler.modules.dataeye.service.DataeyeAdArtStyleService;
 import cn.com.ctop.crawler.modules.dataeye.service.DataeyeLabelService;
 import cn.com.ctop.crawler.modules.dataeye.service.DataeyePlayRulesService;
@@ -36,7 +32,6 @@ public class DataeyeLabelServiceImpl implements DataeyeLabelService {
 
     public void getLabelList(){
         String response = HttpUtils.httpPostFormRequest("https://blzs.dataeye.com/common/getNewLabelMenu",null,null);
-        System.out.println(response);
         ObjectMapper mapper = new ObjectMapper();
         mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
         try {
@@ -52,11 +47,6 @@ public class DataeyeLabelServiceImpl implements DataeyeLabelService {
                 dataeyeAdArtStyleService.saveOrUpdateBatch(adArtStyles);
                 dataeyeThemesService.saveOrUpdateBatch(themes);
                 dataeyePlayRulesService.saveOrUpdateBatch(playRules);
-//                DataeyeCompany company = mapper.readValue(content,DataeyeCompany.class);
-//                if(company != null && company.getCompanyName() != null){
-//                    this.save(company);
-//                }
-
             }
         } catch (IOException e) {
             e.printStackTrace();

+ 14 - 18
module-crawler/src/main/java/cn/com/ctop/crawler/modules/dataeye/service/impl/DataeyeMediaServiceImpl.java

@@ -1,7 +1,6 @@
 package cn.com.ctop.crawler.modules.dataeye.service.impl;
 
 import cn.com.ctop.common.module.utils.HttpUtils;
-import cn.com.ctop.crawler.modules.dataeye.entity.DataeyeCompany;
 import cn.com.ctop.crawler.modules.dataeye.entity.DataeyeMedia;
 import cn.com.ctop.crawler.modules.dataeye.mapper.DataeyeMediaMapper;
 import cn.com.ctop.crawler.modules.dataeye.service.DataeyeCompanyService;
@@ -10,13 +9,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import io.swagger.models.auth.In;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Primary;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 
 @Service
 @Primary
@@ -27,7 +27,6 @@ public class DataeyeMediaServiceImpl extends ServiceImpl<DataeyeMediaMapper, Dat
     @Override
     public void getMediaList(){
         String response = HttpUtils.httpPostFormRequest("https://blzs.dataeye.com/common/listMedia",null,null);
-        System.out.println(response);
         ObjectMapper mapper = new ObjectMapper();
         mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
         try {
@@ -41,7 +40,6 @@ public class DataeyeMediaServiceImpl extends ServiceImpl<DataeyeMediaMapper, Dat
                     Integer mediaId = node.get("k").asInt();
                     ids.add(mediaId);
                     response = HttpUtils.httpPostFormRequest("https://blzs.dataeye.com/media/getMediaInfo?mediaId="+mediaId,null,null);
-                    System.out.println(response);
                     rootNode = mapper.readTree(response);
                     statusCode = rootNode.get("statusCode").asInt();
                     if (statusCode == 200){
@@ -53,19 +51,17 @@ public class DataeyeMediaServiceImpl extends ServiceImpl<DataeyeMediaMapper, Dat
                         }
                     }
                 }
-                if(ids != null){
-                    for (Integer mediaId :ids){
-                        response = HttpUtils.httpPostFormRequest("https://blzs.dataeye.com/media/listCompanyDistribution?mediaId="+mediaId,null,null);
-                        System.out.println(response);
-                        rootNode = mapper.readTree(response);
-                        statusCode = rootNode.get("statusCode").asInt();
-                        if (statusCode == 200){
-                            Iterator<JsonNode> companyNodes = rootNode.get("content").elements();
-                            while (companyNodes.hasNext()){
-                                JsonNode companyNode = companyNodes.next();
-                                Integer companyId = companyNode.get("id").asInt();
-                                dataeyeCompanyService.getCompanyInfo(companyId);
-                            }
+
+                for (Integer mediaId :ids){
+                    response = HttpUtils.httpPostFormRequest("https://blzs.dataeye.com/media/listCompanyDistribution?mediaId="+mediaId,null,null);
+                    rootNode = mapper.readTree(response);
+                    statusCode = rootNode.get("statusCode").asInt();
+                    if (statusCode == 200){
+                        Iterator<JsonNode> companyNodes = rootNode.get("content").elements();
+                        while (companyNodes.hasNext()){
+                            JsonNode companyNode = companyNodes.next();
+                            Integer companyId = companyNode.get("id").asInt();
+                            dataeyeCompanyService.getCompanyInfo(companyId);
                         }
                     }
                 }

+ 0 - 7
module-crawler/src/main/java/cn/com/ctop/crawler/modules/dataeye/service/impl/DataeyeProductServiceImpl.java

@@ -6,23 +6,17 @@ import cn.com.ctop.crawler.modules.dataeye.mapper.DataeyeProductMapper;
 import cn.com.ctop.crawler.modules.dataeye.service.*;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Primary;
 import org.springframework.stereotype.Service;
-import us.codecraft.webmagic.thread.CountableThreadPool;
 
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.logging.Logger;
 
 @Service
 @Primary
@@ -42,7 +36,6 @@ public class DataeyeProductServiceImpl extends ServiceImpl<DataeyeProductMapper,
         Map<String,Object> paramMap = new HashMap<>();
         paramMap.put("productId",productId);
         String response = HttpUtils.httpPostFormRequest("https://blzs.dataeye.com/product/getProductInfo",paramMap,null);
-        System.out.println(response);
         ObjectMapper mapper = new ObjectMapper();
         mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
         try {

+ 0 - 6
module-crawler/src/main/java/cn/com/ctop/crawler/modules/pangolin/service/impl/PangolinLoginServiceImpl.java

@@ -27,12 +27,6 @@ public class PangolinLoginServiceImpl implements PangolinLoginService {
     @Value("${jeecg.path.chrome-driver}")
     private String chromeDriver;
 
-    public static void main(String[] args){
-        PangolinLoginServiceImpl loginService = new PangolinLoginServiceImpl();
-        loginService.pangolinLogin("douyin_novel60","BpGT7afFWU");
-        String result = HttpUtils2.httpGetRequest("https://pangolin.bytedance.com/api/search/external_default");
-        System.out.println(result);
-    }
     @Override
     public void pangolinLogin(String username, String password) {
         System.getProperties().setProperty("webdriver.chrome.driver", chromeDriver);

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 6
module-ctop/src/main/java/cn/com/ctop/manage/modules/edu/service/impl/EduLessonServiceImpl.java


+ 1 - 1
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDanceVideoReportJob.java

@@ -22,7 +22,7 @@ public class ByteDanceVideoReportJob {
 
     @XxlJob("byteDanceVideoReport")
     public ReturnT<String> execute(String param) throws Exception {
-        String getDate = DateUtils.formatDate(   DateUtils.addDay(new Date(), -1)  );
+        String getDate = DateUtils.formatDate(DateUtils.addDay(new Date(), -1));
         XxlJobLogger.log("头条视频报表清洗数据定时任务开始, 执行时间为:" + getDate);
         byteDanceVideoReportDailyService.videoInfoList(getDate, getDate);
         return ReturnT.SUCCESS;

+ 0 - 3
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceAdvertiserDailyReportLoadJob.java

@@ -9,7 +9,6 @@ import com.xxl.job.core.handler.annotation.XxlJob;
 import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -26,10 +25,8 @@ import java.util.concurrent.Executors;
 @Component
 public class BytedanceAdvertiserDailyReportLoadJob {
     @Autowired
-    @Qualifier("tokenService")
     private ICtopOauthTokenService tokenService;
     @Autowired
-    @Qualifier("reportService")
     private IReportService reportService;
     static ExecutorService executorService = null;
 

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

@@ -3011,7 +3011,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
         }
         JSONObject dataJson = resultJson.getJSONObject("data");
         if (!Check.isNull(dataJson)) {
-            JSONArray details = dataJson.getJSONArray("detail");
+            JSONArray details = dataJson.getJSONArray("details");
             if (Check.isNull(details)) {
                 return;
             }

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

@@ -584,4 +584,5 @@
 
     </select>
 
+
 </mapper>

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

@@ -86,6 +86,7 @@
         ctop_kuaishou_video_get t3 ON t2.photo_id = t3.photo_id
         WHERE
         t2.creative_id = t1.creative_id
+        limit 1
         )
         WHERE
         1=1

+ 12 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/DTO/AccountVideoDTO.java

@@ -0,0 +1,12 @@
+package cn.com.ctop.toutiao.modules.report.DTO;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+@Data
+public class AccountVideoDTO implements Serializable {
+    private Long accountId;
+    private String signature;
+}

+ 2 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/DTO/DateDTO.java

@@ -14,4 +14,6 @@ public class DateDTO extends PageDTO implements Serializable {
     private String date;
     private BigDecimal cost;
     private String[] columns;
+    private Long[] projectIds;
+    private Long[] accountIds;
 }

+ 1 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/DTO/PageDTO.java

@@ -9,4 +9,5 @@ import java.io.Serializable;
 public class PageDTO implements Serializable {
     private  Integer pageNo;
     private  Integer pageSize;
+    private  String  sort;
 }

+ 72 - 29
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/controller/ByteDanceVideoReportDailyController.java

@@ -6,6 +6,7 @@ import cn.com.ctop.toutiao.modules.report.DTO.ColumnDTO;
 import cn.com.ctop.toutiao.modules.report.DTO.DateDTO;
 import cn.com.ctop.toutiao.modules.report.entity.ByteDanceVideoReportDaily;
 import cn.com.ctop.toutiao.modules.report.service.IByteDanceVideoReportDailyService;
+import com.github.pagehelper.PageInfo;
 import io.micrometer.core.instrument.util.StringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -53,8 +54,6 @@ public class ByteDanceVideoReportDailyController {
 		 for(int i=0; i<=days; i++){
 			 String endStr = DateUtils.addDay(startDate ,i);
 			 dateList.add(endStr);
-			 System.out.println(endStr);
-			// videoReportDailyService.videoInfoList(startDate, endStr);
 		 }
 
 
@@ -78,14 +77,33 @@ public class ByteDanceVideoReportDailyController {
 		 return result;
 	 }
 
+	@AutoLog(value = "头条视频账户视频关联方法")
+	@ApiOperation(value = "头条视频账户视频关联方法", notes = "头条视频账户视频关联方法")
+	@PostMapping(value = "/accountVideoMap")
+	public Result accountVideoMap(HttpServletRequest req){
+		Result result = new Result();
+		videoReportDailyService.accountVideoMap();
+		result.setSuccess(true);
+		return result;
+	}
 
 	 @AutoLog(value = "头条视频按天汇总")
 	 @ApiOperation(value = "头条视频按天汇总", notes = "头条视频按天汇总")
 	 @PostMapping(value = "/bytedanceVideoInfoListDaily")
-	 public Result<List<ByteDanceVideoReportDaily>> bytedanceVideoInfoList(@RequestBody DateDTO dateDTO,
+	 public Result<PageInfo<ByteDanceVideoReportDaily>> bytedanceVideoInfoList(@RequestBody DateDTO dateDTO,
 																		   HttpServletRequest req){
-		 Result<List<ByteDanceVideoReportDaily>> result = new Result();
-		 List<ByteDanceVideoReportDaily> list = videoReportDailyService.videoInfoListDaily(dateDTO.getDate(), dateDTO.getDate(), dateDTO.getSignature(), dateDTO.getCost());
+		 Result<PageInfo<ByteDanceVideoReportDaily>> result = new Result();
+
+		 Integer pageNo = dateDTO.getPageNo();
+		 Integer pageSize = dateDTO.getPageSize();
+		 if(pageNo == null){
+			 pageNo = 0;
+		 }
+		 if(pageSize == null){
+			 pageSize = 10;
+		 }
+
+		 PageInfo<ByteDanceVideoReportDaily> list = videoReportDailyService.videoInfoListDaily(dateDTO.getStartDate(), dateDTO.getEndDate(), dateDTO.getSignature(), dateDTO.getCost(), pageNo, pageSize, dateDTO.getProjectIds(), dateDTO.getAccountIds(), dateDTO.getSort());
 
 		 result.setResult(list);
 		 result.setSuccess(true);
@@ -95,11 +113,20 @@ public class ByteDanceVideoReportDailyController {
 	 @AutoLog(value = "头条视频按周汇总")
 	 @ApiOperation(value = "头条视频按周汇总", notes = "头条视频按周汇总")
 	 @PostMapping(value = "/bytedanceVideoInfoListWeek")
-	 public Result<List<ByteDanceVideoReportDaily>> bytedanceVideoInfoListWeek(@RequestBody DateDTO dateDTO,
+	 public Result<PageInfo<ByteDanceVideoReportDaily>> bytedanceVideoInfoListWeek(@RequestBody DateDTO dateDTO,
 																		   HttpServletRequest req){
-		 Result<List<ByteDanceVideoReportDaily>> result = new Result();
+		 Result<PageInfo<ByteDanceVideoReportDaily>> result = new Result();
 
-		 List<ByteDanceVideoReportDaily> list = videoReportDailyService.videoInfoListWeek(dateDTO.getStartDate(), dateDTO.getEndDate(), dateDTO.getSignature(), dateDTO.getCost());
+		 Integer pageNo = dateDTO.getPageNo();
+		 Integer pageSize = dateDTO.getPageSize();
+		 if(pageNo == null){
+			 pageNo = 0;
+		 }
+		 if(pageSize == null){
+			 pageSize = 10;
+		 }
+
+		 PageInfo<ByteDanceVideoReportDaily> list = videoReportDailyService.videoInfoListWeek(dateDTO.getStartDate(), dateDTO.getEndDate(), dateDTO.getSignature(), dateDTO.getCost(), pageNo, pageSize, dateDTO.getProjectIds(), dateDTO.getAccountIds(), dateDTO.getSort());
 		 result.setResult(list);
 		 result.setSuccess(true);
 		 return result;
@@ -108,11 +135,18 @@ public class ByteDanceVideoReportDailyController {
 	 @AutoLog(value = "头条视频汇总")
 	 @ApiOperation(value = "头条视频汇总", notes = "头条视频汇总")
 	 @PostMapping(value = "/videoInfoListTotal")
-	 public Result<List<ByteDanceVideoReportDaily>> videoInfoListTotal(@RequestBody DateDTO dateDTO,
+	 public Result<PageInfo<ByteDanceVideoReportDaily>> videoInfoListTotal(@RequestBody DateDTO dateDTO,
 																		HttpServletRequest req){
-		 Result<List<ByteDanceVideoReportDaily>> result = new Result();
-
-		 List<ByteDanceVideoReportDaily> list = videoReportDailyService.videoInfoListTotal(dateDTO.getStartDate(), dateDTO.getEndDate(), dateDTO.getSignature(), dateDTO.getCost());
+		 Result<PageInfo<ByteDanceVideoReportDaily>> result = new Result();
+		 Integer pageNo = dateDTO.getPageNo();
+		 Integer pageSize = dateDTO.getPageSize();
+		 if(pageNo == null){
+			 pageNo = 0;
+		 }
+		 if(pageSize == null){
+			 pageSize = 10;
+		 }
+		 PageInfo<ByteDanceVideoReportDaily> list = videoReportDailyService.videoInfoListTotal(dateDTO.getStartDate(), dateDTO.getEndDate(), dateDTO.getSignature(), dateDTO.getCost(), pageNo, pageSize, dateDTO.getProjectIds(), dateDTO.getAccountIds(), dateDTO.getSort());
 		 result.setResult(list);
 		 result.setSuccess(true);
 		 return result;
@@ -121,14 +155,22 @@ public class ByteDanceVideoReportDailyController {
 	 @AutoLog(value = "头条视频按月汇总")
 	 @ApiOperation(value = "头条视频按月汇总", notes = "头条视频按月汇总")
 	 @PostMapping(value = "/bytedanceVideoInfoListMonth")
-	 public Result<List<ByteDanceVideoReportDaily>> bytedanceVideoInfoListMonth(@RequestBody DateDTO dateDTO,
+	 public Result<PageInfo<ByteDanceVideoReportDaily>> bytedanceVideoInfoListMonth(@RequestBody DateDTO dateDTO,
 																			   HttpServletRequest req){
-		 Result<List<ByteDanceVideoReportDaily>> result = new Result();
+		 Result<PageInfo<ByteDanceVideoReportDaily>> result = new Result();
 
 		 if(StringUtils.isBlank(dateDTO.getSignature())){
 			 dateDTO.setSignature(null);
 		 }
-		 List<ByteDanceVideoReportDaily> list = videoReportDailyService.videoInfoListMonth(dateDTO.getStartDate(), dateDTO.getEndDate(), dateDTO.getSignature(), dateDTO.getCost());
+		 Integer pageNo = dateDTO.getPageNo();
+		 Integer pageSize = dateDTO.getPageSize();
+		 if(pageNo == null){
+			 pageNo = 0;
+		 }
+		 if(pageSize == null){
+			 pageSize = 10;
+		 }
+		 PageInfo<ByteDanceVideoReportDaily> list = videoReportDailyService.videoInfoListMonth(dateDTO.getStartDate(), dateDTO.getEndDate(), dateDTO.getSignature(), dateDTO.getCost(), pageNo, pageSize, dateDTO.getProjectIds(), dateDTO.getAccountIds(), dateDTO.getSort());
 		 result.setResult(list);
 		 result.setSuccess(true);
 		 return result;
@@ -140,7 +182,7 @@ public class ByteDanceVideoReportDailyController {
 	 public Result<List<ByteDanceVideoReportDaily>> bytedanceVideoInfoListDetail(@RequestBody DateDTO dateDTO,
 																		   HttpServletRequest req){
 		 Result<List<ByteDanceVideoReportDaily>> result = new Result();
-		 List<ByteDanceVideoReportDaily> list = videoReportDailyService.videoInfoListDetail(dateDTO.getStartDate(), dateDTO.getEndDate(), dateDTO.getSignature());
+		 List<ByteDanceVideoReportDaily> list = videoReportDailyService.videoInfoListDetail(dateDTO.getStartDate(), dateDTO.getEndDate(), dateDTO.getSignature(), dateDTO.getAccountIds());
 		 result.setResult(list);
 		 result.setSuccess(true);
 		 return result;
@@ -188,15 +230,8 @@ public class ByteDanceVideoReportDailyController {
 		 result.setSuccess(true);
 		 result.setMessage("success");
 
-		 int perCode = videoReportDailyService.videoInfoListTotalExportExcelPermission();
-		 if(perCode == 0){
-		 	result.setMessage("无导出权限");
-		 	result.setCode(500);
-			return;
-		 }
-
-		 //公司报表
-		 List<ByteDanceVideoReportDaily> list = videoReportDailyService.videoInfoListDetail(dateDTO.getStartDate(), dateDTO.getEndDate(), dateDTO.getSignature());
+		 //按天明细
+		 List<ByteDanceVideoReportDaily> list = videoReportDailyService.videoInfoListDetail(dateDTO.getStartDate(), dateDTO.getEndDate(), dateDTO.getSignature(), dateDTO.getAccountIds());
 
 		 //导出excel
 		 List<List<Object>> group = new ArrayList<>();
@@ -204,7 +239,7 @@ public class ByteDanceVideoReportDailyController {
 			 for (ByteDanceVideoReportDaily sum : list) {
 				 List<Object> ByteDanceVideoReportDaily = new ArrayList();
 				 ByteDanceVideoReportDaily.add(sum.getAdvertiserName());  //客户
-				 ByteDanceVideoReportDaily.add(sum.getUrl() );  //视频链接
+				 ByteDanceVideoReportDaily.add(sum.getVideoUrl() );  //视频链接
 				 ByteDanceVideoReportDaily.add(DateUtils.formatDate(sum.getStatDatetime()));  //时间
 				 ByteDanceVideoReportDaily.add(sum.getCost());  //消耗
 				 ByteDanceVideoReportDaily.add(sum.getHuanbi().multiply(new BigDecimal("100")).setScale(2,BigDecimal.ROUND_HALF_UP) + "%");  //环比
@@ -212,7 +247,7 @@ public class ByteDanceVideoReportDailyController {
 			 }
 		 }
 
-		 String[] groupHeaders = {"客户", "视频链接", "时间", "消耗","环比"};
+		 String[] groupHeaders = {"客户","视频链接", "时间", "消耗","环比"};
 		 OutputStream os = response.getOutputStream();
 		 ExportExcelUtils eeu = new ExportExcelUtils();
 		 XSSFWorkbook workbook = new XSSFWorkbook();
@@ -234,9 +269,17 @@ public class ByteDanceVideoReportDailyController {
 		 result.setSuccess(true);
 		 result.setMessage("success");
 
+		 //权限判断
+		 int perCode = videoReportDailyService.videoInfoListTotalExportExcelPermission();
+		 if(perCode == 0){
+			 result.setMessage("无导出权限");
+			 result.setCode(500);
+			 return;
+		 }
+
 		 String[] columns = dateDTO.getColumns();
 
-  		 List<ByteDanceVideoReportDaily> list = videoReportDailyService.videoInfoListTotal(dateDTO.getStartDate(), dateDTO.getEndDate(), dateDTO.getSignature(), dateDTO.getCost());
+  		 List<ByteDanceVideoReportDaily> list = videoReportDailyService.videoInfoListTotalExcel(dateDTO.getStartDate(), dateDTO.getEndDate(), dateDTO.getSignature(), dateDTO.getCost(), dateDTO.getAccountIds(), dateDTO.getSort());
 
 		 //导出excel
 		 List<List<Object>> group = new ArrayList<>();
@@ -286,7 +329,7 @@ public class ByteDanceVideoReportDailyController {
 					 }
 
 					 if( column.equals("url")){
-						 ByteDanceVideoReportDaily.add(sum.getUrl() );  //
+						 ByteDanceVideoReportDaily.add(sum.getVideoUrl() );  //下载的时候链接转换成头条的链接
 						 continue;
 					 }
 

+ 0 - 2
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/controller/BytedanceHomepageReportCtrl.java

@@ -2,7 +2,6 @@ package cn.com.ctop.toutiao.modules.report.controller;
 
 import cn.com.ctop.toutiao.modules.report.service.IBytedanceHomepageReportService;
 import com.alibaba.fastjson.JSONObject;
-import jdk.nashorn.internal.scripts.JS;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -11,7 +10,6 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 

+ 13 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/controller/BytedanceReportController.java

@@ -208,4 +208,17 @@ public class BytedanceReportController {
     }
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
 }

+ 4 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/entity/ByteDanceVideoReportDaily.java

@@ -46,6 +46,10 @@ public class ByteDanceVideoReportDaily {
 	@Excel(name = "广告主名称", width = 15)
     @ApiModelProperty(value = "广告主名称")
 	private String advertiserName;
+	/**广告主id*/
+	@Excel(name = "账户id", width = 15)
+	@ApiModelProperty(value = "账户id")
+	private Long accountId;
 	/**md5*/
 	@Excel(name = "md5", width = 15)
     @ApiModelProperty(value = "md5")

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

@@ -111,7 +111,6 @@ public class BytedanceFundDaily {
     private Date updateTime;
 
     public BytedanceFundDaily(JSONObject data, CtopOauthToken token) {
-        System.out.println(data.toJSONString());
         this.advertiserId = token.getAccountId();
         this.date = data.getString("date");
         this.id = this.advertiserId + "_" + this.date;

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

@@ -1,5 +1,6 @@
 package cn.com.ctop.toutiao.modules.report.mapper;
 
+import cn.com.ctop.toutiao.modules.report.DTO.AccountVideoDTO;
 import cn.com.ctop.toutiao.modules.report.entity.ByteDanceVideoReportDaily;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
@@ -18,7 +19,7 @@ public interface ByteDanceVideoReportDailyMapper extends BaseMapper<ByteDanceVid
 
     List<ByteDanceVideoReportDaily> videoInfoList(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("companyId") String companyId);
 
-    BigDecimal getVideoReportDailyByDateAndSignature(@Param("startDate") String date, @Param("endDate") String endDate, @Param("signature") String signature, @Param("companyId") String companyId);
+    BigDecimal getVideoReportDailyByDateAndSignature(@Param("startDate") String date, @Param("endDate") String endDate, @Param("signature") String signature, @Param("accountIds")List<Long> accountIds);
 
     void updateHuanbiByDateAndSignature(@Param("date") Date date, @Param("signature") String signature, @Param("huanbi") BigDecimal huanbi);
 
@@ -34,8 +35,42 @@ public interface ByteDanceVideoReportDailyMapper extends BaseMapper<ByteDanceVid
 
     void updateJsonByUserIdAndType(@Param("json") String json, @Param("userId") String userId, @Param("columnType") Integer columnType);
 
-    List<ByteDanceVideoReportDaily> videoInfoListDetail(@Param("companyId") String companyId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("signature") String signature, @Param("role") String role);
+    List<ByteDanceVideoReportDaily> videoInfoListDetail(@Param("companyId") String companyId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("signature") String signature, @Param("accountIds") List<Long> accountIds);
 
-    List<ByteDanceVideoReportDaily> bytedanceVideoInfoList(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("role") String role, @Param("userId") String userId, @Param("signature") String signature, @Param("companyId") String companyId, @Param("cost") BigDecimal cost);
+    List<ByteDanceVideoReportDaily> videoInfoListDetailDesign(@Param("companyId") String companyId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("signature") String signature, @Param("accountIds") List<Long> accountIds);
 
+    List<ByteDanceVideoReportDaily> videoInfoListDetailOperator(@Param("companyId") String companyId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("signature") String signature, @Param("accountIds") List<Long> accountIds);
+
+    //List<ByteDanceVideoReportDaily> bytedanceVideoInfoList(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("role") String role, @Param("userId") String userId, @Param("signature") String signature, @Param("companyId") String companyId, @Param("cost") BigDecimal cost);
+
+    List<AccountVideoDTO> accountVideoMap();
+
+    void replaceIntoAccountVideoMapBatch(@Param("accountVideoDTOList")List<AccountVideoDTO> accountVideoDTOList);
+
+    //admin角色查询视频报表
+    List<ByteDanceVideoReportDaily> videoInfoListGroupAdmin(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("accountIds") List<Long> accountIds, @Param("signature") String signature, @Param("cost") BigDecimal cost);
+
+    //teamLeader角色查询视频报表
+    List<ByteDanceVideoReportDaily> videoInfoListGroupdesignTeamLeader(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("companyId")String companyId, @Param("accountIds") List<Long> accountIds, @Param("signature") String signature, @Param("cost") BigDecimal cost);
+
+    //平面设计角色查询视频报表
+    List<ByteDanceVideoReportDaily> videoInfoListGroupPlaneAndPlaneLeader(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("companyId")String companyId, @Param("userId")String userId, @Param("accountIds") List<Long> accountIds, @Param("signature") String signature, @Param("cost") BigDecimal cost);
+
+    //编导角色查询视频报表
+    List<ByteDanceVideoReportDaily> videoInfoListGroupPlan(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("companyId")String companyId, @Param("userId")String userId, @Param("accountIds") List<Long> accountIds, @Param("signature") String signature, @Param("cost") BigDecimal cost);
+
+    //剪辑角色查询视频报表
+    List<ByteDanceVideoReportDaily> videoInfoListGroupClip(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("companyId")String companyId, @Param("userId")String userId, @Param("accountIds") List<Long> accountIds, @Param("signature") String signature, @Param("cost") BigDecimal cost);
+
+    //拍摄
+    List<ByteDanceVideoReportDaily> videoInfoListGroupShot(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("companyId")String companyId, @Param("userId")String userId, @Param("accountIds") List<Long> accountIds, @Param("signature") String signature, @Param("cost") BigDecimal cost);
+
+    //运营
+    List<ByteDanceVideoReportDaily> videoInfoListGroupOperator(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("accountIds") List<Long> accountIds, @Param("signature") String signature, @Param("cost") BigDecimal cost);
+
+    List<Long> getAccountIdByprojectIds(@Param("projectIds")List<Long> projectIds);
+
+    List<Long> getAccountIdsByOperatorIdAndMediaId(@Param("mediaId")Integer mediaId, @Param("userId")String userId);
+
+    List<Long> getAccountIds(@Param("companyId")String companyId, @Param("signature")String signature);
 }

+ 4 - 4
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/BytedanceHomepageMapper.java

@@ -17,18 +17,18 @@ public interface BytedanceHomepageMapper {
     List<JSONObject> queryTodayDetailReportBy(@Param("statDate") String statDate);
 
     //根据开始、结束时间 查询汇总数据
-    JSONObject querySumByStartEndDate(@Param("endDate") String endDate, @Param("startDate") String startDate);
+    JSONObject querySumByStartEndDate(@Param("startDate") String anotherDay, @Param("endDate") String endDate);
 
     //根据开始、结束时间 查询明细数据
-    List<JSONObject> queryDetailByStartEndDate(@Param("endDate") String endDate, @Param("startDate") String startDate);
+     List<JSONObject> queryDetailByStartEndDate(@Param("startDate") String anotherDay, @Param("endDate") String endDate);
 
     //按月分组查询明细数据
-    List<JSONObject> queryDetailGroupMonthByDate(@Param("endDate") String endDate, @Param("startDate") String startDate);
+    List<JSONObject> queryDetailGroupMonthByDate(@Param("startDate") String anotherDay, @Param("endDate") String endDate);
 
     //查询固定月的明细数据
     List<JSONObject> queryDetailGroupDayByMonth(@Param("month") String month);
 
     //项目消耗排行榜
-    List<JSONObject> queryTopCost(@Param("endDate") String endDate, @Param("startDate") String startDate,@Param("rank") int rank);
+    List<JSONObject> queryTopCost(@Param("startDate") String anotherDay, @Param("endDate") String endDate, @Param("rank") int rank);
 
 }

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 523 - 431
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/ByteDanceVideoReportDailyMapper.xml


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

@@ -197,4 +197,222 @@
     </select>
 
 
+
+
+
+    <select id="videoInfoListWeek" resultType="cn.com.ctop.toutiao.modules.report.entity.ByteDanceVideoReportDaily">
+        select
+        --  a.material_id as materialId,
+        --         a.account_id as accountId,
+        --         b.auth_name as authName,
+        a.project_id                             as projectId,
+        a.project_name                           as projectName,
+        a.advertiser_id                          as advertiserId,
+        a.advertiser_name                        as advertiserName,
+        a.stat_datetime                          as statDatetime,
+        sum(a.cost)                              as cost,                           -- 消耗
+        a.signature                              as signature,
+        a.video_url                              as videoUrl,
+        '-'                                      as materialDesc,
+        (select info.url from ctop_material_info info where info.code = a.signature limit 1)                                    as url,
+        1                                        as appType,
+        sum(a.click)                             as clickMaterial,                  -- 点击数
+
+        case
+        when sum(a.total_play) != 0
+        then sum(a.play25_feed_break) / sum(a.total_play)
+        else 0 end                           as play25FeedBreakRate,            -- 25%进度播放率
+
+        case
+        when sum(a.total_play) != 0
+        then sum(a.play_over) / sum(a.total_play)
+        else 0 end                           as playOverRate,                   -- 整体完播率
+
+        case
+        when sum(a.click) != 0
+        then sum(a.convert_material) / sum(a.click)
+        else 0 end                           as convertRate,                    -- 转化率  转化数/点击数*100% !
+        sum(a.active)                            as active,                         -- 应用下载-激活
+        sum(a.download_finish)                   as downloadFinish,                 -- 应用下载-安卓下载完成
+        sum(a.download_start)                    as downloadStart,                  -- 应用下载-安卓下载开始
+        sum(a.install_finish)                    as installFinish,                  -- 应用下载-安卓安装完成
+        sum(a.register)                          as register,                       -- 应用下载-注册
+        sum(a.pay_count)                         as payCount,                       -- 应用下载-付费数
+        sum(a.form)                              as form,                           --  表单提交数
+        sum(a.total_play)                        as totalPlay,                      -- 视频-总播放
+        sum(a.valid_play)                        as validPlay,                      -- 视频-有效播放
+        sum(a.wifi_play)                         as wifiPlay,                       -- 视频-wifi播放
+        sum(a.play25_feed_break)                 as play25FeedBreak,                -- 视频-播放25%进度总数
+        sum(a.play50_feed_break)                 as play50FeedBreak,                -- 视频-播放50%进度总数
+        sum(a.play75_feed_break)                 as play75FeedBreak,                -- 视频-播放75%进度总数
+        sum(a.play100_feed_break)                as play100FeedBreak,               -- 视频-播放100%进度总数
+        sum(a.share_material)                    as shareMaterial,                  -- 互动数据-分享数
+        sum(a.follow)                            as follow,                         -- 互动数据-新增关注数
+        sum(a.next_day_open)                     as nextDayOpen,                    -- 次留数
+        case
+        when sum(a.active) != 0
+        then sum(a.next_day_open) / sum(a.active)
+        else 0 end                           as nextDayOpenRate,                -- 次留率 = 次留数/激活数
+
+        case
+        when sum(a.next_day_open) != 0
+        then sum(a.cost) / sum(a.next_day_open)
+        else 0 end                           as nextDayOpenCost,                -- 次留成本 = 消耗/次留数
+
+        sum(a.active_pay_amount)                 as activePayAmount,                -- 应用下载广告数据-付费次数
+
+        case
+        when sum(a.valid_play) != 0
+        then sum(a.cost) / sum(a.valid_play)
+        else 0 end                              validPlayCost,                  -- 视频数据-有效播放成本  计算公式:总花费/有效播放数,当天数据可能会有波动,次日早8点后稳定。
+        sum(a.convert_material)                  as convertMaterial,                -- 转化数据-转化数
+
+        case
+        when sum(a.active_pay_amount) != 0
+        then sum(a.cost) / sum(a.active_pay_amount)
+        else 0 end                           as activePayCost,                  -- 应用下载广告数据-付费成本 = 消耗/付费次数
+
+        case
+        when sum(a.click) != 0
+        then sum(a.cost) / sum(a.click)
+        else 0 end                           as cpc,                            -- 平均点击单价
+        sum(a.play_over_rate)                    as playOverRate,                   -- 视频数据-播完率
+
+        case
+        when sum(a.show_material) != 0
+        then sum(a.click) / sum(a.show_material)
+        else 0 end                           as ctr,                            -- 展现数据-点击率   广告被点击的次数占展示次数的百分比。计算方法:点击数/展示数*100%
+
+        case
+        when sum(a.show_material) != 0
+        then sum(a.cost) / sum(a.show_material) * 1000
+        else 0 end                              cpm,                            -- 平均千次展现费用  广告平均每一千次展现所付出的费用,计算公式是:总花费/展示数*1000。
+        sum(a.wifi_play_rate)                    as wifiPlayRate,                   -- 视频数据-WiFi播放占比
+        sum(a.like_material)                     as likeMaterial,                   -- 互动数据-点赞数
+
+
+        case
+        when sum(a.active) != 0
+        then sum(a.cost) / sum(a.active)
+        else 0 end                              activeCost,                     -- 应用下载广告数据-激活成本  计算方式:总花费/激活数。
+
+        case
+        when sum(a.game_addiction) != 0
+        then sum(a.cost) / sum(a.game_addiction)
+        else 0 end                           as gameAddictionCost,              -- 应用下载广告数据-关键行为成本  广告主为每个有APP内关键行为的用户所付出的成本,计算公式是总花费/关键行为数。当天数据可能会有波动,次日早8点后稳定。
+        sum(a.game_addiction)                    as gameAddiction,                  -- 应用下载广告数据-关键行为数
+
+        case
+        when sum(a.click) != 0
+        then sum(a.active) / sum(a.click)
+        else 0 end                           as activeRate,                     -- 应用下载广告数据-激活率   计算方式:激活数/点击数*100%
+
+
+        case
+        when sum(a.active) != 0
+        then sum(a.game_addiction) / sum(a.active)
+        else 0 end                            as  gameAddictionRate,              -- 应用下载广告数据-关键行为率  关键行为用户占激活用户的比例
+
+        case
+        when sum(a.active) != 0
+        then sum(a.register) / sum(a.active)
+        else 0 end                           as activeRegisterRate,             -- 应用下载广告数据-注册率   注册用户占激活用户的比例
+
+
+        case
+        when sum(a.download_finish) != 0
+        then sum(a.cost) / sum(a.download_finish)
+        else 0 end                           as downloadFinishCost,             -- 应用下载广告数据-安卓下载完成成本 计算方式:总花费/安卓下载完成数。
+
+
+        case
+        when sum(a.register) != 0
+        then sum(a.cost) / sum(a.register)
+        else 0 end                           as activeRegisterCost,             -- 应用下载广告数据-注册成本  总花费/注册数,当天数据可能会有波动,次日早8点后稳定。
+        sum(a.show_material)                     as showMaterial,                   -- 展现数据-展示数
+
+
+        case
+        when sum(a.download_start) != 0
+        then sum(a.download_finish) / sum(a.download_start)
+        else 0 end                           as downloadFinishRate,             -- 应用下载广告数据-安卓下载完成率  计算方式:安卓下载完成数/安卓下载开始数
+
+        case
+        when sum(a.download_finish) != 0
+        then sum(a.install_finish) / sum(a.download_finish)
+        else 0 end                           as installFinishRate,              -- 应用下载广告数据-安卓安装完成率  计算方式:安卓安装完成数/安卓下载完成数
+        sum(a.play_over)                         as playOver,                       -- 完播数
+
+        case
+        when sum(a.download_start) != 0
+        then sum(a.cost) / sum(a.download_start)
+        else 0 end                           as downloadStartCost,              -- 应用下载广告数据-安卓下载开始成本  计算方法:总花费/安卓下载开始数。
+
+        case
+        when sum(a.show_material) != 0
+        then sum(a.valid_play) / sum(a.show_material)
+        else 0 end                           as validPlayRate,                  -- 视频数据-有效播放率  有效播放数/展示数
+        case
+        when sum(a.valid_play) != 0
+        then sum(a.average_play_time_per_play*a.valid_play)/sum(a.valid_play)
+        else 0 end as averagePlayTimePerPlay,         -- 视频数据-平均单次播放时长
+        case
+        when sum(a.convert_material) != 0
+        then sum(a.cost) / sum(a.convert_material)
+        else 0 end                           as convertCost,                    --  转化数据-转化成本=总花费/转化数
+
+        case
+        when sum(a.install_finish) != 0
+        then sum(a.cost) / sum(a.install_finish)
+        else 0 end                           as installFinishCost,              --  应用下载广告数据-安卓安装完成成本  计算方式:总花费/安卓安装完成数
+
+        case
+        when sum(a.click) != 0
+        then sum(a.download_start) / sum(a.click)
+        else 0 end                           as downloadStartRate               --  应用下载广告数据-安卓下载开始率  计算方法:安卓下载开始数/点击数
+
+        from ctop_bytedance_video_report_daily a
+        left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
+        where stat_datetime &gt;= #{startDate}
+        and stat_datetime &lt;= #{endDate}
+
+        <if test=" role != 'admin' ">
+            and a.company_id = #{companyId}
+        </if>
+
+        and f.material_id is not null
+
+        <choose>   <!-- 编导、剪辑、拍摄、平面只能查看自己本职工作制作的视频,设计组长和管理员能查看所有的-->
+            <when test="role == 'plan'">
+                and f.plan = #{userId}
+            </when>
+            <when test="role == 'clip'">
+                and f.clip = #{userId}
+            </when>
+            <when test="role == 'shot' ">
+                and f.shot = #{userId}
+            </when>
+            <when test="role == 'plane'  or role == 'planeLeader' ">
+                and f.plan = #{userId}
+            </when>
+            <when test="role == 'admin' or role == 'designTeamLeader'">
+                and 1=1
+            </when>
+            <otherwise>F
+                and a.id = 0
+            </otherwise>
+        </choose>
+
+        <if test="signature != null and signature != '' ">
+            and a.signature = #{signature}
+        </if>
+
+        group by a.signature
+        <if test="cost != null">
+            having sum(a.cost) &gt;= #{cost}
+        </if>
+        order by sum(a.cost)
+    </select>
+
+
 </mapper>

+ 10 - 5
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/IByteDanceVideoReportDailyService.java

@@ -2,6 +2,7 @@ package cn.com.ctop.toutiao.modules.report.service;
 
 import cn.com.ctop.toutiao.modules.report.entity.ByteDanceVideoReportDaily;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.pagehelper.PageInfo;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -16,13 +17,15 @@ public interface IByteDanceVideoReportDailyService extends IService<ByteDanceVid
 
     void videoInfoList(String startDate, String endDate);
 
-    List<ByteDanceVideoReportDaily> videoInfoListWeek(String startDate, String endDate, String signature, BigDecimal cost);
+    PageInfo<ByteDanceVideoReportDaily> videoInfoListWeek(String startDate, String endDate, String signature, BigDecimal cost, Integer pageNo, Integer pageSize, Long[] projectIds, Long[] accountIds, String sort);
 
-    List<ByteDanceVideoReportDaily> videoInfoListTotal(String startDate, String endDate, String signature, BigDecimal cost);
+    PageInfo<ByteDanceVideoReportDaily> videoInfoListTotal(String startDate, String endDate, String signature, BigDecimal cost, Integer pageNo, Integer pageSize, Long[] projectIds, Long[] accountIds, String sort);
 
-    List<ByteDanceVideoReportDaily> videoInfoListMonth(String startDate, String endDate, String signature, BigDecimal cost);
+    List<ByteDanceVideoReportDaily> videoInfoListTotalExcel(String startDate, String endDate, String signature, BigDecimal cost, Long[] accountIds, String sort);
 
-    List<ByteDanceVideoReportDaily> videoInfoListDetail(String startDate, String endDate, String signature);
+    PageInfo<ByteDanceVideoReportDaily> videoInfoListMonth(String startDate, String endDate, String signature, BigDecimal cost, Integer pageNo, Integer pageSize, Long[] projectIds, Long[] accountIds,String sort);
+
+    List<ByteDanceVideoReportDaily> videoInfoListDetail(String startDate, String endDate, String signature, Long[] accountIds);
 
     String getColumnJson(Integer columnType);
 
@@ -31,6 +34,8 @@ public interface IByteDanceVideoReportDailyService extends IService<ByteDanceVid
     //excel导出权限
     int videoInfoListTotalExportExcelPermission();
 
-    List<ByteDanceVideoReportDaily> videoInfoListDaily(String startDate, String endDate, String signature, BigDecimal cost);
+    PageInfo<ByteDanceVideoReportDaily> videoInfoListDaily(String startDate, String endDate, String signature, BigDecimal cost, Integer pageNo, Integer pageSize, Long[] projectIds, Long[] accountIds, String sort);
+
+    void accountVideoMap();
 
 }

+ 351 - 40
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/ByteDanceVideoReportDailyServiceImpl.java

@@ -1,10 +1,14 @@
 package cn.com.ctop.toutiao.modules.report.service.impl;
 
+import cn.com.ctop.toutiao.modules.report.DTO.AccountVideoDTO;
 import cn.com.ctop.toutiao.modules.report.entity.ByteDanceVideoReportDaily;
 import cn.com.ctop.toutiao.modules.report.mapper.ByteDanceVideoReportDailyMapper;
 import cn.com.ctop.toutiao.modules.report.service.IByteDanceVideoReportDailyService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.DateUtils;
@@ -13,6 +17,8 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -34,7 +40,6 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
         videoInfoListByCompanyId(startDate, endDate, "d57fecdcf7a94d009736d9c850731582");
         //华东
         videoInfoListByCompanyId(startDate, endDate, "4b10089775c040119e139087517aed88");
-        System.out.println(endDate + "结束");
     }
 
     private void videoInfoListByCompanyId(String startDate, String endDate, String companyId){
@@ -51,56 +56,215 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
 
         //QueryWrapper<ByteDanceVideoReportDaily> queryWrapper = new QueryWrapper<>();
 
-        List<ByteDanceVideoReportDaily> mList2 = byteDanceVideoReportDailyMapper.selectList(wrapper);
+        //List<ByteDanceVideoReportDaily> mList2 = byteDanceVideoReportDailyMapper.selectList(wrapper);
+        //
+        //for(ByteDanceVideoReportDaily m:mList2){
+        //    String statDate  = DateUtils.formatDate(DateUtils.addDay(m.getStatDatetime(),-1));
+        //    BigDecimal cost = byteDanceVideoReportDailyMapper.getVideoReportDailyByDateAndSignature(statDate,statDate,m.getSignature(),companyId);
+        //
+        //    BigDecimal huanbi =BigDecimal.ZERO;
+        //    if(cost != null && cost.compareTo(BigDecimal.ZERO)>0){
+        //        huanbi = m.getCost().subtract(cost).divide(cost,7, BigDecimal.ROUND_HALF_UP);
+        //    }
+        //
+        //    m.setHuanbi(huanbi);
+        //    byteDanceVideoReportDailyMapper.updateById(m);
+        //}
+    }
 
-        for(ByteDanceVideoReportDaily m:mList2){
-            String statDate  = DateUtils.formatDate(DateUtils.addDay(m.getStatDatetime(),-1));
-            BigDecimal cost = byteDanceVideoReportDailyMapper.getVideoReportDailyByDateAndSignature(statDate,statDate,m.getSignature(),companyId);
+    //视频按天列表
+    public PageInfo<ByteDanceVideoReportDaily> videoInfoListDaily(String startDate, String endDate, String signature, BigDecimal cost, Integer pageNo, Integer pageSize, Long[] projectIds, Long[] accountIds, String sort){
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String userId = sysUser.getId();
+        String roleCode = byteDanceVideoReportDailyMapper.getRoleCodeByUserId(userId);
+        String companyId = byteDanceVideoReportDailyMapper.getCompanyIdByUserId(userId);
+
+        if(StringUtils.isBlank(sort)){
+            sort = "cost-";
+        }
+        sort = sort.replace("-", " desc,").replace("+", " asc,");  //sort=id-name+age+
+        sort = sort.substring(0, sort.length() - 1);
+        List<ByteDanceVideoReportDaily> mList = new ArrayList<>();
+
+        List<Long> accountIdsList = null;
+        if(accountIds != null && accountIds.length != 0){
+            accountIdsList = Arrays.asList(accountIds);
+        }
+        //admin能看所有视频
+        if(roleCode.equals("admin")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupAdmin(startDate, endDate, accountIdsList, signature, cost);
+        }else if(roleCode.equals("touTiaoOperationManager") || roleCode.equals("operator") || roleCode.equals("operationAssistant")) {
+            if (accountIdsList != null && accountIdsList.size() != 0){
+                PageHelper.startPage(pageNo,pageSize,sort);
+                mList = byteDanceVideoReportDailyMapper.videoInfoListGroupOperator(startDate,endDate,accountIdsList,signature,cost);
+            }else{
+                List<Long> accoutnIds= byteDanceVideoReportDailyMapper.getAccountIdsByOperatorIdAndMediaId(1,userId);
+                PageHelper.startPage(pageNo,pageSize,sort);
+                mList = byteDanceVideoReportDailyMapper.videoInfoListGroupOperator(startDate,endDate,accoutnIds,signature,cost);
+            }
+        }else if(roleCode.equals("shot")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupShot(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("plan")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlan(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("plane")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlaneAndPlaneLeader(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("clip")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupClip(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("designTeamLeader")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupdesignTeamLeader(startDate, endDate, companyId, accountIdsList, signature, cost);
+        }
+
+        //计算环比
+        for(ByteDanceVideoReportDaily m:mList){
+            Integer datediff = DateUtils.dateDiff(startDate, endDate);
+            String startMonthDate = DateUtils.formatDate(DateUtils.addDay(startDate,-(datediff + 1) ) );
+            String endMonthDate = DateUtils.formatDate(DateUtils.addDay(startDate,-1));
+
+            BigDecimal costBefore = byteDanceVideoReportDailyMapper.getVideoReportDailyByDateAndSignature(startMonthDate,endMonthDate,m.getSignature(),accountIdsList);
 
             BigDecimal huanbi =BigDecimal.ZERO;
-            if(cost != null && cost.compareTo(BigDecimal.ZERO)>0){
-                huanbi = m.getCost().subtract(cost).divide(cost,7, BigDecimal.ROUND_HALF_UP);
+            if(costBefore != null && costBefore.compareTo(BigDecimal.ZERO)>0){
+                huanbi = m.getCost().subtract(costBefore).divide(costBefore,7, BigDecimal.ROUND_HALF_UP);
             }
 
             m.setHuanbi(huanbi);
-            byteDanceVideoReportDailyMapper.updateById(m);
         }
+
+        PageInfo<ByteDanceVideoReportDaily> pageInfo = new PageInfo<>(mList);
+        return pageInfo;
     }
 
-    //视频按天列表
-    public List<ByteDanceVideoReportDaily> videoInfoListDaily(String startDate, String endDate, String signature, BigDecimal cost){
+
+    //视频报表月列表
+    public PageInfo<ByteDanceVideoReportDaily> videoInfoListMonth(String startDate, String endDate, String signature, BigDecimal cost, Integer pageNo, Integer pageSize, Long[] projectIds, Long[] accountIds, String sort){
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = sysUser.getId();
         String roleCode = byteDanceVideoReportDailyMapper.getRoleCodeByUserId(userId);
         String companyId = byteDanceVideoReportDailyMapper.getCompanyIdByUserId(userId);
 
-        List<ByteDanceVideoReportDaily> mList = byteDanceVideoReportDailyMapper.videoInfoListWeek(startDate, endDate, roleCode, userId, signature, companyId, cost);
+        if(StringUtils.isBlank(sort)){
+            sort = "cost-";
+        }
+        sort = sort.replace("-", " desc,").replace("+", " asc,");  //sort=id-name+age+
+        sort = sort.substring(0, sort.length() - 1);
+        List<ByteDanceVideoReportDaily> mList = new ArrayList<>();
 
-        return mList;
+        List<Long> accountIdsList = null;
+        if(accountIds != null && accountIds.length != 0){
+            accountIdsList = Arrays.asList(accountIds);
+        }
+        //admin能看所有视频
+        if(roleCode.equals("admin")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupAdmin(startDate, endDate, accountIdsList, signature, cost);
+        }else if(roleCode.equals("touTiaoOperationManager") || roleCode.equals("operator") || roleCode.equals("operationAssistant")) {
+            if (accountIdsList != null && accountIdsList.size() != 0){
+                PageHelper.startPage(pageNo,pageSize,sort);
+                mList = byteDanceVideoReportDailyMapper.videoInfoListGroupOperator(startDate,endDate,accountIdsList,signature,cost);
+            }else{
+                List<Long> accoutnIds= byteDanceVideoReportDailyMapper.getAccountIdsByOperatorIdAndMediaId(1,userId);
+                PageHelper.startPage(pageNo,pageSize,sort);
+                mList = byteDanceVideoReportDailyMapper.videoInfoListGroupOperator(startDate,endDate,accoutnIds,signature,cost);
+            }
+        }else if(roleCode.equals("shot")){
+                PageHelper.startPage(pageNo,pageSize,sort);
+                mList = byteDanceVideoReportDailyMapper.videoInfoListGroupShot(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("plan")){
+                PageHelper.startPage(pageNo,pageSize,sort);
+                mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlan(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("plane")){
+                PageHelper.startPage(pageNo,pageSize,sort);
+                mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlaneAndPlaneLeader(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("clip")){
+                PageHelper.startPage(pageNo,pageSize,sort);
+                mList = byteDanceVideoReportDailyMapper.videoInfoListGroupClip(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("designTeamLeader")){
+                PageHelper.startPage(pageNo,pageSize,sort);
+                mList = byteDanceVideoReportDailyMapper.videoInfoListGroupdesignTeamLeader(startDate, endDate, companyId, accountIdsList, signature, cost);
+        }
+
+        //计算环比
+        for(ByteDanceVideoReportDaily m:mList){
+            Integer datediff = DateUtils.dateDiff(startDate, endDate);
+            String startMonthDate = DateUtils.formatDate(DateUtils.addDay(startDate,-(datediff + 1) ) );
+            String endMonthDate = DateUtils.formatDate(DateUtils.addDay(startDate,-1));
+
+            BigDecimal costBefore = byteDanceVideoReportDailyMapper.getVideoReportDailyByDateAndSignature(startMonthDate,endMonthDate,m.getSignature(),accountIdsList);
+
+            BigDecimal huanbi =BigDecimal.ZERO;
+            if(costBefore != null && costBefore.compareTo(BigDecimal.ZERO)>0){
+                huanbi = m.getCost().subtract(costBefore).divide(costBefore,7, BigDecimal.ROUND_HALF_UP);
+            }
+
+            m.setHuanbi(huanbi);
+        }
+
+        PageInfo<ByteDanceVideoReportDaily> pageInfo = new PageInfo<>(mList);
+        return pageInfo;
     }
 
 
-    //视频报表月列表
-    public List<ByteDanceVideoReportDaily> videoInfoListMonth(String startDate, String endDate, String signature, BigDecimal cost){
+    //视频报表列表
+    public PageInfo<ByteDanceVideoReportDaily> videoInfoListTotal(String startDate, String endDate, String signature, BigDecimal cost , Integer pageNo, Integer pageSize, Long[] projectIds, Long[] accountIds, String sort){
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = sysUser.getId();
         String roleCode = byteDanceVideoReportDailyMapper.getRoleCodeByUserId(userId);
         String companyId = byteDanceVideoReportDailyMapper.getCompanyIdByUserId(userId);
 
-        List<ByteDanceVideoReportDaily> mList = byteDanceVideoReportDailyMapper.videoInfoListWeek(startDate, endDate, roleCode, userId, signature, companyId, cost);
+        if(StringUtils.isBlank(sort)){
+            sort = "cost-";
+        }
+        sort = sort.replace("-", " desc,").replace("+", " asc,");  //sort=id-name+age+
+        sort = sort.substring(0, sort.length() - 1);
+        List<ByteDanceVideoReportDaily> mList = new ArrayList<>();
+
+        List<Long> accountIdsList = null;
+        if(accountIds != null && accountIds.length != 0){
+            accountIdsList = Arrays.asList(accountIds);
+        }
+        //admin能看所有视频
+        if(roleCode.equals("admin")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupAdmin(startDate, endDate, accountIdsList, signature, cost);
+        }else if(roleCode.equals("touTiaoOperationManager") || roleCode.equals("operator") || roleCode.equals("operationAssistant")) {
+            if (accountIdsList != null && accountIdsList.size() != 0){
+                PageHelper.startPage(pageNo,pageSize,sort);
+                mList = byteDanceVideoReportDailyMapper.videoInfoListGroupOperator(startDate,endDate,accountIdsList,signature,cost);
+            }else{
+                List<Long> accoutnIds= byteDanceVideoReportDailyMapper.getAccountIdsByOperatorIdAndMediaId(1,userId);
+                PageHelper.startPage(pageNo,pageSize,sort);
+                mList = byteDanceVideoReportDailyMapper.videoInfoListGroupOperator(startDate,endDate,accoutnIds,signature,cost);
+            }
+        }else if(roleCode.equals("shot")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupShot(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("plan")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlan(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("plane")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlaneAndPlaneLeader(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("clip")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupClip(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("designTeamLeader")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupdesignTeamLeader(startDate, endDate, companyId, accountIdsList, signature, cost);
+        }
 
         //计算环比
         for(ByteDanceVideoReportDaily m:mList){
-            String startMonthDate = null;
-            String endMonthDate = null;
-            try {
-                startMonthDate = DateUtils.addMonth( DateUtils.formatDate(DateUtils.addDay(m.getStatDatetime(),1)) , -1);
-                endMonthDate = DateUtils.formatDate(DateUtils.addDay(m.getStatDatetime(),-1));
-            } catch (ParseException e) {
-                e.printStackTrace();
-            }
+            Integer datediff = DateUtils.dateDiff(startDate, endDate);
+            String startMonthDate = DateUtils.formatDate(DateUtils.addDay(startDate,-(datediff + 1) ) );
+            String endMonthDate = DateUtils.formatDate(DateUtils.addDay(startDate,-1));
 
-            BigDecimal costBefore = byteDanceVideoReportDailyMapper.getVideoReportDailyByDateAndSignature(startMonthDate,endMonthDate,m.getSignature(),companyId);
+            BigDecimal costBefore = byteDanceVideoReportDailyMapper.getVideoReportDailyByDateAndSignature(startMonthDate,endMonthDate,m.getSignature(),accountIdsList);
 
             BigDecimal huanbi =BigDecimal.ZERO;
             if(costBefore != null && costBefore.compareTo(BigDecimal.ZERO)>0){
@@ -110,40 +274,130 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             m.setHuanbi(huanbi);
         }
 
-        return mList;
+        PageInfo<ByteDanceVideoReportDaily> pageInfo = new PageInfo<>(mList);
+        return pageInfo;
     }
 
+    //视频总报表列表导出excel
+    public List<ByteDanceVideoReportDaily> videoInfoListTotalExcel(String startDate, String endDate, String signature, BigDecimal cost , Long[] accountIds, String sort){
+        //LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        //String userId = sysUser.getId();
+        //String roleCode = byteDanceVideoReportDailyMapper.getRoleCodeByUserId(userId);
+        //String companyId = byteDanceVideoReportDailyMapper.getCompanyIdByUserId(userId);
+        //
+        //List<ByteDanceVideoReportDaily> mList = byteDanceVideoReportDailyMapper.videoInfoListWeek(startDate, endDate, roleCode, userId, signature, companyId, cost);
 
-    //视频总报表列表
-    public List<ByteDanceVideoReportDaily> videoInfoListTotal(String startDate, String endDate, String signature, BigDecimal cost){
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = sysUser.getId();
         String roleCode = byteDanceVideoReportDailyMapper.getRoleCodeByUserId(userId);
         String companyId = byteDanceVideoReportDailyMapper.getCompanyIdByUserId(userId);
 
-        List<ByteDanceVideoReportDaily> mList = byteDanceVideoReportDailyMapper.videoInfoListWeek(startDate, endDate, roleCode, userId, signature, companyId, cost);
+        if(StringUtils.isBlank(sort)){
+            sort = "cost-";
+        }
+        sort = sort.replace("-", " desc,").replace("+", " asc,");  //sort=id-name+age+
+        sort = sort.substring(0, sort.length() - 1);
+        List<ByteDanceVideoReportDaily> mList = new ArrayList<>();
 
+        List<Long> accountIdsList = null;
+        if(accountIds != null && accountIds.length != 0){
+            accountIdsList = Arrays.asList(accountIds);
+        }
+        //admin能看所有视频
+        if(roleCode.equals("admin")){
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupAdmin(startDate, endDate, accountIdsList, signature, cost);
+        }else if(roleCode.equals("touTiaoOperationManager") || roleCode.equals("operator") || roleCode.equals("operationAssistant")) {
+            if (accountIdsList != null && accountIdsList.size() != 0){
+                mList = byteDanceVideoReportDailyMapper.videoInfoListGroupOperator(startDate,endDate,accountIdsList,signature,cost);
+            }else{
+                List<Long> accoutnIds= byteDanceVideoReportDailyMapper.getAccountIdsByOperatorIdAndMediaId(1,userId);
+                mList = byteDanceVideoReportDailyMapper.videoInfoListGroupOperator(startDate,endDate,accoutnIds,signature,cost);
+            }
+        }else if(roleCode.equals("shot")){
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupShot(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("plan")){
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlan(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("plane")){
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlaneAndPlaneLeader(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("clip")){
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupClip(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("designTeamLeader")){
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupdesignTeamLeader(startDate, endDate, companyId, accountIdsList, signature, cost);
+        }
+
+        //计算环比
+        //for(ByteDanceVideoReportDaily m:mList){
+        //    Integer datediff = DateUtils.dateDiff(startDate, endDate);
+        //    String startMonthDate = DateUtils.formatDate(DateUtils.addDay(startDate,-(datediff + 1) ) );
+        //    String endMonthDate = DateUtils.formatDate(DateUtils.addDay(startDate,-1));
+        //
+        //    BigDecimal costBefore = byteDanceVideoReportDailyMapper.getVideoReportDailyByDateAndSignature(startMonthDate,endMonthDate,m.getSignature(),accountIdsList);
+        //
+        //    BigDecimal huanbi =BigDecimal.ZERO;
+        //    if(costBefore != null && costBefore.compareTo(BigDecimal.ZERO)>0){
+        //        huanbi = m.getCost().subtract(costBefore).divide(costBefore,7, BigDecimal.ROUND_HALF_UP);
+        //    }
+        //
+        //    m.setHuanbi(huanbi);
+        //}
         return mList;
     }
 
-    //视频报表月列表
-    public List<ByteDanceVideoReportDaily> videoInfoListWeek(String startDate, String endDate, String signature, BigDecimal cost){
+    //视频报表列表
+    public PageInfo<ByteDanceVideoReportDaily> videoInfoListWeek(String startDate, String endDate, String signature, BigDecimal cost, Integer pageNo, Integer pageSize, Long[] projectIds, Long[] accountIds, String sort){
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = sysUser.getId();
         String roleCode = byteDanceVideoReportDailyMapper.getRoleCodeByUserId(userId);
         String companyId = byteDanceVideoReportDailyMapper.getCompanyIdByUserId(userId);
 
-        //QueryWrapper<ByteDanceVideoReportDaily> wrapper = new QueryWrapper<>();
-        //wrapper.eq("stat_datetime",startDate);
-        //byteDanceVideoReportDailyMapper.delete(wrapper);
+        if(StringUtils.isBlank(sort)){
+            sort = "cost-";
+        }
+        sort = sort.replace("-", " desc,").replace("+", " asc,");  //sort=id-name+age+
+        sort = sort.substring(0, sort.length() - 1);
+        List<ByteDanceVideoReportDaily> mList = new ArrayList<>();
 
-        List<ByteDanceVideoReportDaily> mList = byteDanceVideoReportDailyMapper.videoInfoListWeek(startDate, endDate, roleCode, userId, signature, companyId, cost);
+        List<Long> accountIdsList = null;
+        if(accountIds != null && accountIds.length != 0){
+            accountIdsList = Arrays.asList(accountIds);
+        }
+        //admin能看所有视频
+        if(roleCode.equals("admin")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupAdmin(startDate, endDate, accountIdsList, signature, cost);
+        }else if(roleCode.equals("touTiaoOperationManager") || roleCode.equals("operator") || roleCode.equals("operationAssistant")) {
+            if (accountIdsList != null && accountIdsList.size() != 0){
+                PageHelper.startPage(pageNo,pageSize,sort);
+                mList = byteDanceVideoReportDailyMapper.videoInfoListGroupOperator(startDate,endDate,accountIdsList,signature,cost);
+            }else{
+                List<Long> accoutnIds= byteDanceVideoReportDailyMapper.getAccountIdsByOperatorIdAndMediaId(1,userId);
+                PageHelper.startPage(pageNo,pageSize,sort);
+                mList = byteDanceVideoReportDailyMapper.videoInfoListGroupOperator(startDate,endDate,accoutnIds,signature,cost);
+            }
+        }else if(roleCode.equals("shot")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupShot(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("plan")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlan(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("plane")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlaneAndPlaneLeader(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("clip")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupClip(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
+        }else if(roleCode.equals("designTeamLeader")){
+            PageHelper.startPage(pageNo,pageSize,sort);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListGroupdesignTeamLeader(startDate, endDate, companyId, accountIdsList, signature, cost);
+        }
 
         //计算环比
         for(ByteDanceVideoReportDaily m:mList){
-            String startWeekDate  = DateUtils.formatDate(DateUtils.addDay(DateUtils.getDate(startDate),-1));
-            String endWeekDate = DateUtils.formatDate(DateUtils.addDay(startDate,-7));
-            BigDecimal costBefore = byteDanceVideoReportDailyMapper.getVideoReportDailyByDateAndSignature(startWeekDate,endWeekDate,m.getSignature(),companyId);
+            Integer datediff = DateUtils.dateDiff(startDate, endDate);
+            String startMonthDate = DateUtils.formatDate(DateUtils.addDay(startDate,-(datediff + 1) ) );
+            String endMonthDate = DateUtils.formatDate(DateUtils.addDay(startDate,-1));
+
+            BigDecimal costBefore = byteDanceVideoReportDailyMapper.getVideoReportDailyByDateAndSignature(startMonthDate,endMonthDate,m.getSignature(),accountIdsList);
 
             BigDecimal huanbi =BigDecimal.ZERO;
             if(costBefore != null && costBefore.compareTo(BigDecimal.ZERO)>0){
@@ -153,16 +407,69 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             m.setHuanbi(huanbi);
         }
 
-        return mList;
+        PageInfo<ByteDanceVideoReportDaily> pageInfo = new PageInfo<>(mList);
+
+        return pageInfo;
     }
 
-    public List<ByteDanceVideoReportDaily> videoInfoListDetail(String startDate, String endDate, String signature){
+    public List<ByteDanceVideoReportDaily> videoInfoListDetail(String startDate, String endDate, String signature, Long[] accountIds){
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = sysUser.getId();
         String roleCode = byteDanceVideoReportDailyMapper.getRoleCodeByUserId(userId);
         String companyId = byteDanceVideoReportDailyMapper.getCompanyIdByUserId(userId);
 
-        return byteDanceVideoReportDailyMapper.videoInfoListDetail(companyId, startDate, endDate, signature, roleCode);
+        //List<ByteDanceVideoReportDaily> mList = byteDanceVideoReportDailyMapper.videoInfoListDetail(companyId, startDate, endDate, signature, roleCode);
+        List<ByteDanceVideoReportDaily> mList =new ArrayList<>();
+
+        List<Long> accountIdsList = null;
+        if(accountIds != null && accountIds.length != 0){
+            accountIdsList = Arrays.asList(accountIds);
+        }
+        //admin能看所有视频
+        if(roleCode.equals("admin")){
+            mList = byteDanceVideoReportDailyMapper.videoInfoListDetail(companyId, startDate, endDate, signature, accountIdsList);
+        }else if(roleCode.equals("touTiaoOperationManager") || roleCode.equals("operator") || roleCode.equals("operationAssistant")) {
+            if (accountIdsList != null && accountIdsList.size() != 0){
+                mList = byteDanceVideoReportDailyMapper.videoInfoListDetailOperator(companyId, startDate,endDate,signature, accountIdsList);
+            }else{
+                accountIdsList= byteDanceVideoReportDailyMapper.getAccountIdsByOperatorIdAndMediaId(1,userId);
+                mList = byteDanceVideoReportDailyMapper.videoInfoListDetailOperator(companyId, startDate,endDate,signature, accountIdsList);
+            }
+        }else if(roleCode.equals("shot")){
+            accountIdsList = byteDanceVideoReportDailyMapper.getAccountIds(companyId, signature);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListDetailDesign(companyId, startDate,endDate,signature, accountIdsList);
+        }else if(roleCode.equals("plan")){
+            accountIdsList = byteDanceVideoReportDailyMapper.getAccountIds(companyId, signature);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListDetailDesign(companyId, startDate,endDate,signature, accountIdsList);
+        }else if(roleCode.equals("plane")){
+            accountIdsList = byteDanceVideoReportDailyMapper.getAccountIds(companyId, signature);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListDetailDesign(companyId, startDate,endDate,signature, accountIdsList);
+        }else if(roleCode.equals("clip")){
+            accountIdsList = byteDanceVideoReportDailyMapper.getAccountIds(companyId, signature);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListDetailDesign(companyId, startDate,endDate,signature, accountIdsList);
+        }else if(roleCode.equals("designTeamLeader")){
+            accountIdsList = byteDanceVideoReportDailyMapper.getAccountIds(companyId, signature);
+            mList = byteDanceVideoReportDailyMapper.videoInfoListDetailDesign(companyId, startDate,endDate,signature, accountIdsList);
+        }
+
+        //计算环比
+        for(ByteDanceVideoReportDaily m:mList){
+            //Integer datediff = DateUtils.dateDiff(startDate, endDate);
+            //String startMonthDate = DateUtils.formatDate(DateUtils.addDay(startDate,-(datediff + 1) ) );
+            String beforeDate = DateUtils.formatDate(DateUtils.addDay(m.getStatDatetime(),-1));
+            //List<Long> accountIdsList = new ArrayList<>();
+            //accountIdsList.add(m.getAccountId());
+            BigDecimal costBefore = byteDanceVideoReportDailyMapper.getVideoReportDailyByDateAndSignature(beforeDate,beforeDate,m.getSignature(),accountIdsList);
+
+            BigDecimal huanbi =BigDecimal.ZERO;
+            if(costBefore != null && costBefore.compareTo(BigDecimal.ZERO)>0){
+                huanbi = m.getCost().subtract(costBefore).divide(costBefore,7, BigDecimal.ROUND_HALF_UP);
+            }
+
+            m.setHuanbi(huanbi);
+        }
+
+        return mList;
     }
 
     public String getColumnJson(Integer columnType){
@@ -195,5 +502,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
         }
     }
 
+    public void accountVideoMap(){
+        List<AccountVideoDTO> accountVideoDTOList = byteDanceVideoReportDailyMapper.accountVideoMap();
+        byteDanceVideoReportDailyMapper.replaceIntoAccountVideoMapBatch(accountVideoDTOList);
+    }
 
 }

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

@@ -201,4 +201,5 @@ public class BytedanceHomepageReportServiceImpl implements IBytedanceHomepageRep
         return link;
     }
 
-}
+}
+

+ 0 - 3
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceReportServiceImpl.java

@@ -509,18 +509,15 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
                 if (i == 0) {
                     Map<String, String> dateMap = DateUtils.getMaxMinDaysOfAddMonth(startDate, "yyyy-MM-dd", i);
                     String end = dateMap.get("endDate");
-                    //System.out.println(startDate + " ----- " + end);
                     bytedanceAsyncTaskCreateByMonth(startDate, end, token, type);
                 } else if (i == diffMonths) {
                     Map<String, String> dateMap = DateUtils.getMaxMinDaysOfAddMonth(startDate, "yyyy-MM-dd", i);
                     String start = dateMap.get("startDate");
-                    //System.out.println(start + " ----- " + endDate);
                     bytedanceAsyncTaskCreateByMonth(start, endDate, token, type);
                 } else {
                     Map<String, String> dateMap = DateUtils.getMaxMinDaysOfAddMonth(startDate, "yyyy-MM-dd", i);
                     String start = dateMap.get("startDate");
                     String end = dateMap.get("endDate");
-                    //System.out.println(start + " ----- " + end);
                     bytedanceAsyncTaskCreateByMonth(start, end, token, type);
                 }
             }

+ 0 - 2
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/ReportServiceImpl.java

@@ -76,7 +76,6 @@ public class ReportServiceImpl implements IReportService {
             return;
         }
         JSONArray dataArray = getObject.getJSONObject("data").getJSONArray("list");
-        System.out.println(dataArray.toJSONString());
         if (null == dataArray || dataArray.size() <= 0) {
             return;
         }
@@ -229,7 +228,6 @@ public class ReportServiceImpl implements IReportService {
             log.error("素材报表数据获取异常:{}", message);
             return;
         }
-        System.out.println(getObject.toJSONString());
         JSONArray dataArray = getObject.getJSONObject("data").getJSONArray("list");
         if (null == dataArray || dataArray.size() <= 0) {
             return;