Quellcode durchsuchen

Merge branch 'master' into master-user

# Conflicts:
#	module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/SysUserMapper.xml
yumeng vor 4 Jahren
Ursprung
Commit
edf16c8826
100 geänderte Dateien mit 2957 neuen und 440 gelöschten Zeilen
  1. 0 1
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/MD5Util.java
  2. 0 6
      jeecg-boot-module-system/pom.xml
  3. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/config/ShiroConfig.java
  4. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/config/StaticConfig.java
  5. 154 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/AdvertiserController.java
  6. 160 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialTagInfoController.java
  7. 25 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ProjectMemberController.java
  8. 51 25
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TagInfoController.java
  9. 26 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/UReportFileBindUserController.java
  10. 1 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/UReportFileController.java
  11. 3 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/ProjectMemberMapper.java
  12. 8 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/ProjectMemberMapper.xml
  13. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IAdvertiserService.java
  14. 2 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IProjectMemberService.java
  15. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/AdvertiserServiceImpl.java
  16. 5 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/KuaiShouUploadServiceImpl.java
  17. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ProjectMemberServiceImpl.java
  18. 4 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/UReportFileBindUserServiceImpl.java
  19. 4 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/UReportFileServiceImpl.java
  20. 299 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/excelutil/entity/EffecfReportAccountEntity.java
  21. 302 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/excelutil/entity/EffecfReportCreativeEntity.java
  22. 299 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/excelutil/entity/EffecfReportGroupEntity.java
  23. 299 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/excelutil/entity/EffecfReportPlanEntity.java
  24. 312 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/excelutil/entity/EffecfReportProjectEntity.java
  25. 1 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/fileupload/controller/FileController.java
  26. 0 6
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/ISendMsgHandle.java
  27. 0 37
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/EmailSendMsgHandle.java
  28. 0 15
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/SmsSendMsgHandle.java
  29. 0 16
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/WxSendMsgHandle.java
  30. 0 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/opencv/utils/CornerCheck.java
  31. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java
  32. 3 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java
  33. 11 10
      jeecg-boot-module-system/src/main/resources/application-dev.yml
  34. 4 3
      jeecg-boot-module-system/src/main/resources/application-prod.yml
  35. 4 3
      jeecg-boot-module-system/src/main/resources/application-prod2.yml
  36. 5 4
      jeecg-boot-module-system/src/main/resources/application-test.yml
  37. 81 13
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  38. 4 0
      module-check/src/main/java/cn/com/ctop/check/controller/CtopCheckTaskExecutorCtrl.java
  39. 6 1
      module-check/src/main/java/cn/com/ctop/check/script/TestGroovyScript.java
  40. 2 0
      module-check/src/main/java/cn/com/ctop/notice/handler/SendWeChatHandle.java
  41. 52 0
      module-common/src/main/java/cn/com/ctop/common/module/entity/MaterialTagInfo.java
  42. 24 0
      module-common/src/main/java/cn/com/ctop/common/module/entity/TagCategoryInfo.java
  43. 12 4
      module-common/src/main/java/cn/com/ctop/common/module/entity/TagInfo.java
  44. 14 0
      module-common/src/main/java/cn/com/ctop/common/module/entity/UReportSubscriber.java
  45. 2 2
      module-common/src/main/java/cn/com/ctop/common/module/mapper/CtopCorpWexinUserMapper.java
  46. 14 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/MaterialTagInfoMapper.java
  47. 7 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/TagCategoryInfoMapper.java
  48. 15 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/UReportMapper.java
  49. 8 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/CtopCorpWexinUserMapper.xml
  50. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/xml/SysMessageMapper.xml
  51. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/xml/SysMessageTemplateMapper.xml
  52. 27 0
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/UReportMapper.xml
  53. 3 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/controller/SysMessageController.java
  54. 5 5
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/controller/SysMessageTemplateController.java
  55. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/entity/MsgParams.java
  56. 13 11
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/entity/SysMessage.java
  57. 6 6
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/entity/SysMessageTemplate.java
  58. 10 0
      module-common/src/main/java/cn/com/ctop/common/module/message/handle/ISendMsgHandle.java
  59. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/enums/SendMsgStatusEnum.java
  60. 4 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/enums/SendMsgTypeEnum.java
  61. 59 0
      module-common/src/main/java/cn/com/ctop/common/module/message/handle/impl/EmailSendMsgHandle.java
  62. 24 0
      module-common/src/main/java/cn/com/ctop/common/module/message/handle/impl/SmsSendMsgHandle.java
  63. 25 0
      module-common/src/main/java/cn/com/ctop/common/module/message/handle/impl/WxSendMsgHandle.java
  64. 6 6
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/job/SendMsgJob.java
  65. 2 5
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/SysMessageMapper.java
  66. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/SysMessageTemplateMapper.java
  67. 5 0
      module-common/src/main/java/cn/com/ctop/common/module/message/mapper/xml/SysMessageMapper.xml
  68. 5 0
      module-common/src/main/java/cn/com/ctop/common/module/message/mapper/xml/SysMessageTemplateMapper.xml
  69. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/ISysMessageService.java
  70. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/ISysMessageTemplateService.java
  71. 4 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/impl/SysMessageServiceImpl.java
  72. 4 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/impl/SysMessageTemplateServiceImpl.java
  73. 6 6
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/util/PushMsgUtil.java
  74. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/TestSocketController.java
  75. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java
  76. 10 0
      module-common/src/main/java/cn/com/ctop/common/module/model/TagInfoTreeModel.java
  77. 1 0
      module-common/src/main/java/cn/com/ctop/common/module/service/ICtopCorpWexinUserService.java
  78. 18 0
      module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialTagInfoService.java
  79. 7 0
      module-common/src/main/java/cn/com/ctop/common/module/service/ITagCategoryInfoService.java
  80. 2 1
      module-common/src/main/java/cn/com/ctop/common/module/service/ITagInfoService.java
  81. 6 0
      module-common/src/main/java/cn/com/ctop/common/module/service/IUReportExportService.java
  82. 15 0
      module-common/src/main/java/cn/com/ctop/common/module/service/IUReportService.java
  83. 1 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/BindAccountLoginServiceImpl.java
  84. 8 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/CtopCorpWexinUserServiceImpl.java
  85. 21 31
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java
  86. 71 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialTagInfoServiceImpl.java
  87. 11 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/TagCategoryInfoServiceImpl.java
  88. 14 9
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/TagInfoServiceImpl.java
  89. 53 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/UReportExportRest.java
  90. 56 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/UReportExportServiceImpl.java
  91. 27 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/UReportService.java
  92. 21 27
      module-common/src/main/java/cn/com/ctop/common/module/utils/HttpUtils.java
  93. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/vo/SheetInfoVo.java
  94. 50 3
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/core/service/impl/KuaishouCrawlerServiceImpl.java
  95. 18 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/core/util/HttpParamUtil.java
  96. 4 4
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/core/util/KuaishouUtil.java
  97. 41 54
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/taobao/service/impl/TaobaoJhsbybtServiceImpl.java
  98. 41 61
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/taobao/service/impl/TaobaoTttmServiceImpl.java
  99. 5 3
      module-ctop/src/main/java/cn/com/ctop/manage/modules/material/service/impl/MaterialUploadImageServiceImpl.java
  100. 0 0
      module-ctop/src/main/java/cn/com/ctop/manage/modules/material/service/impl/MaterialUploadServiceImpl.java

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 1
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/MD5Util.java


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

@@ -139,12 +139,6 @@
         </dependency>
 
         <dependency>
-            <groupId>com.bstek.ureport</groupId>
-            <artifactId>ureport2-console</artifactId>
-            <version>2.2.9</version>
-        </dependency>
-
-        <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi</artifactId>
             <version>3.17</version>

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

@@ -168,7 +168,7 @@ public class ShiroConfig {
         filterChainDefinitionMap.put("/ureport/**", "anon");
         filterChainDefinitionMap.put("/job/test/*", "anon");
         filterChainDefinitionMap.put("/third/*", "anon");
-        //filterChainDefinitionMap.put("/kuaishou/**", "anon");
+        filterChainDefinitionMap.put("/ctop/kuaishou/dailyPage/**", "anon");
         filterChainDefinitionMap.put("/rest/script/*", "anon");
         filterChainDefinitionMap.put("/ctop/checkTaskList/*", "anon");
 

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

@@ -1,7 +1,7 @@
 package org.jeecg.config;
 
 import org.jeecg.common.util.DySmsHelper;
-import org.jeecg.modules.message.handle.impl.EmailSendMsgHandle;
+import cn.com.ctop.common.module.message.handle.impl.EmailSendMsgHandle;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;

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

@@ -9,6 +9,11 @@ import cn.com.ctop.common.module.service.IProjectService;
 import cn.com.ctop.common.module.service.ISysRoleExtService;
 import cn.com.ctop.common.module.service.IUserAllocationService;
 import cn.com.ctop.common.module.utils.*;
+import cn.com.ctop.common.module.vo.SheetInfoVo;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouInfoDTO;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportDailyAccountDTO;
+import cn.com.ctop.kuaishou.modules.report.entity.ProjectAccountDTO;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportDailyAccountService;
 import com.alibaba.excel.EasyExcelFactory;
 import com.alibaba.excel.ExcelWriter;
 import com.alibaba.excel.metadata.Sheet;
@@ -16,6 +21,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -25,12 +31,12 @@ import org.jeecg.common.util.DateUtils;
 import org.jeecg.modules.ctop.entity.Advertiser;
 import org.jeecg.modules.ctop.mapper.ProjectMemberMapper;
 import org.jeecg.modules.ctop.service.IAdvertiserService;
-import org.jeecg.modules.ctop.vo.SheetInfoVo;
-import org.jeecg.modules.excelutil.entity.KuaishouXxlEntity;
+import org.jeecg.modules.excelutil.entity.*;
 import org.jeecg.modules.system.entity.SysCategory;
 import org.jeecg.modules.system.entity.UserCompany;
 import org.jeecg.modules.system.mapper.UserCompanyMapper;
 import org.jeecg.modules.system.service.ISysCategoryService;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -67,7 +73,6 @@ public class AdvertiserController {
     @Autowired
     private IUserAllocationService userAllocationService;
 
-
     /**
      * 查询 公司广告主
      *
@@ -405,7 +410,10 @@ public class AdvertiserController {
      */
     @RequestMapping(value = "/exportXxlDailyReport")
     @ResponseBody
-    public void exportXxl(HttpServletRequest request, HttpServletResponse response, Long projectId, String systemType) throws IOException {
+    public void exportXxl(HttpServletRequest request,
+                          HttpServletResponse response,
+                          Long projectId,
+                          String systemType) throws IOException {
         List<SheetInfoVo> sheets = new ArrayList<>();
         if (null == systemType || "".equals(systemType.trim())) {
             systemType = null;
@@ -441,4 +449,146 @@ public class AdvertiserController {
         outputStream.flush();
         outputStream.close();
     }
+
+    @Autowired
+    private IKuaishouReportDailyAccountService accountService;
+
+    @RequestMapping("/exportKuaishouProjectInfo")
+    public void getKuaishouProjectInfo(@RequestBody KuaishouInfoDTO dto,
+                                       HttpServletRequest request,
+                                       HttpServletResponse response)throws IOException  {
+        Result<PageInfo<ProjectAccountDTO>> result = new Result<>();
+        result.setSuccess(true);
+
+        if(dto.getPageSize() == 0){
+            dto.setPageSize(100000);
+        }
+        OutputStream outputStream = response.getOutputStream();
+        String date = DateUtils.formatDate(new Date());
+        HttpUtils.setResponseHeader(response, "快手效果报表" + date + ".xlsx");
+        ExcelWriter excelWriter = EasyExcelFactory.getWriter(outputStream);
+        String type = dto.getType();
+        if(null!=type&&type.trim().equals("project")){
+            SheetInfoVo projectSheetVo = this.getProjectSheetVo(dto, "项目报表");
+            Sheet sheet = new Sheet( 1, 0, EffecfReportProjectEntity.class);
+            sheet.setSheetName(projectSheetVo.getSheetName());
+            excelWriter.write(projectSheetVo.getDetails(), sheet);
+        }
+        if(null!=type&&type.trim().equals("account")){
+            SheetInfoVo accountSheetVo = this.getAccountSheetVo(dto, "账户报表");
+            Sheet sheet = new Sheet( 1, 0, EffecfReportAccountEntity.class);
+            sheet.setSheetName(accountSheetVo.getSheetName());
+            excelWriter.write(accountSheetVo.getDetails(), sheet);
+        }
+
+        if(null!=type&&type.trim().equals("campaign")){
+            SheetInfoVo planSheetVo = this.getPlanSheetVo(dto, "广告计划报表");
+            Sheet sheet = new Sheet( 1, 0, EffecfReportPlanEntity.class);
+            sheet.setSheetName(planSheetVo.getSheetName());
+            excelWriter.write(planSheetVo.getDetails(), sheet);
+        }
+
+        if(null!=type&&type.trim().equals("group")){
+            SheetInfoVo campaignSheetVo = this.getGroupSheetVo(dto, "广告组报表");
+            Sheet sheet = new Sheet( 1, 0, EffecfReportGroupEntity.class);
+            sheet.setSheetName(campaignSheetVo.getSheetName());
+            excelWriter.write(campaignSheetVo.getDetails(), sheet);
+        }
+
+        if(null!=type&&type.trim().equals("creative")){
+            SheetInfoVo creativeSheetVo = this.getCreativeSheetVo(dto, "广告创意");
+            Sheet sheet = new Sheet( 1, 0, EffecfReportCreativeEntity.class);
+            sheet.setSheetName(creativeSheetVo.getSheetName());
+            excelWriter.write(creativeSheetVo.getDetails(), sheet);
+        }
+
+        excelWriter.finish();
+        outputStream.flush();
+        outputStream.close();
+    }
+
+    private SheetInfoVo getCreativeSheetVo(KuaishouInfoDTO dto, String sheetName) {
+        SheetInfoVo vo = new SheetInfoVo<EffecfReportProjectEntity>();
+        vo.setSheetName(sheetName);
+        PageInfo<KuaishouReportDailyAccountDTO> kuaishouCampaignInfoList = accountService.getKuaishouCreativeInfoByUnitId(dto.getProjectList(), dto.getUnitId(), dto.getStartDate(), dto.getEndDate(),dto.getPageSize(),dto.getPageNum(),dto.getYn());
+        List<KuaishouReportDailyAccountDTO> dtos = kuaishouCampaignInfoList.getList();
+        if(null!=dtos&&!dtos.isEmpty()){
+            List<EffecfReportCreativeEntity> details = new ArrayList<>();
+            for(KuaishouReportDailyAccountDTO dto1:dtos){
+                EffecfReportCreativeEntity entity = new EffecfReportCreativeEntity();
+                BeanUtils.copyProperties(dto1,entity);
+                details.add(entity);
+            }
+            vo.setDetails(details);
+        }
+        return vo;
+    }
+
+    private SheetInfoVo getGroupSheetVo(KuaishouInfoDTO dto, String sheetName) {
+        SheetInfoVo vo = new SheetInfoVo<EffecfReportProjectEntity>();
+        vo.setSheetName(sheetName);
+        PageInfo<KuaishouReportDailyAccountDTO> kuaishouCampaignInfoList = accountService.getKuaishouUnitInfoByCampaignId(dto.getProjectList(), dto.getCampaignId(), dto.getStartDate(), dto.getEndDate(),dto.getPageSize(),dto.getPageNum(),dto.getYn());
+        List<KuaishouReportDailyAccountDTO> dtos = kuaishouCampaignInfoList.getList();
+        if(null!=dtos&&!dtos.isEmpty()){
+            List<EffecfReportGroupEntity> details = new ArrayList<>();
+            for(KuaishouReportDailyAccountDTO dto1:dtos){
+                EffecfReportGroupEntity entity = new EffecfReportGroupEntity();
+                BeanUtils.copyProperties(dto1,entity);
+                details.add(entity);
+            }
+            vo.setDetails(details);
+        }
+        return vo;
+    }
+
+    private SheetInfoVo getPlanSheetVo(KuaishouInfoDTO dto, String sheetName) {
+        SheetInfoVo vo = new SheetInfoVo<EffecfReportProjectEntity>();
+        vo.setSheetName(sheetName);
+        PageInfo<KuaishouReportDailyAccountDTO> kuaishouCampaignInfoList = accountService.getKuaishouCampaignInfoByAccountId(dto.getProjectList(), dto.getAccountId(), dto.getStartDate(), dto.getEndDate(),dto.getPageSize(),dto.getPageNum(),dto.getYn());
+        List<KuaishouReportDailyAccountDTO> dtos = kuaishouCampaignInfoList.getList();
+        if(null!=dtos&&!dtos.isEmpty()){
+            List<EffecfReportPlanEntity> details = new ArrayList<>();
+            for(KuaishouReportDailyAccountDTO dto1:dtos){
+                EffecfReportPlanEntity entity = new EffecfReportPlanEntity();
+                BeanUtils.copyProperties(dto1,entity);
+                details.add(entity);
+            }
+            vo.setDetails(details);
+        }
+        return vo;
+    }
+
+    private SheetInfoVo getAccountSheetVo(KuaishouInfoDTO dto, String sheetName) {
+        SheetInfoVo vo = new SheetInfoVo<EffecfReportProjectEntity>();
+        vo.setSheetName(sheetName);
+        PageInfo<KuaishouReportDailyAccountDTO> kuaishouReportDailyAccountDTOList = accountService.getKuaishouAccountInfoByProjectId(dto.getProjectId(),dto.getProjectList(), dto.getStartDate(), dto.getEndDate(),dto.getPageSize(),dto.getPageNum(),dto.getYn());
+        List<KuaishouReportDailyAccountDTO> dtos = kuaishouReportDailyAccountDTOList.getList();
+        if(null!=dtos&&!dtos.isEmpty()){
+            List<EffecfReportAccountEntity> details = new ArrayList<>();
+            for(KuaishouReportDailyAccountDTO dto1:dtos){
+                EffecfReportAccountEntity entity = new EffecfReportAccountEntity();
+                BeanUtils.copyProperties(dto1,entity);
+                details.add(entity);
+            }
+            vo.setDetails(details);
+        }
+        return vo;
+    }
+
+    private SheetInfoVo getProjectSheetVo(KuaishouInfoDTO dto, String sheetName) {
+        SheetInfoVo vo = new SheetInfoVo<EffecfReportProjectEntity>();
+        vo.setSheetName(sheetName);
+        PageInfo<ProjectAccountDTO> projectAccountDTOList = accountService.getKuaishouProjectInfo(dto.getStartDate(), dto.getEndDate(), dto.getProjectList(),dto.getPageSize(),dto.getPageNum(), "", dto.getYn());
+        List<ProjectAccountDTO> dtos = projectAccountDTOList.getList();
+        if(null!=dtos&&!dtos.isEmpty()){
+            List<EffecfReportProjectEntity> details = new ArrayList<>();
+            for(ProjectAccountDTO dto1:dtos){
+                EffecfReportProjectEntity entity = new EffecfReportProjectEntity();
+                BeanUtils.copyProperties(dto1,entity);
+                details.add(entity);
+            }
+            vo.setDetails(details);
+        }
+        return vo;
+    }
 }

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

@@ -0,0 +1,160 @@
+package org.jeecg.modules.ctop.controller;
+
+import cn.com.ctop.common.module.entity.MaterialTagInfo;
+import cn.com.ctop.common.module.service.IMaterialTagInfoService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+import java.util.Map;
+
+/**
+ * 素材标签信息
+ * @author jeecg-boot
+ * @date   2020-08-27
+ * @version V1.0
+ */
+@Slf4j
+@Api(tags="素材标签信息")
+@RestController
+@RequestMapping("/ctop/materialTagInfo")
+public class MaterialTagInfoController {
+	@Autowired
+	private IMaterialTagInfoService materialTagInfoService;
+
+	/**
+	  * 分页列表查询
+	 * @param materialTagInfo
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@GetMapping(value = "/list")
+	public Result<IPage<MaterialTagInfo>> queryPageList(MaterialTagInfo materialTagInfo,
+                                                        @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+                                                        @RequestParam(name="pageSize", defaultValue="100") Integer pageSize,
+                                                        HttpServletRequest req) {
+		Result<IPage<MaterialTagInfo>> result = new Result<>();
+		QueryWrapper<MaterialTagInfo> queryWrapper = QueryGenerator.initQueryWrapper(materialTagInfo, req.getParameterMap());
+		Page<MaterialTagInfo> page = new Page<>(pageNo, pageSize);
+		queryWrapper.eq("status",1);
+		IPage<MaterialTagInfo> pageList = materialTagInfoService.page(page, queryWrapper);
+		result.setSuccess(true);
+		result.setResult(pageList);
+		return result;
+	}
+
+	/**
+	  *   添加
+	 * @param materialTagInfo
+	 * @return
+	 */
+	@ApiOperation(value="素材标签信息-添加", notes="素材标签信息-添加")
+	@PostMapping(value = "/add")
+	public Result<MaterialTagInfo> add(@RequestBody MaterialTagInfo materialTagInfo) {
+		Result<MaterialTagInfo> result = new Result<>();
+		try {
+			materialTagInfoService.save(materialTagInfo);
+			result.success("添加成功!");
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+			result.error500("操作失败");
+		}
+		return result;
+	}
+
+	/**
+	  *  编辑
+	 * @param materialTagInfo
+	 * @return
+	 */
+	@ApiOperation(value="素材标签信息-编辑", notes="素材标签信息-编辑")
+	@PutMapping(value = "/edit")
+	public Result<MaterialTagInfo> edit(@RequestBody MaterialTagInfo materialTagInfo) {
+		Result<MaterialTagInfo> result = new Result<>();
+		MaterialTagInfo materialTagInfoEntity = materialTagInfoService.getById(materialTagInfo.getId());
+		if(materialTagInfoEntity==null) {
+			result.error500("未找到对应实体");
+		}else {
+			boolean ok = materialTagInfoService.updateById(materialTagInfo);
+			if(ok) {
+				result.success("修改成功!");
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	  *   通过id删除
+	 * @param id
+	 * @return
+	 */
+	@ApiOperation(value="素材标签信息-通过id删除", notes="素材标签信息-通过id删除")
+	@DeleteMapping(value = "/delete")
+	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+		try {
+			materialTagInfoService.removeById(id);
+		} catch (Exception e) {
+			log.error("删除失败",e.getMessage());
+			return Result.error("删除失败!");
+		}
+		return Result.ok("删除成功!");
+	}
+
+	/**
+	  *  批量删除
+	 * @param ids
+	 * @return
+	 */
+	@ApiOperation(value="素材标签信息-批量删除", notes="素材标签信息-批量删除")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<MaterialTagInfo> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		Result<MaterialTagInfo> result = new Result<>();
+		if(ids==null || "".equals(ids.trim())) {
+			result.error500("参数不识别!");
+		}else {
+			materialTagInfoService.removeByIds(Arrays.asList(ids.split(",")));
+			result.success("删除成功!");
+		}
+		return result;
+	}
+
+	@PostMapping("mark")
+	public Map<String,Object> mark(@RequestBody JSONObject data){
+		LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+		return materialTagInfoService.mark(data,user);
+	}
+	/**
+	  * 通过id查询
+	 * @param id
+	 * @return
+	 */
+	@ApiOperation(value="素材标签信息-通过id查询", notes="素材标签信息-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<MaterialTagInfo> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<MaterialTagInfo> result = new Result<>();
+		MaterialTagInfo materialTagInfo = materialTagInfoService.getById(id);
+		if(materialTagInfo==null) {
+			result.error500("未找到对应实体");
+		}else {
+			result.setResult(materialTagInfo);
+			result.setSuccess(true);
+		}
+		return result;
+	}
+
+}

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

@@ -5,6 +5,8 @@ import cn.com.ctop.common.module.entity.SysUser;
 import cn.com.ctop.common.module.service.IProjectService;
 import cn.com.ctop.common.module.service.ISysRoleExtService;
 import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.common.module.utils.ResultMapUtils;
+import cn.com.ctop.common.module.utils.StatusCode;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -120,10 +122,32 @@ public class ProjectMemberController {
             map.put("success", false);
             map.put("code", -1);
         }
-
         return map;
     }
 
+    @GetMapping("/projectList")
+    public Map<String,Object>projectList(){
+        Map<String, Object> result = new HashMap<>();
+        try {
+            String userId = ((LoginUser) SecurityUtils.getSubject().getPrincipal()).getId();
+            String roleCode = sysRoleService.getRoleCodeByUserId(userId);
+            if ("admin".equals(roleCode) || roleCode.contains("sale") || "meidaManager".equals(roleCode)) {
+                List<Project>projects = projectService.list();
+                result.put("data",projects);
+                ResultMapUtils.setResultMap(result, StatusCode.COMMON_SUCCESS);
+                return result;
+            }
+            List<Project> projects = projectMemberService.selectListByUserId(userId);
+            result.put("data",projects);
+            ResultMapUtils.setResultMap(result,StatusCode.COMMON_SUCCESS);
+            return result;
+        } catch (Exception e) {
+            e.printStackTrace();
+            ResultMapUtils.setResultMap(result,StatusCode.COMMON_PARAM_ERROR);
+            return result;
+        }
+    }
+
 
     @GetMapping(value = "/participateListV2")
     public Result<IPage<ProjectMember>> participateListV2(ProjectMember projectMember,

+ 51 - 25
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/TagInfoController.java

@@ -7,14 +7,17 @@ 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.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.modules.system.service.ISysDepartService;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.system.service.ISysRoleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 
  /**
@@ -39,13 +42,13 @@ public class TagInfoController {
 	 * @return
 	 */
 	@GetMapping(value = "/list")
-	public Result<IPage<TagInfo>> queryPageList(TagInfo tagInfo,
-												@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-												@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+	public Result<IPage<TagInfo>> queryPageList(TagInfo tagInfo, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="100") Integer pageSize,
 												HttpServletRequest req) {
 		Result<IPage<TagInfo>> result = new Result<>();
+		LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
 		QueryWrapper<TagInfo> queryWrapper = QueryGenerator.initQueryWrapper(tagInfo, req.getParameterMap());
 		Page<TagInfo> page = new Page<>(pageNo, pageSize);
+		queryWrapper.eq("del_flag",0);
 		IPage<TagInfo> pageList = tagInfoService.page(page, queryWrapper);
 		result.setSuccess(true);
 		result.setResult(pageList);
@@ -61,6 +64,43 @@ public class TagInfoController {
 	public Result<TagInfo> add(@RequestBody TagInfo tagInfo) {
 		Result<TagInfo> result = new Result<>();
 		try {
+			TagInfo getTag = tagInfoService.getByTagCode(tagInfo.getTagCode());
+			if(null!=getTag){
+				result.error500("标签编码已存在");
+				return result;
+			}
+			LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+			tagInfo.setDelFlag(0);
+			if(null == tagInfo.getStatus()){
+				tagInfo.setStatus(1);
+			}
+			tagInfo.setUserId(user.getId());
+			int level = 1;
+			Long parentId = tagInfo.getParentId();
+			if(null!=parentId){
+				TagInfo parentTag = tagInfoService.getById(parentId);
+				if(null == parentTag){
+					result.error500("父级标签不存在");
+					return result;
+				}
+				String tagCode = parentTag.getTagCode()+tagInfo.getTagCode();
+				TagInfo getTag2 = tagInfoService.getByTagCode(tagCode);
+				if(null!=getTag2){
+					result.error500("标签编码已存在");
+					return result;
+				}
+				tagInfo.setTagCategoryId(parentTag.getTagCategoryId());
+				if(parentTag.getLevel() == 1){
+					tagInfo.setFirstTagId(parentTag.getId());
+				}
+				if(parentTag.getLevel() == 2){
+					tagInfo.setSecendTagId(parentTag.getId());
+					tagInfo.setFirstTagId(parentTag.getParentId());
+				}
+				level = parentTag.getLevel()+1;
+				tagInfo.setTagCode(tagCode);
+			}
+			tagInfo.setLevel(level);
 			tagInfoService.save(tagInfo);
 			result.success("添加成功!");
 		} catch (Exception e) {
@@ -75,13 +115,14 @@ public class TagInfoController {
 	 * @param tagInfo
 	 * @return
 	 */
-	@PutMapping(value = "/edit")
+	@PostMapping("/edit")
 	public Result<TagInfo> edit(@RequestBody TagInfo tagInfo) {
-		Result<TagInfo> result = new Result<TagInfo>();
+		Result<TagInfo> result = new Result<>();
 		TagInfo tagInfoEntity = tagInfoService.getById(tagInfo.getId());
 		if(tagInfoEntity==null) {
 			result.error500("未找到对应实体");
 		}else {
+			tagInfo.setUpdateTime(new Date());
 			boolean ok = tagInfoService.updateById(tagInfo);
 			if(ok) {
 				result.success("修改成功!");
@@ -92,22 +133,6 @@ public class TagInfoController {
 	}
 
 	/**
-	  *   通过id删除
-	 * @param id
-	 * @return
-	 */
-	@DeleteMapping(value = "/delete")
-	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
-		try {
-			tagInfoService.removeById(id);
-		} catch (Exception e) {
-			log.error("删除失败",e.getMessage());
-			return Result.error("删除失败!");
-		}
-		return Result.ok("删除成功!");
-	}
-
-	/**
 	  *  批量删除
 	 * @param ids
 	 * @return
@@ -141,14 +166,15 @@ public class TagInfoController {
 		}
 		return result;
 	}
-
 	@Autowired
-    private ISysDepartService sysDepartService;
+	private ISysRoleService roleService;
+
 	@RequestMapping(value = "/queryTreeList", method = RequestMethod.GET)
     public Result<List<TagInfoTreeModel>> queryTreeList() {
 	    Result<List<TagInfoTreeModel>> result = new Result<>();
 	    try {
-            List<TagInfoTreeModel> list = tagInfoService.queryTreeList();
+			LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+            List<TagInfoTreeModel> list = tagInfoService.queryTreeList(user.getId());
 	        result.setResult(list);
 	        result.setSuccess(true);
 	    } catch (Exception e) {

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

@@ -15,6 +15,7 @@ import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.ctop.entity.UReportFile;
 import org.jeecg.modules.ctop.entity.UReportFileBindUser;
 import org.jeecg.modules.ctop.service.IUReportFileBindUserService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,6 +24,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -207,4 +209,28 @@ public class UReportFileBindUserController {
         }
         return result;
     }
+
+
+    /**
+     *  订阅按钮
+     */
+    @PostMapping(value = "/subscribe")
+    public Result subscribe(@RequestParam(name = "fileId") String fileId) {
+        Result<UReportFile> result = new Result<>();
+        QueryWrapper<UReportFileBindUser> queryWrapper=new QueryWrapper();
+        queryWrapper.eq("file_id",fileId);
+        queryWrapper.ne("user_id","e9ca23d68d884d4ebb19d07889727dae");
+        List<UReportFileBindUser> uReportFileBindUser = uReportFileBindUserService.list(queryWrapper);
+        if (uReportFileBindUser.isEmpty()) {
+            result.error500("请绑定用户后订阅");
+        } else {
+            uReportFileBindUser.forEach(it->it.setIsSubscribe(true));
+            boolean ok = uReportFileBindUserService.updateBatchById(uReportFileBindUser);
+            if (ok) {
+                result.success("订阅成功!");
+            }
+        }
+        return result;
+    }
+
 }

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

@@ -5,21 +5,18 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.bstek.ureport.export.ExportManager;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.modules.ctop.entity.UReportFile;
-import org.jeecg.modules.ctop.entity.UReportFileBindUser;
 import org.jeecg.modules.ctop.service.IUReportFileService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.Arrays;
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -193,4 +190,5 @@ public class UReportFileController {
         }
         return result;
     }
+
 }

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

@@ -1,5 +1,6 @@
 package org.jeecg.modules.ctop.mapper;
 
+import cn.com.ctop.common.module.entity.Project;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.ctop.entity.ProjectMember;
@@ -36,4 +37,6 @@ public interface ProjectMemberMapper extends BaseMapper<ProjectMember> {
     List<ProjectMember> getSaleProjects(@Param("userId")String userId, @Param("mediaIds")List<Integer> mediaIds);
 
     List<Long> getProjectByMap(@Param("userId") String userId);
+
+    List<Project> getProjectByUserId(@Param("userId")String userId);
 }

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

@@ -149,5 +149,13 @@
         where user_id = #{userId}
         group by project_id
     </select>
+    <select id="getProjectByUserId" resultType="cn.com.ctop.common.module.entity.Project">
+        select
+            project.*
+        from
+            ctop_project_member member left join ctop_project project on project.id = member.project_id
+        where
+            member.user_id = #{userId}
+    </select>
 
 </mapper>

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

@@ -1,9 +1,9 @@
 package org.jeecg.modules.ctop.service;
 
 import cn.com.ctop.common.module.entity.UserAllocation;
+import cn.com.ctop.common.module.vo.SheetInfoVo;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.ctop.entity.Advertiser;
-import org.jeecg.modules.ctop.vo.SheetInfoVo;
 
 import java.text.ParseException;
 import java.util.List;

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

@@ -31,4 +31,6 @@ public interface IProjectMemberService extends IService<ProjectMember> {
     List<ProjectMember> getSaleOwnProjects(List<Integer> mediaIds);
 
     List<Long> getProjectByMap(String userId);
+
+    List<Project> selectListByUserId(String userId);
 }

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

@@ -2,13 +2,13 @@ package org.jeecg.modules.ctop.service.impl;
 
 import cn.com.ctop.common.module.entity.UserAllocation;
 import cn.com.ctop.common.module.service.IUserAllocationService;
+import cn.com.ctop.common.module.vo.SheetInfoVo;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.jeecg.common.util.DateUtils;
 import org.jeecg.modules.ctop.entity.Advertiser;
 import org.jeecg.modules.ctop.mapper.AdvertiserMapper;
 import org.jeecg.modules.ctop.service.IAdvertiserService;
-import org.jeecg.modules.ctop.vo.SheetInfoVo;
 import org.jeecg.modules.excelutil.entity.KuaishouXxlEntity;
 import org.jeecg.modules.excelutil.entity.YdPlanAggregateEntity;
 import org.jeecg.modules.excelutil.entity.YdWeekAggregateEntity;

+ 5 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/KuaiShouUploadServiceImpl.java

@@ -27,6 +27,7 @@ import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
@@ -161,10 +162,6 @@ public class KuaiShouUploadServiceImpl implements IKuaiShouUploadService {
             e.printStackTrace();
         }
     }
-
-    @Autowired
-    private RestTemplate rest;
-
     private String exceptInfoForRestTemplate(String url, Map<String, Object> paramMap, Map<String, String> headerMap) throws ParseException {
         try {
             MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
@@ -178,6 +175,10 @@ public class KuaiShouUploadServiceImpl implements IKuaiShouUploadService {
                         headers.add(key, headerMap.get(key));
                     }
                 }
+                SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
+                requestFactory.setConnectTimeout(1000 * 500);// 设置超时
+                requestFactory.setReadTimeout(1000 * 500);
+                RestTemplate rest = new RestTemplate(requestFactory);
                 HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(param, headers);
                 ResponseEntity<String> responseEntity = rest.exchange(url, HttpMethod.POST, httpEntity, String.class);
                 return responseEntity.getBody();

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

@@ -194,6 +194,11 @@ public class ProjectMemberServiceImpl extends ServiceImpl<ProjectMemberMapper, P
         return memberMapper.getProjectByMap(userId);
     }
 
+    @Override
+    public List<Project> selectListByUserId(String userId) {
+        return memberMapper.getProjectByUserId(userId);
+    }
+
     //视频报表
     @Override
     public List<ProjectMember> getOwnProjects(List<Integer> mediaIds) {

+ 4 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/UReportFileBindUserServiceImpl.java

@@ -1,13 +1,13 @@
 package org.jeecg.modules.ctop.service.impl;
 
-import cn.com.ctop.common.module.utils.ResultMapUtils;
-import cn.com.ctop.common.module.utils.StatusCode;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.jeecg.modules.ctop.entity.UReportFileBindUser;
 import org.jeecg.modules.ctop.mapper.UReportFileBindUserMapper;
 import org.jeecg.modules.ctop.service.IUReportFileBindUserService;
+import cn.com.ctop.common.module.utils.ResultMapUtils;
+import cn.com.ctop.common.module.utils.StatusCode;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.springframework.stereotype.Service;
 
 import java.util.HashMap;

+ 4 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/UReportFileServiceImpl.java

@@ -1,16 +1,16 @@
 package org.jeecg.modules.ctop.service.impl;
 
 import cn.com.ctop.common.module.entity.SysUser;
-import cn.com.ctop.common.module.utils.ResultMapUtils;
-import cn.com.ctop.common.module.utils.StatusCode;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.jeecg.modules.ctop.entity.UReportFile;
 import org.jeecg.modules.ctop.entity.UReportFileBindUser;
 import org.jeecg.modules.ctop.mapper.UReportFileMapper;
 import org.jeecg.modules.ctop.service.IUReportFileBindUserService;
 import org.jeecg.modules.ctop.service.IUReportFileService;
+import cn.com.ctop.common.module.utils.ResultMapUtils;
+import cn.com.ctop.common.module.utils.StatusCode;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;

+ 299 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/excelutil/entity/EffecfReportAccountEntity.java

@@ -0,0 +1,299 @@
+package org.jeecg.modules.excelutil.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.metadata.BaseRowModel;
+
+import java.math.BigDecimal;
+
+public class EffecfReportAccountEntity extends BaseRowModel {
+    @ExcelProperty(index = 1, value = "账户名称")
+    private String authName;
+    @ExcelProperty(index = 2, value = "账户id")
+    private String accountId;
+    @ExcelProperty(index = 3, value = "项目名称")
+    private String projectName;
+    @ExcelProperty(index = 4, value = "消耗")
+    private BigDecimal charge;
+    @ExcelProperty(index = 5, value = "封面曝光数")
+    private Long photoShow;
+    @ExcelProperty(index = 6, value = "封面点击数")
+    private Long photoClick;
+    @ExcelProperty(index = 7, value = "素材曝光数")
+    private Long aclick;
+    @ExcelProperty(index = 8, value = "行为数")
+    private Long bclick;
+    @ExcelProperty(index = 9, value = "激活数")
+    private Long activation;
+    @ExcelProperty(index = 10, value = "注册数")
+    private Long eventRegister;
+    @ExcelProperty(index = 11, value = "点击数")
+    private Long submit;
+    @ExcelProperty(index = 12, value = "次留数")
+    private Long eventNextDayStay;
+    @ExcelProperty(index = 13, value = "次留成本")
+    private BigDecimal eventNextDayStayCost;
+    @ExcelProperty(index = 14, value = "激活成本")
+    private BigDecimal activationCost;
+    @ExcelProperty(index = 15, value = "封面点击率")
+    private String photoClickRatio;
+    @ExcelProperty(index = 16, value = "行为率")
+    private String actionRate;
+    @ExcelProperty(index = 17, value = "千次曝光花费")
+    private BigDecimal impression1kCost;
+    @ExcelProperty(index = 18, value = "封面点击单价")
+    private BigDecimal photoClickCost;
+    @ExcelProperty(index = 19, value = "行为单价")
+    private BigDecimal actionCost;
+    @ExcelProperty(index = 20, value = "分享数")
+    private Long photoShare;
+    @ExcelProperty(index = 21, value = "评论数")
+    private Long photoComment;
+    @ExcelProperty(index = 22, value = "点赞数")
+    private Long photoLike;
+    @ExcelProperty(index = 23, value = "新增关注数")
+    private Long follow;
+    @ExcelProperty(index = 24, value = "举报数")
+    private Long report;
+    @ExcelProperty(index = 25, value = "取消关注数")
+    private Long cancelFollow;
+    @ExcelProperty(index = 26, value = "拉黑数")
+    private Long block;
+    @ExcelProperty(index = 27, value = "减少此类作品数")
+    private Long nagative;
+    @ExcelProperty(index = 28, value = "安卓下载开始数")
+    private Long downloadStarted;
+    @ExcelProperty(index = 29, value = "安卓下载完成数")
+    private Long downloadCompleted;
+
+    public String getAuthName() {
+        return authName;
+    }
+
+    public void setAuthName(String authName) {
+        this.authName = authName;
+    }
+
+    public String getAccountId() {
+        return accountId;
+    }
+
+    public void setAccountId(String accountId) {
+        this.accountId = accountId;
+    }
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public BigDecimal getCharge() {
+        return charge;
+    }
+
+    public void setCharge(BigDecimal charge) {
+        this.charge = charge;
+    }
+
+    public Long getPhotoShow() {
+        return photoShow;
+    }
+
+    public void setPhotoShow(Long photoShow) {
+        this.photoShow = photoShow;
+    }
+
+    public Long getPhotoClick() {
+        return photoClick;
+    }
+
+    public void setPhotoClick(Long photoClick) {
+        this.photoClick = photoClick;
+    }
+
+    public Long getAclick() {
+        return aclick;
+    }
+
+    public void setAclick(Long aclick) {
+        this.aclick = aclick;
+    }
+
+    public Long getBclick() {
+        return bclick;
+    }
+
+    public void setBclick(Long bclick) {
+        this.bclick = bclick;
+    }
+
+    public Long getActivation() {
+        return activation;
+    }
+
+    public void setActivation(Long activation) {
+        this.activation = activation;
+    }
+
+    public Long getEventRegister() {
+        return eventRegister;
+    }
+
+    public void setEventRegister(Long eventRegister) {
+        this.eventRegister = eventRegister;
+    }
+
+    public Long getSubmit() {
+        return submit;
+    }
+
+    public void setSubmit(Long submit) {
+        this.submit = submit;
+    }
+
+    public Long getEventNextDayStay() {
+        return eventNextDayStay;
+    }
+
+    public void setEventNextDayStay(Long eventNextDayStay) {
+        this.eventNextDayStay = eventNextDayStay;
+    }
+
+    public BigDecimal getEventNextDayStayCost() {
+        return eventNextDayStayCost;
+    }
+
+    public void setEventNextDayStayCost(BigDecimal eventNextDayStayCost) {
+        this.eventNextDayStayCost = eventNextDayStayCost;
+    }
+
+    public BigDecimal getActivationCost() {
+        return activationCost;
+    }
+
+    public void setActivationCost(BigDecimal activationCost) {
+        this.activationCost = activationCost;
+    }
+
+    public String getPhotoClickRatio() {
+        return photoClickRatio;
+    }
+
+    public void setPhotoClickRatio(String photoClickRatio) {
+        this.photoClickRatio = photoClickRatio;
+    }
+
+    public String getActionRate() {
+        return actionRate;
+    }
+
+    public void setActionRate(String actionRate) {
+        this.actionRate = actionRate;
+    }
+
+    public BigDecimal getImpression1kCost() {
+        return impression1kCost;
+    }
+
+    public void setImpression1kCost(BigDecimal impression1kCost) {
+        this.impression1kCost = impression1kCost;
+    }
+
+    public BigDecimal getPhotoClickCost() {
+        return photoClickCost;
+    }
+
+    public void setPhotoClickCost(BigDecimal photoClickCost) {
+        this.photoClickCost = photoClickCost;
+    }
+
+    public BigDecimal getActionCost() {
+        return actionCost;
+    }
+
+    public void setActionCost(BigDecimal actionCost) {
+        this.actionCost = actionCost;
+    }
+
+    public Long getPhotoShare() {
+        return photoShare;
+    }
+
+    public void setPhotoShare(Long photoShare) {
+        this.photoShare = photoShare;
+    }
+
+    public Long getPhotoComment() {
+        return photoComment;
+    }
+
+    public void setPhotoComment(Long photoComment) {
+        this.photoComment = photoComment;
+    }
+
+    public Long getPhotoLike() {
+        return photoLike;
+    }
+
+    public void setPhotoLike(Long photoLike) {
+        this.photoLike = photoLike;
+    }
+
+    public Long getFollow() {
+        return follow;
+    }
+
+    public void setFollow(Long follow) {
+        this.follow = follow;
+    }
+
+    public Long getReport() {
+        return report;
+    }
+
+    public void setReport(Long report) {
+        this.report = report;
+    }
+
+    public Long getCancelFollow() {
+        return cancelFollow;
+    }
+
+    public void setCancelFollow(Long cancelFollow) {
+        this.cancelFollow = cancelFollow;
+    }
+
+    public Long getBlock() {
+        return block;
+    }
+
+    public void setBlock(Long block) {
+        this.block = block;
+    }
+
+    public Long getNagative() {
+        return nagative;
+    }
+
+    public void setNagative(Long nagative) {
+        this.nagative = nagative;
+    }
+
+    public Long getDownloadStarted() {
+        return downloadStarted;
+    }
+
+    public void setDownloadStarted(Long downloadStarted) {
+        this.downloadStarted = downloadStarted;
+    }
+
+    public Long getDownloadCompleted() {
+        return downloadCompleted;
+    }
+
+    public void setDownloadCompleted(Long downloadCompleted) {
+        this.downloadCompleted = downloadCompleted;
+    }
+}

+ 302 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/excelutil/entity/EffecfReportCreativeEntity.java

@@ -0,0 +1,302 @@
+package org.jeecg.modules.excelutil.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.metadata.BaseRowModel;
+
+import java.math.BigDecimal;
+
+/**
+ * @author 宋英豪
+ */
+public class EffecfReportCreativeEntity extends BaseRowModel {
+    @ExcelProperty(index = 1, value = "创意视频url")
+    private String url;
+    @ExcelProperty(index = 2, value = "创意名称")
+    private String creativeName;
+    @ExcelProperty(index = 3, value = "广告组名称")
+    private String campaignName;
+    @ExcelProperty(index = 4, value = "消耗")
+    private BigDecimal charge;
+    @ExcelProperty(index = 5, value = "封面曝光数")
+    private Long photoShow;
+    @ExcelProperty(index = 6, value = "封面点击数")
+    private Long photoClick;
+    @ExcelProperty(index = 7, value = "素材曝光数")
+    private Long aclick;
+    @ExcelProperty(index = 8, value = "行为数")
+    private Long bclick;
+    @ExcelProperty(index = 9, value = "激活数")
+    private Long activation;
+    @ExcelProperty(index = 10, value = "注册数")
+    private Long eventRegister;
+    @ExcelProperty(index = 11, value = "点击数")
+    private Long submit;
+    @ExcelProperty(index = 12, value = "次留数")
+    private Long eventNextDayStay;
+    @ExcelProperty(index = 13, value = "次留成本")
+    private BigDecimal eventNextDayStayCost;
+    @ExcelProperty(index = 14, value = "激活成本")
+    private BigDecimal activationCost;
+    @ExcelProperty(index = 15, value = "封面点击率")
+    private String photoClickRatio;
+    @ExcelProperty(index = 16, value = "行为率")
+    private String actionRate;
+    @ExcelProperty(index = 17, value = "千次曝光花费")
+    private BigDecimal impression1kCost;
+    @ExcelProperty(index = 18, value = "封面点击单价")
+    private BigDecimal photoClickCost;
+    @ExcelProperty(index = 19, value = "行为单价")
+    private BigDecimal actionCost;
+    @ExcelProperty(index = 20, value = "分享数")
+    private Long photoShare;
+    @ExcelProperty(index = 21, value = "评论数")
+    private Long photoComment;
+    @ExcelProperty(index = 22, value = "点赞数")
+    private Long photoLike;
+    @ExcelProperty(index = 23, value = "新增关注数")
+    private Long follow;
+    @ExcelProperty(index = 24, value = "举报数")
+    private Long report;
+    @ExcelProperty(index = 25, value = "取消关注数")
+    private Long cancelFollow;
+    @ExcelProperty(index = 26, value = "拉黑数")
+    private Long block;
+    @ExcelProperty(index = 27, value = "减少此类作品数")
+    private Long nagative;
+    @ExcelProperty(index = 28, value = "安卓下载开始数")
+    private Long downloadStarted;
+    @ExcelProperty(index = 29, value = "安卓下载完成数")
+    private Long downloadCompleted;
+
+    public BigDecimal getCharge() {
+        return charge;
+    }
+
+    public void setCharge(BigDecimal charge) {
+        this.charge = charge;
+    }
+
+    public Long getPhotoShow() {
+        return photoShow;
+    }
+
+    public void setPhotoShow(Long photoShow) {
+        this.photoShow = photoShow;
+    }
+
+    public Long getPhotoClick() {
+        return photoClick;
+    }
+
+    public void setPhotoClick(Long photoClick) {
+        this.photoClick = photoClick;
+    }
+
+    public Long getAclick() {
+        return aclick;
+    }
+
+    public void setAclick(Long aclick) {
+        this.aclick = aclick;
+    }
+
+    public Long getBclick() {
+        return bclick;
+    }
+
+    public void setBclick(Long bclick) {
+        this.bclick = bclick;
+    }
+
+    public Long getActivation() {
+        return activation;
+    }
+
+    public void setActivation(Long activation) {
+        this.activation = activation;
+    }
+
+    public Long getEventRegister() {
+        return eventRegister;
+    }
+
+    public void setEventRegister(Long eventRegister) {
+        this.eventRegister = eventRegister;
+    }
+
+    public Long getSubmit() {
+        return submit;
+    }
+
+    public void setSubmit(Long submit) {
+        this.submit = submit;
+    }
+
+    public Long getEventNextDayStay() {
+        return eventNextDayStay;
+    }
+
+    public void setEventNextDayStay(Long eventNextDayStay) {
+        this.eventNextDayStay = eventNextDayStay;
+    }
+
+    public BigDecimal getEventNextDayStayCost() {
+        return eventNextDayStayCost;
+    }
+
+    public void setEventNextDayStayCost(BigDecimal eventNextDayStayCost) {
+        this.eventNextDayStayCost = eventNextDayStayCost;
+    }
+
+    public BigDecimal getActivationCost() {
+        return activationCost;
+    }
+
+    public void setActivationCost(BigDecimal activationCost) {
+        this.activationCost = activationCost;
+    }
+
+    public String getPhotoClickRatio() {
+        return photoClickRatio;
+    }
+
+    public void setPhotoClickRatio(String photoClickRatio) {
+        this.photoClickRatio = photoClickRatio;
+    }
+
+    public String getActionRate() {
+        return actionRate;
+    }
+
+    public void setActionRate(String actionRate) {
+        this.actionRate = actionRate;
+    }
+
+    public BigDecimal getImpression1kCost() {
+        return impression1kCost;
+    }
+
+    public void setImpression1kCost(BigDecimal impression1kCost) {
+        this.impression1kCost = impression1kCost;
+    }
+
+    public BigDecimal getPhotoClickCost() {
+        return photoClickCost;
+    }
+
+    public void setPhotoClickCost(BigDecimal photoClickCost) {
+        this.photoClickCost = photoClickCost;
+    }
+
+    public BigDecimal getActionCost() {
+        return actionCost;
+    }
+
+    public void setActionCost(BigDecimal actionCost) {
+        this.actionCost = actionCost;
+    }
+
+    public Long getPhotoShare() {
+        return photoShare;
+    }
+
+    public void setPhotoShare(Long photoShare) {
+        this.photoShare = photoShare;
+    }
+
+    public Long getPhotoComment() {
+        return photoComment;
+    }
+
+    public void setPhotoComment(Long photoComment) {
+        this.photoComment = photoComment;
+    }
+
+    public Long getPhotoLike() {
+        return photoLike;
+    }
+
+    public void setPhotoLike(Long photoLike) {
+        this.photoLike = photoLike;
+    }
+
+    public Long getFollow() {
+        return follow;
+    }
+
+    public void setFollow(Long follow) {
+        this.follow = follow;
+    }
+
+    public Long getReport() {
+        return report;
+    }
+
+    public void setReport(Long report) {
+        this.report = report;
+    }
+
+    public Long getCancelFollow() {
+        return cancelFollow;
+    }
+
+    public void setCancelFollow(Long cancelFollow) {
+        this.cancelFollow = cancelFollow;
+    }
+
+    public Long getBlock() {
+        return block;
+    }
+
+    public void setBlock(Long block) {
+        this.block = block;
+    }
+
+    public Long getNagative() {
+        return nagative;
+    }
+
+    public void setNagative(Long nagative) {
+        this.nagative = nagative;
+    }
+
+    public Long getDownloadStarted() {
+        return downloadStarted;
+    }
+
+    public void setDownloadStarted(Long downloadStarted) {
+        this.downloadStarted = downloadStarted;
+    }
+
+    public Long getDownloadCompleted() {
+        return downloadCompleted;
+    }
+
+    public void setDownloadCompleted(Long downloadCompleted) {
+        this.downloadCompleted = downloadCompleted;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getCreativeName() {
+        return creativeName;
+    }
+
+    public void setCreativeName(String creativeName) {
+        this.creativeName = creativeName;
+    }
+
+    public String getCampaignName() {
+        return campaignName;
+    }
+
+    public void setCampaignName(String campaignName) {
+        this.campaignName = campaignName;
+    }
+}

+ 299 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/excelutil/entity/EffecfReportGroupEntity.java

@@ -0,0 +1,299 @@
+package org.jeecg.modules.excelutil.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.metadata.BaseRowModel;
+
+import java.math.BigDecimal;
+
+public class EffecfReportGroupEntity extends BaseRowModel {
+    @ExcelProperty(index = 1, value = "广告组名称")
+    private String unitName;
+    @ExcelProperty(index = 2, value = "广告组id")
+    private Long unitId;
+    @ExcelProperty(index = 3, value = "计划名称")
+    private String campaignName;
+    @ExcelProperty(index = 4, value = "消耗")
+    private BigDecimal charge;
+    @ExcelProperty(index = 5, value = "封面曝光数")
+    private Long photoShow;
+    @ExcelProperty(index = 6, value = "封面点击数")
+    private Long photoClick;
+    @ExcelProperty(index = 7, value = "素材曝光数")
+    private Long aclick;
+    @ExcelProperty(index = 8, value = "行为数")
+    private Long bclick;
+    @ExcelProperty(index = 9, value = "激活数")
+    private Long activation;
+    @ExcelProperty(index = 10, value = "注册数")
+    private Long eventRegister;
+    @ExcelProperty(index = 11, value = "点击数")
+    private Long submit;
+    @ExcelProperty(index = 12, value = "次留数")
+    private Long eventNextDayStay;
+    @ExcelProperty(index = 13, value = "次留成本")
+    private BigDecimal eventNextDayStayCost;
+    @ExcelProperty(index = 14, value = "激活成本")
+    private BigDecimal activationCost;
+    @ExcelProperty(index = 15, value = "封面点击率")
+    private String photoClickRatio;
+    @ExcelProperty(index = 16, value = "行为率")
+    private String actionRate;
+    @ExcelProperty(index = 17, value = "千次曝光花费")
+    private BigDecimal impression1kCost;
+    @ExcelProperty(index = 18, value = "封面点击单价")
+    private BigDecimal photoClickCost;
+    @ExcelProperty(index = 19, value = "行为单价")
+    private BigDecimal actionCost;
+    @ExcelProperty(index = 20, value = "分享数")
+    private Long photoShare;
+    @ExcelProperty(index = 21, value = "评论数")
+    private Long photoComment;
+    @ExcelProperty(index = 22, value = "点赞数")
+    private Long photoLike;
+    @ExcelProperty(index = 23, value = "新增关注数")
+    private Long follow;
+    @ExcelProperty(index = 24, value = "举报数")
+    private Long report;
+    @ExcelProperty(index = 25, value = "取消关注数")
+    private Long cancelFollow;
+    @ExcelProperty(index = 26, value = "拉黑数")
+    private Long block;
+    @ExcelProperty(index = 27, value = "减少此类作品数")
+    private Long nagative;
+    @ExcelProperty(index = 28, value = "安卓下载开始数")
+    private Long downloadStarted;
+    @ExcelProperty(index = 29, value = "安卓下载完成数")
+    private Long downloadCompleted;
+
+    public BigDecimal getCharge() {
+        return charge;
+    }
+
+    public void setCharge(BigDecimal charge) {
+        this.charge = charge;
+    }
+
+    public Long getPhotoShow() {
+        return photoShow;
+    }
+
+    public void setPhotoShow(Long photoShow) {
+        this.photoShow = photoShow;
+    }
+
+    public Long getPhotoClick() {
+        return photoClick;
+    }
+
+    public void setPhotoClick(Long photoClick) {
+        this.photoClick = photoClick;
+    }
+
+    public Long getAclick() {
+        return aclick;
+    }
+
+    public void setAclick(Long aclick) {
+        this.aclick = aclick;
+    }
+
+    public Long getBclick() {
+        return bclick;
+    }
+
+    public void setBclick(Long bclick) {
+        this.bclick = bclick;
+    }
+
+    public Long getActivation() {
+        return activation;
+    }
+
+    public void setActivation(Long activation) {
+        this.activation = activation;
+    }
+
+    public Long getEventRegister() {
+        return eventRegister;
+    }
+
+    public void setEventRegister(Long eventRegister) {
+        this.eventRegister = eventRegister;
+    }
+
+    public Long getSubmit() {
+        return submit;
+    }
+
+    public void setSubmit(Long submit) {
+        this.submit = submit;
+    }
+
+    public Long getEventNextDayStay() {
+        return eventNextDayStay;
+    }
+
+    public void setEventNextDayStay(Long eventNextDayStay) {
+        this.eventNextDayStay = eventNextDayStay;
+    }
+
+    public BigDecimal getEventNextDayStayCost() {
+        return eventNextDayStayCost;
+    }
+
+    public void setEventNextDayStayCost(BigDecimal eventNextDayStayCost) {
+        this.eventNextDayStayCost = eventNextDayStayCost;
+    }
+
+    public BigDecimal getActivationCost() {
+        return activationCost;
+    }
+
+    public void setActivationCost(BigDecimal activationCost) {
+        this.activationCost = activationCost;
+    }
+
+    public String getPhotoClickRatio() {
+        return photoClickRatio;
+    }
+
+    public void setPhotoClickRatio(String photoClickRatio) {
+        this.photoClickRatio = photoClickRatio;
+    }
+
+    public String getActionRate() {
+        return actionRate;
+    }
+
+    public void setActionRate(String actionRate) {
+        this.actionRate = actionRate;
+    }
+
+    public BigDecimal getImpression1kCost() {
+        return impression1kCost;
+    }
+
+    public void setImpression1kCost(BigDecimal impression1kCost) {
+        this.impression1kCost = impression1kCost;
+    }
+
+    public BigDecimal getPhotoClickCost() {
+        return photoClickCost;
+    }
+
+    public void setPhotoClickCost(BigDecimal photoClickCost) {
+        this.photoClickCost = photoClickCost;
+    }
+
+    public BigDecimal getActionCost() {
+        return actionCost;
+    }
+
+    public void setActionCost(BigDecimal actionCost) {
+        this.actionCost = actionCost;
+    }
+
+    public Long getPhotoShare() {
+        return photoShare;
+    }
+
+    public void setPhotoShare(Long photoShare) {
+        this.photoShare = photoShare;
+    }
+
+    public Long getPhotoComment() {
+        return photoComment;
+    }
+
+    public void setPhotoComment(Long photoComment) {
+        this.photoComment = photoComment;
+    }
+
+    public Long getPhotoLike() {
+        return photoLike;
+    }
+
+    public void setPhotoLike(Long photoLike) {
+        this.photoLike = photoLike;
+    }
+
+    public Long getFollow() {
+        return follow;
+    }
+
+    public void setFollow(Long follow) {
+        this.follow = follow;
+    }
+
+    public Long getReport() {
+        return report;
+    }
+
+    public void setReport(Long report) {
+        this.report = report;
+    }
+
+    public Long getCancelFollow() {
+        return cancelFollow;
+    }
+
+    public void setCancelFollow(Long cancelFollow) {
+        this.cancelFollow = cancelFollow;
+    }
+
+    public Long getBlock() {
+        return block;
+    }
+
+    public void setBlock(Long block) {
+        this.block = block;
+    }
+
+    public Long getNagative() {
+        return nagative;
+    }
+
+    public void setNagative(Long nagative) {
+        this.nagative = nagative;
+    }
+
+    public Long getDownloadStarted() {
+        return downloadStarted;
+    }
+
+    public void setDownloadStarted(Long downloadStarted) {
+        this.downloadStarted = downloadStarted;
+    }
+
+    public Long getDownloadCompleted() {
+        return downloadCompleted;
+    }
+
+    public void setDownloadCompleted(Long downloadCompleted) {
+        this.downloadCompleted = downloadCompleted;
+    }
+
+    public Long getUnitId() {
+        return unitId;
+    }
+
+    public void setUnitId(Long unitId) {
+        this.unitId = unitId;
+    }
+
+    public String getUnitName() {
+        return unitName;
+    }
+
+    public void setUnitName(String unitName) {
+        this.unitName = unitName;
+    }
+
+    public String getCampaignName() {
+        return campaignName;
+    }
+
+    public void setCampaignName(String campaignName) {
+        this.campaignName = campaignName;
+    }
+}

+ 299 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/excelutil/entity/EffecfReportPlanEntity.java

@@ -0,0 +1,299 @@
+package org.jeecg.modules.excelutil.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.metadata.BaseRowModel;
+
+import java.math.BigDecimal;
+
+public class EffecfReportPlanEntity extends BaseRowModel {
+    @ExcelProperty(index = 1, value = "计划名称")
+    private String campaignName;
+    @ExcelProperty(index = 2, value = "计划id")
+    private Long campaignId;
+    @ExcelProperty(index = 3, value = "账户名称")
+    private String authName;
+    @ExcelProperty(index = 4, value = "消耗")
+    private BigDecimal charge;
+    @ExcelProperty(index = 5, value = "封面曝光数")
+    private Long photoShow;
+    @ExcelProperty(index = 6, value = "封面点击数")
+    private Long photoClick;
+    @ExcelProperty(index = 7, value = "素材曝光数")
+    private Long aclick;
+    @ExcelProperty(index = 8, value = "行为数")
+    private Long bclick;
+    @ExcelProperty(index = 9, value = "激活数")
+    private Long activation;
+    @ExcelProperty(index = 10, value = "注册数")
+    private Long eventRegister;
+    @ExcelProperty(index = 11, value = "点击数")
+    private Long submit;
+    @ExcelProperty(index = 12, value = "次留数")
+    private Long eventNextDayStay;
+    @ExcelProperty(index = 13, value = "次留成本")
+    private BigDecimal eventNextDayStayCost;
+    @ExcelProperty(index = 14, value = "激活成本")
+    private BigDecimal activationCost;
+    @ExcelProperty(index = 15, value = "封面点击率")
+    private String photoClickRatio;
+    @ExcelProperty(index = 16, value = "行为率")
+    private String actionRate;
+    @ExcelProperty(index = 17, value = "千次曝光花费")
+    private BigDecimal impression1kCost;
+    @ExcelProperty(index = 18, value = "封面点击单价")
+    private BigDecimal photoClickCost;
+    @ExcelProperty(index = 19, value = "行为单价")
+    private BigDecimal actionCost;
+    @ExcelProperty(index = 20, value = "分享数")
+    private Long photoShare;
+    @ExcelProperty(index = 21, value = "评论数")
+    private Long photoComment;
+    @ExcelProperty(index = 22, value = "点赞数")
+    private Long photoLike;
+    @ExcelProperty(index = 23, value = "新增关注数")
+    private Long follow;
+    @ExcelProperty(index = 24, value = "举报数")
+    private Long report;
+    @ExcelProperty(index = 25, value = "取消关注数")
+    private Long cancelFollow;
+    @ExcelProperty(index = 26, value = "拉黑数")
+    private Long block;
+    @ExcelProperty(index = 27, value = "减少此类作品数")
+    private Long nagative;
+    @ExcelProperty(index = 28, value = "安卓下载开始数")
+    private Long downloadStarted;
+    @ExcelProperty(index = 29, value = "安卓下载完成数")
+    private Long downloadCompleted;
+
+    public String getAuthName() {
+        return authName;
+    }
+
+    public void setAuthName(String authName) {
+        this.authName = authName;
+    }
+
+    public BigDecimal getCharge() {
+        return charge;
+    }
+
+    public void setCharge(BigDecimal charge) {
+        this.charge = charge;
+    }
+
+    public Long getPhotoShow() {
+        return photoShow;
+    }
+
+    public void setPhotoShow(Long photoShow) {
+        this.photoShow = photoShow;
+    }
+
+    public Long getPhotoClick() {
+        return photoClick;
+    }
+
+    public void setPhotoClick(Long photoClick) {
+        this.photoClick = photoClick;
+    }
+
+    public Long getAclick() {
+        return aclick;
+    }
+
+    public void setAclick(Long aclick) {
+        this.aclick = aclick;
+    }
+
+    public Long getBclick() {
+        return bclick;
+    }
+
+    public void setBclick(Long bclick) {
+        this.bclick = bclick;
+    }
+
+    public Long getActivation() {
+        return activation;
+    }
+
+    public void setActivation(Long activation) {
+        this.activation = activation;
+    }
+
+    public Long getEventRegister() {
+        return eventRegister;
+    }
+
+    public void setEventRegister(Long eventRegister) {
+        this.eventRegister = eventRegister;
+    }
+
+    public Long getSubmit() {
+        return submit;
+    }
+
+    public void setSubmit(Long submit) {
+        this.submit = submit;
+    }
+
+    public Long getEventNextDayStay() {
+        return eventNextDayStay;
+    }
+
+    public void setEventNextDayStay(Long eventNextDayStay) {
+        this.eventNextDayStay = eventNextDayStay;
+    }
+
+    public BigDecimal getEventNextDayStayCost() {
+        return eventNextDayStayCost;
+    }
+
+    public void setEventNextDayStayCost(BigDecimal eventNextDayStayCost) {
+        this.eventNextDayStayCost = eventNextDayStayCost;
+    }
+
+    public BigDecimal getActivationCost() {
+        return activationCost;
+    }
+
+    public void setActivationCost(BigDecimal activationCost) {
+        this.activationCost = activationCost;
+    }
+
+    public String getPhotoClickRatio() {
+        return photoClickRatio;
+    }
+
+    public void setPhotoClickRatio(String photoClickRatio) {
+        this.photoClickRatio = photoClickRatio;
+    }
+
+    public String getActionRate() {
+        return actionRate;
+    }
+
+    public void setActionRate(String actionRate) {
+        this.actionRate = actionRate;
+    }
+
+    public BigDecimal getImpression1kCost() {
+        return impression1kCost;
+    }
+
+    public void setImpression1kCost(BigDecimal impression1kCost) {
+        this.impression1kCost = impression1kCost;
+    }
+
+    public BigDecimal getPhotoClickCost() {
+        return photoClickCost;
+    }
+
+    public void setPhotoClickCost(BigDecimal photoClickCost) {
+        this.photoClickCost = photoClickCost;
+    }
+
+    public BigDecimal getActionCost() {
+        return actionCost;
+    }
+
+    public void setActionCost(BigDecimal actionCost) {
+        this.actionCost = actionCost;
+    }
+
+    public Long getPhotoShare() {
+        return photoShare;
+    }
+
+    public void setPhotoShare(Long photoShare) {
+        this.photoShare = photoShare;
+    }
+
+    public Long getPhotoComment() {
+        return photoComment;
+    }
+
+    public void setPhotoComment(Long photoComment) {
+        this.photoComment = photoComment;
+    }
+
+    public Long getPhotoLike() {
+        return photoLike;
+    }
+
+    public void setPhotoLike(Long photoLike) {
+        this.photoLike = photoLike;
+    }
+
+    public Long getFollow() {
+        return follow;
+    }
+
+    public void setFollow(Long follow) {
+        this.follow = follow;
+    }
+
+    public Long getReport() {
+        return report;
+    }
+
+    public void setReport(Long report) {
+        this.report = report;
+    }
+
+    public Long getCancelFollow() {
+        return cancelFollow;
+    }
+
+    public void setCancelFollow(Long cancelFollow) {
+        this.cancelFollow = cancelFollow;
+    }
+
+    public Long getBlock() {
+        return block;
+    }
+
+    public void setBlock(Long block) {
+        this.block = block;
+    }
+
+    public Long getNagative() {
+        return nagative;
+    }
+
+    public void setNagative(Long nagative) {
+        this.nagative = nagative;
+    }
+
+    public Long getDownloadStarted() {
+        return downloadStarted;
+    }
+
+    public void setDownloadStarted(Long downloadStarted) {
+        this.downloadStarted = downloadStarted;
+    }
+
+    public Long getDownloadCompleted() {
+        return downloadCompleted;
+    }
+
+    public void setDownloadCompleted(Long downloadCompleted) {
+        this.downloadCompleted = downloadCompleted;
+    }
+
+    public String getCampaignName() {
+        return campaignName;
+    }
+
+    public void setCampaignName(String campaignName) {
+        this.campaignName = campaignName;
+    }
+
+    public Long getCampaignId() {
+        return campaignId;
+    }
+
+    public void setCampaignId(Long campaignId) {
+        this.campaignId = campaignId;
+    }
+}

+ 312 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/excelutil/entity/EffecfReportProjectEntity.java

@@ -0,0 +1,312 @@
+package org.jeecg.modules.excelutil.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.metadata.BaseRowModel;
+
+import java.math.BigDecimal;
+
+/**
+ * @author 宋英豪
+ */
+public class EffecfReportProjectEntity extends BaseRowModel {
+    @ExcelProperty(index = 1, value = "项目名称")
+    private String projectName;
+    @ExcelProperty(index = 2, value = "运营负责人")
+    private String responsibleName;
+    @ExcelProperty(index = 3, value = "广告主")
+    private String advertiserName;
+    @ExcelProperty(index = 4, value = "设计负责人")
+    private String designResponsibleName;
+    @ExcelProperty(index = 5, value = "消耗")
+    private BigDecimal charge;
+    @ExcelProperty(index = 6, value = "封面曝光数")
+    private Long photoShow;
+    @ExcelProperty(index = 7, value = "封面点击数")
+    private Long photoClick;
+    @ExcelProperty(index = 8, value = "素材曝光数")
+    private Long aclick;
+    @ExcelProperty(index = 9, value = "行为数")
+    private Long bclick;
+    @ExcelProperty(index = 10, value = "激活数")
+    private Long activation;
+    @ExcelProperty(index = 11, value = "提交按钮点击数")
+    private Long submit;
+    @ExcelProperty(index = 12, value = "注册数")
+    private Long eventRegister;
+    @ExcelProperty(index = 13, value = "次日留存数")
+    private Long eventNextDayStay;
+    @ExcelProperty(index = 14, value = "次日留存成本")
+    private BigDecimal eventNextDayStayCost;
+    @ExcelProperty(index = 15, value = "激活成本")
+    private BigDecimal activationCost;
+    @ExcelProperty(index = 16, value = "封面点击率")
+    private String photoClickRate;
+    @ExcelProperty(index = 17, value = "行为率")
+    private String bclickRate;
+    @ExcelProperty(index = 18, value = "千次封面曝光花费")
+    private BigDecimal impression1kCost;
+    @ExcelProperty(index = 19, value = "封面点击单价")
+    private BigDecimal photoClickCost;
+    @ExcelProperty(index = 20, value = "行为单价")
+    private BigDecimal actionCost;
+    @ExcelProperty(index = 21, value = "分项数")
+    private Long photoShare;
+    @ExcelProperty(index = 22, value = "评论数")
+    private Long photoComment;
+    @ExcelProperty(index = 23, value = "点赞数")
+    private Long photoLike;
+    @ExcelProperty(index = 24, value = "新增关注数")
+    private Long follow;
+    @ExcelProperty(index = 25, value = "举报数")
+    private Long report;
+    @ExcelProperty(index = 26, value = "取关数")
+    private Long cancelFollow;
+    @ExcelProperty(index = 27, value = "拉黑数")
+    private Long block;
+    @ExcelProperty(index = 28, value = "减少此类作品数")
+    private Long nagative;
+    @ExcelProperty(index = 29, value = "安卓下载开始数")
+    private Long downloadStarted;
+    @ExcelProperty(index = 30, value = "安卓下载完成数")
+    private Long downloadCompleted;
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public String getResponsibleName() {
+        return responsibleName;
+    }
+
+    public void setResponsibleName(String responsibleName) {
+        this.responsibleName = responsibleName;
+    }
+
+    public String getAdvertiserName() {
+        return advertiserName;
+    }
+
+    public void setAdvertiserName(String advertiserName) {
+        this.advertiserName = advertiserName;
+    }
+
+    public String getDesignResponsibleName() {
+        return designResponsibleName;
+    }
+
+    public void setDesignResponsibleName(String designResponsibleName) {
+        this.designResponsibleName = designResponsibleName;
+    }
+
+    public BigDecimal getCharge() {
+        return charge;
+    }
+
+    public void setCharge(BigDecimal charge) {
+        this.charge = charge;
+    }
+
+    public Long getPhotoShow() {
+        return photoShow;
+    }
+
+    public void setPhotoShow(Long photoShow) {
+        this.photoShow = photoShow;
+    }
+
+    public Long getPhotoClick() {
+        return photoClick;
+    }
+
+    public void setPhotoClick(Long photoClick) {
+        this.photoClick = photoClick;
+    }
+
+    public Long getAclick() {
+        return aclick;
+    }
+
+    public void setAclick(Long aclick) {
+        this.aclick = aclick;
+    }
+
+    public Long getBclick() {
+        return bclick;
+    }
+
+    public void setBclick(Long bclick) {
+        this.bclick = bclick;
+    }
+
+    public Long getActivation() {
+        return activation;
+    }
+
+    public void setActivation(Long activation) {
+        this.activation = activation;
+    }
+
+    public Long getSubmit() {
+        return submit;
+    }
+
+    public void setSubmit(Long submit) {
+        this.submit = submit;
+    }
+
+    public Long getEventRegister() {
+        return eventRegister;
+    }
+
+    public void setEventRegister(Long eventRegister) {
+        this.eventRegister = eventRegister;
+    }
+
+    public Long getEventNextDayStay() {
+        return eventNextDayStay;
+    }
+
+    public void setEventNextDayStay(Long eventNextDayStay) {
+        this.eventNextDayStay = eventNextDayStay;
+    }
+
+    public BigDecimal getEventNextDayStayCost() {
+        return eventNextDayStayCost;
+    }
+
+    public void setEventNextDayStayCost(BigDecimal eventNextDayStayCost) {
+        this.eventNextDayStayCost = eventNextDayStayCost;
+    }
+
+    public BigDecimal getActivationCost() {
+        return activationCost;
+    }
+
+    public void setActivationCost(BigDecimal activationCost) {
+        this.activationCost = activationCost;
+    }
+
+    public String getPhotoClickRate() {
+        return photoClickRate;
+    }
+
+    public void setPhotoClickRate(String photoClickRate) {
+        this.photoClickRate = photoClickRate;
+    }
+
+    public String getBclickRate() {
+        return bclickRate;
+    }
+
+    public void setBclickRate(String bclickRate) {
+        this.bclickRate = bclickRate;
+    }
+
+    public BigDecimal getImpression1kCost() {
+        return impression1kCost;
+    }
+
+    public void setImpression1kCost(BigDecimal impression1kCost) {
+        this.impression1kCost = impression1kCost;
+    }
+
+    public BigDecimal getPhotoClickCost() {
+        return photoClickCost;
+    }
+
+    public void setPhotoClickCost(BigDecimal photoClickCost) {
+        this.photoClickCost = photoClickCost;
+    }
+
+    public BigDecimal getActionCost() {
+        return actionCost;
+    }
+
+    public void setActionCost(BigDecimal actionCost) {
+        this.actionCost = actionCost;
+    }
+
+    public Long getPhotoShare() {
+        return photoShare;
+    }
+
+    public void setPhotoShare(Long photoShare) {
+        this.photoShare = photoShare;
+    }
+
+    public Long getPhotoComment() {
+        return photoComment;
+    }
+
+    public void setPhotoComment(Long photoComment) {
+        this.photoComment = photoComment;
+    }
+
+    public Long getPhotoLike() {
+        return photoLike;
+    }
+
+    public void setPhotoLike(Long photoLike) {
+        this.photoLike = photoLike;
+    }
+
+    public Long getFollow() {
+        return follow;
+    }
+
+    public void setFollow(Long follow) {
+        this.follow = follow;
+    }
+
+    public Long getReport() {
+        return report;
+    }
+
+    public void setReport(Long report) {
+        this.report = report;
+    }
+
+    public Long getCancelFollow() {
+        return cancelFollow;
+    }
+
+    public void setCancelFollow(Long cancelFollow) {
+        this.cancelFollow = cancelFollow;
+    }
+
+    public Long getBlock() {
+        return block;
+    }
+
+    public void setBlock(Long block) {
+        this.block = block;
+    }
+
+    public Long getNagative() {
+        return nagative;
+    }
+
+    public void setNagative(Long nagative) {
+        this.nagative = nagative;
+    }
+
+    public Long getDownloadStarted() {
+        return downloadStarted;
+    }
+
+    public void setDownloadStarted(Long downloadStarted) {
+        this.downloadStarted = downloadStarted;
+    }
+
+    public Long getDownloadCompleted() {
+        return downloadCompleted;
+    }
+
+    public void setDownloadCompleted(Long downloadCompleted) {
+        this.downloadCompleted = downloadCompleted;
+    }
+}

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

@@ -45,8 +45,7 @@ public class FileController {
 
     @PostMapping("/insertV2")
     public Map<String, Object> insertV2(@RequestBody JSONObject json) {
-        LoginUser user = (LoginUser) SecurityUtils.getSubject()
-                .getPrincipal();
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         json.put("userId", user.getId());
         return materialInfoService.correlationUpload(json);
     }

+ 0 - 6
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/ISendMsgHandle.java

@@ -1,6 +0,0 @@
-package org.jeecg.modules.message.handle;
-
-public interface ISendMsgHandle {
-
-	void SendMsg(String es_receiver, String es_title, String es_content);
-}

+ 0 - 37
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/EmailSendMsgHandle.java

@@ -1,37 +0,0 @@
-package org.jeecg.modules.message.handle.impl;
-
-import org.jeecg.common.util.SpringContextUtils;
-import org.jeecg.modules.message.handle.ISendMsgHandle;
-import org.springframework.mail.SimpleMailMessage;
-import org.springframework.mail.javamail.JavaMailSender;
-import org.springframework.mail.javamail.MimeMessageHelper;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-
-public class EmailSendMsgHandle implements ISendMsgHandle {
-    static String emailFrom;
-
-    public static void setEmailFrom(String emailFrom) {
-        EmailSendMsgHandle.emailFrom = emailFrom;
-    }
-
-    @Override
-    public void SendMsg(String es_receiver, String es_title, String es_content) {
-        JavaMailSender mailSender = (JavaMailSender) SpringContextUtils.getBean("mailSender");
-        MimeMessage message = mailSender.createMimeMessage();
-        MimeMessageHelper helper = null;
-        try {
-            helper = new MimeMessageHelper(message, true);
-            // 设置发送方邮箱地址
-            helper.setFrom(emailFrom);
-            helper.setTo(es_receiver);
-            helper.setSubject(es_title);
-            helper.setText(es_content, true);
-            mailSender.send(message);
-        } catch (MessagingException e) {
-            e.printStackTrace();
-        }
-
-    }
-}

+ 0 - 15
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/SmsSendMsgHandle.java

@@ -1,15 +0,0 @@
-package org.jeecg.modules.message.handle.impl;
-
-import lombok.extern.slf4j.Slf4j;
-import org.jeecg.modules.message.handle.ISendMsgHandle;
-
-@Slf4j
-public class SmsSendMsgHandle implements ISendMsgHandle {
-
-	@Override
-	public void SendMsg(String es_receiver, String es_title, String es_content) {
-		// TODO Auto-generated method stub
-		log.info("发短信");
-	}
-
-}

+ 0 - 16
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/WxSendMsgHandle.java

@@ -1,16 +0,0 @@
-package org.jeecg.modules.message.handle.impl;
-
-import org.jeecg.modules.message.handle.ISendMsgHandle;
-
-/**
- * @author jeecg-boot
- * 2019年12月5日19:55:14
- */
-public class WxSendMsgHandle implements ISendMsgHandle {
-
-
-	@Override
-	public void SendMsg(String es_receiver, String es_title, String es_content) {
-
-	}
-}

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

@@ -220,8 +220,6 @@ public class CornerCheck {
             List<Point> checkPoints = new ArrayList<>();
             Point rightDown = cornerPoints.get(cornerPoints.size() - 1);
             for (Point point : cornerPoints) {
-//                System.out.println("cornerPoint:" + point.toString());
-//                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) {
                         checkPoints.add(point);

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

@@ -16,7 +16,7 @@ import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.util.JwtUtil;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.oConvertUtils;
-import org.jeecg.modules.message.websocket.WebSocket;
+import cn.com.ctop.common.module.message.websocket.WebSocket;
 import org.jeecg.modules.system.entity.SysAnnouncement;
 import org.jeecg.modules.system.entity.SysAnnouncementSend;
 import org.jeecg.modules.system.service.ISysAnnouncementSendService;

+ 3 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java

@@ -23,9 +23,9 @@ import org.jeecg.common.system.api.ISysBaseApi;
 import org.jeecg.common.system.vo.*;
 import org.jeecg.common.util.*;
 import org.jeecg.common.util.oss.OssBootUtil;
-import org.jeecg.modules.message.entity.SysMessageTemplate;
-import org.jeecg.modules.message.service.ISysMessageTemplateService;
-import org.jeecg.modules.message.websocket.WebSocket;
+import cn.com.ctop.common.module.message.entity.SysMessageTemplate;
+import cn.com.ctop.common.module.message.service.ISysMessageTemplateService;
+import cn.com.ctop.common.module.message.websocket.WebSocket;
 import org.jeecg.modules.system.entity.*;
 import org.jeecg.modules.system.mapper.*;
 import org.jeecg.modules.system.service.ISysDataSourceService;

+ 11 - 10
jeecg-boot-module-system/src/main/resources/application-dev.yml

@@ -21,16 +21,17 @@ spring:
         max-file-size: 10MB
         max-request-size: 10MB
   mail:
-    host: smtp.163.com
-    username: jeecgos@163.com
-    password: ??
-    properties:
-      mail:
-        smtp:
-          auth: true
-          starttls:
-            enable: true
-            required: true
+      host: smtp.exmail.qq.com
+      username: notice@c-top.com.cn
+      password: Hcst@2019
+      properties:
+        mail:
+          smtp:
+            ssl.enable: enable
+            auth: true
+            starttls:
+              enable: true
+              required: true
   ## quartz定时任务,采用数据库方式
   quartz:
     job-store-type: jdbc

+ 4 - 3
jeecg-boot-module-system/src/main/resources/application-prod.yml

@@ -17,12 +17,13 @@ spring:
       max-file-size: -1
       max-request-size: -1
   mail:
-    host: smtp.163.com
-    username: jeecgos@163.com
-    password: ??
+    host: smtp.exmail.qq.com
+    username: notice@c-top.com.cn
+    password: Hcst@2019
     properties:
       mail:
         smtp:
+          ssl.enable: enable
           auth: true
           starttls:
             enable: true

+ 4 - 3
jeecg-boot-module-system/src/main/resources/application-prod2.yml

@@ -17,12 +17,13 @@ spring:
       max-file-size: -1
       max-request-size: -1
   mail:
-    host: smtp.163.com
-    username: jeecgos@163.com
-    password: ??
+    host: smtp.exmail.qq.com
+    username: notice@c-top.com.cn
+    password: Hcst@2019
     properties:
       mail:
         smtp:
+          ssl.enable: enable
           auth: true
           starttls:
             enable: true

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

@@ -18,12 +18,13 @@ spring:
       max-file-size: -1
       max-request-size: -1
   mail:
-    host: smtp.163.com
-    username: jeecgos@163.com
-    password: ??
+    host: smtp.exmail.qq.com
+    username: notice@c-top.com.cn
+    password: Hcst@2019
     properties:
       mail:
         smtp:
+          ssl.enable: enable
           auth: true
           starttls:
             enable: true
@@ -93,7 +94,7 @@ spring:
         connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
       datasource:
         master:
-          url: jdbc:mysql://39.106.184.70/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
+          url: jdbc:mysql://139.186.27.96/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
           username: hcst
           password: test@20190531
           driver-class-name: com.mysql.jdbc.Driver

+ 81 - 13
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -1,16 +1,21 @@
 package org.jeecg;
 
+import cn.com.ctop.check.component.execute.GroovyScriptExecutor;
+import cn.com.ctop.check.entity.CtopCheckTaskList;
+import cn.com.ctop.check.service.ICtopCheckTaskListService;
 import cn.com.ctop.common.module.entity.BindAccountLogin;
 import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.entity.UReportSubscriber;
 import cn.com.ctop.common.module.entity.UserAllocation;
-import cn.com.ctop.common.module.service.IBindAccountLoginService;
-import cn.com.ctop.common.module.service.ICtopOauthTokenService;
-import cn.com.ctop.common.module.service.IUserAllocationService;
+import cn.com.ctop.common.module.message.handle.impl.EmailSendMsgHandle;
+import cn.com.ctop.common.module.service.*;
+import cn.com.ctop.common.module.service.impl.UReportExportRest;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.kuaishou.modules.graphql.service.IKuaishouWebInterfaceService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaiShouDailyAgentService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportDailyAgentService;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
+import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.util.DateUtils;
 import org.junit.Test;
@@ -20,6 +25,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.io.File;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -43,10 +49,12 @@ public class SampleTest {
 
     @Test
     public void loadBytedanceCreativeData() {
-     //   refreshTokenService.getKuaiShouAgentRefresh();
-        String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
-        String yesterday = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1);
-        kuaiShouDailyAgentService.getAgentReportByPage(nowDate, nowDate);
+        String accountIdString = "1661556811389966,1650504410207245,1652711697337351,1652711697724429,1650504410574859,1668459522250759";
+        String[] accountIds = accountIdString.split(",");
+        for(int i=0;i<accountIds.length;i++){
+            CtopOauthToken token = oauthTokenService.getTokenByAccountId(Long.parseLong(accountIds[i]));
+            reportService.getAdvertiserPlanReport(token,new Date(),new Date(),CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY);
+        }
     }
 
     @Autowired
@@ -57,9 +65,14 @@ public class SampleTest {
     public void loadKuaishouCookie(){
         List<BindAccountLogin> list = bindAccountLoginService.getListByParams(CtopAdConstant.PLATFORM_TYPE_KUAISHOU_PY,1);
         if(list!=null&&!list.isEmpty()){
+            int i=0;
             for (BindAccountLogin login:list) {
                 if(null==login.getCookie()||"".equals(login.getCookie().trim())){
+                    if(i>5){
+                        break;
+                    }
                     kuaishouWebInterfaceService.getkuaishouWebLoginCookie(login);
+                    i++;
                 }
             }
         }
@@ -114,11 +127,66 @@ public class SampleTest {
 //            kuaishouReportDailyAgentService.getReport(currentDate,DateUtils.getNowDate("yyyy-MM-dd"));
 //        }
 //
-//        int currentPage = 1;
-//        while (kuaishouReportDailyAgentService.getAccount(currentPage)){
-//            currentPage++;
-//        }
-        String currentDate = DateUtils.formatDate(DateUtils.addDay(new Date(),-1));
-        kuaishouReportDailyAgentService.getReport(currentDate,DateUtils.getNowDate("yyyy-MM-dd"));
+        kuaishouReportDailyAgentService.loginAgent();
+        try {
+            for(int i=1;i<30;i++){
+                kuaishouReportDailyAgentService.getAccount(i);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+//        String currentDate = D  ateUtils.formatDate(DateUtils.addDay(new Date(),-1));
+//        kuaishouReportDailyAgentService.getReport(currentDate,DateUtils.getNowDate("yyyy-MM-dd"));
+    }
+
+    @Autowired
+    private GroovyScriptExecutor groovyScriptExecutor;
+
+    @Autowired
+    private ICtopCheckTaskListService checkTaskListService;
+    @Test
+    public void checkDataStateJobTest(){
+        //查询需要检查的任务列表
+        List<CtopCheckTaskList> ctopCheckTaskList= checkTaskListService.queryExecuteList("checkDataStateJob");
+        if(ctopCheckTaskList!=null){
+            ctopCheckTaskList.forEach(it-> groovyScriptExecutor.execute(it));
+        }
+    }
+
+    @Test
+    public void loadAccountData() {
+        CtopOauthToken token = oauthTokenService.getTokenByAccountId(1665922219192387L);
+        reportService.getAdvertiserReport(token, DateUtils.parseDate("2020-09-01","yy-MM-dd"),  DateUtils.parseDate("2020-09-01","yy-MM-dd"), CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY);
+    }
+
+    @Autowired
+    IUReportExportService uReportExportService;
+    @Autowired
+    EmailSendMsgHandle emailSendMsgHandle;
+    @Autowired
+    IUReportService uReportService;
+
+    @Test
+    public void sendUReport(){
+        uReportService.uReportList().forEach(uReport->{
+            List<UReportSubscriber> uReportSubscriber = uReportService.getUReportSubscriberByFileId(uReport.getString("id"));
+            if(!uReportSubscriber.isEmpty()){
+                String title=uReport.getString("name").replace(".ureport.xml","");
+                String content="您订阅的日报在附件中请注意查收》》》";
+                //下载文件到本地
+                uReportExportService.exportExcel(uReport.getString("name"));
+                uReportSubscriber.forEach(sender->{
+                    emailSendMsgHandle.SendAttachment("bijiequan@c-top.com.cn",title,content,
+                            new File(System.getProperty("user.dir")+ File.separator + "uReport"+File.separator+uReport.getString("name").replace("ureport.xml","")+"xlsx"));
+                }); }
+        });
+        //发完全部订阅,删除文件
+        File file =new File(System.getProperty("user.dir")+ File.separator + "uReport");
+        File[] files=file.listFiles();
+        if(files!=null&&files.length>0){
+            for (File f: files){
+                f.delete();
+            }
+        }
     }
 }

+ 4 - 0
module-check/src/main/java/cn/com/ctop/check/controller/CtopCheckTaskExecutorCtrl.java

@@ -0,0 +1,4 @@
+package cn.com.ctop.check.controller;
+
+public class CtopCheckTaskExecutorCtrl {
+}

+ 6 - 1
module-check/src/main/java/cn/com/ctop/check/script/TestGroovyScript.java

@@ -5,6 +5,7 @@ import cn.com.ctop.check.service.ICtopCheckTaskListService;
 import cn.com.ctop.common.module.entity.UserAllocation;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.service.ICustomDataByAccountService;
+import cn.com.ctop.common.module.service.IUReportExportService;
 import cn.com.ctop.common.module.service.IUserAllocationService;
 import cn.com.ctop.common.module.service.impl.CustomDataByAccountImpl;
 import cn.com.ctop.common.module.service.impl.UserAllocationServiceImpl;
@@ -44,11 +45,15 @@ public class TestGroovyScript {
     @Autowired
     ICustomDataByAccountService customDataByAccountService;
 
+    @Autowired
+    IUReportExportService iuReportExportService;
+
     @GetMapping("/test")
     public Result testGroovy(){
         //groovyScriptExecutor.execute(2,"CheckAccountStatusScript");
         //groovyScriptExecutor.execute(13,"CheckKsDataDiffScript");
-        groovyScriptExecutor.execute(14,"CheckByDataDiffScript");
+        //groovyScriptExecutor.execute(14,"CheckByDataDiffScript");
+        iuReportExportService.exportExcel("file:2048球球大作战-日报.ureport.xml ");
         return Result.ok();
     }
 }

+ 2 - 0
module-check/src/main/java/cn/com/ctop/notice/handler/SendWeChatHandle.java

@@ -52,6 +52,8 @@ public class SendWeChatHandle {
                     messageList.add(message.substring((i+1)*1006));
                 }
             }
+        }else {
+            messageList.add(message);
         }
         return messageList;
     }

+ 52 - 0
module-common/src/main/java/cn/com/ctop/common/module/entity/MaterialTagInfo.java

@@ -0,0 +1,52 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+/**
+ * 素材标签信息
+ * @author jeecg-boot
+ * @date   2020-08-27
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_material_tag_info")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="ctop_material_tag_info对象", description="素材标签信息")
+public class MaterialTagInfo {
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+    private Long id;
+	private String code;
+	private Integer status;
+	private String tagName;
+	private String tagCode;
+	private Long tagId;
+	private String userId;
+	private Date createTime;
+	private Date updateTime;
+
+	public MaterialTagInfo(String code, TagInfo tagInfo,String userId) {
+		this.tagId = tagInfo.getId();
+		this.code = code;
+		this.status = 1;
+		this.tagCode = tagInfo.getTagCode();
+		this.tagName = tagInfo.getTagName();
+		this.userId = userId;
+		this.createTime = new Date();
+		this.updateTime = new Date();
+	}
+
+	public MaterialTagInfo() {
+
+	}
+}

+ 24 - 0
module-common/src/main/java/cn/com/ctop/common/module/entity/TagCategoryInfo.java

@@ -0,0 +1,24 @@
+package cn.com.ctop.common.module.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+@Data
+@TableName("ctop_tag_category")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class TagCategoryInfo {
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    private String name;
+    private String code;
+    private Integer status;
+    private Date createTime;
+    private Date updateTime;
+}

+ 12 - 4
module-common/src/main/java/cn/com/ctop/common/module/entity/TagInfo.java

@@ -1,10 +1,10 @@
 package cn.com.ctop.common.module.entity;
 
+import cn.com.ctop.common.module.annotation.Dict;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -23,16 +23,24 @@ import java.util.Date;
 @Accessors(chain = true)
 @ApiModel(value="ctop_tag_info对象", description="标签信息")
 public class TagInfo {
-
-	/**id*/
 	@TableId(type = IdType.AUTO)
-    @ApiModelProperty(value = "id")
 	private Long id;
+	@Dict(dicCode = "id",dictTable="ctop_tag_info",dicText="tag_name")
 	private Long parentId;
+	@Dict(dicCode = "id",dictTable="ctop_tag_category",dicText="name")
+	private Long tagCategoryId;
+	@Dict(dicCode = "id",dictTable="ctop_tag_info",dicText="tag_name")
+	private Long firstTagId;
+	@Dict(dicCode = "id",dictTable="ctop_tag_info",dicText="tag_name")
+	private Long secendTagId;
+	@Dict(dicCode = "id",dictTable="sys_user",dicText="realname")
+	private String userId;
 	private String tagName;
 	private Integer tagOrder;
 	private String description;
+	private String model;
 	private String tagCode;
+	private Integer level;
 	private Integer status;
 	private Integer delFlag;
 	private Date createTime;

+ 14 - 0
module-common/src/main/java/cn/com/ctop/common/module/entity/UReportSubscriber.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.common.module.entity;
+
+import lombok.Data;
+
+@Data
+public class UReportSubscriber {
+
+    private String fileId;
+
+    private String fileName;
+
+    private String sender;
+
+}

+ 2 - 2
module-common/src/main/java/cn/com/ctop/common/module/mapper/CtopCorpWexinUserMapper.java

@@ -1,7 +1,5 @@
 package cn.com.ctop.common.module.mapper;
 
-import java.util.List;
-
 import cn.com.ctop.common.module.entity.CtopCorpWexinUser;
 import org.apache.ibatis.annotations.Param;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -15,4 +13,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface CtopCorpWexinUserMapper extends BaseMapper<CtopCorpWexinUser> {
 
+    String queryEmailByUserId(@Param("userId") String userId);
+
 }

+ 14 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/MaterialTagInfoMapper.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.common.module.mapper;
+
+import cn.com.ctop.common.module.entity.MaterialTagInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 素材标签信息
+ * @author: jeecg-boot
+ * @date:   2020-08-27
+ * @cersion: V1.0
+ */
+public interface MaterialTagInfoMapper extends BaseMapper<MaterialTagInfo> {
+
+}

+ 7 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/TagCategoryInfoMapper.java

@@ -0,0 +1,7 @@
+package cn.com.ctop.common.module.mapper;
+
+import cn.com.ctop.common.module.entity.TagCategoryInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface TagCategoryInfoMapper extends BaseMapper<TagCategoryInfo> {
+}

+ 15 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/UReportMapper.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.common.module.mapper;
+
+import cn.com.ctop.common.module.entity.UReportSubscriber;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface UReportMapper {
+
+    List<JSONObject> queryUReportBy(@Param("reportType") int reportType);
+
+    List<UReportSubscriber> queryUReportSubscriberByFileId(@Param("fileId") String fileId);
+
+}

+ 8 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/CtopCorpWexinUserMapper.xml

@@ -2,4 +2,12 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.com.ctop.common.module.mapper.CtopCorpWexinUserMapper">
 
+    <select id="queryEmailByUserId" resultType="String">
+        SELECT
+            wexin_email
+        FROM
+            ctop_corp_wexin_user
+        WHERE
+            user_id = #{userId}
+    </select>
 </mapper>

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/xml/SysMessageMapper.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.jeecg.modules.message.mapper.SysMessageMapper">
+<mapper namespace="cn.com.ctop.common.module.mapper.MaterialTagInfoMapper">
 
-</mapper>
+</mapper>

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/xml/SysMessageTemplateMapper.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.jeecg.modules.message.mapper.SysMessageTemplateMapper">
+<mapper namespace="cn.com.ctop.common.module.mapper.TagCategoryInfoMapper">
 
-</mapper>
+</mapper>

+ 27 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/UReportMapper.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.common.module.mapper.UReportMapper">
+
+    <select id="queryUReportBy" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+            id,
+            name
+        FROM
+            ureport_file
+        WHERE
+            report_type = #{reportType}
+    </select>
+
+    <select id="queryUReportSubscriberByFileId" resultType="cn.com.ctop.common.module.entity.UReportSubscriber">
+        SELECT
+            file_id,
+            file_name,
+            user_id
+        FROM
+            ureport_file_bind_user
+        WHERE
+            file_id = #{fileId}
+        and is_subscribe=1
+    </select>
+
+</mapper>

+ 3 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/controller/SysMessageController.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.message.controller;
+package cn.com.ctop.common.module.message.controller;
 
 import java.util.Arrays;
 
@@ -8,8 +8,8 @@ import javax.servlet.http.HttpServletResponse;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.modules.message.entity.SysMessage;
-import org.jeecg.modules.message.service.ISysMessageService;
+import cn.com.ctop.common.module.message.entity.SysMessage;
+import cn.com.ctop.common.module.message.service.ISysMessageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;

+ 5 - 5
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/controller/SysMessageTemplateController.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.message.controller;
+package cn.com.ctop.common.module.message.controller;
 
 import java.util.Arrays;
 import java.util.Map;
@@ -9,10 +9,10 @@ import javax.servlet.http.HttpServletResponse;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.modules.message.entity.MsgParams;
-import org.jeecg.modules.message.entity.SysMessageTemplate;
-import org.jeecg.modules.message.service.ISysMessageTemplateService;
-import org.jeecg.modules.message.util.PushMsgUtil;
+import cn.com.ctop.common.module.message.entity.MsgParams;
+import cn.com.ctop.common.module.message.entity.SysMessageTemplate;
+import cn.com.ctop.common.module.message.service.ISysMessageTemplateService;
+import cn.com.ctop.common.module.message.util.PushMsgUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/entity/MsgParams.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.message.entity;
+package cn.com.ctop.common.module.message.entity;
 
 import java.io.Serializable;
 

+ 13 - 11
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/entity/SysMessage.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.message.entity;
+package cn.com.ctop.common.module.message.entity;
 
 import cn.com.ctop.common.module.annotation.Dict;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -10,6 +10,8 @@ import org.jeecg.common.system.base.entity.JeecgEntity;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.util.Date;
+
 /**
  * @Description: 消息
  * @Author: jeecg-boot
@@ -23,36 +25,36 @@ import org.springframework.format.annotation.DateTimeFormat;
 public class SysMessage extends JeecgEntity {
 	/**推送内容*/
 	@Excel(name = "推送内容", width = 15)
-	private java.lang.String esContent;
+	private String esContent;
 	/**推送所需参数Json格式*/
 	@Excel(name = "推送所需参数Json格式", width = 15)
-	private java.lang.String esParam;
+	private String esParam;
 	/**接收人*/
 	@Excel(name = "接收人", width = 15)
-	private java.lang.String esReceiver;
+	private String esReceiver;
 	/**推送失败原因*/
 	@Excel(name = "推送失败原因", width = 15)
-	private java.lang.String esResult;
+	private String esResult;
 	/**发送次数*/
 	@Excel(name = "发送次数", width = 15)
-	private java.lang.Integer esSendNum;
+	private Integer esSendNum;
 	/**推送状态 0未推送 1推送成功 2推送失败*/
 	@Excel(name = "推送状态 0未推送 1推送成功 2推送失败", width = 15)
 	@Dict(dicCode = "msgSendStatus")
-    private java.lang.String esSendStatus;
+    private String esSendStatus;
 	/**推送时间*/
 	@Excel(name = "推送时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-	private java.util.Date esSendTime;
+	private Date esSendTime;
 	/**消息标题*/
 	@Excel(name = "消息标题", width = 15)
-	private java.lang.String esTitle;
+	private String esTitle;
 	/**推送方式:1短信 2邮件 3微信*/
 	@Excel(name = "推送方式:1短信 2邮件 3微信", width = 15)
 	@Dict(dicCode = "msgType")
-    private java.lang.String esType;
+    private String esType;
 	/**备注*/
 	@Excel(name = "备注", width = 15)
-	private java.lang.String remark;
+	private String remark;
 }

+ 6 - 6
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/entity/SysMessageTemplate.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.message.entity;
+package cn.com.ctop.common.module.message.entity;
 
 import org.jeecg.common.system.base.entity.JeecgEntity;
 import org.jeecgframework.poi.excel.annotation.Excel;
@@ -22,17 +22,17 @@ import lombok.experimental.Accessors;
 public class SysMessageTemplate extends JeecgEntity{
 	/**模板CODE*/
 	@Excel(name = "模板CODE", width = 15)
-	private java.lang.String templateCode;
+	private String templateCode;
 	/**模板标题*/
 	@Excel(name = "模板标题", width = 30)
-	private java.lang.String templateName;
+	private String templateName;
 	/**模板内容*/
 	@Excel(name = "模板内容", width = 50)
-	private java.lang.String templateContent;
+	private String templateContent;
 	/**模板测试json*/
 	@Excel(name = "模板测试json", width = 15)
-	private java.lang.String templateTestJson;
+	private String templateTestJson;
 	/**模板类型*/
 	@Excel(name = "模板类型", width = 15)
-	private java.lang.String templateType;
+	private String templateType;
 }

+ 10 - 0
module-common/src/main/java/cn/com/ctop/common/module/message/handle/ISendMsgHandle.java

@@ -0,0 +1,10 @@
+package cn.com.ctop.common.module.message.handle;
+
+import java.io.File;
+
+public interface ISendMsgHandle {
+
+	void SendMsg(String es_receiver, String es_title, String es_content);
+
+	void SendAttachment(String es_receiver, String es_title, String es_content, File attachment);
+}

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/enums/SendMsgStatusEnum.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.message.handle.enums;
+package cn.com.ctop.common.module.message.handle.enums;
 
 /**
  * 推送状态枚举

+ 4 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/handle/enums/SendMsgTypeEnum.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.message.handle.enums;
+package cn.com.ctop.common.module.message.handle.enums;
 
 import org.jeecg.common.util.oConvertUtils;
 
@@ -8,9 +8,9 @@ import org.jeecg.common.util.oConvertUtils;
 public enum SendMsgTypeEnum {
 
     //推送方式:1短信 2邮件 3微信
-    SMS("1", "org.jeecg.modules.message.handle.impl.SmsSendMsgHandle"),
-    EMAIL("2", "org.jeecg.modules.message.handle.impl.EmailSendMsgHandle"),
-    WX("3","org.jeecg.modules.message.handle.impl.WxSendMsgHandle");
+    SMS("1", "cn.com.ctop.common.module.message.handle.impl.SmsSendMsgHandle"),
+    EMAIL("2", "cn.com.ctop.common.module.message.handle.impl.EmailSendMsgHandle"),
+    WX("3","cn.com.ctop.common.module.message.handle.impl.WxSendMsgHandle");
 
     private String type;
 

+ 59 - 0
module-common/src/main/java/cn/com/ctop/common/module/message/handle/impl/EmailSendMsgHandle.java

@@ -0,0 +1,59 @@
+package cn.com.ctop.common.module.message.handle.impl;
+
+import cn.com.ctop.common.module.message.handle.ISendMsgHandle;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.mail.javamail.MimeMessageHelper;
+import org.springframework.stereotype.Component;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+import java.io.File;
+
+@Component
+public class EmailSendMsgHandle implements ISendMsgHandle {
+
+    @Autowired
+    JavaMailSender mailSender;
+
+    private static String emailFrom;
+
+    public static void setEmailFrom(String emailFrom) {
+        EmailSendMsgHandle.emailFrom = emailFrom;
+    }
+
+    @Override
+    public void SendMsg(String es_receiver, String es_title, String es_content) {
+        MimeMessage message = mailSender.createMimeMessage();
+        MimeMessageHelper helper = null;
+        try {
+            helper = new MimeMessageHelper(message, true);
+            // 设置发送方邮箱地址
+            helper.setFrom(emailFrom);
+            helper.setTo(es_receiver);
+            helper.setSubject(es_title);
+            helper.setText(es_content, true);
+            mailSender.send(message);
+        } catch (MessagingException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void SendAttachment(String es_receiver, String es_title, String es_content, File attachment) {
+        MimeMessage message = mailSender.createMimeMessage();
+        MimeMessageHelper helper = null;
+        try {
+            helper = new MimeMessageHelper(message, true);
+            // 设置发送方邮箱地址
+            helper.setFrom(emailFrom);
+            helper.setTo(es_receiver);
+            helper.setSubject(es_title);
+            helper.setText(es_content, true);
+            helper.addAttachment(attachment.getName(),attachment);
+            mailSender.send(message);
+        } catch (MessagingException e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 24 - 0
module-common/src/main/java/cn/com/ctop/common/module/message/handle/impl/SmsSendMsgHandle.java

@@ -0,0 +1,24 @@
+package cn.com.ctop.common.module.message.handle.impl;
+
+import lombok.extern.slf4j.Slf4j;
+import cn.com.ctop.common.module.message.handle.ISendMsgHandle;
+import org.springframework.stereotype.Component;
+
+import java.io.File;
+
+@Slf4j
+@Component
+public class SmsSendMsgHandle implements ISendMsgHandle {
+
+	@Override
+	public void SendMsg(String es_receiver, String es_title, String es_content) {
+		// TODO Auto-generated method stub
+		log.info("发短信");
+	}
+
+	@Override
+	public void SendAttachment(String es_receiver, String es_title, String es_content, File attachment) {
+
+	}
+
+}

+ 25 - 0
module-common/src/main/java/cn/com/ctop/common/module/message/handle/impl/WxSendMsgHandle.java

@@ -0,0 +1,25 @@
+package cn.com.ctop.common.module.message.handle.impl;
+
+import cn.com.ctop.common.module.message.handle.ISendMsgHandle;
+import org.springframework.stereotype.Component;
+
+import java.io.File;
+
+/**
+ * @author jeecg-boot
+ * 2019年12月5日19:55:14
+ */
+@Component
+public class WxSendMsgHandle implements ISendMsgHandle {
+
+
+	@Override
+	public void SendMsg(String es_receiver, String es_title, String es_content) {
+
+	}
+
+	@Override
+	public void SendAttachment(String es_receiver, String es_title, String es_content, File attachment) {
+
+	}
+}

+ 6 - 6
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/job/SendMsgJob.java

@@ -1,13 +1,13 @@
-package org.jeecg.modules.message.job;
+package cn.com.ctop.common.module.message.job;
 
 import java.util.List;
 
 import org.jeecg.common.util.DateUtils;
-import org.jeecg.modules.message.entity.SysMessage;
-import org.jeecg.modules.message.handle.ISendMsgHandle;
-import org.jeecg.modules.message.handle.enums.SendMsgStatusEnum;
-import org.jeecg.modules.message.handle.enums.SendMsgTypeEnum;
-import org.jeecg.modules.message.service.ISysMessageService;
+import cn.com.ctop.common.module.message.entity.SysMessage;
+import cn.com.ctop.common.module.message.handle.ISendMsgHandle;
+import cn.com.ctop.common.module.message.handle.enums.SendMsgStatusEnum;
+import cn.com.ctop.common.module.message.handle.enums.SendMsgTypeEnum;
+import cn.com.ctop.common.module.message.service.ISysMessageService;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;

+ 2 - 5
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/SysMessageMapper.java

@@ -1,9 +1,6 @@
-package org.jeecg.modules.message.mapper;
+package cn.com.ctop.common.module.message.mapper;
 
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
-import org.jeecg.modules.message.entity.SysMessage;
+import cn.com.ctop.common.module.message.entity.SysMessage;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/SysMessageTemplateMapper.java

@@ -1,8 +1,8 @@
-package org.jeecg.modules.message.mapper;
+package cn.com.ctop.common.module.message.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Select;
-import org.jeecg.modules.message.entity.SysMessageTemplate;
+import cn.com.ctop.common.module.message.entity.SysMessageTemplate;
 
 import java.util.List;
 

+ 5 - 0
module-common/src/main/java/cn/com/ctop/common/module/message/mapper/xml/SysMessageMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.common.module.message.mapper.SysMessageMapper">
+
+</mapper>

+ 5 - 0
module-common/src/main/java/cn/com/ctop/common/module/message/mapper/xml/SysMessageTemplateMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.common.module.message.mapper.SysMessageTemplateMapper">
+
+</mapper>

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/ISysMessageService.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.message.service;
+package cn.com.ctop.common.module.message.service;
 
 import org.jeecg.common.system.base.service.JeecgService;
-import org.jeecg.modules.message.entity.SysMessage;
+import cn.com.ctop.common.module.message.entity.SysMessage;
 
 /**
  * @Description: 消息

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/ISysMessageTemplateService.java

@@ -1,9 +1,9 @@
-package org.jeecg.modules.message.service;
+package cn.com.ctop.common.module.message.service;
 
 import java.util.List;
 
 import org.jeecg.common.system.base.service.JeecgService;
-import org.jeecg.modules.message.entity.SysMessageTemplate;
+import cn.com.ctop.common.module.message.entity.SysMessageTemplate;
 
 /**
  * @Description: 消息模板

+ 4 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/impl/SysMessageServiceImpl.java

@@ -1,9 +1,9 @@
-package org.jeecg.modules.message.service.impl;
+package cn.com.ctop.common.module.message.service.impl;
 
 import org.jeecg.common.system.base.service.impl.JeecgServiceImpl;
-import org.jeecg.modules.message.entity.SysMessage;
-import org.jeecg.modules.message.mapper.SysMessageMapper;
-import org.jeecg.modules.message.service.ISysMessageService;
+import cn.com.ctop.common.module.message.entity.SysMessage;
+import cn.com.ctop.common.module.message.mapper.SysMessageMapper;
+import cn.com.ctop.common.module.message.service.ISysMessageService;
 import org.springframework.stereotype.Service;
 
 /**

+ 4 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/impl/SysMessageTemplateServiceImpl.java

@@ -1,9 +1,9 @@
-package org.jeecg.modules.message.service.impl;
+package cn.com.ctop.common.module.message.service.impl;
 
 import org.jeecg.common.system.base.service.impl.JeecgServiceImpl;
-import org.jeecg.modules.message.entity.SysMessageTemplate;
-import org.jeecg.modules.message.mapper.SysMessageTemplateMapper;
-import org.jeecg.modules.message.service.ISysMessageTemplateService;
+import cn.com.ctop.common.module.message.entity.SysMessageTemplate;
+import cn.com.ctop.common.module.message.mapper.SysMessageTemplateMapper;
+import cn.com.ctop.common.module.message.service.ISysMessageTemplateService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import java.util.List;

+ 6 - 6
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/util/PushMsgUtil.java

@@ -1,10 +1,10 @@
-package org.jeecg.modules.message.util;
+package cn.com.ctop.common.module.message.util;
 
-import org.jeecg.modules.message.entity.SysMessage;
-import org.jeecg.modules.message.entity.SysMessageTemplate;
-import org.jeecg.modules.message.handle.enums.SendMsgStatusEnum;
-import org.jeecg.modules.message.service.ISysMessageService;
-import org.jeecg.modules.message.service.ISysMessageTemplateService;
+import cn.com.ctop.common.module.message.entity.SysMessage;
+import cn.com.ctop.common.module.message.entity.SysMessageTemplate;
+import cn.com.ctop.common.module.message.handle.enums.SendMsgStatusEnum;
+import cn.com.ctop.common.module.message.service.ISysMessageService;
+import cn.com.ctop.common.module.message.service.ISysMessageTemplateService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/TestSocketController.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.message.websocket;
+package cn.com.ctop.common.module.message.websocket;
 
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.WebsocketConst;

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.message.websocket;
+package cn.com.ctop.common.module.message.websocket;
 
 import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;

+ 10 - 0
module-common/src/main/java/cn/com/ctop/common/module/model/TagInfoTreeModel.java

@@ -38,6 +38,7 @@ public class TagInfoTreeModel implements Serializable {
     private String tagCode;
     private Integer status;
     private Integer delFlag;
+    private Integer level;
     private Date createTime;
     private Date updateTime;
     private List<TagInfoTreeModel> children = new ArrayList<>();
@@ -172,6 +173,7 @@ public class TagInfoTreeModel implements Serializable {
         this.delFlag = tagInfo.getDelFlag();
         this.createTime = tagInfo.getCreateTime();
         this.updateTime = tagInfo.getUpdateTime();
+        this.level = tagInfo.getLevel();
     }
 
 
@@ -189,4 +191,12 @@ public class TagInfoTreeModel implements Serializable {
     public TagInfoTreeModel() {
 
     }
+
+    public Integer getLevel() {
+        return level;
+    }
+
+    public void setLevel(Integer level) {
+        this.level = level;
+    }
 }

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

@@ -12,4 +12,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ICtopCorpWexinUserService extends IService<CtopCorpWexinUser> {
 
+    String getEmailByUserId(String userId);
 }

+ 18 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/IMaterialTagInfoService.java

@@ -0,0 +1,18 @@
+package cn.com.ctop.common.module.service;
+
+import cn.com.ctop.common.module.entity.MaterialTagInfo;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.system.vo.LoginUser;
+
+import java.util.Map;
+
+/**
+ * @Description: 素材标签信息
+ * @Author: jeecg-boot
+ * @Date:   2020-08-27
+ * @Version: V1.0
+ */
+public interface IMaterialTagInfoService extends IService<MaterialTagInfo> {
+    Map<String, Object> mark(JSONObject data, LoginUser loginUser);
+}

+ 7 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/ITagCategoryInfoService.java

@@ -0,0 +1,7 @@
+package cn.com.ctop.common.module.service;
+
+import cn.com.ctop.common.module.entity.TagCategoryInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface ITagCategoryInfoService extends IService<TagCategoryInfo> {
+}

+ 2 - 1
module-common/src/main/java/cn/com/ctop/common/module/service/ITagInfoService.java

@@ -14,6 +14,7 @@ import java.util.List;
  */
 public interface ITagInfoService extends IService<TagInfo> {
 
-    List<TagInfoTreeModel> queryTreeList();
+    List<TagInfoTreeModel> queryTreeList(String userId);
 
+    TagInfo getByTagCode(String tagCode);
 }

+ 6 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/IUReportExportService.java

@@ -0,0 +1,6 @@
+package cn.com.ctop.common.module.service;
+
+public interface IUReportExportService {
+
+    void exportExcel(String fileName);
+}

+ 15 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/IUReportService.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.common.module.service;
+
+import cn.com.ctop.common.module.entity.UReportSubscriber;
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.List;
+
+public interface IUReportService {
+
+    //查询被订阅的报表
+    List<JSONObject> uReportList();
+
+    //查询被订阅的报表发送给绑定人
+    List<UReportSubscriber> getUReportSubscriberByFileId(String fileId);
+}

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

@@ -111,6 +111,7 @@ public class BindAccountLoginServiceImpl extends ServiceImpl<BindAccountLoginMap
         if(status!=null){
             queryWrapper.eq("status",status);
         }
+        queryWrapper.orderByDesc("id");
         return this.list(queryWrapper);
     }
 

+ 8 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/impl/CtopCorpWexinUserServiceImpl.java

@@ -3,6 +3,7 @@ package cn.com.ctop.common.module.service.impl;
 import cn.com.ctop.common.module.entity.CtopCorpWexinUser;
 import cn.com.ctop.common.module.mapper.CtopCorpWexinUserMapper;
 import cn.com.ctop.common.module.service.ICtopCorpWexinUserService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Primary;
 import org.springframework.stereotype.Service;
 
@@ -19,4 +20,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 @Primary
 public class CtopCorpWexinUserServiceImpl extends ServiceImpl<CtopCorpWexinUserMapper, CtopCorpWexinUser> implements ICtopCorpWexinUserService {
 
+    @Autowired
+    CtopCorpWexinUserMapper ctopCorpWexinUserMapper;
+
+    @Override
+    public String getEmailByUserId(String userId) {
+        return ctopCorpWexinUserMapper.queryEmailByUserId(userId);
+    }
 }

+ 21 - 31
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java

@@ -358,18 +358,14 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
         try {
             Map<String, Object> requestMap = new HashMap<>();
             requestMap.put("userId", userId);
-
             Integer totalCount = materialInfoMapper.selectCountByMap(requestMap);
             json.put("total", totalCount);
-
             requestMap.put("status", 0);
             Integer waitAudit = materialInfoMapper.selectCountByMap(requestMap);
             json.put("waitAudit", waitAudit);
-
             requestMap.put("status", 1);
             Integer passAudit = materialInfoMapper.selectCountByMap(requestMap);
             json.put("passAudit", passAudit);
-
             requestMap.put("status", 2);
             Integer refuseAudit = materialInfoMapper.selectCountByMap(requestMap);
             json.put("refuseAudit", refuseAudit);
@@ -384,7 +380,6 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
         return materialInfoMapper.getRoleCodeByUserId(userId);
     }
 
-
     @Override
     public void getFile(MaterialInfo materialInfo, String mediaId) {
         uploadExecutorService.submit(new Runnable() {
@@ -439,7 +434,6 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
                                 // 默认抽帧 素造供应商
                                 Long templateId = MaterialSupplierEnum.getTemplateIdBySize(Integer.valueOf(width), Integer.valueOf(height));
                                 if (!Check.isNull(templateId)) {
-
                                     Thread thread = new Thread() {
                                         @Override
                                         public void run() {
@@ -447,15 +441,9 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
                                         }
                                     };
                                     thread.start();
-
-
                                 }
                             }
-
-
                         }
-
-
                     } catch (FileNotFoundException e) {
                         e.printStackTrace();
                     } catch (IOException e) {
@@ -526,11 +514,11 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
         Map<String, Object> resultMap = new HashMap<>();
         try {
             String type = json.getString("type");
+
             String url = "";
             if (!Check.isNull(json.getString("url"))) {
                 url = "https:" + json.getString("url");
             }
-
             MaterialInfo info = new MaterialInfo();
             Long projectId = json.getLong("projectId");
             String code = json.getString("code");
@@ -563,23 +551,19 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
                 String coverUrl = CloudVideoProcessUtil.videoCutPictureHandle(videoUrl, loadImage);
                 info.setCoverUrl(coverUrl);
                 Thread thread = new Thread() {
-                    @Override
-                    public void run() {
-                        try {
+                        @Override
+                        public void run() { try {
                             log.info("开始抽帧,code:{}", code);
                             materialCutFrameService.getTencentCutFrame(videoUrl, code, coverUrl);
                         } catch (Exception e) {
                             e.printStackTrace();
-                        }
-                    }
+                        } }
                 };
                 thread.start();
             } else {
                 info.setCoverUrl(cutFrame.getUrl());
             }
-
             this.save(info);
-
             JSONArray imageArr = json.getJSONArray("imageArr");
             if (!Check.isNull(imageArr)) {
                 JSONObject imageJson = new JSONObject();
@@ -589,34 +573,27 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
                 imageJson.put("imageArr", imageArr);
                 materialImageInfoService.insertImage(imageJson);
             }
-
             Map<String, Object> deleteMap = new HashMap<>();
             deleteMap.put("material_id", info.getCode());
             JSONObject ascription = json.getJSONObject("ascription");
             if (!Check.isNull(ascription)) {
                 MaterialAscription materialAscription = new MaterialAscription();
                 materialAscription.setMaterialId(info.getCode());
-                // 剪辑人
                 materialAscription.setClipId(ascription.getString("clipId"));
-                // 拍摄人id
                 materialAscription.setShotId(ascription.getString("shotId"));
-                // 策划id
                 materialAscription.setPlanId(ascription.getString("planId"));
-                //平面id
                 materialAscription.setPlaneId(ascription.getString("planeId"));
                 materialAscriptionMapper.deleteByMap(deleteMap);
-                int i = materialAscriptionMapper.insert(materialAscription);
-                if (i > 0) {
+                int result = materialAscriptionMapper.insert(materialAscription);
+                if (result > 0) {
                     log.info("素材归属信息入库完成,MaterialId:{}", info.getId());
                 }
-
             }
-
             JSONArray tag = json.getJSONArray("tag");
             if (!Check.isNull(tag)) {
                 materialTagMapper.deleteByMap(deleteMap);
-                for (int i = 0; i < tag.size(); i++) {
-                    String tagStr = tag.getString(i);
+                for (int j = 0; j < tag.size(); j++) {
+                    String tagStr = tag.getString(j);
                     if (!Check.isNull(tagStr)) {
                         MaterialTag materialTag = new MaterialTag();
                         materialTag.setMaterialId(info.getCode());
@@ -625,6 +602,15 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
                     }
                 }
             }
+            JSONArray tagList = json.getJSONArray("tagList");
+            if(null!=tagList&&!tagList.isEmpty()){
+                for(int m=0;m<tagList.size();m++){
+                    Long tagId = tagList.getLong(m);
+                    TagInfo tagInfo = tagInfoService.getById(tagId);
+                    MaterialTagInfo setTag= new MaterialTagInfo(code,tagInfo,userId);
+                    materialTagInfoService.save(setTag);
+                }
+            }
             getFile(info, project.getMediaId());
             ResultMapUtils.setResultMap(resultMap, StatusCode.COMMON_SUCCESS.getCode());
         } catch (Exception e) {
@@ -633,6 +619,10 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
         }
         return resultMap;
     }
+    @Autowired
+    private ITagInfoService tagInfoService;
+    @Autowired
+    private IMaterialTagInfoService materialTagInfoService;
 
     @Override
     public Map<String, Object> insertImage(JSONObject imageJson) {

+ 71 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialTagInfoServiceImpl.java

@@ -0,0 +1,71 @@
+package cn.com.ctop.common.module.service.impl;
+
+import cn.com.ctop.common.module.entity.MaterialInfo;
+import cn.com.ctop.common.module.entity.MaterialTagInfo;
+import cn.com.ctop.common.module.entity.TagInfo;
+import cn.com.ctop.common.module.mapper.MaterialTagInfoMapper;
+import cn.com.ctop.common.module.service.IMaterialInfoService;
+import cn.com.ctop.common.module.service.IMaterialTagInfoService;
+import cn.com.ctop.common.module.service.ITagInfoService;
+import cn.com.ctop.common.module.utils.ResultMapUtils;
+import cn.com.ctop.common.module.utils.StatusCode;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.common.system.vo.LoginUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 素材标签信息
+ * @author jeecg-boot
+ * @date   2020-08-27
+ * @version V1.0
+ */
+@Service
+public class MaterialTagInfoServiceImpl extends ServiceImpl<MaterialTagInfoMapper, MaterialTagInfo> implements IMaterialTagInfoService {
+    @Autowired
+    private IMaterialInfoService materialInfoService;
+    @Autowired
+    private ITagInfoService tagInfoService;
+    @Override
+    public Map<String, Object> mark(JSONObject data, LoginUser user) {
+        Map<String,Object>result = new HashMap<>();
+        String code = data.getString("code");
+        if(null==code||"".equals(code.trim())){
+            ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR);
+            return result;
+        }
+        MaterialInfo materialInfo = materialInfoService.getMaterialInfoByCode(code);
+        if(null == materialInfo){
+            ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR);
+            return result;
+        }
+        JSONArray tagList = data.getJSONArray("tagList");
+        if(null == tagList){
+            ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR);
+            return result;
+        }
+        //删除之前的标签信息
+        this.deleteByCode(code);
+        for(int i=0;i<tagList.size();i++){
+            Long tagId = tagList.getLong(i);
+            TagInfo tagInfo = tagInfoService.getById(tagId);
+            MaterialTagInfo setTag= new MaterialTagInfo(code,tagInfo,user.getId());
+            this.save(setTag);
+        }
+        ResultMapUtils.setResultMap(result,StatusCode.COMMON_SUCCESS);
+        return result;
+    }
+
+    private void deleteByCode(String code) {
+        UpdateWrapper<MaterialTagInfo>updateWrapper = new UpdateWrapper<>();
+        updateWrapper.eq("code",code).set("status",0).set("update_time",new Date());
+        this.update(updateWrapper);
+    }
+}

+ 11 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/impl/TagCategoryInfoServiceImpl.java

@@ -0,0 +1,11 @@
+package cn.com.ctop.common.module.service.impl;
+
+import cn.com.ctop.common.module.entity.TagCategoryInfo;
+import cn.com.ctop.common.module.mapper.TagCategoryInfoMapper;
+import cn.com.ctop.common.module.service.ITagCategoryInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TagCategoryInfoServiceImpl extends ServiceImpl<TagCategoryInfoMapper, TagCategoryInfo> implements ITagCategoryInfoService {
+}

+ 14 - 9
module-common/src/main/java/cn/com/ctop/common/module/service/impl/TagInfoServiceImpl.java

@@ -5,11 +5,8 @@ import cn.com.ctop.common.module.mapper.TagInfoMapper;
 import cn.com.ctop.common.module.model.TagInfoTreeModel;
 import cn.com.ctop.common.module.service.ITagInfoService;
 import cn.com.ctop.common.module.utils.FindstagInfosChildrenUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.jeecg.common.constant.CacheConstant;
-import org.jeecg.common.constant.CommonConstant;
-import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -26,15 +23,23 @@ public class TagInfoServiceImpl extends ServiceImpl<TagInfoMapper, TagInfo> impl
     /**
      * queryTreeList 对应 queryTreeList 查询所有的部门数据,以树结构形式响应给前端
      */
-    @Cacheable(value = CacheConstant.SYS_TAGINFOS_CACHE)
     @Override
-    public List<TagInfoTreeModel> queryTreeList() {
-        LambdaQueryWrapper<TagInfo> query = new LambdaQueryWrapper<>();
-        query.eq(TagInfo::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
-        query.orderByAsc(TagInfo::getTagOrder);
+    public List<TagInfoTreeModel> queryTreeList(String userId) {
+        QueryWrapper<TagInfo> query = new QueryWrapper<>();
+        query.eq("del_flag", "0").or(wrapper->wrapper.eq("status",0).eq("user_id",userId));
+        query.orderByAsc("tag_order");
         List<TagInfo> list = this.list(query);
         // 调用wrapTreeDataToTreeList方法生成树状数据
         List<TagInfoTreeModel> listResult = FindstagInfosChildrenUtil.wrapTreeDataToTreeList(list);
         return listResult;
     }
+
+    @Override
+    public TagInfo getByTagCode(String tagCode) {
+        QueryWrapper<TagInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("tag_code",tagCode);
+        queryWrapper.orderByDesc("id");
+        queryWrapper.last("limit 1");
+        return this.getOne(queryWrapper);
+    }
 }

+ 53 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/impl/UReportExportRest.java

@@ -0,0 +1,53 @@
+package cn.com.ctop.common.module.service.impl;
+
+import cn.com.ctop.common.module.service.IUReportExportService;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.io.*;
+
+@Service
+@Slf4j
+public class UReportExportRest implements IUReportExportService {
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    private static final String  outputDir="/data/file/report"+ File.separator + "uReport"+File.separator;
+
+    @Override
+    public void exportExcel(String fileName) {
+
+        String yesterday= DateUtils.addDay(DateUtils.date2Str(),-1);
+        StringBuilder sb=new StringBuilder();
+        sb.append("&startDate=").append(yesterday)
+                .append("&endDate=").append(yesterday)
+                .append("&statDate=").append(yesterday)
+                .append("&date=").append(yesterday)
+                .append("&statDatetime=").append(yesterday);
+        String exportDataUrl = "http://139.186.29.76:8804/jeecg-boot/ureport/excel?_u=mysql:";
+        byte[] result =restTemplate.postForObject(exportDataUrl +fileName+sb.toString(),null,byte[].class);
+        File file=new File(outputDir+fileName.replace("ureport.xml","")+"xlsx");
+        OutputStream outputStream=null;
+        try {
+            if(result!=null){
+                outputStream=new FileOutputStream(file,true);
+                outputStream.write(result);
+                outputStream.flush();
+            }
+        } catch (IOException e) {
+            log.error("定制化报表下载错误>>>UReportExportServiceImpl");
+        } finally {
+            if(outputStream!=null){
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+}

+ 56 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/impl/UReportExportServiceImpl.java

@@ -0,0 +1,56 @@
+package cn.com.ctop.common.module.service.impl;
+
+import cn.com.ctop.common.module.service.IUReportExportService;
+import com.bstek.ureport.export.ExportConfigureImpl;
+import com.bstek.ureport.export.ExportManager;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.common.util.SpringContextUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.io.*;
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+@Slf4j
+public class UReportExportServiceImpl{
+
+    @Autowired
+    RestTemplate restTemplate;
+    private static final String  outputDir=System.getProperty("user.dir")+File.separator + "uReport"+File.separator+"report.xlsx";
+
+    public void exportExcel(String fileName) {
+
+        String yesterday= DateUtils.addDay(DateUtils.date2Str(),-1);
+        Map<String, Object> parameters=new HashMap<>();
+        parameters.put("startDate",yesterday);
+        parameters.put("endDate",yesterday);
+        parameters.put("statDate,",yesterday);
+        parameters.put("date,",yesterday);
+        parameters.put("statDatetime,",yesterday);
+        File file=new File(outputDir);
+        OutputStream outputStream=null;
+        try {
+            outputStream=new FileOutputStream(file,true);
+            ExportConfigureImpl exportConfigure=new ExportConfigureImpl(fileName,parameters,outputStream);
+            getExportManager().exportExcel(exportConfigure);
+        } catch (FileNotFoundException e) {
+            log.error("定制化报表下载错误>>>UReportExportServiceImpl");
+        }finally {
+            if(outputStream!=null){
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+    private static ExportManager getExportManager(){
+        return (ExportManager)SpringContextUtils.getBean(ExportManager.BEAN_ID);
+    }
+}
+

+ 27 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/impl/UReportService.java

@@ -0,0 +1,27 @@
+package cn.com.ctop.common.module.service.impl;
+
+import cn.com.ctop.common.module.entity.UReportSubscriber;
+import cn.com.ctop.common.module.mapper.UReportMapper;
+import cn.com.ctop.common.module.service.IUReportService;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class UReportService implements IUReportService {
+
+    @Autowired
+    UReportMapper uReportMapper;
+
+    @Override
+    public List<JSONObject> uReportList() {
+        return uReportMapper.queryUReportBy(1);
+    }
+
+    @Override
+    public List<UReportSubscriber> getUReportSubscriberByFileId(String fileId) {
+        return uReportMapper.queryUReportSubscriberByFileId(fileId);
+    }
+}

+ 21 - 27
module-common/src/main/java/cn/com/ctop/common/module/utils/HttpUtils.java

@@ -188,7 +188,7 @@ public class HttpUtils {
                 }
             }
             List<NameValuePair> paramList = new ArrayList<NameValuePair>();
-            if (param != null){
+            if (param != null) {
                 for (String key : param.keySet()) {
                     BasicNameValuePair basicNameValuePair = new BasicNameValuePair(key, String.valueOf(param.get(key)));
                     paramList.add(basicNameValuePair);
@@ -415,22 +415,20 @@ public class HttpUtils {
         return strReturn;
     }
 
-    public static void main(String[] args){
+    public static void main(String[] args) {
         String res = HttpUtils.getKuaishouShareUrl("http://yongzhou.s.gifshow.com/i/photo/lwx?userId=1400097524&photoId=5191805968879099278");
         String path = res.split("\\?")[0];
-        String photoId = path.substring(path.lastIndexOf("/")+1,path.length());
-        path =path.substring(0,path.lastIndexOf("/"));
-        String uid = path.substring(path.lastIndexOf("/")+1,path.length());
-        System.out.println(uid);
-        System.out.println(photoId);
-        res = HttpUtils.postKuaishouVideoUrl("https://live.kuaishou.com/m_graphql",uid,photoId);
-        System.out.println(res);
+        String photoId = path.substring(path.lastIndexOf("/") + 1, path.length());
+        path = path.substring(0, path.lastIndexOf("/"));
+        String uid = path.substring(path.lastIndexOf("/") + 1, path.length());
+
+        res = HttpUtils.postKuaishouVideoUrl("https://live.kuaishou.com/m_graphql", uid, photoId);
     }
 
-    public static String postKuaishouVideoUrl(String url,String uid,String photoId){
+    public static String postKuaishouVideoUrl(String url, String uid, String photoId) {
         HttpClient httpClient = createSslClientDefault();
         String strReturn = "";
-        String paramBody = "{\"operationName\":\"FeedQuery\",\"variables\":{\"principalId\":\""+uid+"\",\"photoId\":\""+photoId+"\"},\"query\":\"query FeedQuery($principalId: String, $photoId: String) {\\n  feedById(principalId: $principalId, photoId: $photoId) {\\n    currentWork {\\n                 timestamp\\n           __typename\\n    }\\n       __typename\\n  }\\n}\\n\"}";
+        String paramBody = "{\"operationName\":\"FeedQuery\",\"variables\":{\"principalId\":\"" + uid + "\",\"photoId\":\"" + photoId + "\"},\"query\":\"query FeedQuery($principalId: String, $photoId: String) {\\n  feedById(principalId: $principalId, photoId: $photoId) {\\n    currentWork {\\n                 timestamp\\n           __typename\\n    }\\n       __typename\\n  }\\n}\\n\"}";
         try {
             HttpPost httppost = new HttpPost(url);
             httppost.setHeader("User-Agent", USER_AGENT);
@@ -454,7 +452,8 @@ public class HttpUtils {
         }
         return strReturn;
     }
-    public static String getKuaishouShareUrl(String url){
+
+    public static String getKuaishouShareUrl(String url) {
         HttpClient httpClient = HttpClientBuilder.create().build();
         HttpResponse response = null;
         HttpGet httpGet = new HttpGet(url);
@@ -470,10 +469,8 @@ public class HttpUtils {
             httpGet.setHeader("Accept-Language", "zh-CN,zh;q=0.9");
             response = httpClient.execute(httpGet);
             int statusCode = response.getStatusLine().getStatusCode();
-            System.out.println(statusCode);
             if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
                 String newUrl = response.getFirstHeader("Location").getValue();
-                System.out.println(newUrl);
                 return newUrl;
             }
 
@@ -492,10 +489,8 @@ public class HttpUtils {
             httpGet.setHeader("User-Agent", USER_AGENT);
             response = httpClient.execute(httpGet);
             int statusCode = response.getStatusLine().getStatusCode();
-            System.out.println(statusCode);
             if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
                 String newUrl = response.getFirstHeader("Location").getValue();
-                System.out.println(newUrl);
                 return httpGetRequest(newUrl);
             } else if (statusCode == HttpStatus.SC_OK) {
                 BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
@@ -768,9 +763,9 @@ public class HttpUtils {
             HttpResponse response = httpclient.execute(httpget);
             respEntity = response.getEntity();
             Header[] responseHeaders = response.getHeaders("Set-Cookie");
-            if(responseHeaders != null){
+            if (responseHeaders != null) {
 
-                for(Header header : responseHeaders){
+                for (Header header : responseHeaders) {
                     String[] ckArray = header.getValue().split(";");
                     BasicClientCookie ck = new BasicClientCookie(ckArray[0].split("=")[0], ckArray[0].split("=")[1]);
                     ck.setPath(ckArray[1].split("=")[1]);
@@ -871,11 +866,12 @@ public class HttpUtils {
         return strReturn;
     }
 
-    public static JSONObject feishuGetRequest(String url, JSONObject params){
-        return feishuGetRequest(null,url,params);
+    public static JSONObject feishuGetRequest(String url, JSONObject params) {
+        return feishuGetRequest(null, url, params);
     }
-    public static JSONObject feishuPostRequest(String url,JSONObject params){
-        return feishuPostRequest(null,url,params);
+
+    public static JSONObject feishuPostRequest(String url, JSONObject params) {
+        return feishuPostRequest(null, url, params);
     }
 
     public static String feishuGetRequestString(String url) {
@@ -922,7 +918,6 @@ public class HttpUtils {
     }
 
     public static JSONObject feishuGetRequest(String accessToken, String url, JSONObject params) {
-        System.out.println(url);
         // 构造请求
         HttpEntityEnclosingRequestBase httpEntity = new HttpEntityEnclosingRequestBase() {
             @Override
@@ -930,7 +925,7 @@ public class HttpUtils {
                 return "GET";
             }
         };
-        if(accessToken != null){
+        if (accessToken != null) {
             httpEntity.setHeader("Authorization", accessToken);
         }
         CloseableHttpResponse response = null;
@@ -938,7 +933,7 @@ public class HttpUtils {
         try {
             client = HttpClientBuilder.create().build();
             httpEntity.setURI(URI.create(url));
-            if (params != null){
+            if (params != null) {
                 httpEntity.setEntity(new StringEntity(params.toJSONString(), ContentType.APPLICATION_JSON));
             }
             RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(12000).setConnectTimeout(12000).build();
@@ -972,11 +967,10 @@ public class HttpUtils {
     }
 
 
-
     public static JSONObject feishuPostRequest(String accessToken, String url, JSONObject params) {
         // 构造请求
         HttpPost httpEntity = new HttpPost(url);
-        if(accessToken != null){
+        if (accessToken != null) {
             httpEntity.setHeader("Authorization", accessToken);
         }
         CloseableHttpResponse response = null;

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/vo/SheetInfoVo.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.ctop.vo;
+package cn.com.ctop.common.module.vo;
 
 import java.util.List;
 

Datei-Diff unterdrückt, da er zu groß ist
+ 50 - 3
module-crawler/src/main/java/cn/com/ctop/crawler/modules/core/service/impl/KuaishouCrawlerServiceImpl.java


+ 18 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/core/util/HttpParamUtil.java

@@ -42,6 +42,24 @@ public class HttpParamUtil {
         return sb.toString().substring(1);
     }
 
+    public static <K, V> String mapToUrlStringNoEncoder(Map<K, V> map, List<String> ignoreKeyList){
+        if (map == null) {
+            return null;
+        }
+        StringBuffer sb = new StringBuffer();
+        try{
+            for(K key :map.keySet()){
+                if(ignoreKeyList!=null && ignoreKeyList.contains(key)){
+                    continue;
+                }
+                sb.append("&"+key + "=" + String.valueOf(map.get(key)==null?"":map.get(key)));
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return sb.toString().substring(1);
+    }
+
     public static Map<String,String> urlParamToMap(String urlParam){
         if (urlParam == null || "".equalsIgnoreCase(urlParam)) {
             return null;

+ 4 - 4
module-crawler/src/main/java/cn/com/ctop/crawler/modules/core/util/KuaishouUtil.java

@@ -36,6 +36,7 @@ public class KuaishouUtil {
         Map<String,String> dynamicParams = httpEntity.getHttpBody().getDynamicParams();
         List<String> ignoreKeyList = new ArrayList<String>();
         ignoreKeyList.add("sig");
+        ignoreKeyList.add("__NS_sig3");
         ignoreKeyList.add("__NStokensig");
         String staticQueryString = HttpParamUtil.mapToUrlString(staticParams,null);
         Map<String,String> allMap = new HashMap<String,String>();
@@ -46,7 +47,8 @@ public class KuaishouUtil {
             dynamicParams.put("sig",sig);
             allMap.put("sig",sig);
         }
-        String dynamicQueryString = HttpParamUtil.mapToUrlString(dynamicParams,null);
+
+        String dynamicQueryString = HttpParamUtil.mapToUrlStringNoEncoder(dynamicParams,null);
         BasicCookieStore cookieStore = new BasicCookieStore();
         for(HttpCookie cookie : httpEntity.getCookies()){
             BasicClientCookie clientCookie = new BasicClientCookie(cookie.getName(),cookie.getValue());
@@ -103,9 +105,7 @@ public class KuaishouUtil {
         return crawlerLog;
     }
     private static String randomRequestId() {
-
         int temp = 436669999 - 436650000;
-
         int nextInt = new Random().nextInt(temp) + 436650000;
         return String.valueOf(nextInt);
     }
@@ -114,7 +114,7 @@ public class KuaishouUtil {
         HttpEntity httpEntity = new HttpEntity();
         Map<String,String> staticParams = HttpParamUtil.urlParamToMap(urlParam);
         Map<String,String> dynamicParams = HttpParamUtil.urlParamToMap(bodyParam);
-        List<HttpCookie> cookies = new ArrayList<HttpCookie>();
+        List<HttpCookie> cookies = new ArrayList<>();
         HttpCookie cookie = new HttpCookie();
         cookie.setDomain(url.replace("https://","").replace("http://",""));
         cookie.setName("token");

Datei-Diff unterdrückt, da er zu groß ist
+ 41 - 54
module-crawler/src/main/java/cn/com/ctop/crawler/modules/taobao/service/impl/TaobaoJhsbybtServiceImpl.java


+ 41 - 61
module-crawler/src/main/java/cn/com/ctop/crawler/modules/taobao/service/impl/TaobaoTttmServiceImpl.java

@@ -1,7 +1,6 @@
 package cn.com.ctop.crawler.modules.taobao.service.impl;
 
 import cn.com.ctop.common.module.utils.HttpUtils;
-import cn.com.ctop.crawler.modules.taobao.service.TaobaoJhsbybtService;
 import cn.com.ctop.crawler.modules.taobao.service.TaobaoTttmService;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -16,68 +15,66 @@ import java.util.*;
 @Service
 public class TaobaoTttmServiceImpl implements TaobaoTttmService {
 
-    public String getGoodsList(int page){
+    public String getGoodsList(int page) {
         String url = "https://h5api.m.taobao.com/h5/mtop.panama.fiona.commonbizservice/1.1/";
-        Map<String,Object> paramMap = new HashMap<String,Object>();
-        paramMap.put("jsv","2.6.0");
-        paramMap.put("appKey","12574478");
-        paramMap.put("t",new Date().getTime());
-        paramMap.put("sign","56b679fe3a6de0cd4ffa8ccb8680ff83");
-        paramMap.put("timeout",3000);
-        paramMap.put("api","mtop.panama.fiona.commonbizservice");
-        paramMap.put("params","[object Object]");
-        paramMap.put("dataType","jsonp");
-        paramMap.put("v","1.0");
-        paramMap.put("preventFallback",true);
-        paramMap.put("type","jsonp");
-        paramMap.put("callback","mtopjsonp2");
-        paramMap.put("data","{\"bizCode\":\"home_feeds\",\"optStr\":\"preview=false;outerBackupKey=prod-home_feeds-currentPage_"+page+"\",\"currentPage\":"+page+",\"outerBackupKey\":\"prod-home_feeds-currentPage_"+page+"\"}");
-        Map<String,String> headerMap = new HashMap<String,String>();
-        headerMap.put("Accept-Encoding","gzip, deflate, br");
-        headerMap.put("Connection","keep-alive");
-        headerMap.put("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36");
-        headerMap.put("Accept","*/*");
-        headerMap.put("Content-Type","application/xml");
-        headerMap.put("Referer","https://market.m.taobao.com/app/tmall-def/jhsbybt/web/index.html?disableNav=YES&itemIds=617136337387&spm=608.14027681/8.bubbles.d0");
-        String result = HttpUtils.httpGet(url,paramMap,headerMap);
+        Map<String, Object> paramMap = new HashMap<String, Object>();
+        paramMap.put("jsv", "2.6.0");
+        paramMap.put("appKey", "12574478");
+        paramMap.put("t", new Date().getTime());
+        paramMap.put("sign", "56b679fe3a6de0cd4ffa8ccb8680ff83");
+        paramMap.put("timeout", 3000);
+        paramMap.put("api", "mtop.panama.fiona.commonbizservice");
+        paramMap.put("params", "[object Object]");
+        paramMap.put("dataType", "jsonp");
+        paramMap.put("v", "1.0");
+        paramMap.put("preventFallback", true);
+        paramMap.put("type", "jsonp");
+        paramMap.put("callback", "mtopjsonp2");
+        paramMap.put("data", "{\"bizCode\":\"home_feeds\",\"optStr\":\"preview=false;outerBackupKey=prod-home_feeds-currentPage_" + page + "\",\"currentPage\":" + page + ",\"outerBackupKey\":\"prod-home_feeds-currentPage_" + page + "\"}");
+        Map<String, String> headerMap = new HashMap<String, String>();
+        headerMap.put("Accept-Encoding", "gzip, deflate, br");
+        headerMap.put("Connection", "keep-alive");
+        headerMap.put("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36");
+        headerMap.put("Accept", "*/*");
+        headerMap.put("Content-Type", "application/xml");
+        headerMap.put("Referer", "https://market.m.taobao.com/app/tmall-def/jhsbybt/web/index.html?disableNav=YES&itemIds=617136337387&spm=608.14027681/8.bubbles.d0");
+        String result = HttpUtils.httpGet(url, paramMap, headerMap);
         List<Cookie> cookieList = HttpUtils.COOKIESTORE.getCookies();
         String token = "";
         String cookie = "";
-        for (Cookie ck : cookieList){
-            if(ck.getName().equals("_m_h5_tk")){
+        for (Cookie ck : cookieList) {
+            if (ck.getName().equals("_m_h5_tk")) {
                 token = ck.getValue().split("_")[0];
             }
-            cookie = cookie + ck.getName()+"="+ck.getValue()+";";
+            cookie = cookie + ck.getName() + "=" + ck.getValue() + ";";
         }
-        String sign = DigestUtils.md5Hex(token+"&"+paramMap.get("t")+"&"+paramMap.get("appKey")+"&"+paramMap.get("data"));
-        paramMap.put("sign",sign);
-        headerMap.put("Cookie",cookie);
-        result = HttpUtils.httpGet(url,paramMap,headerMap);
+        String sign = DigestUtils.md5Hex(token + "&" + paramMap.get("t") + "&" + paramMap.get("appKey") + "&" + paramMap.get("data"));
+        paramMap.put("sign", sign);
+        headerMap.put("Cookie", cookie);
+        result = HttpUtils.httpGet(url, paramMap, headerMap);
         return result;
     }
 
-    public static void main(String[] args){
+    public static void main(String[] args) {
         try {
             PrintStream out = new PrintStream("D:/tttm0831.csv");
             System.setOut(out);
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         }
-        System.out.println("商品id,商品名,销量,商品图,商品链接,优惠价,原价");
         TaobaoTttmServiceImpl tb = new TaobaoTttmServiceImpl();
         int i = 2;
         Boolean hasMore = true;
-        while (hasMore){
+        while (hasMore) {
             try {
                 String result = tb.getGoodsList(i);
-                result = result.replace("mtopjsonp2(","");
-                result = result.substring(0,result.length()-1);
-//                System.out.println(result);
+                result = result.replace("mtopjsonp2(", "");
+                result = result.substring(0, result.length() - 1);
                 ObjectMapper mapper = new ObjectMapper();
                 JsonNode rootNode = mapper.readTree(result);
                 Boolean success = rootNode.get("data").get("data").get("homeFeeds").isNull();
                 int size = rootNode.get("data").get("data").get("homeFeeds").size();
-                if(size == 0){
+                if (size == 0) {
                     hasMore = false;
                 }
 //                while (!success){
@@ -92,13 +89,13 @@ public class TaobaoTttmServiceImpl implements TaobaoTttmService {
 //                hasMore = rootNode.get("data").get("resultValue").get("8613423").get("data").get("hasMore").asBoolean();
                 Iterator<JsonNode> items = rootNode.get("data").get("data").get("homeFeeds").iterator();
 
-                while (items.hasNext()){
+                while (items.hasNext()) {
 
                     JsonNode itemNode = items.next();
                     String itemType = itemNode.get("itemType").asText();
-                    if (itemType.equals("rankList")){
+                    if (itemType.equals("rankList")) {
                         Iterator<JsonNode> subitems = itemNode.get("items").iterator();
-                        while (subitems.hasNext()){
+                        while (subitems.hasNext()) {
                             JsonNode subNode = subitems.next();
                             String cjmsItemName = subNode.get("shortName").asText();
                             Integer itemSoldInfo = 0;
@@ -112,17 +109,8 @@ public class TaobaoTttmServiceImpl implements TaobaoTttmService {
 //                    String cutPrice = itemNode.get("cutPrice").asText();
                             String itemUrl = subNode.get("itemHref").asText();
                             String itemId = subNode.get("itemId").asText();
-                            System.out.println(itemId+","+cjmsItemName+","+
-                                    itemSoldInfo+","+
-//                            brandLogo+","+
-                                    picUrl+","+
-//                            cjmsTaobaoEntrance+","+
-                                    itemUrl+","+
-                                    actPrice+","+
-//                            cutPrice+","+
-                                    orgPrice+",");
                         }
-                    }else if(itemType.equals("item")){
+                    } else if (itemType.equals("item")) {
                         String cjmsItemName = itemNode.get("shortName").asText();
                         Integer itemSoldInfo = itemNode.get("soldCount").asInt();
                         String picUrl = itemNode.get("preview").asText();
@@ -135,21 +123,13 @@ public class TaobaoTttmServiceImpl implements TaobaoTttmService {
 //                    String cutPrice = itemNode.get("cutPrice").asText();
                         String itemUrl = itemNode.get("itemHref").asText();
                         String itemId = itemNode.get("itemId").asText();
-                        System.out.println(itemId+","+cjmsItemName+","+
-                                itemSoldInfo+","+
-//                            brandLogo+","+
-                                picUrl+","+
-//                            cjmsTaobaoEntrance+","+
-                                itemUrl+","+
-                                actPrice+","+
-//                            cutPrice+","+
-                                orgPrice+",");
+
                     }
 
                 }
                 i++;
                 Thread.sleep(3000L);
-            }catch (Exception e){
+            } catch (Exception e) {
                 e.printStackTrace();
             }
         }

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

@@ -20,6 +20,7 @@ import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
@@ -122,9 +123,6 @@ public class MaterialUploadImageServiceImpl implements IMaterialUploadImageServi
     }
 
 
-    @Autowired
-    private RestTemplate rest;
-
     private String exceptInfoForRestTemplate(String url, Map<String, Object> paramMap, Map<String, String> headerMap) throws ParseException {
         try {
             MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
@@ -138,6 +136,10 @@ public class MaterialUploadImageServiceImpl implements IMaterialUploadImageServi
                         headers.add(key, headerMap.get(key));
                     }
                 }
+                SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
+                requestFactory.setConnectTimeout(1000 * 500);// 设置超时
+                requestFactory.setReadTimeout(1000 * 500);
+                RestTemplate rest = new RestTemplate(requestFactory);
                 HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(param, headers);
                 ResponseEntity<String> responseEntity = rest.exchange(url, HttpMethod.POST, httpEntity, String.class);
                 return responseEntity.getBody();

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


Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.