Bladeren bron

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

# Conflicts:
#	jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
xuzuoyun 4 jaren geleden
bovenliggende
commit
15d114e62a
100 gewijzigde bestanden met toevoegingen van 3690 en 2409 verwijderingen
  1. 27 2
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/DateUtils.java
  2. 6 1
      jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/entity/ActZprocess.java
  3. 8 8
      jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/Impl/ActZprocessServiceImpl.java
  4. 63 34
      jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/web/ActBusinessController.java
  5. 17 7
      jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/web/ActivitiProcessController.java
  6. 13 0
      jeecg-boot-module-system/pom.xml
  7. 1 0
      jeecg-boot-module-system/src/main/java/org/jeecg/config/ShiroConfig.java
  8. 8 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ActCustomFormController.java
  9. 1 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ActFormDataController.java
  10. 0 234
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ActFormFieldController.java
  11. 31 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ActFormPorcessController.java
  12. 39 76
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/AdvertiserController.java
  13. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/BindAccountLoginController.java
  14. 6 6
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/CallbackController.java
  15. 236 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/JhsBakendDataController.java
  16. 45 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/KuaishouChannelRegInfoController.java
  17. 1 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialImageInfoController.java
  18. 143 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MusicKuaishouTypeController.java
  19. 0 337
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ProductController.java
  20. 30 42
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ProjectController.java
  21. 28 13
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ProjectMemberController.java
  22. 4 7
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/UserAllocationController.java
  23. 0 126
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/Advertiser.java
  24. 55 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/JhsBakendData.java
  25. 3 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/ProjectMember.java
  26. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/AdvertiserMapper.java
  27. 21 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/JhsBakendDataMapper.java
  28. 60 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/JhsBakendDataMapper.xml
  29. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IAdvertiserService.java
  30. 21 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IJhsBakendDataService.java
  31. 7 6
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/AdvertiserServiceImpl.java
  32. 58 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/JhsBakendDataServiceImpl.java
  33. 3 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/PerformanceSaleServiceImpl.java
  34. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/ProjectTransferRecordServiceImpl.java
  35. 70 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/excelutil/JhsBakendDataExcelListener.java
  36. 132 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/excelutil/entity/JhsBakendDataEntity.java
  37. 3 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/performance/service/impl/SalePerformanceDetailServiceImpl.java
  38. 40 6
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
  39. 214 195
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
  40. 0 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java
  41. 361 356
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
  42. 20 20
      jeecg-boot-module-system/src/main/resources/application-dev.yml
  43. 2 2
      jeecg-boot-module-system/src/main/resources/application-test.yml
  44. 0 17
      jeecg-boot-module-system/src/main/resources/drools/rule.drl
  45. 0 17
      jeecg-boot-module-system/src/main/resources/drools/rule2.drl
  46. 3 3
      jeecg-boot-module-system/src/main/resources/jeecg/jeecg_database.properties
  47. 107 78
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  48. 269 0
      module-common/src/main/java/cn/com/ctop/common/module/controller/ProductController.java
  49. 2 0
      module-common/src/main/java/cn/com/ctop/common/module/entity/ActCustomForm.java
  50. 3 5
      module-common/src/main/java/cn/com/ctop/common/module/entity/ActFormData.java
  51. 1 31
      module-common/src/main/java/cn/com/ctop/common/module/entity/Advertiser.java
  52. 44 13
      module-common/src/main/java/cn/com/ctop/common/module/entity/Product.java
  53. 16 15
      module-common/src/main/java/cn/com/ctop/common/module/entity/Project.java
  54. 9 12
      module-common/src/main/java/cn/com/ctop/common/module/entity/UserAllocation.java
  55. 8 40
      module-common/src/main/java/cn/com/ctop/common/module/mapper/ProductMapper.java
  56. 3 3
      module-common/src/main/java/cn/com/ctop/common/module/mapper/SysUserMapper.java
  57. 4 224
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/ProductMapper.xml
  58. 150 144
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/SysUserMapper.xml
  59. 5 38
      module-common/src/main/java/cn/com/ctop/common/module/service/IProductService.java
  60. 3 0
      module-common/src/main/java/cn/com/ctop/common/module/service/IProjectService.java
  61. 11 6
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/FileInfoServiceImpl.java
  62. 9 137
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/ProductServiceImpl.java
  63. 11 0
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/ProjectServiceImpl.java
  64. 6 2
      module-common/src/main/java/cn/com/ctop/common/module/utils/HttpUtils.java
  65. 1 0
      module-common/src/main/java/cn/com/ctop/common/module/utils/StatusCode.java
  66. 0 25
      module-common/src/main/java/cn/com/ctop/common/module/vo/ProductDto.java
  67. 0 28
      module-common/src/main/java/cn/com/ctop/common/module/vo/ProductInfoDto.java
  68. 0 52
      module-common/src/main/java/cn/com/ctop/common/module/vo/ProductVO.java
  69. 11 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/core/service/IKuaishouCrawlerService.java
  70. 14 5
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/core/service/impl/KuaishouCrawlerServiceImpl.java
  71. 106 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/entity/MusicInfoKuaishou.java
  72. 45 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/entity/MusicKuaishouType.java
  73. 14 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/mapper/MusicInfoKuaishouMapper.java
  74. 14 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/mapper/MusicKuaishouTypeMapper.java
  75. 5 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/mapper/xml/MusicInfoKuaishouMapper.xml
  76. 5 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/mapper/xml/MusicKuaishouTypeMapper.xml
  77. 14 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/service/IMusicInfoKuaishouService.java
  78. 14 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/service/IMusicKuaishouTypeService.java
  79. 18 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/service/impl/MusicInfoKuaishouServiceImpl.java
  80. 18 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/service/impl/MusicKuaishouTypeServiceImpl.java
  81. 5 5
      module-ctop/src/main/java/cn/com/ctop/manage/modules/material/service/impl/MaterialUploadServiceImpl.java
  82. 128 0
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceMonitoringLinksCheckJob.java
  83. 0 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/controller/BatchController.java
  84. 24 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouReportDailyMaterialMapper.java
  85. 132 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouReportDailyMaterialMapper.xml
  86. 14 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouReportDailyMaterialService.java
  87. 7 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/AccountWarningServiceImpl.java
  88. 27 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouDailyReportTaskServiceImpl.java
  89. 34 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouHistoryReportTaskServiceImpl.java
  90. 19 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouReportDailyMaterialServiceImpl.java
  91. 4 4
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/graphql/service/impl/KuaishouWebInterfaceServiceImpl.java
  92. 419 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/KuaiShouReportDailyMaterial.java
  93. 34 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/KuaiShouReportDailyMaterialVo.java
  94. 13 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/VideoGetvo.java
  95. 2 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaiShouDailyAgentMapper.java
  96. 47 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaiShouDailyAgentMapper.xml
  97. 1 3
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaiShouYiCheReportMapper.xml
  98. 3 4
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouReportDailyAgentServiceImpl.java
  99. 50 0
      module-oa/pom.xml
  100. 0 0
      module-oa/src/main/java/cn/com/ctop/oa/modules/constant/QYWxConstant.java

+ 27 - 2
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/DateUtils.java

@@ -181,6 +181,7 @@ public class DateUtils extends PropertyEditorSupport {
     public static Calendar getCalendar() {
         return Calendar.getInstance();
     }
+
     /**
      * 指定毫秒数表示的日历
      *
@@ -213,15 +214,17 @@ public class DateUtils extends PropertyEditorSupport {
         }
         return null;
     }
+
     /**
      * 当前日期
      *
-     * @return 系统当前时间
      * @param l
+     * @return 系统当前时间
      */
     public static Date getDate(long l) {
         return new Date();
     }
+
     /**
      * 日期转换为字符串
      *
@@ -235,9 +238,11 @@ public class DateUtils extends PropertyEditorSupport {
         }
         return date_sdf.format(date);
     }
+
     public static Date getDate() {
         return new Date();
     }
+
     /**
      * 格式化时间
      *
@@ -592,7 +597,7 @@ public class DateUtils extends PropertyEditorSupport {
      * @return 如果转换成功则返回转换后的日期
      * @throws
      */
-    public static Calendar parseCalendar(String src, String pattern){
+    public static Calendar parseCalendar(String src, String pattern) {
 
         Date date = parseDate(src, pattern);
         Calendar cal = Calendar.getInstance();
@@ -711,6 +716,26 @@ public class DateUtils extends PropertyEditorSupport {
         return dateFormat.format(getDate);
     }
 
+    public static Date stampToTime(Long ms) throws ParseException {
+        long msl = ms * 1000;
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date temp = null;
+        if (ms != null) {
+            try {
+                String str = sdf.format(msl);
+                temp = sdf.parse(str);
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+        }
+        return temp;
+    }
+
+    public static void main(String[] args) throws ParseException {
+        Date date = stampToTime(1599524171L);
+        System.err.println(date);
+    }
+
     /**
      * String类型 转换为Date, 如果参数长度为10 转换格式”yyyy-MM-dd“ 如果参数长度为19 转换格式”yyyy-MM-dd
      * HH:mm:ss“ * @param text String类型的时间值

+ 6 - 1
jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/entity/ActZprocess.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.activiti.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -26,7 +27,7 @@ import java.util.Date;
 @Accessors(chain = true)
 @ApiModel(value="act_z_process对象", description="流程定义扩展表")
 public class ActZprocess {
-    
+
 	/**id*/
 	@TableId(type = IdType.ID_WORKER_STR)
     @ApiModelProperty(value = "id")
@@ -103,4 +104,8 @@ public class ActZprocess {
 	@Excel(name = "授权的角色", width = 15)
     @ApiModelProperty(value = "授权的角色")
 	private String roles;
+
+	private Long customTableId;
+	@TableField(exist = false)
+	private String customTableName;
 }

+ 8 - 8
jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/Impl/ActZprocessServiceImpl.java

@@ -114,10 +114,8 @@ public class ActZprocessServiceImpl extends ServiceImpl<ActZprocessMapper, ActZp
             throw new JeecgBootException("没有业务表单数据");
         }
         /*表单数据写入*/
-        Map<String, Object> busiData = actBusinessService.getBaseMapper().getBusiData(tableId, tableName);
-        for (String key : busiData.keySet()) {
-            params.put(key,busiData.get(key));
-        }
+        params.put("data",tableName);
+
         ProcessInstance pi = runtimeService.startProcessInstanceById(actBusiness.getProcDefId(), actBusiness.getId(), params);
         // 设置流程实例名称
         runtimeService.setProcessInstanceName(pi.getId(), actBusiness.getTitle());
@@ -168,10 +166,12 @@ public class ActZprocessServiceImpl extends ServiceImpl<ActZprocessMapper, ActZp
     public void sendActMessage(LoginUser fromUser, LoginUser toUser, ActBusiness act, String taskName, Boolean sendMessage, Boolean sendSms, Boolean sendEmail) {
         String title = String.format("您有一个新的审批任务");
         Map<String, String> msgMap = Maps.newHashMap();
-                        /*流程名称:  ${bpm_name}
-催办任务:  ${bpm_task}
-催办时间 :    ${datetime}
-催办内容 :    ${remark}*/
+        /**
+         * 流程名称:  ${bpm_name}
+         * 催办任务:  ${bpm_task}
+         * 催办时间:  ${datetime}
+         * 催办内容:  ${remark}
+         */
         msgMap.put("bpm_name",act.getTitle());
         msgMap.put("bpm_task",taskName);
         msgMap.put("datetime", DateUtils.now());

+ 63 - 34
jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/web/ActBusinessController.java

@@ -1,8 +1,9 @@
 package org.jeecg.modules.activiti.web;
 
-import cn.hutool.core.map.MapUtil;
-import cn.hutool.core.util.IdUtil;
+import cn.com.ctop.common.module.utils.ResultMapUtils;
+import cn.com.ctop.common.module.utils.StatusCode;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.activiti.engine.RuntimeService;
@@ -19,13 +20,11 @@ import org.jeecg.modules.activiti.service.Impl.ActBusinessServiceImpl;
 import org.jeecg.modules.activiti.service.Impl.ActZprocessServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -52,27 +51,26 @@ public class ActBusinessController {
     ISysBaseApi sysBaseAPI;
     /*添加申请草稿状态*/
     @RequestMapping(value = "/add", method = RequestMethod.POST)
-    public Result add(HttpServletRequest request){
-        String procDefId = request.getParameter("procDefId");
-        String procDeTitle = request.getParameter("procDeTitle");
-        String tableName = request.getParameter("tableName");
-        /*保存业务表单数据到数据库表*/
-        String tableId = IdUtil.simpleUUID();
-        actBusinessService.saveApplyForm(tableId,request);
+    public Result add(@RequestBody JSONObject data){
+        String procDefId = data.getString("procDefId");
+        String procDeTitle = data.getString("procDeTitle");
+        Long tableId = data.getLong("tableId");
+        String formText = data.getString("formText");
+
         // 保存至我的申请业务
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String username = sysUser.getUsername();
         ActBusiness actBusiness = new ActBusiness();
         actBusiness.setUserId(username);
-        actBusiness.setTableId(tableId);
+        actBusiness.setTableId(tableId+"");
         actBusiness.setProcDefId(procDefId);
-        String title = request.getParameter(ActivitiConstant.titleKey);
+        String title = data.getString(ActivitiConstant.titleKey);
         if (StrUtil.isNotBlank(title)){
             actBusiness.setTitle(title);
         }else {
             actBusiness.setTitle(procDeTitle);
         }
-        actBusiness.setTableName(tableName);
+        actBusiness.setTableName(formText);
         actBusinessService.save(actBusiness);
         return Result.ok();
     }
@@ -99,14 +97,11 @@ public class ActBusinessController {
     /*通过id删除草稿状态申请*/
     @RequestMapping(value = "/delByIds", method = RequestMethod.POST)
     public Result delByIds(String ids){
-
         for(String id : ids.split(",")){
             ActBusiness actBusiness = actBusinessService.getById(id);
-            if(actBusiness.getStatus()!=ActivitiConstant.STATUS_TO_APPLY){
+            if(!actBusiness.getStatus().equals(ActivitiConstant.STATUS_TO_APPLY)){
                 return Result.error("删除失败, 仅能删除草稿状态的申请");
             }
-            // 删除关联业务表
-            actBusinessService.deleteBusiness(actBusiness.getTableName(), actBusiness.getTableId());
             actBusinessService.removeById(id);
         }
         return Result.ok("删除成功");
@@ -120,22 +115,13 @@ public class ActBusinessController {
             return Result.error("actBusiness表中该id不存在");
         }
         String tableId = actBusiness.getTableId();
-        String tableName = actBusiness.getTableName();
         act.setTableId(tableId);
-        Map<String, Object> busiData = actBusinessService.getBaseMapper().getBusiData(tableId, tableName);
-
-        if (MapUtil.isNotEmpty(busiData)&&busiData.get(ActivitiConstant.titleKey)!=null){
-            //如果表单里有 标题  更新一下
-            actBusiness.setTitle(busiData.get(ActivitiConstant.titleKey)+"");
-        }
         String processInstanceId = actZprocessService.startProcess(act);
         actBusiness.setProcInstId(processInstanceId);
         actBusiness.setStatus(ActivitiConstant.STATUS_DEALING);
         actBusiness.setResult(ActivitiConstant.RESULT_DEALING);
         actBusiness.setApplyTime(new Date());
         actBusinessService.updateById(actBusiness);
-        //修改业务表的流程字段
-        actBusinessService.updateBusinessStatus(actBusiness.getTableName(), actBusiness.getTableId(),"启动");
         return Result.ok("操作成功");
     }
     /*撤回申请*/
@@ -161,11 +147,22 @@ public class ActBusinessController {
     public Result listData(ActBusiness param, HttpServletRequest request){
         LambdaQueryWrapper<ActBusiness> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.orderByDesc(ActBusiness::getCreateTime);
-        if (StrUtil.isNotBlank(param.getTitle())) queryWrapper.like(ActBusiness::getTitle,param.getTitle());
-        if (param.getStatus()!=null) queryWrapper.eq(ActBusiness::getStatus,param.getStatus());
-        if (param.getResult()!=null) queryWrapper.eq(ActBusiness::getResult,param.getResult());
-        if (StrUtil.isNotBlank(request.getParameter("createTime_begin"))) queryWrapper.ge(ActBusiness::getTitle,param.getTitle());
-        if (StrUtil.isNotBlank(request.getParameter("createTime_end"))) queryWrapper.le(ActBusiness::getTitle,param.getTitle());
+        if (StrUtil.isNotBlank(param.getTitle())) {
+            queryWrapper.like(ActBusiness::getTitle,param.getTitle());
+        }
+        if (param.getStatus()!=null){
+            queryWrapper.eq(ActBusiness::getStatus,param.getStatus());
+        }
+        if (param.getResult()!=null){
+            queryWrapper.eq(ActBusiness::getResult,param.getResult());
+        }
+        if (StrUtil.isNotBlank(request.getParameter("createTime_begin"))) {
+            queryWrapper.ge(ActBusiness::getTitle,param.getTitle());
+        }
+        if (StrUtil.isNotBlank(request.getParameter("createTime_end"))) {
+            queryWrapper.le(ActBusiness::getTitle,param.getTitle());
+        }
+
 
         LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         queryWrapper.eq(ActBusiness::getUserId,loginUser.getUsername());
@@ -194,4 +191,36 @@ public class ActBusinessController {
         });
         return Result.ok(actBusinessList);
     }
+
+    @PostMapping("update")
+    public Map<String,Object>updateBusiness(@RequestBody JSONObject data){
+        Map<String,Object>result = new HashMap<>();
+        Long id = data.getLong("id");
+        String tableName = data.getString("tableName");
+        ActBusiness business = actBusinessService.getById(id);
+        if(null == business){
+            ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR);
+            return result;
+        }
+        business.setTableName(tableName);
+        actBusinessService.updateById(business);
+        ResultMapUtils.setResultMap(result, StatusCode.COMMON_SUCCESS);
+        return result;
+    }
+
+    @PostMapping("delete")
+    public Map<String,Object>delete(@RequestBody JSONObject data){
+        Map<String,Object>result = new HashMap<>();
+        Long id = data.getLong("id");
+        String tableName = data.getString("tableName");
+        ActBusiness business = actBusinessService.getById(id);
+        if(null == business){
+            ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR);
+            return result;
+        }
+        business.setTableName(tableName);
+        actBusinessService.updateById(business);
+        ResultMapUtils.setResultMap(result, StatusCode.COMMON_SUCCESS);
+        return result;
+    }
 }

+ 17 - 7
jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/web/ActivitiProcessController.java

@@ -1,5 +1,7 @@
 package org.jeecg.modules.activiti.web;
 
+import cn.com.ctop.common.module.entity.ActCustomForm;
+import cn.com.ctop.common.module.service.IActCustomFormService;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -48,8 +50,6 @@ public class ActivitiProcessController {
     @Autowired
     private RepositoryService repositoryService;
     @Autowired
-    private ObjectMapper objectMapper;
-    @Autowired
     private ActZprocessServiceImpl actZprocessService;
     @Autowired
     private ActNodeServiceImpl actNodeService;
@@ -97,9 +97,22 @@ public class ActivitiProcessController {
             }).collect(Collectors.toList());
 
         }
+        if(null!=list&&!list.isEmpty()){
+            List<ActZprocess> getList = new ArrayList<>();
+            for(ActZprocess zprocess :list){
+                ActCustomForm form = customFormService.getById(zprocess.getCustomTableId());
+                if(null!=form){
+                    zprocess.setCustomTableName(form.getName());
+                }
+                getList.add(zprocess);
+            }
+            return Result.ok(getList);
+        }
         return Result.ok(list);
     }
 
+    @Autowired
+    private IActCustomFormService customFormService;
     /*激活或挂起流程定义*/
     @RequestMapping(value = "/updateStatus")
     public Result updateStatus( String id, Integer status){
@@ -107,12 +120,10 @@ public class ActivitiProcessController {
         ActZprocess actProcess = actZprocessService.getById(id);
         if(status==1){
             //启动前检查一下 路由等信息是否齐全
-            String routeName = actProcess.getRouteName();
-            String businessTable = actProcess.getBusinessTable();
-            if (StrUtil.isBlank(routeName)||StrUtil.isBlank(businessTable)){
+            Long tableId = actProcess.getCustomTableId();
+            if (null == tableId||tableId == 0){
                 return Result.error("未设置关联表单,点击编辑设置。");
             }
-
             repositoryService.activateProcessDefinitionById(id, true, new Date());
         }else {
             repositoryService.suspendProcessDefinitionById(id, true, new Date());
@@ -193,7 +204,6 @@ public class ActivitiProcessController {
     }
     @RequestMapping(value = "/updateInfo", method = RequestMethod.POST)
     public Result<Object> updateInfo(ActZprocess actProcess){
-
         ProcessDefinition pd = repositoryService.getProcessDefinition(actProcess.getId());
         if(pd==null){
             return Result.error("流程定义不存在");

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

@@ -99,6 +99,13 @@
             <scope>compile</scope>
         </dependency>
         <dependency>
+            <groupId>cn.com.ctop</groupId>
+            <artifactId>module-oa</artifactId>
+            <version>2.0.2</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
             <groupId>com.aliyun.oss</groupId>
             <artifactId>aliyun-sdk-oss</artifactId>
             <version>3.5.0</version>
@@ -176,6 +183,12 @@
             <artifactId>pagehelper</artifactId>
             <version>5.1.11</version>
         </dependency>
+        <dependency>
+            <groupId>org.jeecgframework.boot</groupId>
+            <artifactId>module-oa</artifactId>
+            <version>2.0.2</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <dependencyManagement>

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

@@ -173,6 +173,7 @@ public class ShiroConfig {
         filterChainDefinitionMap.put("/ctop/kuaishou/dailyPage/**", "anon");
         filterChainDefinitionMap.put("/rest/script/*", "anon");
         filterChainDefinitionMap.put("/ctop/checkTaskList/*", "anon");
+        filterChainDefinitionMap.put("/ctop/report/bytedance/*", "anon");
 
         // 添加自己的过滤器并且取名为jwt
         Map<String, Filter> filterMap = new HashMap<>(1);

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

@@ -9,8 +9,10 @@ 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.jeecg.common.util.oConvertUtils;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
@@ -29,6 +31,7 @@ import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -79,6 +82,11 @@ public class ActCustomFormController {
 	public Result<ActCustomForm> add(@RequestBody ActCustomForm actCustomForm) {
 		Result<ActCustomForm> result = new Result<>();
 		try {
+			LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+			actCustomForm.setUserId(user.getId());
+			actCustomForm.setStatus(1);
+			actCustomForm.setCreateTime(new Date());
+			actCustomForm.setUpdateTime(new Date());
 			actCustomFormService.save(actCustomForm);
 			result.success("添加成功!");
 		} catch (Exception e) {

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

@@ -79,6 +79,7 @@ public class ActFormDataController {
 	public Result<ActFormData> add(@RequestBody ActFormData actFormData) {
 		Result<ActFormData> result = new Result<>();
 		try {
+			actFormData.setStatus(1);
 			actFormDataService.save(actFormData);
 			result.success("添加成功!");
 		} catch (Exception e) {

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

@@ -1,234 +0,0 @@
-package org.jeecg.modules.ctop.controller;
-
-import cn.com.ctop.common.module.entity.ActFormField;
-import cn.com.ctop.common.module.service.IActFormFieldService;
-import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.jeecg.common.api.vo.Result;
-import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.common.util.oConvertUtils;
-import org.jeecgframework.poi.excel.ExcelImportUtil;
-import org.jeecgframework.poi.excel.def.NormalExcelConstants;
-import org.jeecgframework.poi.excel.entity.ExportParams;
-import org.jeecgframework.poi.excel.entity.ImportParams;
-import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.MultipartHttpServletRequest;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
- /**
- * 自定义表单字段信息
- * @author jeecg-boot
- * @date   2020-08-25
- * @version V1.0
- */
-@Slf4j
-@Api(tags="自定义表单字段信息")
-@RestController
-@RequestMapping("/ctop/actFormField")
-public class ActFormFieldController {
-	@Autowired
-	private IActFormFieldService actFormFieldService;
-
-	/**
-	  * 分页列表查询
-	 * @param actFormField
-	 * @param pageNo
-	 * @param pageSize
-	 * @param req
-	 * @return
-	 */
-	@ApiOperation(value="自定义表单字段信息-分页列表查询", notes="自定义表单字段信息-分页列表查询")
-	@GetMapping(value = "/list")
-	public Result<IPage<ActFormField>> queryPageList(ActFormField actFormField,
-													 @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-													 @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-													 HttpServletRequest req) {
-		Result<IPage<ActFormField>> result = new Result<>();
-		QueryWrapper<ActFormField> queryWrapper = QueryGenerator.initQueryWrapper(actFormField, req.getParameterMap());
-		Page<ActFormField> page = new Page<>(pageNo, pageSize);
-		IPage<ActFormField> pageList = actFormFieldService.page(page, queryWrapper);
-		result.setSuccess(true);
-		result.setResult(pageList);
-		return result;
-	}
-
-	/**
-	  *   添加
-	 * @param actFormField
-	 * @return
-	 */
-	@ApiOperation(value="自定义表单字段信息-添加", notes="自定义表单字段信息-添加")
-	@PostMapping(value = "/add")
-	public Result<ActFormField> add(@RequestBody ActFormField actFormField) {
-		Result<ActFormField> result = new Result<>();
-		try {
-			actFormFieldService.save(actFormField);
-			result.success("添加成功!");
-		} catch (Exception e) {
-			log.error(e.getMessage(),e);
-			result.error500("操作失败");
-		}
-		return result;
-	}
-
-	/**
-	  *  编辑
-	 * @param actFormField
-	 * @return
-	 */
-	@ApiOperation(value="自定义表单字段信息-编辑", notes="自定义表单字段信息-编辑")
-	@PutMapping(value = "/edit")
-	public Result<ActFormField> edit(@RequestBody ActFormField actFormField) {
-		Result<ActFormField> result = new Result<ActFormField>();
-		ActFormField actFormFieldEntity = actFormFieldService.getById(actFormField.getId());
-		if(actFormFieldEntity==null) {
-			result.error500("未找到对应实体");
-		}else {
-			boolean ok = actFormFieldService.updateById(actFormField);
-			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 {
-			actFormFieldService.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<ActFormField> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		Result<ActFormField> result = new Result<>();
-		if(ids==null || "".equals(ids.trim())) {
-			result.error500("参数不识别!");
-		}else {
-			this.actFormFieldService.removeByIds(Arrays.asList(ids.split(",")));
-			result.success("删除成功!");
-		}
-		return result;
-	}
-
-	/**
-	  * 通过id查询
-	 * @param id
-	 * @return
-	 */
-	@ApiOperation(value="自定义表单字段信息-通过id查询", notes="自定义表单字段信息-通过id查询")
-	@GetMapping(value = "/queryById")
-	public Result<ActFormField> queryById(@RequestParam(name="id",required=true) String id) {
-		Result<ActFormField> result = new Result<>();
-		ActFormField actFormField = actFormFieldService.getById(id);
-		if(actFormField==null) {
-			result.error500("未找到对应实体");
-		}else {
-			result.setResult(actFormField);
-			result.setSuccess(true);
-		}
-		return result;
-	}
-
-  /**
-      * 导出excel
-   *
-   * @param request
-   * @param response
-   */
-  @RequestMapping(value = "/exportXls")
-  public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
-      // Step.1 组装查询条件
-      QueryWrapper<ActFormField> queryWrapper = null;
-      try {
-          String paramsStr = request.getParameter("paramsStr");
-          if (oConvertUtils.isNotEmpty(paramsStr)) {
-              String deString = URLDecoder.decode(paramsStr, "UTF-8");
-              ActFormField actFormField = JSON.parseObject(deString, ActFormField.class);
-              queryWrapper = QueryGenerator.initQueryWrapper(actFormField, request.getParameterMap());
-          }
-      } catch (UnsupportedEncodingException e) {
-          e.printStackTrace();
-      }
-
-      //Step.2 AutoPoi 导出Excel
-      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
-      List<ActFormField> pageList = actFormFieldService.list(queryWrapper);
-      //导出文件名称
-      mv.addObject(NormalExcelConstants.FILE_NAME, "自定义表单字段信息列表");
-      mv.addObject(NormalExcelConstants.CLASS, ActFormField.class);
-      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("自定义表单字段信息列表数据", "导出人:Jeecg", "导出信息"));
-      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
-      return mv;
-  }
-
-  /**
-      * 通过excel导入数据
-   *
-   * @param request
-   * @param response
-   * @return
-   */
-  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
-  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
-      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
-          MultipartFile file = entity.getValue();
-          ImportParams params = new ImportParams();
-          params.setTitleRows(2);
-          params.setHeadRows(1);
-          params.setNeedSave(true);
-          try {
-              List<ActFormField> listActFormFields = ExcelImportUtil.importExcel(file.getInputStream(), ActFormField.class, params);
-              actFormFieldService.saveBatch(listActFormFields);
-              return Result.ok("文件导入成功!数据行数:" + listActFormFields.size());
-          } catch (Exception e) {
-              log.error(e.getMessage(),e);
-              return Result.error("文件导入失败:"+e.getMessage());
-          } finally {
-              try {
-                  file.getInputStream().close();
-              } catch (IOException e) {
-                  e.printStackTrace();
-              }
-          }
-      }
-      return Result.ok("文件导入失败!");
-  }
-
-}

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

@@ -1,7 +1,11 @@
 package org.jeecg.modules.ctop.controller;
 
+import cn.com.ctop.common.module.entity.ActCustomForm;
 import cn.com.ctop.common.module.entity.ActFormPorcess;
+import cn.com.ctop.common.module.service.IActCustomFormService;
 import cn.com.ctop.common.module.service.IActFormPorcessService;
+import cn.com.ctop.common.module.utils.ResultMapUtils;
+import cn.com.ctop.common.module.utils.StatusCode;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -12,6 +16,8 @@ import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.activiti.entity.ActZprocess;
+import org.jeecg.modules.activiti.service.IActZprocessService;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -29,6 +35,7 @@ import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -44,8 +51,32 @@ import java.util.Map;
 @RequestMapping("/ctop/actFormPorcess")
 public class ActFormPorcessController {
 	@Autowired
+	private IActZprocessService actZprocessService;
+	@Autowired
 	private IActFormPorcessService actFormPorcessService;
+	@Autowired
+	private IActCustomFormService customFormService;
+	@PostMapping("bindProcess")
+	public Map<String,Object>bindProcess(Long formId,String processId){
+		Map<String,Object>result = new HashMap<>();
+		if(null == formId||formId == 0||null == processId||processId.trim().equals("")){
+			ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR);
+			return result;
+		}
+		ActZprocess actZprocess = actZprocessService.getById(processId);
+		ActCustomForm customForm = customFormService.getById(formId);
+		if(null == actZprocess||null == customForm){
+			ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR);
+			return result;
+		}
 
+		ActFormPorcess actFormPorcess = new ActFormPorcess();
+		actFormPorcess.setFormId(formId);
+		actFormPorcess.setProcessId(processId);
+		actFormPorcess.setStatus(1);
+		actFormPorcessService.save(actFormPorcess);
+		return result;
+	}
 	/**
 	  * 分页列表查询
 	 * @param actFormPorcess

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

@@ -2,6 +2,7 @@ package org.jeecg.modules.ctop.controller;
 
 import cn.com.ctop.common.module.annotation.AutoLog;
 import cn.com.ctop.common.module.constant.CtopRoleCodeConstant;
+import cn.com.ctop.common.module.entity.Advertiser;
 import cn.com.ctop.common.module.entity.Project;
 import cn.com.ctop.common.module.entity.UserAllocation;
 import cn.com.ctop.common.module.mapper.ProjectMapper;
@@ -28,14 +29,11 @@ import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 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.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.*;
@@ -61,8 +59,6 @@ public class AdvertiserController {
     @Autowired
     private IAdvertiserService advertiserService;
     @Autowired
-    private ISysCategoryService sysCategoryService;
-    @Autowired
     private UserCompanyMapper userCompanyMapper;
     @Autowired
     private ISysRoleExtService sysRoleService;
@@ -120,15 +116,14 @@ public class AdvertiserController {
                                                    @RequestParam(name = "pageSize", defaultValue = "1000") Integer pageSize,
                                                    HttpServletRequest req) {
         Result<IPage<Advertiser>> result = new Result<>();
-        String roleCode = sysRoleService.getRoleCodeByUserId(advertiser.getUserId());
-        String userId = advertiser.getUserId();
+        // String roleCode = sysRoleService.getRoleCodeByUserId(advertiser.getUserId());
+      /*  String userId = advertiser.getUserId();
         if (CtopRoleCodeConstant.COMMON_ROLE_CODE_ADMIN.equals(roleCode) || "kuaishouOperationManager".equals(roleCode) || "touTiaoOperationManager".equals(roleCode) || roleCode.contains("sale") || "meidaManager".equals(roleCode)) {
             advertiser.setUserId(null);
-        }
-        String industryId = advertiser.getIndustryId();
-        advertiser.setIndustryId(null);
+        }*/
+
         QueryWrapper<Advertiser> queryWrapper = QueryGenerator.initQueryWrapper(advertiser, req.getParameterMap());
-        if ("kuaishouOperationManager".equals(roleCode) || "touTiaoOperationManager".equals(roleCode)) {
+       /* if ("kuaishouOperationManager".equals(roleCode) || "touTiaoOperationManager".equals(roleCode)) {
             QueryWrapper<UserCompany> userCompanyQueryWrapper = new QueryWrapper<>();
             userCompanyQueryWrapper.eq("user_id", userId);
             userCompanyQueryWrapper.orderByDesc("create_time");
@@ -137,13 +132,7 @@ public class AdvertiserController {
             if (!Check.isNull(userCompany)) {
                 queryWrapper.eq("company_id", userCompany.getCompanyId());
             }
-        }
-        if (null != industryId && !"".equals(industryId.trim())) {
-            SysCategory category = sysCategoryService.getById(industryId);
-            if (null != category) {
-                queryWrapper.likeRight("industry_code", category.getCode());
-            }
-        }
+        }*/
         Page<Advertiser> page = new Page<>(pageNo, pageSize);
         IPage<Advertiser> pageList = advertiserService.page(page, queryWrapper);
         result.setSuccess(true);
@@ -184,14 +173,6 @@ public class AdvertiserController {
             if (!Check.isNull(userCompany)) {
                 advertiser.setCompanyId(userCompany.getCompanyId());
             }
-            String industryId = advertiser.getIndustryId();
-            if (null != industryId && !"".equals(industryId.trim())) {
-                SysCategory category = sysCategoryService.getById(industryId);
-                if (null != category) {
-                    advertiser.setIndustryId(category.getId());
-                    advertiser.setIndustryCode(category.getCode());
-                }
-            }
             advertiserService.save(advertiser);
             result.success("添加成功!");
         } catch (Exception e) {
@@ -219,25 +200,7 @@ public class AdvertiserController {
         if (advertiserEntity == null) {
             result.error500("未找到对应实体");
         } else {
-            String industryId = advertiser.getIndustryId();
-            if (null != industryId && !"".equals(industryId.trim())) {
-                SysCategory category = sysCategoryService.getById(industryId);
-                if (null != category) {
-                    advertiser.setIndustryId(category.getId());
-                    advertiser.setIndustryCode(category.getCode());
-                }
-            }
             boolean ok = advertiserService.updateById(advertiser);
-            QueryWrapper<Project> projectQueryWrapper = new QueryWrapper<>();
-            projectQueryWrapper.eq("advertiser_id", advertiser.getId());
-            Project updateProject = new Project();
-            updateProject.setAdvertiserName(advertiser.getName());
-            projectService.update(updateProject, projectQueryWrapper);
-            QueryWrapper<UserAllocation> userAllocationQueryWrapper = new QueryWrapper<>();
-            userAllocationQueryWrapper.eq("advertiser_id", advertiser.getId());
-            UserAllocation updateUserAllocation = new UserAllocation();
-            updateUserAllocation.setAdvertiserName(advertiser.getName());
-            userAllocationService.update(updateUserAllocation, userAllocationQueryWrapper);
             if (ok) {
                 result.success("修改成功!");
             }
@@ -456,11 +419,11 @@ public class AdvertiserController {
     @RequestMapping("/exportKuaishouProjectInfo")
     public void getKuaishouProjectInfo(@RequestBody KuaishouInfoDTO dto,
                                        HttpServletRequest request,
-                                       HttpServletResponse response)throws IOException  {
+                                       HttpServletResponse response) throws IOException {
         Result<PageInfo<ProjectAccountDTO>> result = new Result<>();
         result.setSuccess(true);
 
-        if(dto.getPageSize() == 0){
+        if (dto.getPageSize() == 0) {
             dto.setPageSize(100000);
         }
         OutputStream outputStream = response.getOutputStream();
@@ -468,36 +431,36 @@ public class AdvertiserController {
         HttpUtils.setResponseHeader(response, "快手效果报表" + date + ".xlsx");
         ExcelWriter excelWriter = EasyExcelFactory.getWriter(outputStream);
         String type = dto.getType();
-        if(null!=type&&type.trim().equals("project")){
+        if (null != type && type.trim().equals("project")) {
             SheetInfoVo projectSheetVo = this.getProjectSheetVo(dto, "项目报表");
-            Sheet sheet = new Sheet( 1, 0, EffecfReportProjectEntity.class);
+            Sheet sheet = new Sheet(1, 0, EffecfReportProjectEntity.class);
             sheet.setSheetName(projectSheetVo.getSheetName());
             excelWriter.write(projectSheetVo.getDetails(), sheet);
         }
-        if(null!=type&&type.trim().equals("account")){
+        if (null != type && type.trim().equals("account")) {
             SheetInfoVo accountSheetVo = this.getAccountSheetVo(dto, "账户报表");
-            Sheet sheet = new Sheet( 1, 0, EffecfReportAccountEntity.class);
+            Sheet sheet = new Sheet(1, 0, EffecfReportAccountEntity.class);
             sheet.setSheetName(accountSheetVo.getSheetName());
             excelWriter.write(accountSheetVo.getDetails(), sheet);
         }
 
-        if(null!=type&&type.trim().equals("campaign")){
+        if (null != type && type.trim().equals("campaign")) {
             SheetInfoVo planSheetVo = this.getPlanSheetVo(dto, "广告计划报表");
-            Sheet sheet = new Sheet( 1, 0, EffecfReportPlanEntity.class);
+            Sheet sheet = new Sheet(1, 0, EffecfReportPlanEntity.class);
             sheet.setSheetName(planSheetVo.getSheetName());
             excelWriter.write(planSheetVo.getDetails(), sheet);
         }
 
-        if(null!=type&&type.trim().equals("group")){
+        if (null != type && type.trim().equals("group")) {
             SheetInfoVo campaignSheetVo = this.getGroupSheetVo(dto, "广告组报表");
-            Sheet sheet = new Sheet( 1, 0, EffecfReportGroupEntity.class);
+            Sheet sheet = new Sheet(1, 0, EffecfReportGroupEntity.class);
             sheet.setSheetName(campaignSheetVo.getSheetName());
             excelWriter.write(campaignSheetVo.getDetails(), sheet);
         }
 
-        if(null!=type&&type.trim().equals("creative")){
+        if (null != type && type.trim().equals("creative")) {
             SheetInfoVo creativeSheetVo = this.getCreativeSheetVo(dto, "广告创意");
-            Sheet sheet = new Sheet( 1, 0, EffecfReportCreativeEntity.class);
+            Sheet sheet = new Sheet(1, 0, EffecfReportCreativeEntity.class);
             sheet.setSheetName(creativeSheetVo.getSheetName());
             excelWriter.write(creativeSheetVo.getDetails(), sheet);
         }
@@ -510,13 +473,13 @@ public class AdvertiserController {
     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());
+        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()){
+        if (null != dtos && !dtos.isEmpty()) {
             List<EffecfReportCreativeEntity> details = new ArrayList<>();
-            for(KuaishouReportDailyAccountDTO dto1:dtos){
+            for (KuaishouReportDailyAccountDTO dto1 : dtos) {
                 EffecfReportCreativeEntity entity = new EffecfReportCreativeEntity();
-                BeanUtils.copyProperties(dto1,entity);
+                BeanUtils.copyProperties(dto1, entity);
                 details.add(entity);
             }
             vo.setDetails(details);
@@ -527,13 +490,13 @@ public class AdvertiserController {
     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());
+        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()){
+        if (null != dtos && !dtos.isEmpty()) {
             List<EffecfReportGroupEntity> details = new ArrayList<>();
-            for(KuaishouReportDailyAccountDTO dto1:dtos){
+            for (KuaishouReportDailyAccountDTO dto1 : dtos) {
                 EffecfReportGroupEntity entity = new EffecfReportGroupEntity();
-                BeanUtils.copyProperties(dto1,entity);
+                BeanUtils.copyProperties(dto1, entity);
                 details.add(entity);
             }
             vo.setDetails(details);
@@ -544,13 +507,13 @@ public class AdvertiserController {
     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());
+        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()){
+        if (null != dtos && !dtos.isEmpty()) {
             List<EffecfReportPlanEntity> details = new ArrayList<>();
-            for(KuaishouReportDailyAccountDTO dto1:dtos){
+            for (KuaishouReportDailyAccountDTO dto1 : dtos) {
                 EffecfReportPlanEntity entity = new EffecfReportPlanEntity();
-                BeanUtils.copyProperties(dto1,entity);
+                BeanUtils.copyProperties(dto1, entity);
                 details.add(entity);
             }
             vo.setDetails(details);
@@ -561,13 +524,13 @@ public class AdvertiserController {
     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());
+        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()){
+        if (null != dtos && !dtos.isEmpty()) {
             List<EffecfReportAccountEntity> details = new ArrayList<>();
-            for(KuaishouReportDailyAccountDTO dto1:dtos){
+            for (KuaishouReportDailyAccountDTO dto1 : dtos) {
                 EffecfReportAccountEntity entity = new EffecfReportAccountEntity();
-                BeanUtils.copyProperties(dto1,entity);
+                BeanUtils.copyProperties(dto1, entity);
                 details.add(entity);
             }
             vo.setDetails(details);
@@ -578,13 +541,13 @@ public class AdvertiserController {
     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());
+        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()){
+        if (null != dtos && !dtos.isEmpty()) {
             List<EffecfReportProjectEntity> details = new ArrayList<>();
-            for(ProjectAccountDTO dto1:dtos){
+            for (ProjectAccountDTO dto1 : dtos) {
                 EffecfReportProjectEntity entity = new EffecfReportProjectEntity();
-                BeanUtils.copyProperties(dto1,entity);
+                BeanUtils.copyProperties(dto1, entity);
                 details.add(entity);
             }
             vo.setDetails(details);

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

@@ -91,10 +91,10 @@ public class BindAccountLoginController {
             userAllocation.setUserId(userId);
             userAllocation.setAdvertiserId(advertiserId);
             userAllocation.setAccountId(accountId);
-            userAllocation.setAdvertiserName(advertiserName);
+          //  userAllocation.setAdvertiserName(advertiserName);
             userAllocation.setAccountName(accountName);
             userAllocation.setProjectId(projectId);
-            userAllocation.setProjectName(projectName);
+            // userAllocation.setProjectName(projectName);
             userAllocation.setMediaId(mediaId);
             userAllocation.setSystemType(systemType);
             int i = userAllocationMapper.insert(userAllocation);

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

@@ -184,11 +184,11 @@ public class CallbackController {
                     if ((Integer) advertiseBaseInfoMap.get("code") == 0) {
                         userAllocation.setAuthName((String) advertiseBaseInfoMap.get("userName"));
                     }
-                    userAllocation.setAdvertiserName(advertiserName);
+               //     userAllocation.setAdvertiserName(advertiserName);
                     userAllocation.setMediaId(mediaId);
                     userAllocation.setAccountId(accountId);
                     userAllocation.setProjectId(projectId);
-                    userAllocation.setProjectName(projectName);
+                 //   userAllocation.setProjectName(projectName);
                     userAllocation.setWarningProportion(warningProportion);
                     userAllocation.setWarningAmount(warningAmount);
 
@@ -344,10 +344,10 @@ public class CallbackController {
                             userAllocation.setUserId(userId);
                             userAllocation.setUserName(userName);
                             userAllocation.setAccountId(token.getAccountId());
-                            userAllocation.setAdvertiserName(advertiserName);
+                       //     userAllocation.setAdvertiserName(advertiserName);
                             userAllocation.setMediaId(mediaId);
                             userAllocation.setProjectId(projectId);
-                            userAllocation.setProjectName(projectName);
+                         //   userAllocation.setProjectName(projectName);
                             userAllocation.setSystemType(systemType);
                             userAllocation.setAuthName((String) advertiserDataMap.get("name"));
                             userAllocation.setAdvertiserId(advertiserId);
@@ -398,10 +398,10 @@ public class CallbackController {
                     userAllocation.setUserId(userId);
                     userAllocation.setUserName(userName);
                     userAllocation.setAccountId(token.getAccountId());
-                    userAllocation.setAdvertiserName(advertiserName);
+               //     userAllocation.setAdvertiserName(advertiserName);
                     userAllocation.setMediaId(mediaId);
                     userAllocation.setProjectId(projectId);
-                    userAllocation.setProjectName(projectName);
+                //    userAllocation.setProjectName(projectName);
                     userAllocation.setSystemType(systemType);
                     userAllocation.setAuthName((String) advertiserDataMap.get("name"));
                     userAllocation.setAdvertiserId(advertiserId);

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

@@ -0,0 +1,236 @@
+package org.jeecg.modules.ctop.controller;
+
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.ctop.entity.JhsBakendData;
+import org.jeecg.modules.ctop.service.IJhsBakendDataService;
+import org.jeecg.modules.excelutil.ExcelUtils;
+import org.jeecg.modules.excelutil.JhsBakendDataExcelListener;
+import org.jeecg.modules.excelutil.entity.JhsBakendDataEntity;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+ /**
+ * 聚划算后端数据
+ * @author jeecg-boot
+ * @date   2020-09-07
+ * @version V1.0
+ */
+@Slf4j
+@Api(tags="聚划算后端数据")
+@RestController
+@RequestMapping("/okr/jhsBakendData")
+public class JhsBakendDataController {
+	@Autowired
+	private IJhsBakendDataService jhsBakendDataService;
+
+	/**
+	  * 分页列表查询
+	 * @param jhsBakendData
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@GetMapping(value = "/list")
+	public Result<IPage<JhsBakendData>> queryPageList(JhsBakendData jhsBakendData,
+													  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+													  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+													  HttpServletRequest req) {
+		Result<IPage<JhsBakendData>> result = new Result<>();
+		QueryWrapper<JhsBakendData> queryWrapper = QueryGenerator.initQueryWrapper(jhsBakendData, req.getParameterMap());
+		Page<JhsBakendData> page = new Page<JhsBakendData>(pageNo, pageSize);
+		IPage<JhsBakendData> pageList = jhsBakendDataService.page(page, queryWrapper);
+		result.setSuccess(true);
+		result.setResult(pageList);
+		return result;
+	}
+
+	/**
+	  *   添加
+	 * @param jhsBakendData
+	 * @return
+	 */
+	@ApiOperation(value="聚划算后端数据-添加", notes="聚划算后端数据-添加")
+	@PostMapping(value = "/add")
+	public Result<JhsBakendData> add(@RequestBody JhsBakendData jhsBakendData) {
+		Result<JhsBakendData> result = new Result<>();
+		try {
+			jhsBakendDataService.save(jhsBakendData);
+			result.success("添加成功!");
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+			result.error500("操作失败");
+		}
+		return result;
+	}
+
+	/**
+	  *  编辑
+	 * @param jhsBakendData
+	 * @return
+	 */
+	@ApiOperation(value="聚划算后端数据-编辑", notes="聚划算后端数据-编辑")
+	@PutMapping(value = "/edit")
+	public Result<JhsBakendData> edit(@RequestBody JhsBakendData jhsBakendData) {
+		Result<JhsBakendData> result = new Result<JhsBakendData>();
+		JhsBakendData jhsBakendDataEntity = jhsBakendDataService.getById(jhsBakendData.getId());
+		if(jhsBakendDataEntity==null) {
+			result.error500("未找到对应实体");
+		}else {
+			boolean ok = jhsBakendDataService.updateById(jhsBakendData);
+			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 {
+			jhsBakendDataService.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<JhsBakendData> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		Result<JhsBakendData> result = new Result<>();
+		if(ids==null || "".equals(ids.trim())) {
+			result.error500("参数不识别!");
+		}else {
+			this.jhsBakendDataService.removeByIds(Arrays.asList(ids.split(",")));
+			result.success("删除成功!");
+		}
+		return result;
+	}
+
+	/**
+	  * 通过id查询
+	 * @param id
+	 * @return
+	 */
+	@ApiOperation(value="聚划算后端数据-通过id查询", notes="聚划算后端数据-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<JhsBakendData> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<JhsBakendData> result = new Result<>();
+		JhsBakendData jhsBakendData = jhsBakendDataService.getById(id);
+		if(jhsBakendData==null) {
+			result.error500("未找到对应实体");
+		}else {
+			result.setResult(jhsBakendData);
+			result.setSuccess(true);
+		}
+		return result;
+	}
+
+  /**
+      * 导出excel
+   *
+   * @param request
+   * @param response
+   */
+  @RequestMapping(value = "/exportXls")
+  public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+      // Step.1 组装查询条件
+      QueryWrapper<JhsBakendData> queryWrapper = null;
+      try {
+          String paramsStr = request.getParameter("paramsStr");
+          if (oConvertUtils.isNotEmpty(paramsStr)) {
+              String deString = URLDecoder.decode(paramsStr, "UTF-8");
+              JhsBakendData jhsBakendData = JSON.parseObject(deString, JhsBakendData.class);
+              queryWrapper = QueryGenerator.initQueryWrapper(jhsBakendData, request.getParameterMap());
+          }
+      } catch (UnsupportedEncodingException e) {
+          e.printStackTrace();
+      }
+
+      //Step.2 AutoPoi 导出Excel
+      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+      List<JhsBakendData> pageList = jhsBakendDataService.list(queryWrapper);
+      //导出文件名称
+      mv.addObject(NormalExcelConstants.FILE_NAME, "聚划算后端数据列表");
+      mv.addObject(NormalExcelConstants.CLASS, JhsBakendData.class);
+      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("聚划算后端数据列表数据", "导出人:Jeecg", "导出信息"));
+      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+      return mv;
+  }
+
+  /**
+      * 通过excel导入数据
+   *
+   * @param request
+   * @param response
+   * @return
+   */
+  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+	  //1.读Excel
+	  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+	  Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+	  for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+		  FileInputStream fis = null;
+		  try {
+			  MultipartFile file = entity.getValue();
+			  fis = (FileInputStream) file.getInputStream();
+			  AnalysisEventListener listener = new JhsBakendDataExcelListener();
+			  Boolean flag = ExcelUtils.readExcel(fis, JhsBakendDataEntity.class, listener);
+			  System.out.println("导入是否成功:" + flag);
+		  } catch (Exception e) {
+			  e.printStackTrace();
+		  } finally {
+			  if (fis != null) {
+				  try {
+					  fis.close();
+				  } catch (IOException e) {
+					  e.printStackTrace();
+				  }
+			  }
+		  }
+	  }
+	  return Result.ok("文件导入成功!");
+  }
+
+}

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

@@ -1,6 +1,7 @@
 package org.jeecg.modules.ctop.controller;
 
 import cn.com.ctop.common.module.annotation.AutoLog;
+import com.alibaba.excel.event.AnalysisEventListener;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -11,11 +12,20 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.modules.ctop.entity.KuaishouChannelRegInfo;
 import org.jeecg.modules.ctop.service.IKuaishouChannelRegInfoService;
+import org.jeecg.modules.excelutil.ExcelUtils;
+import org.jeecg.modules.excelutil.KuaishouChannelRegInfoExcelListener;
+import org.jeecg.modules.excelutil.entity.KuaishouChannelRegInfoEntity;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.FileInputStream;
+import java.io.IOException;
 import java.util.Arrays;
+import java.util.Map;
 
 /**
  * 快手渠道注册信息表
@@ -161,4 +171,39 @@ public class KuaishouChannelRegInfoController {
         }
         return result;
     }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        //1.读Excel
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            FileInputStream fis = null;
+            try {
+                MultipartFile file = entity.getValue();
+                fis = (FileInputStream) file.getInputStream();
+                AnalysisEventListener listener = new KuaishouChannelRegInfoExcelListener();
+                Boolean flag = ExcelUtils.readExcel(fis, KuaishouChannelRegInfoEntity.class, listener);
+                System.out.println("导入是否成功:" + flag);
+            } catch (Exception e) {
+                e.printStackTrace();
+            } finally {
+                if (fis != null) {
+                    try {
+                        fis.close();
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+        }
+        return Result.ok("文件导入成功!");
+    }
 }

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

@@ -233,8 +233,7 @@ public class MaterialImageInfoController {
         Result<MaterialImageInfo> result = new Result<MaterialImageInfo>();
         try {
             if (!Check.isNull(updateArr)) {
-                LoginUser user = (LoginUser) SecurityUtils.getSubject()
-                        .getPrincipal();
+                LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
                 for (int i = 0; i < updateArr.size(); i++) {
                     JSONObject updateJson = updateArr.getJSONObject(i);
                     if (!Check.isNull(updateJson)) {

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

@@ -0,0 +1,143 @@
+package org.jeecg.modules.ctop.controller;
+
+import cn.com.ctop.crawler.modules.music.entity.MusicKuaishouType;
+import cn.com.ctop.crawler.modules.music.service.IMusicKuaishouTypeService;
+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 lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+
+ /**
+ * 快手音乐类别
+ * @author jeecg-boot
+ * @date   2020-09-11
+ * @version V1.0
+ */
+@Slf4j
+@Api(tags="快手音乐类别")
+@RestController
+@RequestMapping("/ctop/musicKuaishouType")
+public class MusicKuaishouTypeController {
+	@Autowired
+	private IMusicKuaishouTypeService musicKuaishouTypeService;
+
+	/**
+	  * 分页列表查询
+	 * @param musicKuaishouType
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@GetMapping(value = "/list")
+	public Result<IPage<MusicKuaishouType>> queryPageList(MusicKuaishouType musicKuaishouType,
+														  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+														  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+														  HttpServletRequest req) {
+		Result<IPage<MusicKuaishouType>> result = new Result<>();
+		QueryWrapper<MusicKuaishouType> queryWrapper = QueryGenerator.initQueryWrapper(musicKuaishouType, req.getParameterMap());
+		Page<MusicKuaishouType> page = new Page<>(pageNo, pageSize);
+		IPage<MusicKuaishouType> pageList = musicKuaishouTypeService.page(page, queryWrapper);
+		result.setSuccess(true);
+		result.setResult(pageList);
+		return result;
+	}
+
+	/**
+	  *   添加
+	 * @param musicKuaishouType
+	 * @return
+	 */
+	@PostMapping(value = "/add")
+	public Result<MusicKuaishouType> add(@RequestBody MusicKuaishouType musicKuaishouType) {
+		Result<MusicKuaishouType> result = new Result<>();
+		try {
+			musicKuaishouTypeService.save(musicKuaishouType);
+			result.success("添加成功!");
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+			result.error500("操作失败");
+		}
+		return result;
+	}
+
+	/**
+	  *  编辑
+	 * @param musicKuaishouType
+	 * @return
+	 */
+	@PutMapping(value = "/edit")
+	public Result<MusicKuaishouType> edit(@RequestBody MusicKuaishouType musicKuaishouType) {
+		Result<MusicKuaishouType> result = new Result<>();
+		MusicKuaishouType musicKuaishouTypeEntity = musicKuaishouTypeService.getById(musicKuaishouType.getId());
+		if(musicKuaishouTypeEntity==null) {
+			result.error500("未找到对应实体");
+		}else {
+			boolean ok = musicKuaishouTypeService.updateById(musicKuaishouType);
+			if(ok) {
+				result.success("修改成功!");
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	  *   通过id删除
+	 * @param id
+	 * @return
+	 */
+	@DeleteMapping(value = "/delete")
+	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+		try {
+			musicKuaishouTypeService.removeById(id);
+		} catch (Exception e) {
+			log.error("删除失败",e.getMessage());
+			return Result.error("删除失败!");
+		}
+		return Result.ok("删除成功!");
+	}
+
+	/**
+	  *  批量删除
+	 * @param ids
+	 * @return
+	 */
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<MusicKuaishouType> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		Result<MusicKuaishouType> result = new Result<>();
+		if(ids==null || "".equals(ids.trim())) {
+			result.error500("参数不识别!");
+		}else {
+			this.musicKuaishouTypeService.removeByIds(Arrays.asList(ids.split(",")));
+			result.success("删除成功!");
+		}
+		return result;
+	}
+
+	/**
+	  * 通过id查询
+	 * @param id
+	 * @return
+	 */
+	@GetMapping(value = "/queryById")
+	public Result<MusicKuaishouType> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<MusicKuaishouType> result = new Result<>();
+		MusicKuaishouType musicKuaishouType = musicKuaishouTypeService.getById(id);
+		if(musicKuaishouType==null) {
+			result.error500("未找到对应实体");
+		}else {
+			result.setResult(musicKuaishouType);
+			result.setSuccess(true);
+		}
+		return result;
+	}
+}

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

@@ -1,337 +0,0 @@
-package org.jeecg.modules.ctop.controller;
-
-import cn.com.ctop.common.module.entity.Advertiser;
-import cn.com.ctop.common.module.entity.Project;
-import cn.com.ctop.common.module.service.IProductService;
-import cn.com.ctop.common.module.utils.Check;
-import cn.com.ctop.common.module.utils.KuaishouInterfaceConstant;
-
-import cn.com.ctop.common.module.vo.ProductInfoDto;
-import cn.com.ctop.common.module.vo.ProductVO;
-import cn.com.ctop.common.module.vo.ProjectVO;
-import cn.com.ctop.manage.modules.actor.entity.Actor;
-import cn.com.ctop.manage.modules.actor.entity.ActorComment;
-import cn.com.ctop.manage.modules.actor.entity.ActorPhoto;
-import cn.com.ctop.manage.modules.actor.entity.ActorVideo;
-import cn.com.ctop.manage.modules.actor.service.IActorCommentService;
-import cn.com.ctop.manage.modules.actor.service.IActorPhotoService;
-import cn.com.ctop.manage.modules.actor.service.IActorService;
-import cn.com.ctop.manage.modules.actor.service.IActorVideoService;
-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 lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.jeecg.common.api.vo.Result;
-import org.jeecg.common.system.query.QueryGenerator;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-@Slf4j
-@RequestMapping("/ctop/product")
-public class ProductController {
-    @Autowired
-    private IProductService productService;
-
-    //获取广告主列表
-    @ResponseBody
-    @RequestMapping(value = "/advertiserList")
-    public Result<List<Advertiser>> advertiserList(HttpServletRequest request,HttpServletResponse response){
-        log.info("/ctop/product/advertiserList 方法开始");
-        Result<List<Advertiser>> result = new Result();
-
-        try {
-            List<Advertiser> advertiserList = productService.advertiserList();
-            result.setResult(advertiserList);
-        }catch (Exception e){
-            log.error(e.getMessage());
-            result.setSuccess(false);
-            result.setMessage("error");
-        }finally{
-            log.info("/ctop/product/advertiserList 方法结束");
-        }
-
-        return result;
-    }
-
-    //根据广告主id获取项目列表
-    @ResponseBody
-    @RequestMapping(value = "/getProjectListByAdvertiserId")
-    public Result<List<Project>> getProjectListByAdvertiserId(@RequestBody ProductInfoDto dto,
-            HttpServletRequest request, HttpServletResponse response){
-        log.info("/ctop/product/getProjectListByAdvertiserId 方法开始");
-        Result<List<Project>> result = new Result();
-        if(dto == null || dto.getAdvertiserId() ==null ){
-            result.setSuccess(false);
-            result.setMessage("advertiserId不能为空");
-            return result;
-        }
-
-        try {
-            List<Project> projectList = productService.getProjectListByAdvertiserId(dto.getAdvertiserId());
-            result.setResult(projectList);
-        }catch (Exception e){
-            log.error(e.getMessage());
-            result.setSuccess(false);
-            result.setMessage("error");
-        }finally{
-            log.info("/ctop/product/getProjectListByAdvertiserId 方法结束");
-        }
-
-        return result;
-    }
-
-    //根据项目列表获取运营和销售的信息
-    @ResponseBody
-    @RequestMapping(value = "/getSaleAndYunyingListByProjectIds")
-    public Result<Map<String, Object>> getSaleAndYunyingListByProjectIds(@RequestBody ProductInfoDto dto,
-                                                              HttpServletRequest request, HttpServletResponse response){
-        log.info("/ctop/product/getSaleAndYunyingListByProjectIds 方法开始");
-        Result<Map<String, Object>> result = new Result();
-        if(dto == null || dto.getProjectIds() ==null || dto.getProjectIds().size() ==0 ){
-            result.setSuccess(false);
-            result.setMessage("projectIds不能为空");
-            return result;
-        }
-
-        try {
-            Map<String, Object> map = productService.getSaleAndYunyingListByProjectIds(dto.getProjectIds());
-            result.setResult(map);
-        }catch (Exception e){
-            log.error(e.getMessage());
-            result.setSuccess(false);
-            result.setMessage("error");
-        }finally{
-            log.info("/ctop/product/getSaleAndYunyingListByProjectIds 方法结束");
-        }
-
-        return result;
-    }
-
-    //逻辑删除产品
-    @ResponseBody
-    @RequestMapping(value = "/deleteProduct")
-    public Result deleteProduct(@RequestBody ProductInfoDto dto,HttpServletRequest request, HttpServletResponse response){
-        log.info("/ctop/product/deleteProduct 方法开始");
-        Result result = new Result();
-        if(dto == null || dto.getProductId() ==null ){
-            result.setSuccess(false);
-            result.setMessage("productId不能为空");
-            return result;
-        }
-
-        try {
-            productService.deleteProduct(dto.getProductId());
-        }catch (Exception e){
-            log.error(e.getMessage());
-            result.setSuccess(false);
-            result.setMessage("error");
-        }finally{
-            log.info("/ctop/product/deleteProduct 方法结束");
-        }
-
-        return result;
-    }
-
-    //产品信息入库
-    @ResponseBody
-    @RequestMapping(value = "/insertOrUpdateProduct")
-    public Result insertOrUpdateProduct(@RequestBody ProductVO vo, HttpServletRequest request, HttpServletResponse response){
-        log.info("/ctop/product/insertOrUpdateProduct 方法开始");
-        Result result = new Result();
-
-        //if(vo==null || vo.getId() == null){
-        //    if(StringUtils.isBlank(vo.getProductName())){
-        //        result.setSuccess(false);
-        //        result.setMessage("产品不能为空");
-        //        return result;
-        //    }
-        //    Integer count = productService.getProductNameCount(vo.getProductName());
-        //    if(count != 0){
-        //        result.setSuccess(false);
-        //        result.setMessage("产品名字已存在");
-        //        return result;
-        //    }
-        //}
-
-        try {
-            productService.insertOrUpdateProduct(vo);
-        }catch (Exception e){
-            log.error(e.getMessage());
-            result.setSuccess(false);
-            result.setMessage("error");
-        }finally{
-            log.info("/ctop/product/insertOrUpdateProduct 方法结束");
-        }
-
-        return result;
-    }
-
-    //编辑产品反显
-    @ResponseBody
-    @RequestMapping(value = "/getProductInfo")
-    public Result<Map<String, Object>> getProductInfo(@RequestBody ProductInfoDto dto, HttpServletRequest request, HttpServletResponse response){
-        log.info("/ctop/product/getProductInfo 方法开始");
-        Result<Map<String, Object>> result = new Result();
-        if(dto==null || dto.getProductId() == null){
-            result.setSuccess(false);
-            result.setMessage("productId不能为空");
-            return result;
-        }
-
-        try {
-            Map<String, Object> productInfo = productService.getProductInfo(dto.getProductId());
-            result.setResult(productInfo);
-        }catch (Exception e){
-            log.error(e.getMessage());
-            result.setSuccess(false);
-            result.setMessage("error");
-        }finally{
-            log.info("/ctop/product/getProductInfo 方法结束");
-        }
-
-        return result;
-    }
-
-    //单独删除产品关联项目
-    @ResponseBody
-    @RequestMapping(value = "/deleteByProjectIdAndProductId")
-    public Result deleteByProjectIdAndProductId(@RequestBody ProductInfoDto dto, HttpServletRequest request, HttpServletResponse response){
-        log.info("/ctop/product/deleteByProjectIdAndProductId 方法开始");
-        Result result = new Result();
-        if(dto==null || dto.getProductId() == null || dto.getProjectId() ==null){
-            result.setSuccess(false);
-            result.setMessage("productId,projectId不能为空");
-            return result;
-        }
-
-        try {
-            productService.deleteByProjectIdAndProductId(dto.getProjectId(), dto.getProductId());
-        }catch (Exception e){
-            log.error(e.getMessage());
-            result.setSuccess(false);
-            result.setMessage("error");
-        }finally{
-            log.info("/ctop/product/deleteByProjectIdAndProductId 方法结束");
-        }
-
-        return result;
-    }
-
-    //编辑产品按钮反显
-    @ResponseBody
-    @RequestMapping(value = "/getProjectListByProductId")
-    public Result<List<ProjectVO>> getProjectListByProductId(@RequestBody ProductInfoDto dto, HttpServletRequest request, HttpServletResponse response){
-        log.info("/ctop/product/getProjectListByProductId 方法开始");
-        Result<List<ProjectVO>> result = new Result();
-        if(dto==null || dto.getProductId() == null){
-            result.setSuccess(false);
-            result.setMessage("productId,projectId不能为空");
-            return result;
-        }
-
-        try {
-            List<ProjectVO> projectListByProductId = productService.getProjectListByProductId(dto.getProductId());
-            result.setResult(projectListByProductId);
-        }catch (Exception e){
-            log.error(e.getMessage());
-            result.setSuccess(false);
-            result.setMessage("error");
-        }finally{
-            log.info("/ctop/product/getProjectListByProductId 方法结束");
-        }
-
-        return result;
-    }
-
-    //产品列表
-    @ResponseBody
-    @RequestMapping(value = "/getProductList")
-    public Result<PageInfo<ProductVO>> getProductList(@RequestBody ProductInfoDto dto, HttpServletRequest request, HttpServletResponse response){
-        log.info("/ctop/product/getProductList 方法开始");
-        Result<PageInfo<ProductVO>> result = new Result();
-        if(dto==null || dto.getPageNum() == 0 || dto.getPageSize() ==0){
-            dto.setPageNum(1);
-            dto.setPageSize(10);
-        }
-
-        try {
-            PageInfo<ProductVO> productList = productService.getProductList(dto.getAdvertiserName(), dto.getProductName(), dto.getPageNum(), dto.getPageSize());
-            result.setResult(productList);
-        }catch (Exception e){
-            log.error(e.getMessage());
-            result.setSuccess(false);
-            result.setMessage("error");
-        }finally{
-            log.info("/ctop/product/getProductList 方法结束");
-        }
-
-        return result;
-    }
-
-    //产品列表
-    @ResponseBody
-    @RequestMapping(value = "/insertProductProjectMap")
-    public Result insertProductProjectMap(@RequestBody ProductInfoDto dto, HttpServletRequest request, HttpServletResponse response){
-        log.info("/ctop/product/insertProductProjectMap 方法开始");
-        Result result = new Result();
-        if(dto==null || dto.getProductId() == null || dto.getProjectIds() == null){
-            result.setSuccess(false);
-            result.setMessage("productId,projectIds不能为空");
-            return result;
-        }
-
-        List<Long> dtoProjectIds = dto.getProjectIds();
-        List<Long> projectIdsHas = productService.getProjectIdsByProductId(dto.getProductId());
-        List<Long> addProjectIds = new ArrayList<>();
-
-        for(Long dtoProjectId:dtoProjectIds){
-            int filter = 0;
-            for(Long projectIdHas:projectIdsHas){
-                if(projectIdHas.equals(dtoProjectId)){
-                    filter = -1;
-                    break;
-                }
-            }
-            if(filter == 0){
-                addProjectIds.add(dtoProjectId);
-            }
-        }
-
-        if(addProjectIds==null || addProjectIds.size()==0){
-            return result;
-        }
-
-        try {
-            productService.insertProductProjectMap(dto.getProductId(), addProjectIds);
-        }catch (Exception e){
-            log.error(e.getMessage());
-            result.setSuccess(false);
-            result.setMessage("error");
-        }finally{
-            log.info("/ctop/product/insertProductProjectMap 方法结束");
-        }
-
-        return result;
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-}

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

@@ -2,7 +2,10 @@ package org.jeecg.modules.ctop.controller;
 
 import cn.com.ctop.common.module.annotation.AutoLog;
 import cn.com.ctop.common.module.constant.CtopRoleCodeConstant;
-import cn.com.ctop.common.module.entity.*;
+import cn.com.ctop.common.module.entity.Advertiser;
+import cn.com.ctop.common.module.entity.MaterialInfo;
+import cn.com.ctop.common.module.entity.Project;
+import cn.com.ctop.common.module.entity.SupplierList;
 import cn.com.ctop.common.module.mapper.ProjectMapper;
 import cn.com.ctop.common.module.service.*;
 import cn.com.ctop.common.module.utils.Check;
@@ -16,14 +19,12 @@ 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.Advertiser;
 import org.jeecg.modules.ctop.entity.ProjectMember;
 import org.jeecg.modules.ctop.entity.TransferAccount;
 import org.jeecg.modules.ctop.mapper.ProjectMemberMapper;
 import org.jeecg.modules.ctop.service.IAdvertiserService;
 import org.jeecg.modules.ctop.service.IProjectMemberService;
 import org.jeecg.modules.ctop.service.ITransferAccountService;
-import org.jeecg.modules.system.entity.SysCategory;
 import org.jeecg.modules.system.service.ISysCategoryService;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -195,9 +196,9 @@ public class ProjectController {
         } else if ("operator".equals(roleCode) || "operationAssistant".equals(roleCode)) {
             queryWrapper.eq("responsible_id", userId);
             pageList = projectService.page(page, queryWrapper);
-        }else{
+        } else {
             queryWrapper.eq("responsible_id", userId);
-            pageList = projectService.page(page,queryWrapper);
+            pageList = projectService.page(page, queryWrapper);
         }
         List<Project> records = pageList.getRecords();
         if (!Check.isNull(records)) {
@@ -239,33 +240,29 @@ public class ProjectController {
                                                 @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                                 HttpServletRequest req) {
         Result<IPage<Project>> result = new Result<>();
-        String advertiserName = project.getAdvertiserName();
-        project.setAdvertiserName(null);
+
         String projectName = project.getProjectName();
         project.setProjectName(null);
-        String industryId = project.getIndustryId();
-        project.setIndustryId(null);
+
+        String userId = project.getUserId();
+        project.setUserId(null);
+
         QueryWrapper<Project> queryWrapper = QueryGenerator.initQueryWrapper(project, req.getParameterMap());
         Page<Project> page = new Page<>(pageNo, pageSize);
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String roleCode = sysRoleService.getRoleCodeByUserId(sysUser.getId());
-        if (!(CtopRoleCodeConstant.COMMON_ROLE_CODE_ADMIN.equals(roleCode) || roleCode.contains("sale") || "meidaManager".equals(roleCode))) {
-            queryWrapper.eq("user_id", sysUser.getId());
-            queryWrapper.orderByDesc("create_time");
-        }
-        if (null != industryId && !"".equals(industryId.trim())) {
-            SysCategory category = sysCategoryService.getById(industryId);
-            if (null != category) {
-                queryWrapper.likeRight("industry_code", category.getCode());
-            }
-        }
-        if (!Check.isNull(advertiserName)) {
-            queryWrapper.like("advertiser_name", advertiserName);
+        if ("operator".equals(roleCode) || "kuaishouOperationManager".equals(roleCode) || "touTiaoOperationManager".equals(roleCode)) {
+            queryWrapper.eq("responsible_id", userId);
 
+        } else if ("plane".equals(roleCode) || "plan".equals(roleCode) || "shot".equals(roleCode) || "clip".equals(roleCode) || "designTeamLeader".equals(roleCode) || "planeLeader".equals(roleCode)) {
+            queryWrapper.eq("design_responsible_id", userId);
         }
+
         if (!Check.isNull(projectName)) {
             queryWrapper.like("project_name", projectName);
         }
+        queryWrapper.orderByDesc("create_time");
+
         IPage<Project> pageList = projectService.page(page, queryWrapper);
         List<Project> records = pageList.getRecords();
         if (!Check.isNull(records)) {
@@ -310,23 +307,23 @@ public class ProjectController {
             if (!Check.isNull(advertiser)) {
                 project.setCompanyId(advertiser.getCompanyId());
             }
-            SysCategory category = sysCategoryService.getById(project.getIndustryId());
+          /*  SysCategory category = sysCategoryService.getById(project.getIndustryId());
             if (null != category) {
                 project.setIndustryCode(category.getCode());
                 project.setIndustryId(category.getId());
-            }
-            SysUser sysUser = sysUserService.getById(project.getResponsibleId());
+            }*/
+           /* SysUser sysUser = sysUserService.getById(project.getResponsibleId());
             if (!Check.isNull(sysUser)) {
                 project.setResponsibleName(sysUser.getRealname());
                 memberMap.put(sysUser.getId(), sysUser.getRealname());
-            }
+            }*/
 
-            SysUser designSysUser = sysUserService.getById(project.getDesignResponsibleId());
+           /* SysUser designSysUser = sysUserService.getById(project.getDesignResponsibleId());
             if (!Check.isNull(designSysUser)) {
                 project.setDesignResponsibleName(designSysUser.getRealname());
                 memberMap.put(designSysUser.getId(), designSysUser.getRealname());
             }
-
+*/
             projectService.save(project);
 
             Long id = project.getId();
@@ -339,7 +336,6 @@ public class ProjectController {
                 projectMemberService.removeByMap(map);
                 ProjectMember member = new ProjectMember();
                 member.setProjectId(id);
-                member.setProjectName(project.getProjectName());
                 member.setUserId(userId);
                 member.setUserName(userName);
                 String roleCode = sysRoleService.getRoleCodeByUserId(userId);
@@ -372,41 +368,33 @@ public class ProjectController {
     @PutMapping(value = "/edit")
     public Result<Project> edit(@RequestBody Project project) {
         Result<Project> result = new Result<>();
-        SysUser sysUser = sysUserService.getById(project.getResponsibleId());
+       /* SysUser sysUser = sysUserService.getById(project.getResponsibleId());
         if (!Check.isNull(sysUser)) {
             project.setResponsibleName(sysUser.getRealname());
             projectMemberService.addMember(sysUser, project);
-        }
+        }*/
 
-        SysCategory category = sysCategoryService.getById(project.getIndustryId());
+       /* SysCategory category = sysCategoryService.getById(project.getIndustryId());
         if (null != category) {
             project.setIndustryCode(category.getCode());
             project.setIndustryId(category.getId());
-        }
-        SysUser designSysUser = sysUserService.getById(project.getDesignResponsibleId());
+        }*/
+       /* SysUser designSysUser = sysUserService.getById(project.getDesignResponsibleId());
         if (!Check.isNull(designSysUser)) {
             project.setDesignResponsibleName(designSysUser.getRealname());
             projectMemberService.addMember(designSysUser, project);
-        }
+        }*/
         Project projectEntity = projectService.getById(project.getId());
         if (projectEntity == null) {
             result.error500("未找到对应实体");
         } else {
             boolean ok = projectService.updateById(project);
-
             QueryWrapper<ProjectMember> memberQueryWrapper = new QueryWrapper<>();
             memberQueryWrapper.eq("project_id", project.getId());
             ProjectMember updateMember = new ProjectMember();
             updateMember.setProjectName(project.getProjectName());
             projectMemberService.update(updateMember, memberQueryWrapper);
 
-            QueryWrapper<UserAllocation> userAllocationQueryWrapper = new QueryWrapper<>();
-            userAllocationQueryWrapper.eq("project_id", project.getId());
-            UserAllocation updateUserAllocation = new UserAllocation();
-            updateUserAllocation.setProjectName(project.getProjectName());
-            // updateUserAllocation.setMediaId(project.getMediaId());
-            userAllocationService.update(updateUserAllocation, userAllocationQueryWrapper);
-
             if (!projectEntity.getSupplierCode().equals(project.getSupplierCode())) {
                 QueryWrapper<MaterialInfo> materialInfoQueryWrapper = new QueryWrapper<>();
                 materialInfoQueryWrapper.eq("project_id", project.getId());

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

@@ -1,5 +1,6 @@
 package org.jeecg.modules.ctop.controller;
 
+import cn.com.ctop.common.module.entity.Advertiser;
 import cn.com.ctop.common.module.entity.Project;
 import cn.com.ctop.common.module.entity.SysUser;
 import cn.com.ctop.common.module.service.IProjectService;
@@ -20,6 +21,7 @@ import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.ctop.entity.ProjectMember;
 import org.jeecg.modules.ctop.mapper.ProjectMemberMapper;
+import org.jeecg.modules.ctop.service.IAdvertiserService;
 import org.jeecg.modules.ctop.service.IProjectMemberService;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -50,6 +52,8 @@ public class ProjectMemberController {
     private ISysRoleExtService sysRoleService;
     @Autowired
     private ISysUserService sysUserService;
+    @Autowired
+    private IAdvertiserService advertiserService;
 
 
     /**
@@ -84,6 +88,8 @@ public class ProjectMemberController {
      * @param userId
      * @return
      */
+
+
     @GetMapping(value = "/participateList")
     public Map<String, Object> participateList(String userId) {
         Map<String, Object> map = new HashMap<>();
@@ -104,9 +110,14 @@ public class ProjectMemberController {
                     }
                     Project project = projectService.getById(projectMember.getProjectId());
                     if (!Check.isNull(project)) {
-                        projectMember.setResponsibleName(project.getResponsibleName());
-                        projectMember.setDesignResponsibleName(project.getDesignResponsibleName());
-                        projectMember.setAdvertiserName(project.getAdvertiserName());
+                        SysUser responsible = sysUserService.getById(project.getResponsibleId());
+
+                        projectMember.setResponsibleName(responsible.getRealname());
+                        SysUser designResponsible = sysUserService.getById(project.getDesignResponsibleId());
+                        projectMember.setDesignResponsibleName(designResponsible.getRealname());
+
+                        Advertiser advertiser = advertiserService.getById(project.getAdvertiserId());
+                        projectMember.setAdvertiserName(advertiser.getName());
                         projectMember.setAdvertiserId(project.getAdvertiserId());
                         projectMember.setMediaId(project.getMediaId());
                         projectMember.setMaxBid(project.getMaxBid());
@@ -126,24 +137,24 @@ public class ProjectMemberController {
     }
 
     @GetMapping("/projectList")
-    public Map<String,Object>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);
+                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);
+            result.put("data", projects);
+            ResultMapUtils.setResultMap(result, StatusCode.COMMON_SUCCESS);
             return result;
         } catch (Exception e) {
             e.printStackTrace();
-            ResultMapUtils.setResultMap(result,StatusCode.COMMON_PARAM_ERROR);
+            ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR);
             return result;
         }
     }
@@ -161,7 +172,6 @@ public class ProjectMemberController {
             result.setSuccess(false);
             result.setMessage("未获取到用户信息");
             return result;
-
         }
         String projectName = projectMember.getProjectName();
         projectMember.setUserId(null);
@@ -179,6 +189,7 @@ public class ProjectMemberController {
         queryWrapper.orderByDesc("create_time");
 
 
+
         Page<ProjectMember> page = new Page<>(pageNo, pageSize);
         IPage<ProjectMember> pageList = projectMemberService.page(page, queryWrapper);
         List<ProjectMember> projectMembers = pageList.getRecords();
@@ -190,9 +201,13 @@ public class ProjectMemberController {
                 }
                 Project project = projectService.getById(member.getProjectId());
                 if (!Check.isNull(project)) {
-                    member.setResponsibleName(project.getResponsibleName());
-                    member.setDesignResponsibleName(project.getDesignResponsibleName());
-                    member.setAdvertiserName(project.getAdvertiserName());
+                    SysUser responsible = sysUserService.getById(project.getResponsibleId());
+                    member.setResponsibleName(responsible.getRealname());
+                    SysUser designResponsible = sysUserService.getById(project.getDesignResponsibleId());
+                    member.setDesignResponsibleName(designResponsible.getRealname());
+                    Advertiser advertiser = advertiserService.getById(project.getAdvertiserId());
+                    member.setAdvertiserName(advertiser.getName());
+                    member.setAdvertiserId(project.getAdvertiserId());
                     member.setAdvertiserId(project.getAdvertiserId());
                     member.setMediaId(project.getMediaId());
                     member.setMaxBid(project.getMaxBid());

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

@@ -82,10 +82,8 @@ public class UserAllocationController {
             }
             userAllocations.setAccountStatus(1);
             userAllocations.setProjectId(projectId);
-            userAllocations.setProjectName(project.getProjectName());
             userAllocations.setMediaId(project.getMediaId());
             userAllocations.setAdvertiserId(project.getAdvertiserId());
-            userAllocations.setAdvertiserName(project.getAdvertiserName());
             userAllocationService.save(userAllocations);
             QueryWrapper<ProjectMember> memberQueryWrapper = new QueryWrapper<>();
             memberQueryWrapper.eq("user_id", userAllocations.getUserId());
@@ -266,15 +264,15 @@ public class UserAllocationController {
             result.error500("未找到对应实体");
         } else {
             boolean ok = userAllocationService.updateById(userAllocation);
+            UserAllocation update = userAllocationService.getById(userAllocation.getId());
             QueryWrapper<ProjectMember> memberQueryWrapper = new QueryWrapper<>();
-            memberQueryWrapper.eq("user_id", userAllocation.getUserId());
-            memberQueryWrapper.eq("project_id", userAllocation.getProjectId());
+            memberQueryWrapper.eq("user_id", update.getUserId());
+            memberQueryWrapper.eq("project_id", update.getProjectId());
             memberQueryWrapper.last("limit 1");
             ProjectMember member = memberMapper.selectOne(memberQueryWrapper);
             if (Check.isNull(member)) {
                 ProjectMember addMember = new ProjectMember();
                 addMember.setProjectId(userAllocation.getProjectId());
-                addMember.setProjectName(userAllocation.getProjectName());
                 addMember.setUserId(userAllocation.getUserId());
                 addMember.setUserName(userAllocation.getUserName());
                 String roleCode = sysRoleService.getRoleCodeByUserId(userAllocation.getUserId());
@@ -284,7 +282,6 @@ public class UserAllocationController {
                 projectMemberService.save(addMember);
             }
 
-
             if (ok) {
                 result.success("修改成功!");
             }
@@ -362,7 +359,7 @@ public class UserAllocationController {
     public Result<List<UserAllocation>> selectAccountListByProjectId(Long projectId) {
         Result<List<UserAllocation>> result = new Result<>();
         try {
-            List<UserAllocation> userAllocations = userAllocationService.getByParams(projectId,null,null);
+            List<UserAllocation> userAllocations = userAllocationService.getByParams(projectId, null, null);
             result.setSuccess(true);
             result.setResult(userAllocations);
         } catch (Exception e) {

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

@@ -1,126 +0,0 @@
-package org.jeecg.modules.ctop.entity;
-
-import cn.com.ctop.common.module.annotation.Dict;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.jeecgframework.poi.excel.annotation.Excel;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.util.Date;
-
-/**
- * 广告主信息表
- *
- * @author jeecg-boot
- * @version V1.0
- * @date 2019-06-11
- */
-@Data
-@TableName("ctop_advertiser")
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@ApiModel(value = "ctop_advertiser对象", description = "广告主信息表")
-public class Advertiser {
-
-    /**
-     * 主键ID
-     */
-    @TableId(type = IdType.UUID)
-    @ApiModelProperty(value = "主键ID")
-    private String id;
-    /**
-     * 广告主名称
-     */
-    @Excel(name = "广告主名称", width = 15)
-    @ApiModelProperty(value = "广告主名称")
-    private String name;
-    /**
-     * 行业ID
-     */
-    @Excel(name = "行业ID", width = 15)
-    @ApiModelProperty(value = "行业ID")
-    @Dict(dicCode = "id",dictTable="sys_category",dicText="name")
-    private String industryId;
-    private String industryCode;
-    /**
-     * 销售ID
-     */
-    @Excel(name = "销售ID", width = 15)
-    @ApiModelProperty(value = "销售ID")
-    @Dict(dicCode = "id",dictTable="sys_user",dicText="realname")
-    private String saleId;
-    /**
-     * 销售ID
-     */
-    @Excel(name = "广告主类别", width = 15)
-    @ApiModelProperty(value = "广告主类别")
-    private Integer advertiserType;
-
-    /**
-     * 代理商Id
-     */
-    private Long agentId;
-
-    /**
-     * 联系人姓名
-     */
-    @Excel(name = "联系人姓名", width = 15)
-    @ApiModelProperty(value = "联系人姓名")
-    private String contact;
-    /**
-     * 联系人手机
-     */
-    @Excel(name = "联系人手机", width = 15)
-    @ApiModelProperty(value = "联系人手机")
-    private String mobile;
-    /**
-     * 联系人邮箱
-     */
-    @Excel(name = "联系人邮箱", width = 15)
-    @ApiModelProperty(value = "联系人邮箱")
-    private String email;
-    /**
-     * 创建人
-     */
-    @Excel(name = "创建人", width = 15)
-    @ApiModelProperty(value = "创建人")
-    private String createBy;
-    /**
-     * 创建时间
-     */
-    @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")
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-    /**
-     * 修改人
-     */
-    @Excel(name = "修改人", width = 15)
-    @ApiModelProperty(value = "修改人")
-    private String updateBy;
-    /**
-     * 修改时间
-     */
-    @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")
-    @ApiModelProperty(value = "修改时间")
-    private Date updateTime;
-    private String userId;
-
-    private String companyId;
-
-    @TableField(exist = false)
-    private String saleName;
-
-
-}

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

@@ -0,0 +1,55 @@
+package org.jeecg.modules.ctop.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecg.modules.excelutil.entity.JhsBakendDataEntity;
+
+import java.util.Date;
+
+/**
+ * 聚划算后端数据
+ * @author jeecg-boot
+ * @date   2020-09-07
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_jhs_bakend_data")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class JhsBakendData {
+
+	@TableId
+	private String id;
+	private String stateDate;
+	private String productLine;
+	private String taskName;
+	private String clientName;
+	private String channelId;
+	private String channelName;
+	private String adId;
+	private Long pageView;
+	private Long dealNumber;
+	private Date createTime;
+	private Date updateTime;
+
+	public JhsBakendData(JhsBakendDataEntity dataEntity) {
+		this.adId = dataEntity.getAdId();
+		this.stateDate = dataEntity.getStateDate();
+		this.productLine = dataEntity.getProductLine();
+		this.taskName = dataEntity.getTaskName();
+		this.clientName = dataEntity.getClientName();
+		this.channelId = dataEntity.getChannelId();
+		this.channelName = dataEntity.getChannelName();
+		this.pageView = dataEntity.getPageView();
+		this.dealNumber = dataEntity.getDealNumber();
+		this.updateTime = new Date();
+		this.createTime = new Date();
+		this.id = adId+stateDate;
+	}
+
+	public JhsBakendData() {
+	}
+}

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

@@ -47,6 +47,8 @@ public class ProjectMember implements  Serializable{
     @Excel(name = "项目名称", width = 15)
     @ApiModelProperty(value = "项目名称")
     private String projectName;
+
+
     /**
      * 成员id
      */
@@ -73,6 +75,7 @@ public class ProjectMember implements  Serializable{
 
     @TableField(exist = false)
     private String advertiserName;
+
     @TableField(exist = false)
     private String advertiserId;
 

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/AdvertiserMapper.java

@@ -1,9 +1,9 @@
 package org.jeecg.modules.ctop.mapper;
 
+import cn.com.ctop.common.module.entity.Advertiser;
 import cn.com.ctop.common.module.entity.UserAllocation;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
-import org.jeecg.modules.ctop.entity.Advertiser;
 import org.jeecg.modules.excelutil.entity.KuaishouXxlEntity;
 import org.jeecg.modules.excelutil.entity.YdPlanAggregateEntity;
 import org.jeecg.modules.excelutil.entity.YdWeekAggregateEntity;
@@ -13,7 +13,7 @@ import java.util.List;
 /**
  * @Description: 广告主信息表
  * @Author: jeecg-boot
- * @Date:   2019-06-11
+ * @Date: 2019-06-11
  * @Version: V1.0
  */
 public interface AdvertiserMapper extends BaseMapper<Advertiser> {

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

@@ -0,0 +1,21 @@
+package org.jeecg.modules.ctop.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.ctop.entity.JhsBakendData;
+import org.jeecg.modules.excelutil.entity.JhsBakendDataEntity;
+
+import java.util.List;
+
+/**
+ * 聚划算后端数据
+ * @author: jeecg-boot
+ * @date:   2020-09-07
+ * @cersion: V1.0
+ */
+public interface JhsBakendDataMapper extends BaseMapper<JhsBakendData> {
+
+    void replaceData(@Param(value = "bakendData") JhsBakendData getData);
+
+    void replaceBatch(@Param(value = "datas")List<JhsBakendDataEntity> datas);
+}

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

@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.ctop.mapper.JhsBakendDataMapper">
+
+    <insert id="replaceData">
+        REPLACE INTO
+            ctop_jhs_bakend_data
+            (id,state_date,
+            product_line,
+            task_name,
+            client_name,
+            channel_id,
+            channel_name,
+            ad_id,
+            page_view,
+            deal_number)
+            VALUES(
+                #{bakendData.id},
+                #{bakendData.stateDate},
+                #{bakendData.productLine},
+                #{bakendData.taskName},
+                #{bakendData.clientName},
+                #{bakendData.channelId},
+                #{bakendData.channelName},
+                #{bakendData.adId},
+                #{bakendData.pageView},
+                #{bakendData.dealNumber}
+                )
+    </insert>
+    <insert id="replaceBatch">
+        REPLACE INTO
+        ctop_jhs_bakend_data
+        (id,state_date,
+        product_line,
+        task_name,
+        client_name,
+        channel_id,
+        channel_name,
+        ad_id,
+        page_view,
+        vistor,
+        deal_number)
+            values
+            <foreach collection="datas" item="bakendData" separator=",">
+                (
+                '${bakendData.adId}${bakendData.stateDate}${bakendData.clientName}${bakendData.channelId}',
+                #{bakendData.stateDate},
+                #{bakendData.productLine},
+                #{bakendData.taskName},
+                #{bakendData.clientName},
+                #{bakendData.channelId},
+                #{bakendData.channelName},
+                #{bakendData.adId},
+                #{bakendData.pageView},
+                #{bakendData.vistor},
+                #{bakendData.dealNumber}
+                )
+            </foreach>
+    </insert>
+</mapper>

+ 2 - 2
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.Advertiser;
 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 java.text.ParseException;
 import java.util.List;
@@ -11,7 +11,7 @@ import java.util.List;
 /**
  * @Description: 广告主信息表
  * @Author: jeecg-boot
- * @Date:   2019-06-11
+ * @Date: 2019-06-11
  * @Version: V1.0
  */
 public interface IAdvertiserService extends IService<Advertiser> {

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

@@ -0,0 +1,21 @@
+package org.jeecg.modules.ctop.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.ctop.entity.JhsBakendData;
+import org.jeecg.modules.excelutil.entity.JhsBakendDataEntity;
+
+import java.util.List;
+
+/**
+ * @Description: 聚划算后端数据
+ * @Author: jeecg-boot
+ * @Date:   2020-09-07
+ * @Version: V1.0
+ */
+public interface IJhsBakendDataService extends IService<JhsBakendData> {
+    public void saveOrUpdateEntity(JhsBakendDataEntity dataEntity);
+
+    void replaceEntity(JhsBakendDataEntity dataEntity);
+
+    void replaceEntityList(List<JhsBakendDataEntity> datas);
+}

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

@@ -1,12 +1,12 @@
 package org.jeecg.modules.ctop.service.impl;
 
+import cn.com.ctop.common.module.entity.Advertiser;
 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.excelutil.entity.KuaishouXxlEntity;
@@ -26,7 +26,7 @@ import java.util.stream.Collectors;
 /**
  * @Description: 广告主信息表
  * @Author: jeecg-boot
- * @Date:   2019-06-11
+ * @Date: 2019-06-11
  * @Version: V1.0
  */
 @Service
@@ -34,6 +34,7 @@ public class AdvertiserServiceImpl extends ServiceImpl<AdvertiserMapper, Adverti
 
     @Autowired
     private AdvertiserMapper advertiserMapper;
+
     @Override
     public List<Advertiser> getBySaleId(String saleId) {
         QueryWrapper<Advertiser> queryWrapper = new QueryWrapper<>();
@@ -62,10 +63,10 @@ public class AdvertiserServiceImpl extends ServiceImpl<AdvertiserMapper, Adverti
 
     @Override
     public List<SheetInfoVo> getSystemTypeXxlStatisticInfo(Long projectId) {
-        List<SheetInfoVo>vos = new ArrayList<>();
-        SheetInfoVo android = getXxlStatisticInfo(projectId,"android",null,"android汇总表");
+        List<SheetInfoVo> vos = new ArrayList<>();
+        SheetInfoVo android = getXxlStatisticInfo(projectId, "android", null, "android汇总表");
         vos.add(android);
-        SheetInfoVo ios = getXxlStatisticInfo(projectId,"ios",null,"ios汇总表");
+        SheetInfoVo ios = getXxlStatisticInfo(projectId, "ios", null, "ios汇总表");
         vos.add(ios);
         return vos;
     }
@@ -115,7 +116,7 @@ public class AdvertiserServiceImpl extends ServiceImpl<AdvertiserMapper, Adverti
 
     private List<YdPlanAggregateEntity> getYdPlanStatisticInfo(Long projectId, String startDate, String endDate) {
         List<YdPlanAggregateEntity> result = new ArrayList<>();
-        List<UserAllocation> allocations = userAllocationService.getByParams(projectId, null,null);
+        List<UserAllocation> allocations = userAllocationService.getByParams(projectId, null, null);
         if (null != allocations && !allocations.isEmpty()) {
             allocations.forEach(allocation -> {
                 List<YdPlanAggregateEntity> plans = statisticWeekInfoByAccount(allocation, startDate, endDate);

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

@@ -0,0 +1,58 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.ctop.entity.JhsBakendData;
+import org.jeecg.modules.ctop.mapper.JhsBakendDataMapper;
+import org.jeecg.modules.ctop.service.IJhsBakendDataService;
+import org.jeecg.modules.excelutil.entity.JhsBakendDataEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 聚划算后端数据
+ * @author jeecg-boot
+ * @date   2020-09-07
+ * @version V1.0
+ */
+@Service
+public class JhsBakendDataServiceImpl extends ServiceImpl<JhsBakendDataMapper, JhsBakendData> implements IJhsBakendDataService {
+    @Autowired
+    private JhsBakendDataMapper bakendDataMapper;
+    @Override
+    public void saveOrUpdateEntity(JhsBakendDataEntity dataEntity) {
+        QueryWrapper<JhsBakendData> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("state_date", dataEntity.getStateDate());
+        queryWrapper.eq("ad_id", dataEntity.getAdId());
+        JhsBakendData getData = this.getOne(queryWrapper);
+        if (null == getData) {
+            getData = new JhsBakendData(dataEntity);
+            this.save(getData);
+        } else {
+            getData.setStateDate(dataEntity.getStateDate());
+            getData.setProductLine(dataEntity.getProductLine());
+            getData.setTaskName(dataEntity.getTaskName());
+            getData.setClientName(dataEntity.getClientName());
+            getData.setChannelId(dataEntity.getChannelId());
+            getData.setChannelName(dataEntity.getChannelName());
+            getData.setPageView(dataEntity.getPageView());
+            getData.setDealNumber(dataEntity.getDealNumber());
+            getData.setUpdateTime(new Date());
+            this.updateById(getData);
+        }
+    }
+
+    @Override
+    public void replaceEntity(JhsBakendDataEntity dataEntity) {
+        JhsBakendData getData = new JhsBakendData(dataEntity);
+        bakendDataMapper.replaceData(getData);
+    }
+
+    @Override
+    public void replaceEntityList(List<JhsBakendDataEntity> datas) {
+        bakendDataMapper.replaceBatch(datas);
+    }
+}

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

@@ -1,12 +1,13 @@
 package org.jeecg.modules.ctop.service.impl;
 
+import cn.com.ctop.common.module.entity.Advertiser;
 import cn.com.ctop.common.module.entity.SysUser;
 import cn.com.ctop.common.module.entity.UserAllocation;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.performanceappraisal.service.IPerformanceService;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.util.DateUtils;
-import org.jeecg.modules.ctop.entity.Advertiser;
+
 import org.jeecg.modules.ctop.service.IAdvertiserService;
 import org.jeecg.modules.ctop.service.IPerformanceSaleService;
 import org.jeecg.modules.performance.entity.SalePerformanceDetail;
@@ -127,7 +128,7 @@ public class PerformanceSaleServiceImpl implements IPerformanceSaleService {
         detail.setQuarter(quarter);
         detail.setStartDate(startDate);
         detail.setEndDate(endDate);
-        detail.setExtensionSelf(advertiser.getAdvertiserType());
+     //   detail.setExtensionSelf(advertiser.getAdvertiserType());
         detail.setBrandNew(brandNew);
         if (user.getOrgCode().startsWith(CtopAdConstant.HB_BYTEDANCE_SALE_ORG_CODE)) {
             detail.setMediaType(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE);

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

@@ -56,7 +56,7 @@ public class ProjectTransferRecordServiceImpl extends ServiceImpl<ProjectTransfe
             SysUser user = sysUserService.getById(record.getUserId());
             Project project = projectService.getById(record.getTargetProject());
             userAllocation.setProjectId(project.getId());
-            userAllocation.setProjectName(project.getProjectName());
+       //     userAllocation.setProjectName(project.getProjectName());
             userAllocationService.updateById(userAllocation);
             ProjectMember member = projectMemberService.getProjectByParams(record.getTargetProject(),record.getUserId());
             if(null == member){

+ 70 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/excelutil/JhsBakendDataExcelListener.java

@@ -0,0 +1,70 @@
+package org.jeecg.modules.excelutil;
+
+import cn.com.ctop.common.module.utils.SpringUtils;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.ctop.service.impl.JhsBakendDataServiceImpl;
+import org.jeecg.modules.excelutil.entity.JhsBakendDataEntity;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class JhsBakendDataExcelListener extends AnalysisEventListener<JhsBakendDataEntity> {
+    //自定义用于暂时存储data。
+    //可以通过实例获取该值
+    private List<JhsBakendDataEntity> datas = new ArrayList<>();
+    private static final int BATCH_COUNT = 200;
+
+    @Override
+    public void invoke(JhsBakendDataEntity object, AnalysisContext context) {
+        //数据存储到list,供批量处理,或后续自己业务逻辑处理。
+        String date = object.getStateDate();
+        String formatDate = date.substring(0,4)+"-"+date.substring(4,6)+"-"+date.substring(6,8);
+        object.setStateDate(formatDate);
+        object.setVistor(object.getTaskName().split("-")[1]);
+        datas.add(object);
+        if(null!=datas&&datas.size()>=BATCH_COUNT){
+            saveDate();
+            datas.clear();
+        }
+    }
+
+    private void saveDate() {
+        JhsBakendDataServiceImpl dataService = SpringUtils.getApplicationContext().getBean(JhsBakendDataServiceImpl.class);
+        dataService.replaceEntityList(datas);
+    }
+
+    private void doSomething(Object object) {
+        //入库调用接口
+        JhsBakendDataEntity dataEntity = (JhsBakendDataEntity) object;
+        dataEntity.setCreateTime(new Date());
+        dataEntity.setUpdateTime(new Date());
+        String date = dataEntity.getStateDate();
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
+        try {
+            date = DateUtils.formatDate(dateFormat.parse(date));
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        dataEntity.setStateDate(date);
+        JhsBakendDataServiceImpl dataService = SpringUtils.getApplicationContext().getBean(JhsBakendDataServiceImpl.class);
+        dataService.replaceEntity(dataEntity);
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+        // datas.clear();//解析结束销毁不用的资源
+    }
+
+    public List<JhsBakendDataEntity> getDatas() {
+        return datas;
+    }
+
+    public void setDatas(List<JhsBakendDataEntity> datas) {
+        this.datas = datas;
+    }
+}

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

@@ -0,0 +1,132 @@
+package org.jeecg.modules.excelutil.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.metadata.BaseRowModel;
+
+import java.util.Date;
+
+/**
+ * 聚划算后端数据
+ */
+public class JhsBakendDataEntity extends BaseRowModel {
+    @ExcelProperty(index = 0, value = "日期")
+    private String stateDate;
+    @ExcelProperty(index = 1, value = "业务线")
+    private String productLine;
+    @ExcelProperty(index = 2, value = "任务名称")
+    private String taskName;
+    @ExcelProperty(index = 3, value = "客户端")
+    private String clientName;
+    @ExcelProperty(index = 4, value = "渠道id")
+    private String channelId;
+    @ExcelProperty(index = 5, value = "渠道名称")
+    private String channelName;
+    @ExcelProperty(index = 6, value = "adid")
+    private String adId;
+    @ExcelProperty(index = 7, value = "页面访问UV x")
+    private Long pageView;
+    @ExcelProperty(index = 8, value = "成交笔数 y")
+    private Long dealNumber;
+    private String vistor;
+    private Date createTime;
+    private Date updateTime;
+
+    public JhsBakendDataEntity() {
+    }
+
+    public String getStateDate() {
+        return stateDate;
+    }
+
+    public void setStateDate(String stateDate) {
+        this.stateDate = stateDate;
+    }
+
+    public String getProductLine() {
+        return productLine;
+    }
+
+    public void setProductLine(String productLine) {
+        this.productLine = productLine;
+    }
+
+    public String getTaskName() {
+        return taskName;
+    }
+
+    public void setTaskName(String taskName) {
+        this.taskName = taskName;
+    }
+
+    public String getClientName() {
+        return clientName;
+    }
+
+    public void setClientName(String clientName) {
+        this.clientName = clientName;
+    }
+
+    public String getChannelId() {
+        return channelId;
+    }
+
+    public void setChannelId(String channelId) {
+        this.channelId = channelId;
+    }
+
+    public String getChannelName() {
+        return channelName;
+    }
+
+    public void setChannelName(String channelName) {
+        this.channelName = channelName;
+    }
+
+    public String getAdId() {
+        return adId;
+    }
+
+    public void setAdId(String adId) {
+        this.adId = adId;
+    }
+
+    public Long getPageView() {
+        return pageView;
+    }
+
+    public void setPageView(Long pageView) {
+        this.pageView = pageView;
+    }
+
+    public Long getDealNumber() {
+        return dealNumber;
+    }
+
+    public void setDealNumber(Long dealNumber) {
+        this.dealNumber = dealNumber;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getVistor() {
+        return vistor;
+    }
+
+    public void setVistor(String vistor) {
+        this.vistor = vistor;
+    }
+}

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

@@ -1,5 +1,6 @@
 package org.jeecg.modules.performance.service.impl;
 
+import cn.com.ctop.common.module.entity.Advertiser;
 import cn.com.ctop.common.module.entity.SysUser;
 import cn.com.ctop.common.module.entity.UserAllocation;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
@@ -8,7 +9,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.util.DateUtils;
-import org.jeecg.modules.ctop.entity.Advertiser;
+
 import org.jeecg.modules.ctop.service.IAdvertiserService;
 import org.jeecg.modules.performance.constants.RateConstant;
 import org.jeecg.modules.performance.entity.SalePerformanceDetail;
@@ -137,7 +138,7 @@ public class SalePerformanceDetailServiceImpl extends ServiceImpl<SalePerformanc
         detail.setQuarter(quarter);
         detail.setStartDate(startDate);
         detail.setEndDate(endDate);
-        detail.setExtensionSelf(advertiser.getAdvertiserType());
+     //   detail.setExtensionSelf(advertiser.getAdvertiserType());
         detail.setBrandNew(brandNew);
         if (null != user.getOrgCode()) {
             if (user.getOrgCode().startsWith(CtopAdConstant.HB_BYTEDANCE_SALE_ORG_CODE)) {

+ 40 - 6
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java

@@ -18,6 +18,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.SecurityUtils;
@@ -149,7 +151,7 @@ public class SysUserController {
     }
 
     @RequestMapping(value = "/getAllUserListByCompany", method = RequestMethod.GET)
-    public Result<List<SysUserVo>> getAllUserListByCompany() {
+    public Result<List<SysUserVo>> getAllUserListByCompany(String userName) {
         Result<List<SysUserVo>> result = new Result<>();
         try {
             LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@@ -161,9 +163,9 @@ public class SysUserController {
             String companyId = userCompany.getCompanyId();
             List<SysUserVo> userList;
             if ("4b10089775c040119e139087517aed88".equals(companyId) || "6608ed13c0dd42de93c790dbdf124234".equals(companyId) || "d57fecdcf7a94d009736d9c850731582".equals(companyId)) {
-                userList = sysUserService.getAllUser();
+                userList = sysUserService.getAllUser(userName);
             } else {
-                userList = sysUserService.getUserListByCompany(companyId);
+                userList = sysUserService.getUserListByCompany(companyId, userName);
             }
 
 
@@ -180,7 +182,38 @@ public class SysUserController {
     }
 
     @RequestMapping(value = "/getAllUserList", method = RequestMethod.GET)
-    public Result<List<SysUserVo>> getAllList() {
+    public Result<PageInfo<SysUserVo>> getAllList(String userName, int pageNo, int pageSize) {
+        Result<PageInfo<SysUserVo>> result = new Result<>();
+        try {
+            LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+            QueryWrapper<UserCompany> userCompanyQueryWrapper = new QueryWrapper<>();
+            userCompanyQueryWrapper.eq("user_id", user.getId());
+            userCompanyQueryWrapper.orderByDesc("create_time");
+            userCompanyQueryWrapper.last("limit 1");
+            UserCompany userCompany = userCompanyMapper.selectOne(userCompanyQueryWrapper);
+            String companyId = userCompany.getCompanyId();
+            List<SysUserVo> userList;
+
+            PageHelper.startPage(pageNo, pageSize);
+            if ("4b10089775c040119e139087517aed88".equals(companyId) || "6608ed13c0dd42de93c790dbdf124234".equals(companyId) || "d57fecdcf7a94d009736d9c850731582".equals(companyId)) {
+                userList = sysUserService.getAllUser(userName);
+            } else {
+                userList = sysUserService.getUserListByCompany(companyId, userName);
+            }
+            PageInfo<SysUserVo> pageInfo = new PageInfo<>(userList);
+            result.setSuccess(true);
+            result.setResult(pageInfo);
+        } catch (Exception e) {
+            e.printStackTrace();
+            result.setSuccess(false);
+            result.setMessage("请求失败");
+        }
+        return result;
+    }
+
+
+    @RequestMapping(value = "/getAllUserListV1", method = RequestMethod.GET)
+    public Result<List<SysUserVo>> getAllList(String userName) {
         Result<List<SysUserVo>> result = new Result<>();
         try {
             LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@@ -192,9 +225,9 @@ public class SysUserController {
             String companyId = userCompany.getCompanyId();
             List<SysUserVo> userList;
             if ("4b10089775c040119e139087517aed88".equals(companyId) || "6608ed13c0dd42de93c790dbdf124234".equals(companyId) || "d57fecdcf7a94d009736d9c850731582".equals(companyId)) {
-                userList = sysUserService.getAllUser();
+                userList = sysUserService.getAllUser(userName);
             } else {
-                userList = sysUserService.getUserListByCompany(companyId);
+                userList = sysUserService.getUserListByCompany(companyId, userName);
             }
             result.setSuccess(true);
             result.setResult(userList);
@@ -206,6 +239,7 @@ public class SysUserController {
         return result;
     }
 
+
     @RequestMapping(value = "/getAllSaleList", method = RequestMethod.GET)
     public Result<List<SysUserVo>> getSaleList() {
         Result<List<SysUserVo>> result = new Result<>();

+ 214 - 195
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java

@@ -25,97 +25,107 @@ import java.util.Set;
  * @since 2018-12-20
  */
 public interface ISysUserService extends IService<SysUser> {
-	List<SysUserVo> getUserListByCompany(String companyId);
-
-	List<SysUser> getUserListByRoleId(String roleId);
-
-	List<SysUserVo> getAllSales();
-
-	List<SysUserVo> getAllSalesByCompanyId(String companyId);
-	/**
-	 * 重置密码
-	 *
-	 * @param username
-	 * @param oldpassword
-	 * @param newpassword
-	 * @param confirmpassword
-	 * @return
-	 */
-	public Result<?> resetPassword(String username, String oldpassword, String newpassword, String confirmpassword);
-
-	/**
-	 * 修改密码
-	 *
-	 * @param sysUser
-	 * @return
-	 */
-	public Result<?> changePassword(SysUser sysUser);
-
-	/**
-	 * 删除用户
-	 * @param userId
-	 * @return
-	 */
-	public boolean deleteUser(String userId);
-
-	/**
-	 * 批量删除用户
-	 * @param userIds
-	 * @return
-	 */
-	public boolean deleteBatchUsers(String userIds);
-
-	public SysUser getUserByName(String username);
-
-	/**
-	 * 添加用户和用户角色关系
-	 * @param user
-	 * @param roles
-	 */
-	public void addUserWithRole(SysUser user,String roles);
-
-
-	/**
-	 * 修改用户和用户角色关系
-	 * @param user
-	 * @param roles
-	 */
-	public void editUserWithRole(SysUser user,String roles);
-
-	/**
-	 * 获取用户的授权角色
-	 * @param username
-	 * @return
-	 */
-	public List<String> getRole(String username);
-
-	/**
-	  * 查询用户信息包括 部门信息
-	 * @param username
-	 * @return
-	 */
-	public SysUserCacheInfo getCacheUser(String username);
-
-	/**
-	 * 根据部门Id查询
-	 * @param
-	 * @return
-	 */
-	public IPage<SysUser> getUserByDepId(Page<SysUser> page, String departId, String username);
-
-	/**
-	 * 根据部门Ids查询
-	 * @param
-	 * @return
-	 */
-	public IPage<SysUser> getUserByDepIds(Page<SysUser> page, List<String> departIds, String username);
-
-	/**
-	 * 根据 userIds查询,查询用户所属部门的名称(多个部门名逗号隔开)
-	 * @param
-	 * @return
-	 */
-	public Map<String,String> getDepNamesByUserIds(List<String> userIds);
+    List<SysUserVo> getUserListByCompany(String companyId,String userName);
+
+    List<SysUser> getUserListByRoleId(String roleId);
+
+    List<SysUserVo> getAllSales();
+
+    List<SysUserVo> getAllSalesByCompanyId(String companyId);
+
+    /**
+     * 重置密码
+     *
+     * @param username
+     * @param oldpassword
+     * @param newpassword
+     * @param confirmpassword
+     * @return
+     */
+    public Result<?> resetPassword(String username, String oldpassword, String newpassword, String confirmpassword);
+
+    /**
+     * 修改密码
+     *
+     * @param sysUser
+     * @return
+     */
+    public Result<?> changePassword(SysUser sysUser);
+
+    /**
+     * 删除用户
+     *
+     * @param userId
+     * @return
+     */
+    public boolean deleteUser(String userId);
+
+    /**
+     * 批量删除用户
+     *
+     * @param userIds
+     * @return
+     */
+    public boolean deleteBatchUsers(String userIds);
+
+    public SysUser getUserByName(String username);
+
+    /**
+     * 添加用户和用户角色关系
+     *
+     * @param user
+     * @param roles
+     */
+    public void addUserWithRole(SysUser user, String roles);
+
+
+    /**
+     * 修改用户和用户角色关系
+     *
+     * @param user
+     * @param roles
+     */
+    public void editUserWithRole(SysUser user, String roles);
+
+    /**
+     * 获取用户的授权角色
+     *
+     * @param username
+     * @return
+     */
+    public List<String> getRole(String username);
+
+    /**
+     * 查询用户信息包括 部门信息
+     *
+     * @param username
+     * @return
+     */
+    public SysUserCacheInfo getCacheUser(String username);
+
+    /**
+     * 根据部门Id查询
+     *
+     * @param
+     * @return
+     */
+    public IPage<SysUser> getUserByDepId(Page<SysUser> page, String departId, String username);
+
+    /**
+     * 根据部门Ids查询
+     *
+     * @param
+     * @return
+     */
+    public IPage<SysUser> getUserByDepIds(Page<SysUser> page, List<String> departIds, String username);
+
+    /**
+     * 根据 userIds查询,查询用户所属部门的名称(多个部门名逗号隔开)
+     *
+     * @param
+     * @return
+     */
+    public Map<String, String> getDepNamesByUserIds(List<String> userIds);
 
     /**
      * 根据部门 Id 和 QueryWrapper 查询
@@ -127,98 +137,105 @@ public interface ISysUserService extends IService<SysUser> {
      */
     public IPage<SysUser> getUserByDepartIdAndQueryWrapper(Page<SysUser> page, String departId, QueryWrapper<SysUser> queryWrapper);
 
-	/**
-	 * 根据 orgCode 查询用户,包括子部门下的用户
-	 *
-	 * @param orgCode
-	 * @param userParams 用户查询条件,可为空
-	 * @param page 分页参数
-	 * @return
-	 */
-	IPage<SysUserSysDepartModel> queryUserByOrgCode(String orgCode, SysUser userParams, IPage page);
-	Map<String, Object> queryRoleCode(String userId);
-	/**
-	 * 根据角色Id查询
-	 * @param
-	 * @return
-	 */
-	public IPage<SysUser> getUserByRoleId(Page<SysUser> page,String roleId, String username);
-
-	/**
-	 * 通过用户名获取用户角色集合
-	 *
-	 * @param username 用户名
-	 * @return 角色集合
-	 */
-	Set<String> getUserRolesSet(String username);
-
-	/**
-	 * 通过用户名获取用户权限集合
-	 *
-	 * @param username 用户名
-	 * @return 权限集合
-	 */
-	Set<String> getUserPermissionsSet(String username);
-
-	/**
-	 * 根据用户名设置部门ID
-	 * @param username
-	 * @param orgCode
-	 */
-	void updateUserDepart(String username,String orgCode);
-
-	/**
-	 * 根据手机号获取用户名和密码
-	 */
-	public SysUser getUserByPhone(String phone);
-
-
-	/**
-	 * 根据邮箱获取用户
-	 */
-	public SysUser getUserByEmail(String email);
-
-
-	/**
-	 * 添加用户和用户部门关系
-	 * @param user
-	 * @param selectedParts
-	 */
-	void addUserWithDepart(SysUser user, String selectedParts);
-
-	/**
-	 * 编辑用户和用户部门关系
-	 * @param user
-	 * @param departs
-	 */
-	void editUserWithDepart(SysUser user, String departs);
-
-	/**
-	   * 校验用户是否有效
-	 * @param sysUser
-	 * @return
-	 */
-	Result checkUserIsEffective(SysUser sysUser);
-
-	/**
-	 * 查询被逻辑删除的用户
-	 */
-	List<SysUser> queryLogicDeleted();
-
-	/**
-	 * 查询被逻辑删除的用户(可拼装查询条件)
-	 */
-	List<SysUser> queryLogicDeleted(LambdaQueryWrapper<SysUser> wrapper);
-
-	/**
-	 * 还原被逻辑删除的用户
-	 */
-	boolean revertLogicDeleted(List<String> userIds, SysUser updateEntity);
-
-	/**
-	 * 彻底删除被逻辑删除的用户
-	 */
-	boolean removeLogicDeleted(List<String> userIds);
+    /**
+     * 根据 orgCode 查询用户,包括子部门下的用户
+     *
+     * @param orgCode
+     * @param userParams 用户查询条件,可为空
+     * @param page       分页参数
+     * @return
+     */
+    IPage<SysUserSysDepartModel> queryUserByOrgCode(String orgCode, SysUser userParams, IPage page);
+
+    Map<String, Object> queryRoleCode(String userId);
+
+    /**
+     * 根据角色Id查询
+     *
+     * @param
+     * @return
+     */
+    public IPage<SysUser> getUserByRoleId(Page<SysUser> page, String roleId, String username);
+
+    /**
+     * 通过用户名获取用户角色集合
+     *
+     * @param username 用户名
+     * @return 角色集合
+     */
+    Set<String> getUserRolesSet(String username);
+
+    /**
+     * 通过用户名获取用户权限集合
+     *
+     * @param username 用户名
+     * @return 权限集合
+     */
+    Set<String> getUserPermissionsSet(String username);
+
+    /**
+     * 根据用户名设置部门ID
+     *
+     * @param username
+     * @param orgCode
+     */
+    void updateUserDepart(String username, String orgCode);
+
+    /**
+     * 根据手机号获取用户名和密码
+     */
+    public SysUser getUserByPhone(String phone);
+
+
+    /**
+     * 根据邮箱获取用户
+     */
+    public SysUser getUserByEmail(String email);
+
+
+    /**
+     * 添加用户和用户部门关系
+     *
+     * @param user
+     * @param selectedParts
+     */
+    void addUserWithDepart(SysUser user, String selectedParts);
+
+    /**
+     * 编辑用户和用户部门关系
+     *
+     * @param user
+     * @param departs
+     */
+    void editUserWithDepart(SysUser user, String departs);
+
+    /**
+     * 校验用户是否有效
+     *
+     * @param sysUser
+     * @return
+     */
+    Result checkUserIsEffective(SysUser sysUser);
+
+    /**
+     * 查询被逻辑删除的用户
+     */
+    List<SysUser> queryLogicDeleted();
+
+    /**
+     * 查询被逻辑删除的用户(可拼装查询条件)
+     */
+    List<SysUser> queryLogicDeleted(LambdaQueryWrapper<SysUser> wrapper);
+
+    /**
+     * 还原被逻辑删除的用户
+     */
+    boolean revertLogicDeleted(List<String> userIds, SysUser updateEntity);
+
+    /**
+     * 彻底删除被逻辑删除的用户
+     */
+    boolean removeLogicDeleted(List<String> userIds);
 
     /**
      * 更新手机号、邮箱空字符串为 null
@@ -226,18 +243,20 @@ public interface ISysUserService extends IService<SysUser> {
     @Transactional(rollbackFor = Exception.class)
     boolean updateNullPhoneEmail();
 
-	/**
-	 * 保存第三方用户信息
-	 * @param sysUser
-	 */
-	void saveThirdUser(SysUser sysUser);
+    /**
+     * 保存第三方用户信息
+     *
+     * @param sysUser
+     */
+    void saveThirdUser(SysUser sysUser);
 
-	/**
-	 * 根据部门Ids查询
-	 * @param
-	 * @return
-	 */
-	List<SysUser> queryByDepIds(List<String> departIds, String username);
+    /**
+     * 根据部门Ids查询
+     *
+     * @param
+     * @return
+     */
+    List<SysUser> queryByDepIds(List<String> departIds, String username);
 
-	List<SysUserVo> getAllUser();
+    List<SysUserVo> getAllUser(String userName);
 }

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

@@ -47,7 +47,6 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
 	 */
 	@Override
 	public List<DictModel> queryDictItemsByCode(String code) {
-		log.info("无缓存dictCache的时候调用这里!");
 		return sysDictMapper.queryDictItemsByCode(code);
 	}
 
@@ -82,7 +81,6 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
 
 	@Override
 	public String queryDictTextByKey(String code, String key,String extendsKey,String extendsValue) {
-		log.info("无缓存dictText的时候调用这里!");
 		return sysDictMapper.queryDictTextByKey(code, key,extendsKey,extendsValue);
 	}
 
@@ -101,7 +99,6 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
 
 	@Override
 	public List<DictModel> queryTableDictItemsByCodeAndFilter(String table, String text, String code, String filterSql) {
-		log.info("无缓存dictTableList的时候调用这里!");
 		return sysDictMapper.queryTableDictItemsByCodeAndFilter(table,text,code,filterSql);
 	}
 

+ 361 - 356
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java

@@ -44,51 +44,54 @@ import java.util.stream.Collectors;
 @Slf4j
 public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
 
-	@Autowired
-	private SysUserMapper userMapper;
-	@Autowired
-	private SysPermissionMapper sysPermissionMapper;
-	@Autowired
-	private SysUserRoleMapper sysUserRoleMapper;
-	@Autowired
-	private SysUserDepartMapper sysUserDepartMapper;
-	@Autowired
-	private ISysBaseApi sysBaseAPI;
-	@Autowired
-	private SysDepartMapper sysDepartMapper;
-	@Autowired
-	private SysRoleMapper sysRoleMapper;
-	@Autowired
-	private SysDepartRoleUserMapper departRoleUserMapper;
-	@Autowired
-	private SysDepartRoleMapper sysDepartRoleMapper;
-	@Override
-	public Map<String, Object> queryRoleCode(String userId) {
-		return userMapper.queryRoleCode(userId);
-	}
-	@Override
-	public List<SysUserVo> getUserListByCompany(String companyId) {
-		return userMapper.getUserListByCompany(companyId);
-	}
-
-	@Override
-	public List<SysUser> getUserListByRoleId(String roleId) {
-		Page<SysUser> page = new Page<>();
-		page.setSize(10000);
-		IPage<SysUser> userPage = this.getUserByRoleId(page, roleId, null);
-		return userPage.getRecords();
-	}
-
-	@Override
-	public List<SysUserVo> getAllSales() {
-		return userMapper.getAllSale();
-	}
-
-	@Override
-	public List<SysUserVo> getAllSalesByCompanyId(String companyId) {
-		return userMapper.getAllSalesByCompanyId(companyId);
-
-	}
+    @Autowired
+    private SysUserMapper userMapper;
+    @Autowired
+    private SysPermissionMapper sysPermissionMapper;
+    @Autowired
+    private SysUserRoleMapper sysUserRoleMapper;
+    @Autowired
+    private SysUserDepartMapper sysUserDepartMapper;
+    @Autowired
+    private ISysBaseApi sysBaseAPI;
+    @Autowired
+    private SysDepartMapper sysDepartMapper;
+    @Autowired
+    private SysRoleMapper sysRoleMapper;
+    @Autowired
+    private SysDepartRoleUserMapper departRoleUserMapper;
+    @Autowired
+    private SysDepartRoleMapper sysDepartRoleMapper;
+
+    @Override
+    public Map<String, Object> queryRoleCode(String userId) {
+        return userMapper.queryRoleCode(userId);
+    }
+
+    @Override
+    public List<SysUserVo> getUserListByCompany(String companyId, String userName) {
+        return userMapper.getUserListByCompany(companyId, userName);
+    }
+
+    @Override
+    public List<SysUser> getUserListByRoleId(String roleId) {
+        Page<SysUser> page = new Page<>();
+        page.setSize(10000);
+        IPage<SysUser> userPage = this.getUserByRoleId(page, roleId, null);
+        return userPage.getRecords();
+    }
+
+    @Override
+    public List<SysUserVo> getAllSales() {
+        return userMapper.getAllSale();
+    }
+
+    @Override
+    public List<SysUserVo> getAllSalesByCompanyId(String companyId) {
+        return userMapper.getAllSalesByCompanyId(companyId);
+
+    }
+
     @Override
     @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true)
     public Result<?> resetPassword(String username, String oldpassword, String newpassword, String confirmpassword) {
@@ -121,323 +124,325 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     @Override
-    @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true)
-	@Transactional(rollbackFor = Exception.class)
-	public boolean deleteUser(String userId) {
-		//1.删除用户
-		this.removeById(userId);
-		return false;
-	}
-
-	@Override
-    @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true)
-	@Transactional(rollbackFor = Exception.class)
-	public boolean deleteBatchUsers(String userIds) {
-		//1.删除用户
-		this.removeByIds(Arrays.asList(userIds.split(",")));
-		return false;
-	}
-
-	@Override
-	public SysUser getUserByName(String username) {
-		return userMapper.getUserByName(username);
-	}
-
-
-	@Override
-	@Transactional
-	public void addUserWithRole(SysUser user, String roles) {
-		this.save(user);
-		if(oConvertUtils.isNotEmpty(roles)) {
-			String[] arr = roles.split(",");
-			for (String roleId : arr) {
-				SysUserRole userRole = new SysUserRole(user.getId(), roleId);
-				sysUserRoleMapper.insert(userRole);
-			}
-		}
-	}
-
-	@Override
-	@CacheEvict(value= {CacheConstant.SYS_USERS_CACHE}, allEntries=true)
-	@Transactional
-	public void editUserWithRole(SysUser user, String roles) {
-		this.updateById(user);
-		//先删后加
-		sysUserRoleMapper.delete(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, user.getId()));
-		if(oConvertUtils.isNotEmpty(roles)) {
-			String[] arr = roles.split(",");
-			for (String roleId : arr) {
-				SysUserRole userRole = new SysUserRole(user.getId(), roleId);
-				sysUserRoleMapper.insert(userRole);
-			}
-		}
-	}
-
-
-	@Override
-	public List<String> getRole(String username) {
-		return sysUserRoleMapper.getRoleByUserName(username);
-	}
-
-	/**
-	 * 通过用户名获取用户角色集合
-	 * @param username 用户名
+    @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true)
+    @Transactional(rollbackFor = Exception.class)
+    public boolean deleteUser(String userId) {
+        //1.删除用户
+        this.removeById(userId);
+        return false;
+    }
+
+    @Override
+    @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true)
+    @Transactional(rollbackFor = Exception.class)
+    public boolean deleteBatchUsers(String userIds) {
+        //1.删除用户
+        this.removeByIds(Arrays.asList(userIds.split(",")));
+        return false;
+    }
+
+    @Override
+    public SysUser getUserByName(String username) {
+        return userMapper.getUserByName(username);
+    }
+
+
+    @Override
+    @Transactional
+    public void addUserWithRole(SysUser user, String roles) {
+        this.save(user);
+        if (oConvertUtils.isNotEmpty(roles)) {
+            String[] arr = roles.split(",");
+            for (String roleId : arr) {
+                SysUserRole userRole = new SysUserRole(user.getId(), roleId);
+                sysUserRoleMapper.insert(userRole);
+            }
+        }
+    }
+
+    @Override
+    @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true)
+    @Transactional
+    public void editUserWithRole(SysUser user, String roles) {
+        this.updateById(user);
+        //先删后加
+        sysUserRoleMapper.delete(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, user.getId()));
+        if (oConvertUtils.isNotEmpty(roles)) {
+            String[] arr = roles.split(",");
+            for (String roleId : arr) {
+                SysUserRole userRole = new SysUserRole(user.getId(), roleId);
+                sysUserRoleMapper.insert(userRole);
+            }
+        }
+    }
+
+
+    @Override
+    public List<String> getRole(String username) {
+        return sysUserRoleMapper.getRoleByUserName(username);
+    }
+
+    /**
+     * 通过用户名获取用户角色集合
+     *
+     * @param username 用户名
      * @return 角色集合
-	 */
-	@Override
-	public Set<String> getUserRolesSet(String username) {
-		// 查询用户拥有的角色集合
-		List<String> roles = sysUserRoleMapper.getRoleByUserName(username);
-		log.info("-------通过数据库读取用户拥有的角色Rules------username: " + username + ",Roles size: " + (roles == null ? 0 : roles.size()));
-		return new HashSet<>(roles);
-	}
-
-	/**
-	 * 通过用户名获取用户权限集合
-	 *
-	 * @param username 用户名
-	 * @return 权限集合
-	 */
-	@Override
-	public Set<String> getUserPermissionsSet(String username) {
-		Set<String> permissionSet = new HashSet<>();
-		List<SysPermission> permissionList = sysPermissionMapper.queryByUser(username);
-		for (SysPermission po : permissionList) {
+     */
+    @Override
+    public Set<String> getUserRolesSet(String username) {
+        // 查询用户拥有的角色集合
+        List<String> roles = sysUserRoleMapper.getRoleByUserName(username);
+        log.info("-------通过数据库读取用户拥有的角色Rules------username: " + username + ",Roles size: " + (roles == null ? 0 : roles.size()));
+        return new HashSet<>(roles);
+    }
+
+    /**
+     * 通过用户名获取用户权限集合
+     *
+     * @param username 用户名
+     * @return 权限集合
+     */
+    @Override
+    public Set<String> getUserPermissionsSet(String username) {
+        Set<String> permissionSet = new HashSet<>();
+        List<SysPermission> permissionList = sysPermissionMapper.queryByUser(username);
+        for (SysPermission po : permissionList) {
 //			// TODO URL规则有问题?
 //			if (oConvertUtils.isNotEmpty(po.getUrl())) {
 //				permissionSet.add(po.getUrl());
 //			}
-			if (oConvertUtils.isNotEmpty(po.getPerms())) {
-				permissionSet.add(po.getPerms());
-			}
-		}
-		log.info("-------通过数据库读取用户拥有的权限Perms------username: "+ username+",Perms size: "+ (permissionSet==null?0:permissionSet.size()) );
-		return permissionSet;
-	}
-
-	@Override
-	public SysUserCacheInfo getCacheUser(String username) {
-		SysUserCacheInfo info = new SysUserCacheInfo();
-		info.setOneDepart(true);
+            if (oConvertUtils.isNotEmpty(po.getPerms())) {
+                permissionSet.add(po.getPerms());
+            }
+        }
+        log.info("-------通过数据库读取用户拥有的权限Perms------username: " + username + ",Perms size: " + (permissionSet == null ? 0 : permissionSet.size()));
+        return permissionSet;
+    }
+
+    @Override
+    public SysUserCacheInfo getCacheUser(String username) {
+        SysUserCacheInfo info = new SysUserCacheInfo();
+        info.setOneDepart(true);
 //		SysUser user = userMapper.getUserByName(username);
 //		info.setSysUserCode(user.getUsername());
 //		info.setSysUserName(user.getRealname());
 
 
-		LoginUser user = sysBaseAPI.getUserByName(username);
-		if(user!=null) {
-			info.setSysUserCode(user.getUsername());
-			info.setSysUserName(user.getRealname());
-			info.setSysOrgCode(user.getOrgCode());
-		}
-
-		//多部门支持in查询
-		List<SysDepart> list = sysDepartMapper.queryUserDeparts(user.getId());
-		List<String> sysMultiOrgCode = new ArrayList<String>();
-		if(list==null || list.size()==0) {
-			//当前用户无部门
-			//sysMultiOrgCode.add("0");
-		}else if(list.size()==1) {
-			sysMultiOrgCode.add(list.get(0).getOrgCode());
-		}else {
-			info.setOneDepart(false);
-			for (SysDepart dpt : list) {
-				sysMultiOrgCode.add(dpt.getOrgCode());
-			}
-		}
-		info.setSysMultiOrgCode(sysMultiOrgCode);
-
-		return info;
-	}
-
-	// 根据部门Id查询
-	@Override
-	public IPage<SysUser> getUserByDepId(Page<SysUser> page, String departId,String username) {
-		return userMapper.getUserByDepId(page, departId,username);
-	}
-
-	@Override
-	public IPage<SysUser> getUserByDepIds(Page<SysUser> page, List<String> departIds, String username) {
-		return userMapper.getUserByDepIds(page, departIds,username);
-	}
-
-	@Override
-	public List<SysUserVo> getAllUser() {
-		return userMapper.getAllUser();
-	}
-
-	@Override
-	public Map<String, String> getDepNamesByUserIds(List<String> userIds) {
-		List<SysUserDepVo> list = this.baseMapper.getDepNamesByUserIds(userIds);
-		Map<String, String> res = new HashMap<String, String>();
-		list.forEach(item -> {
-					if (res.get(item.getUserId()) == null) {
-						res.put(item.getUserId(), item.getDepartName());
-					} else {
-						res.put(item.getUserId(), res.get(item.getUserId()) + "," + item.getDepartName());
-					}
-				}
-		);
-		return res;
-	}
-
-	@Override
-	public IPage<SysUser> getUserByDepartIdAndQueryWrapper(Page<SysUser> page, String departId, QueryWrapper<SysUser> queryWrapper) {
-		LambdaQueryWrapper<SysUser> lambdaQueryWrapper = queryWrapper.lambda();
-
-		lambdaQueryWrapper.eq(SysUser::getDelFlag, "0");
+        LoginUser user = sysBaseAPI.getUserByName(username);
+        if (user != null) {
+            info.setSysUserCode(user.getUsername());
+            info.setSysUserName(user.getRealname());
+            info.setSysOrgCode(user.getOrgCode());
+        }
+
+        //多部门支持in查询
+        List<SysDepart> list = sysDepartMapper.queryUserDeparts(user.getId());
+        List<String> sysMultiOrgCode = new ArrayList<String>();
+        if (list == null || list.size() == 0) {
+            //当前用户无部门
+            //sysMultiOrgCode.add("0");
+        } else if (list.size() == 1) {
+            sysMultiOrgCode.add(list.get(0).getOrgCode());
+        } else {
+            info.setOneDepart(false);
+            for (SysDepart dpt : list) {
+                sysMultiOrgCode.add(dpt.getOrgCode());
+            }
+        }
+        info.setSysMultiOrgCode(sysMultiOrgCode);
+
+        return info;
+    }
+
+    // 根据部门Id查询
+    @Override
+    public IPage<SysUser> getUserByDepId(Page<SysUser> page, String departId, String username) {
+        return userMapper.getUserByDepId(page, departId, username);
+    }
+
+    @Override
+    public IPage<SysUser> getUserByDepIds(Page<SysUser> page, List<String> departIds, String username) {
+        return userMapper.getUserByDepIds(page, departIds, username);
+    }
+
+    @Override
+    public List<SysUserVo> getAllUser(String userName) {
+        return userMapper.getAllUser(userName);
+    }
+
+    @Override
+    public Map<String, String> getDepNamesByUserIds(List<String> userIds) {
+        List<SysUserDepVo> list = this.baseMapper.getDepNamesByUserIds(userIds);
+        Map<String, String> res = new HashMap<String, String>();
+        list.forEach(item -> {
+                    if (res.get(item.getUserId()) == null) {
+                        res.put(item.getUserId(), item.getDepartName());
+                    } else {
+                        res.put(item.getUserId(), res.get(item.getUserId()) + "," + item.getDepartName());
+                    }
+                }
+        );
+        return res;
+    }
+
+    @Override
+    public IPage<SysUser> getUserByDepartIdAndQueryWrapper(Page<SysUser> page, String departId, QueryWrapper<SysUser> queryWrapper) {
+        LambdaQueryWrapper<SysUser> lambdaQueryWrapper = queryWrapper.lambda();
+
+        lambdaQueryWrapper.eq(SysUser::getDelFlag, "0");
         lambdaQueryWrapper.inSql(SysUser::getId, "SELECT user_id FROM sys_user_depart WHERE dep_id = '" + departId + "'");
 
         return userMapper.selectPage(page, lambdaQueryWrapper);
-	}
+    }
 
-	@Override
-	public IPage<SysUserSysDepartModel> queryUserByOrgCode(String orgCode, SysUser userParams, IPage page) {
-		List<SysUserSysDepartModel> list = baseMapper.getUserByOrgCode(page, orgCode, userParams);
-		Integer total = baseMapper.getUserByOrgCodeTotal(orgCode, userParams);
+    @Override
+    public IPage<SysUserSysDepartModel> queryUserByOrgCode(String orgCode, SysUser userParams, IPage page) {
+        List<SysUserSysDepartModel> list = baseMapper.getUserByOrgCode(page, orgCode, userParams);
+        Integer total = baseMapper.getUserByOrgCodeTotal(orgCode, userParams);
 
-		IPage<SysUserSysDepartModel> result = new Page<>(page.getCurrent(), page.getSize(), total);
-		result.setRecords(list);
+        IPage<SysUserSysDepartModel> result = new Page<>(page.getCurrent(), page.getSize(), total);
+        result.setRecords(list);
 
-		return result;
-	}
+        return result;
+    }
 
-	// 根据角色Id查询
-	@Override
-	public IPage<SysUser> getUserByRoleId(Page<SysUser> page, String roleId, String username) {
-		return userMapper.getUserByRoleId(page,roleId,username);
-	}
+    // 根据角色Id查询
+    @Override
+    public IPage<SysUser> getUserByRoleId(Page<SysUser> page, String roleId, String username) {
+        return userMapper.getUserByRoleId(page, roleId, username);
+    }
 
 
-	@Override
-	@CacheEvict(value= {CacheConstant.SYS_USERS_CACHE}, key="#username")
-	public void updateUserDepart(String username,String orgCode) {
-		baseMapper.updateUserDepart(username, orgCode);
-	}
+    @Override
+    @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, key = "#username")
+    public void updateUserDepart(String username, String orgCode) {
+        baseMapper.updateUserDepart(username, orgCode);
+    }
 
 
-	@Override
-	public SysUser getUserByPhone(String phone) {
-		return userMapper.getUserByPhone(phone);
-	}
+    @Override
+    public SysUser getUserByPhone(String phone) {
+        return userMapper.getUserByPhone(phone);
+    }
 
 
-	@Override
-	public SysUser getUserByEmail(String email) {
-		return userMapper.getUserByEmail(email);
-	}
+    @Override
+    public SysUser getUserByEmail(String email) {
+        return userMapper.getUserByEmail(email);
+    }
 
-	@Override
-	@Transactional
-	public void addUserWithDepart(SysUser user, String selectedParts) {
+    @Override
+    @Transactional
+    public void addUserWithDepart(SysUser user, String selectedParts) {
 //		this.save(user);  //保存角色的时候已经添加过一次了
-		if(oConvertUtils.isNotEmpty(selectedParts)) {
-			String[] arr = selectedParts.split(",");
-			for (String deaprtId : arr) {
-				SysUserDepart userDeaprt = new SysUserDepart(user.getId(), deaprtId);
-				sysUserDepartMapper.insert(userDeaprt);
-			}
-		}
-	}
-
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	@CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true)
-	public void editUserWithDepart(SysUser user, String departs) {
-		this.updateById(user);  //更新角色的时候已经更新了一次了,可以再跟新一次
-		String[] arr = {};
-		if(oConvertUtils.isNotEmpty(departs)){
-			arr = departs.split(",");
-		}
-		//查询已关联部门
-		List<SysUserDepart> userDepartList = sysUserDepartMapper.selectList(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId()));
-		if(userDepartList != null && userDepartList.size()>0){
-			for(SysUserDepart depart : userDepartList ){
-				//修改已关联部门删除部门用户角色关系
-				if(!Arrays.asList(arr).contains(depart.getDepId())){
-					List<SysDepartRole> sysDepartRoleList = sysDepartRoleMapper.selectList(
-							new QueryWrapper<SysDepartRole>().lambda().eq(SysDepartRole::getDepartId,depart.getDepId()));
-					List<String> roleIds = sysDepartRoleList.stream().map(SysDepartRole::getId).collect(Collectors.toList());
-					if(roleIds != null && roleIds.size()>0){
-						departRoleUserMapper.delete(new QueryWrapper<SysDepartRoleUser>().lambda().eq(SysDepartRoleUser::getUserId, user.getId())
-								.in(SysDepartRoleUser::getDroleId,roleIds));
-					}
-				}
-			}
-		}
-		//先删后加
-		sysUserDepartMapper.delete(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId()));
-		if(oConvertUtils.isNotEmpty(departs)) {
-			for (String departId : arr) {
-				SysUserDepart userDepart = new SysUserDepart(user.getId(), departId);
-				sysUserDepartMapper.insert(userDepart);
-			}
-		}
-	}
-
-
-	/**
-	   * 校验用户是否有效
-	 * @param sysUser
-	 * @return
-	 */
-	@Override
-	public Result<?> checkUserIsEffective(SysUser sysUser) {
-		Result<?> result = new Result<Object>();
-		//情况1:根据用户信息查询,该用户不存在
-		if (sysUser == null) {
-			result.error500("该用户不存在,请注册");
-			sysBaseAPI.addLog("用户登录失败,用户不存在!", CommonConstant.LOG_TYPE_1, null);
-			return result;
-		}
-		//情况2:根据用户信息查询,该用户已注销
-		if (CommonConstant.DEL_FLAG_1.toString().equals(sysUser.getDelFlag())) {
-			sysBaseAPI.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已注销!", CommonConstant.LOG_TYPE_1, null);
-			result.error500("该用户已注销");
-			return result;
-		}
-		//情况3:根据用户信息查询,该用户已冻结
-		if (CommonConstant.USER_FREEZE.equals(sysUser.getStatus())) {
-			sysBaseAPI.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已冻结!", CommonConstant.LOG_TYPE_1, null);
-			result.error500("该用户已冻结");
-			return result;
-		}
-		return result;
-	}
-
-	@Override
-	public List<SysUser> queryLogicDeleted() {
-		return this.queryLogicDeleted(null);
-	}
-
-	@Override
-	public List<SysUser> queryLogicDeleted(LambdaQueryWrapper<SysUser> wrapper) {
-		if (wrapper == null) {
-			wrapper = new LambdaQueryWrapper<>();
-		}
-		wrapper.eq(SysUser::getDelFlag, "1");
-		return userMapper.selectLogicDeleted(wrapper);
-	}
-
-	@Override
-	public boolean revertLogicDeleted(List<String> userIds, SysUser updateEntity) {
-		String ids = String.format("'%s'", String.join("','", userIds));
-		return userMapper.revertLogicDeleted(ids, updateEntity) > 0;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public boolean removeLogicDeleted(List<String> userIds) {
-		String ids = String.format("'%s'", String.join("','", userIds));
-		// 1. 删除用户
-		int line = userMapper.deleteLogicDeleted(ids);
-		// 2. 删除用户部门关系
-		line += sysUserDepartMapper.delete(new LambdaQueryWrapper<SysUserDepart>().in(SysUserDepart::getUserId, userIds));
-		//3. 删除用户角色关系
-		line += sysUserRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getUserId, userIds));
-		return line != 0;
-	}
+        if (oConvertUtils.isNotEmpty(selectedParts)) {
+            String[] arr = selectedParts.split(",");
+            for (String deaprtId : arr) {
+                SysUserDepart userDeaprt = new SysUserDepart(user.getId(), deaprtId);
+                sysUserDepartMapper.insert(userDeaprt);
+            }
+        }
+    }
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true)
+    public void editUserWithDepart(SysUser user, String departs) {
+        this.updateById(user);  //更新角色的时候已经更新了一次了,可以再跟新一次
+        String[] arr = {};
+        if (oConvertUtils.isNotEmpty(departs)) {
+            arr = departs.split(",");
+        }
+        //查询已关联部门
+        List<SysUserDepart> userDepartList = sysUserDepartMapper.selectList(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId()));
+        if (userDepartList != null && userDepartList.size() > 0) {
+            for (SysUserDepart depart : userDepartList) {
+                //修改已关联部门删除部门用户角色关系
+                if (!Arrays.asList(arr).contains(depart.getDepId())) {
+                    List<SysDepartRole> sysDepartRoleList = sysDepartRoleMapper.selectList(
+                            new QueryWrapper<SysDepartRole>().lambda().eq(SysDepartRole::getDepartId, depart.getDepId()));
+                    List<String> roleIds = sysDepartRoleList.stream().map(SysDepartRole::getId).collect(Collectors.toList());
+                    if (roleIds != null && roleIds.size() > 0) {
+                        departRoleUserMapper.delete(new QueryWrapper<SysDepartRoleUser>().lambda().eq(SysDepartRoleUser::getUserId, user.getId())
+                                .in(SysDepartRoleUser::getDroleId, roleIds));
+                    }
+                }
+            }
+        }
+        //先删后加
+        sysUserDepartMapper.delete(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId()));
+        if (oConvertUtils.isNotEmpty(departs)) {
+            for (String departId : arr) {
+                SysUserDepart userDepart = new SysUserDepart(user.getId(), departId);
+                sysUserDepartMapper.insert(userDepart);
+            }
+        }
+    }
+
+
+    /**
+     * 校验用户是否有效
+     *
+     * @param sysUser
+     * @return
+     */
+    @Override
+    public Result<?> checkUserIsEffective(SysUser sysUser) {
+        Result<?> result = new Result<Object>();
+        //情况1:根据用户信息查询,该用户不存在
+        if (sysUser == null) {
+            result.error500("该用户不存在,请注册");
+            sysBaseAPI.addLog("用户登录失败,用户不存在!", CommonConstant.LOG_TYPE_1, null);
+            return result;
+        }
+        //情况2:根据用户信息查询,该用户已注销
+        if (CommonConstant.DEL_FLAG_1.toString().equals(sysUser.getDelFlag())) {
+            sysBaseAPI.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已注销!", CommonConstant.LOG_TYPE_1, null);
+            result.error500("该用户已注销");
+            return result;
+        }
+        //情况3:根据用户信息查询,该用户已冻结
+        if (CommonConstant.USER_FREEZE.equals(sysUser.getStatus())) {
+            sysBaseAPI.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已冻结!", CommonConstant.LOG_TYPE_1, null);
+            result.error500("该用户已冻结");
+            return result;
+        }
+        return result;
+    }
+
+    @Override
+    public List<SysUser> queryLogicDeleted() {
+        return this.queryLogicDeleted(null);
+    }
+
+    @Override
+    public List<SysUser> queryLogicDeleted(LambdaQueryWrapper<SysUser> wrapper) {
+        if (wrapper == null) {
+            wrapper = new LambdaQueryWrapper<>();
+        }
+        wrapper.eq(SysUser::getDelFlag, "1");
+        return userMapper.selectLogicDeleted(wrapper);
+    }
+
+    @Override
+    public boolean revertLogicDeleted(List<String> userIds, SysUser updateEntity) {
+        String ids = String.format("'%s'", String.join("','", userIds));
+        return userMapper.revertLogicDeleted(ids, updateEntity) > 0;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean removeLogicDeleted(List<String> userIds) {
+        String ids = String.format("'%s'", String.join("','", userIds));
+        // 1. 删除用户
+        int line = userMapper.deleteLogicDeleted(ids);
+        // 2. 删除用户部门关系
+        line += sysUserDepartMapper.delete(new LambdaQueryWrapper<SysUserDepart>().in(SysUserDepart::getUserId, userIds));
+        //3. 删除用户角色关系
+        line += sysUserRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getUserId, userIds));
+        return line != 0;
+    }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -447,24 +452,24 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return true;
     }
 
-	@Override
-	public void saveThirdUser(SysUser sysUser) {
-		//保存用户
-		String userid = UUIDGenerator.generate();
-		sysUser.setId(userid);
-		baseMapper.insert(sysUser);
-		//获取第三方角色
-		SysRole sysRole = sysRoleMapper.selectOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleCode, "third_role"));
-		//保存用户角色
-		SysUserRole userRole = new SysUserRole();
-		userRole.setRoleId(sysRole.getId());
-		userRole.setUserId(userid);
-		sysUserRoleMapper.insert(userRole);
-	}
-
-	@Override
-	public List<SysUser> queryByDepIds(List<String> departIds, String username) {
-		return userMapper.queryByDepIds(departIds,username);
-	}
+    @Override
+    public void saveThirdUser(SysUser sysUser) {
+        //保存用户
+        String userid = UUIDGenerator.generate();
+        sysUser.setId(userid);
+        baseMapper.insert(sysUser);
+        //获取第三方角色
+        SysRole sysRole = sysRoleMapper.selectOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleCode, "third_role"));
+        //保存用户角色
+        SysUserRole userRole = new SysUserRole();
+        userRole.setRoleId(sysRole.getId());
+        userRole.setUserId(userid);
+        sysUserRoleMapper.insert(userRole);
+    }
+
+    @Override
+    public List<SysUser> queryByDepIds(List<String> departIds, String username) {
+        return userMapper.queryByDepIds(departIds, username);
+    }
 
 }

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

@@ -10,28 +10,28 @@ server:
     mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
 
 management:
- endpoints:
-  web:
-   exposure:
-    include: metrics,httptrace
+  endpoints:
+    web:
+      exposure:
+        include: metrics,httptrace
 
 spring:
   servlet:
-     multipart:
-        max-file-size: 10MB
-        max-request-size: 10MB
+    multipart:
+      max-file-size: 10MB
+      max-request-size: 10MB
   mail:
-      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
+    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
@@ -132,9 +132,9 @@ spring:
         connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
       datasource:
         master:
-          url: jdbc:mysql://39.106.184.70:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
+          url: jdbc:mysql://139.186.31.213:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
           username: hcst
-          password: test@20190531
+          password: hcst@2020
           driver-class-name: com.mysql.jdbc.Driver
           # 多数据源配置
           #multi-datasource1:

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

@@ -94,9 +94,9 @@ spring:
         connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
       datasource:
         master:
-          url: jdbc:mysql://139.186.27.96/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
+          url: jdbc:mysql://139.186.31.213:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
           username: hcst
-          password: test@20190531
+          password: hcst@2020
           driver-class-name: com.mysql.jdbc.Driver
   #redis 配置
   redis:

+ 0 - 17
jeecg-boot-module-system/src/main/resources/drools/rule.drl

@@ -1,17 +0,0 @@
-import org.jeecg.modules.ctop.service.impl.RuleEngineServiceImpl
-import org.slf4j.LoggerFactory
-import org.slf4j.Logger
-import org.jeecg.modules.ctop.vo.QueryParam;
-import org.jeecg.modules.ctop.vo.RuleResult;
-dialect  "java"
-rule "paramcheck1"
-    salience 99
-    when queryParam : QueryParam(paramId != null && paramSign.equals("+"))
-        resultParam : RuleResult()
-    then
-        final Logger LOGGER = LoggerFactory.getLogger("param-check-one 规则引擎") ;
-        LOGGER.info("参数:getParamId="+queryParam.getParamId()+";getParamSign="+queryParam.getParamSign());
-        RuleEngineServiceImpl ruleEngineService = new RuleEngineServiceImpl() ;
-        ruleEngineService.executeAddRule(queryParam);
-        resultParam.setPostCodeResult(true);
-end

+ 0 - 17
jeecg-boot-module-system/src/main/resources/drools/rule2.drl

@@ -1,17 +0,0 @@
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
-import org.jeecg.modules.ctop.service.impl.RuleEngineServiceImpl
-import org.jeecg.modules.ctop.vo.QueryParam;
-import org.jeecg.modules.ctop.vo.RuleResult;
-dialect  "java"
-rule "paramcheck2"
-    salience 88
-    when queryParam : QueryParam(paramId != null && paramSign.equals("-"))
-        resultParam : RuleResult()
-    then
-        final Logger LOGGER = LoggerFactory.getLogger("param-check-two 规则引擎") ;
-        LOGGER.info("参数:getParamId="+queryParam.getParamId()+";getParamSign="+queryParam.getParamSign());
-        RuleEngineServiceImpl ruleEngineService = new RuleEngineServiceImpl() ;
-        ruleEngineService.executeRemoveRule(queryParam);
-        resultParam.setPostCodeResult(true);
-end

+ 3 - 3
jeecg-boot-module-system/src/main/resources/jeecg/jeecg_database.properties

@@ -1,8 +1,8 @@
 #mysql
 diver_name=com.mysql.jdbc.Driver
-url=jdbc:mysql://39.106.184.70:3306/jeecg-boot?useUnicode=true&characterEncoding=UTF-8
-username=hcst
-password=test@20190531
+url=jdbc:mysql://127.0.0.1:3306/jeecg-boot?useUnicode=true&characterEncoding=UTF-8
+username=root
+password=123456
 database_name=jeecg-boot
 #oracle
 #diver_name=oracle.jdbc.driver.OracleDriver

+ 107 - 78
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -9,15 +9,18 @@ import cn.com.ctop.common.module.entity.UReportSubscriber;
 import cn.com.ctop.common.module.entity.UserAllocation;
 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.batch.service.IKuaiShouDailyReportTaskService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouHistoryReportTaskService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
 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.oa.modules.service.IWechatCheckinDataService;
+import cn.com.ctop.oa.modules.service.IWechatDepartmentService;
+import cn.com.ctop.oa.modules.service.IWechatUserListService;
+import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.log.XxlJobLogger;
-import lombok.Data;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.util.DateUtils;
 import org.junit.Test;
@@ -45,32 +48,67 @@ public class SampleTest {
     @Autowired
     private IKuaishouReportDailyAgentService kuaishouReportDailyAgentService;
     @Autowired
-    private IKuaiShouDailyAgentService kuaiShouDailyAgentService;
-    @Autowired
     private IReportService reportService;
+    @Autowired
+    private IUserAllocationService userAllocationService;
+    @Autowired
+    private IByteDanceAdvertiserDataService advertiserDataService;
+    @Autowired
+    private IKuaiShouHistoryReportTaskService kuaiShouHistoryReportTaskService;
+    @Autowired
+    private IKuaiShouDailyReportTaskService dailyReportTaskService;
+
+    @Autowired
+    private IWechatDepartmentService wechatDepartment;
+    @Autowired
+    private IKuaishouInterfaceService kuaishouInterfaceService;
+    @Autowired
+    private IWechatUserListService wechatUserInfoService;
+    @Autowired
+    private IWechatCheckinDataService wechatCheckinDataService;
+
+
+    @Test
+    public void getDepartment() {
+        wechatCheckinDataService.getCheckinData();
+        //  wechatUserInfoService.getUserList();
+        // wechatDepartment.getDepartment();
+        // kuaishouInterfaceService.getSuZaoList("a34853c230e1b949eddbe569023dbc40", 7022550L, 1, "2020-09-15", "2020-09-16");
+
+    }
+
 
     @Test
     public void loadBytedanceCreativeData() {
-        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);
-        }
+        QueryWrapper<CtopOauthToken> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("media_id", 2);
+        List<CtopOauthToken> list = oauthTokenService.list(queryWrapper);
+       // for (CtopOauthToken token : list) {
+            kuaiShouHistoryReportTaskService.createTask(1872430L, "9cd4d43ea697ad9f2aa91fc0f4b921e5", "2020-03-15", "2020-09-15", "history");
+
+       // }
+
     }
 
+    @Test
+    public void getTaskList() {
+        kuaiShouHistoryReportTaskService.getTaskList();
+    }
+
+
     @Autowired
     private IBindAccountLoginService bindAccountLoginService;
     @Autowired
     private IKuaishouWebInterfaceService kuaishouWebInterfaceService;
+
     @Test
-    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){
+    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);
@@ -79,23 +117,24 @@ public class SampleTest {
             }
         }
     }
+
     static ExecutorService executorService = null;
-    //线程计数器
+    //线程计数器/bytedance/bytedanceMaterialReport
     static CountDownLatch countDownLatch = null;
 
     @Test
-    public void deleteKuaishouComment(){
+    public void deleteKuaishouComment() {
         Long start = System.currentTimeMillis();
-        List<BindAccountLogin>loginList = bindAccountLoginService.getListByParams(CtopAdConstant.PLATFORM_TYPE_KUAISHOU_PY,1);
+        List<BindAccountLogin> loginList = bindAccountLoginService.getListByParams(CtopAdConstant.PLATFORM_TYPE_KUAISHOU_PY, 1);
         if (loginList != null && !loginList.isEmpty()) {
             executorService = Executors.newFixedThreadPool(5);
             countDownLatch = new CountDownLatch(loginList.size());
-            loginList.forEach(login -> executorService.submit(()->{
+            loginList.forEach(login -> executorService.submit(() -> {
                 try {
-                    kuaishouWebInterfaceService.deleteAllComment(new HashMap<>(),login);
-                }catch (Exception e){
-                    log.error(e.getMessage(),e);
-                }finally {
+                    kuaishouWebInterfaceService.deleteAllComment(new HashMap<>(), login);
+                } catch (Exception e) {
+                    log.error(e.getMessage(), e);
+                } finally {
                     countDownLatch.countDown();
                 }
             }));
@@ -105,40 +144,40 @@ public class SampleTest {
                 e.printStackTrace();
             }
             Long end = System.currentTimeMillis();
-            log.info("快手删评论所用时长:{}毫秒",end-start);
+            log.info("快手删评论所用时长:{}毫秒", end - start);
         }
     }
+
     @Autowired
     private IUserAllocationService allocationService;
+
     @Test
     public void testLoadBytedanceData() {
-        List<UserAllocation>allocations = allocationService.getByParams(435L,null,0);
-        for (UserAllocation allocation:allocations) {
-            for(int i=2;i<10;i++){
+        List<UserAllocation> allocations = allocationService.getByParams(435L, null, 0);
+        for (UserAllocation allocation : allocations) {
+            for (int i = 2; i < 10; i++) {
                 CtopOauthToken token = oauthTokenService.getTokenByAccountId(allocation.getAccountId());
-                Date getDate = DateUtils.addDay(new Date(),-i);
-                reportService.getAdvertiserReport(token,getDate,getDate,CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
+                Date getDate = DateUtils.addDay(new Date(), -i);
+                reportService.getAdvertiserReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
             }
         }
     }
 
     @Test
     public void loadKuaishouAgentData() {
-//        for(int i=0;i<20;i++){
-//            String currentDate = DateUtils.formatDate(DateUtils.addDay(new Date(),-i));
-//            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();
+        for (int i = 0; i < 20; i++) {
+            String currentDate = DateUtils.formatDate(DateUtils.addDay(new Date(), -i));
+            kuaishouReportDailyAgentService.getReport(currentDate, DateUtils.getNowDate("yyyy-MM-dd"));
         }
-//        String currentDate = D  ateUtils.formatDate(DateUtils.addDay(new Date(),-1));
-//        kuaishouReportDailyAgentService.getReport(currentDate,DateUtils.getNowDate("yyyy-MM-dd"));
+//
+//        try {
+//            for (int i = 1; i < 30; i++) {
+//                kuaishouReportDailyAgentService.getAccount(i);
+//            }
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
     }
 
     @Autowired
@@ -146,31 +185,20 @@ public class SampleTest {
 
     @Autowired
     private ICtopCheckTaskListService checkTaskListService;
+
     @Test
-    public void checkDataStateJobTest(){
+    public void checkDataStateJobTest() {
         //查询需要检查的任务列表
-        List<CtopCheckTaskList> ctopCheckTaskList= checkTaskListService.queryExecuteList("checkDataStateJob");
-        if(ctopCheckTaskList!=null){
-            ctopCheckTaskList.forEach(it-> groovyScriptExecutor.execute(it));
+        List<CtopCheckTaskList> ctopCheckTaskList = checkTaskListService.queryExecuteList("checkDataStateJob");
+        if (ctopCheckTaskList != null) {
+            ctopCheckTaskList.forEach(it -> groovyScriptExecutor.execute(it));
         }
     }
 
-    @Autowired
-    private ICtopOauthTokenService tokenService;
     @Test
     public void loadAccountData() {
-        //查询需要拉取数据的账户token
-        List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
-
-        Date yesterday = DateUtils.parseDate(DateUtils.getAnotherDay("yy-MM-dd", DateUtils.getNowDate("yy-MM-dd"), -1), "yy-MM-dd");
-        tokens.forEach(it -> {
-            try {
-                reportService.getAdvertiserReport(it, yesterday, yesterday, CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY);
-            } catch (Exception e) {
-                XxlJobLogger.log("获取昨日头条小时数据异常:拉取数据异常");
-                XxlJobLogger.log(e.getMessage());
-            }
-        });
+        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
@@ -181,24 +209,25 @@ public class SampleTest {
     IUReportService uReportService;
 
     @Test
-    public void sendUReport(){
-        uReportService.uReportList().forEach(uReport->{
+    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="您订阅的日报在附件中请注意查收》》》";
+            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("/data/file/report"+ File.separator + "uReport"+File.separator+uReport.getString("name").replace("ureport.xml","")+"xlsx"));
-                }); }
+                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){
+        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();
             }
         }

+ 269 - 0
module-common/src/main/java/cn/com/ctop/common/module/controller/ProductController.java

@@ -0,0 +1,269 @@
+package cn.com.ctop.common.module.controller;
+
+import cn.com.ctop.common.module.annotation.AutoLog;
+import cn.com.ctop.common.module.entity.Product;
+import cn.com.ctop.common.module.service.IProductService;
+import cn.com.ctop.common.module.utils.Check;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 产品表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-09-08
+ */
+@Slf4j
+@Api(tags = "产品表")
+@RestController
+@RequestMapping("/ctop/product")
+public class ProductController {
+    @Autowired
+    private IProductService productService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param product
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "产品表-分页列表查询")
+    @ApiOperation(value = "产品表-分页列表查询", notes = "产品表-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<Product>> queryPageList(Product product,
+                                                @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                HttpServletRequest req) {
+        Result<IPage<Product>> result = new Result<>();
+        String productName = product.getProductName();
+        product.setProductName(null);
+        QueryWrapper<Product> queryWrapper = QueryGenerator.initQueryWrapper(product, req.getParameterMap());
+        if (!Check.isNull(productName)) {
+            queryWrapper.like("product_name", productName);
+        }
+        Page<Product> page = new Page<>(pageNo, pageSize);
+        IPage<Product> pageList = productService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+
+    @AutoLog(value = "产品表-分页列表查询")
+    @ApiOperation(value = "产品表-分页列表查询", notes = "产品表-分页列表查询")
+    @GetMapping(value = "/productList")
+    public Result<List<Product>> productList(Product product,
+                                             HttpServletRequest req) {
+        Result<List<Product>> result = new Result<>();
+        QueryWrapper<Product> queryWrapper = QueryGenerator.initQueryWrapper(product, req.getParameterMap());
+        List<Product> list = productService.list(queryWrapper);
+        result.setSuccess(true);
+        result.setResult(list);
+        return result;
+    }
+
+
+    /**
+     * 添加
+     *
+     * @param product
+     * @return
+     */
+    @AutoLog(value = "产品表-添加")
+    @ApiOperation(value = "产品表-添加", notes = "产品表-添加")
+    @PostMapping(value = "/add")
+    public Result<Product> add(@RequestBody Product product) {
+        Result<Product> result = new Result<>();
+        try {
+            productService.save(product);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param product
+     * @return
+     */
+    @AutoLog(value = "产品表-编辑")
+    @ApiOperation(value = "产品表-编辑", notes = "产品表-编辑")
+    @PutMapping(value = "/edit")
+    public Result<Product> edit(@RequestBody Product product) {
+        Result<Product> result = new Result<Product>();
+        Product productEntity = productService.getById(product.getId());
+        if (productEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = productService.updateById(product);
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "产品表-通过id删除")
+    @ApiOperation(value = "产品表-通过id删除", notes = "产品表-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            productService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "产品表-批量删除")
+    @ApiOperation(value = "产品表-批量删除", notes = "产品表-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<Product> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<Product> result = new Result<>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.productService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "产品表-通过id查询")
+    @ApiOperation(value = "产品表-通过id查询", notes = "产品表-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<Product> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<Product> result = new Result<>();
+        Product product = productService.getById(id);
+        if (product == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(product);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+        // Step.1 组装查询条件
+        QueryWrapper<Product> queryWrapper = null;
+        try {
+            String paramsStr = request.getParameter("paramsStr");
+            if (oConvertUtils.isNotEmpty(paramsStr)) {
+                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+                Product product = JSON.parseObject(deString, Product.class);
+                queryWrapper = QueryGenerator.initQueryWrapper(product, request.getParameterMap());
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<Product> pageList = productService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME, "产品表列表");
+        mv.addObject(NormalExcelConstants.CLASS, Product.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("产品表列表数据", "导出人:Jeecg", "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<Product> listProducts = ExcelImportUtil.importExcel(file.getInputStream(), Product.class, params);
+                productService.saveBatch(listProducts);
+                return Result.ok("文件导入成功!数据行数:" + listProducts.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.ok("文件导入失败!");
+    }
+
+}

+ 2 - 0
module-common/src/main/java/cn/com/ctop/common/module/entity/ActCustomForm.java

@@ -1,5 +1,6 @@
 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;
@@ -27,6 +28,7 @@ public class ActCustomForm {
 	private Long id;
 	private String name;
 	private String text;
+	@Dict(dicCode = "id",dictTable="sys_user",dicText="realname")
 	private String userId;
 	private Integer status;
 	private Date createTime;

+ 3 - 5
module-common/src/main/java/cn/com/ctop/common/module/entity/ActFormData.java

@@ -3,7 +3,6 @@ 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;
@@ -20,15 +19,14 @@ import java.util.Date;
 @TableName("ctop_act_form_data")
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@ApiModel(value="ctop_act_form_data对象", description="自定义表单存储数据")
 public class ActFormData {
 
 	@TableId(type = IdType.AUTO)
 	private Long id;
 	private Long formId;
-	private String processId;
-	private String key;
-	private String value;
+	private String userId;
+	private String bussinessId;
+	private String content;
 	private Integer status;
 	private Date createTime;
 	private Date updateTime;

+ 1 - 31
module-common/src/main/java/cn/com/ctop/common/module/entity/Advertiser.java

@@ -1,8 +1,6 @@
 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.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -42,32 +40,6 @@ public class Advertiser {
     @Excel(name = "广告主名称", width = 15)
     @ApiModelProperty(value = "广告主名称")
     private String name;
-    /**
-     * 行业ID
-     */
-    @Excel(name = "行业ID", width = 15)
-    @ApiModelProperty(value = "行业ID")
-    @Dict(dicCode = "id",dictTable="sys_category",dicText="name")
-    private String industryId;
-    private String industryCode;
-    /**
-     * 销售ID
-     */
-    @Excel(name = "销售ID", width = 15)
-    @ApiModelProperty(value = "销售ID")
-    @Dict(dicCode = "id",dictTable="sys_user",dicText="realname")
-    private String saleId;
-    /**
-     * 销售ID
-     */
-    @Excel(name = "广告主类别", width = 15)
-    @ApiModelProperty(value = "广告主类别")
-    private Integer advertiserType;
-
-    /**
-     * 代理商Id
-     */
-    private Long agentId;
 
     /**
      * 联系人姓名
@@ -115,12 +87,10 @@ public class Advertiser {
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "修改时间")
     private Date updateTime;
+
     private String userId;
 
     private String companyId;
 
-    @TableField(exist = false)
-    private String saleName;
-
 
 }

+ 44 - 13
module-common/src/main/java/cn/com/ctop/common/module/entity/Product.java

@@ -1,44 +1,75 @@
 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;
+import org.jeecgframework.poi.excel.annotation.Excel;
 
 import java.util.Date;
 
 /**
- * 产品
+ * 产品表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-09-08
  */
 @Data
+@TableName("ctop_product")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_product对象", description = "产品表")
 public class Product {
+
     /**
      * id
      */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
     private Long id;
     /**
-     * 产品名
+     * 产品名
      */
+    @Excel(name = "产品名", width = 15)
+    @ApiModelProperty(value = "产品名")
     private String productName;
     /**
-     * 广告主id
+     * advertiserId
      */
+    @Excel(name = "advertiserId", width = 15)
+    @ApiModelProperty(value = "advertiserId")
+    @Dict(dicCode = "id", dictTable = "ctop_advertiser", dicText = "name")
     private String advertiserId;
-
-    private String advertiserName;
-
     /**
      * 创建人
      */
-    private String createUserId;
+    @Excel(name = "创建人", width = 15)
+    @ApiModelProperty(value = "创建人")
+    @Dict(dicCode = "id", dictTable = "sys_user", dicText = "realname")
+    private String userId;
 
+    @Dict(dicCode = "id", dictTable = "sys_category", dicText = "name")
+    private String industryId;
     /**
-     * 媒体类型
+     * 1正常0删除
      */
-    private String mediaId;
-
+    @Excel(name = "1正常0删除", width = 15)
+    @ApiModelProperty(value = "1正常0删除")
+    private Integer productStatus;
     /**
-     * 创建时间
+     * createTime
      */
+    @ApiModelProperty(value = "createTime")
     private Date createTime;
-
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
     private Date updateTime;
-
 }

+ 16 - 15
module-common/src/main/java/cn/com/ctop/common/module/entity/Project.java

@@ -47,16 +47,15 @@ public class Project {
      */
     @Excel(name = "广告主id", width = 15)
     @ApiModelProperty(value = "广告主id")
+    @Dict(dicCode = "id", dictTable = "ctop_advertiser", dicText = "name")
     private String advertiserId;
 
-    @Excel(name = "广告主名称", width = 15)
-    @ApiModelProperty(value = "广告主名称")
-    private String advertiserName;
 
-    @Dict(dicCode = "id", dictTable = "sys_category", dicText = "name")
-    private String industryId;
-    @Dict(dicCode = "code", dictTable = "sys_category", dicText = "name")
-    private String industryCode;
+    @Excel(name = "产品id", width = 15)
+    @ApiModelProperty(value = "广告主id")
+    @Dict(dicCode = "id", dictTable = "ctop_product", dicText = "product_name")
+    private Long productId;
+
     /**
      * 创建人
      */
@@ -68,21 +67,15 @@ public class Project {
      */
     @Excel(name = "负责人id", width = 15)
     @ApiModelProperty(value = "负责人id")
+    @Dict(dicCode = "id", dictTable = "sys_user", dicText = "realname")
     private String responsibleId;
 
 
-    @Excel(name = "负责人名称", width = 15)
-    @ApiModelProperty(value = "负责人名称")
-    private String responsibleName;
-
     @Excel(name = "设计负责人", width = 15)
     @ApiModelProperty(value = "设计负责人")
+    @Dict(dicCode = "id", dictTable = "sys_user", dicText = "realname")
     private String designResponsibleId;
 
-    @Excel(name = "设计负责人名称", width = 15)
-    @ApiModelProperty(value = "设计负责人名称")
-    private String designResponsibleName;
-
 
     @Excel(name = "公司id", width = 15)
     @ApiModelProperty(value = "公司id")
@@ -114,6 +107,7 @@ public class Project {
      * 最高深度转化出价
      */
     private BigDecimal maxDeepCpaBid;
+    private Integer checkLink;
     /**
      * 创建时间
      */
@@ -134,4 +128,11 @@ public class Project {
     @TableField(exist = false)
     private Integer needExamine;
 
+
+   /* @TableField(exist = false)
+    private String responsibleName; // 运营负责人
+
+
+    private String designResponsibleName; // 产品负责人
+*/
 }

+ 9 - 12
module-common/src/main/java/cn/com/ctop/common/module/entity/UserAllocation.java

@@ -1,5 +1,6 @@
 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;
@@ -59,6 +60,7 @@ public class UserAllocation implements Serializable {
      */
     @Excel(name = "广告主ID", width = 15)
     @ApiModelProperty(value = "广告主ID")
+    @Dict(dicCode = "id", dictTable = "ctop_advertiser", dicText = "name")
     private String advertiserId;
 
     private String systemType;
@@ -66,27 +68,16 @@ public class UserAllocation implements Serializable {
     /**
      * 项目id
      */
+    @Dict(dicCode = "id", dictTable = "ctop_project", dicText = "project_name")
     private Long projectId;
 
     /**
-     * 项目名称
-     */
-    private String projectName;
-
-    /**
-     * 广告主名称
-     */
-    @Excel(name = "广告主名称", width = 15)
-    @ApiModelProperty(value = "广告主名称")
-    private String advertiserName;
-    /**
      * 输入账号  --登陆
      */
     @Excel(name = "输入账号  --登陆", width = 15)
     @ApiModelProperty(value = "输入账号  --登陆")
     private String accountName;
 
-
     /**
      * 预警 金额
      */
@@ -135,4 +126,10 @@ public class UserAllocation implements Serializable {
     @ApiModelProperty(value = "平台类型 1 头条 2快手")
     private String mediaId;
 
+   /* @TableField(exist = false)
+    private String advertiserName;
+
+    @TableField(exist = false)
+    private String projectName;*/
+
 }

+ 8 - 40
module-common/src/main/java/cn/com/ctop/common/module/mapper/ProductMapper.java

@@ -1,49 +1,17 @@
 package cn.com.ctop.common.module.mapper;
 
-import cn.com.ctop.common.module.entity.Advertiser;
 import cn.com.ctop.common.module.entity.Product;
-import cn.com.ctop.common.module.entity.Project;
-import cn.com.ctop.common.module.vo.*;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
-import java.util.List;
-
-
+/**
+ * 产品表
+ *
+ * @author: jeecg-boot
+ * @date: 2020-09-08
+ * @cersion: V1.0
+ */
 public interface ProductMapper extends BaseMapper<Product> {
 
-    Long insertProduct(@Param("product") ProductVO product);
-
-    List<Advertiser> getAdvertiserList();
-
-    List<Project> getProjectListByAdvertiserId(@Param("advertiserId")String advertiserId);
-
-    List<ProductDto> getYunyingListByProjectIds(@Param("projectIds")List<Long> projectIds);
-
-    List<ProductDto> getSaleListByProjectIds(@Param("projectIds")List<Long> projectIds);
-
-    void logicDeleteProductById(@Param("id")Long id);
-
-    void deleteProductProjectMapByProductId(@Param("id")Long ProductId);
-
-    void insertProductProjectMap(@Param("projectIds")List<Long> projectIds, @Param("productId")Long productId);
-
-    Integer getProductNameCount(@Param("productName")String productName);
-
-    void updateProduct(@Param("product")ProductVO product);
-
-    Product getProductInfo(@Param("id")Long id);
-
-    List<ProjectVO> getProjectListByProductId(@Param("productId")Long productId);
-
-    List<Long> getProjectIdsByProductId(@Param("productId")Long productId);
-
-    void deleteByProjectIdAndProductId(@Param("productId")Long productId, @Param("projectId")Long projectId);
-
-    List<ProductVO> getProductList(@Param("advertiserName")String advertiserName, @Param("productName")String productName);
-
-    List<SaleVO> getSalesListByProductId(@Param("productId")Long productId);
-
-    List<UserDto> getYunyingListByProductId(@Param("productId")Long productId);
-
+    String getUserNameByUserId(@Param("userId") String userId);
 }

+ 3 - 3
module-common/src/main/java/cn/com/ctop/common/module/mapper/SysUserMapper.java

@@ -29,7 +29,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 	 * @param username
 	 * @return
 	 */
-	public SysUser getUserByName(@Param("username") String username);
+	 SysUser getUserByName(@Param("username") String username);
 
 	/**
 	 *  根据部门Id查询用户信息
@@ -144,9 +144,9 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 	List<SysUser> queryByDepIds(@Param("departIds") List<String> departIds, @Param("username") String username);
 	Map<String, Object> queryRoleCode(@Param("userId") String userId);
 
-	List<SysUserVo> getAllUser();
+	List<SysUserVo> getAllUser(@Param("userName") String userName);
 
-	List<SysUserVo> getUserListByCompany(@Param("companyId") String companyId);
+	List<SysUserVo> getUserListByCompany(@Param("companyId") String companyId,@Param("userName") String userName);
 
 	List<SysUserVo> getAllSale();
 

+ 4 - 224
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/ProductMapper.xml

@@ -2,229 +2,9 @@
 <!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.ProductMapper">
 
-    <insert id="insertProduct" useGeneratedKeys="true" keyProperty="id">
-        insert into
-        ctop_product
-        (
-            product_name,
-            media_id,
-            advertiser_id,
-            advertiser_name,
-            create_user_id,
-            product_status
-        )values(
-            #{product.productName},
-            #{product.mediaId},
-            #{product.advertiserId},
-            #{product.advertiserName},
-            #{product.createUserId},
-            1
-        )
-    </insert>
-
-    <select id="getAdvertiserList" resultType="cn.com.ctop.common.module.entity.Advertiser">
-        select
-        id as id,
-        name as name
-        from
-        ctop_advertiser
-    </select>
-
-    <select id="getProjectListByAdvertiserId" resultType="cn.com.ctop.common.module.entity.Project">
-        select
-        id,
-        project_name as projectName,
-        media_id as mediaId
-        from
-        ctop_project
-        where
-        advertiser_id = #{advertiserId}
-        and media_id in (1,2)
-    </select>
-
-    <select id="getYunyingListByProjectIds" resultType="cn.com.ctop.common.module.vo.ProductDto">
-        select
-        distinct user_id as userId,
-        user_name as userName
-        from
-        ctop_user_allocation
-        where
-        project_id in
-        <foreach collection="projectIds" item="item" separator=","
-                 open="(" close=")">
-            #{item}
-        </foreach>
-
-    </select>
-
-    <select id="getSaleListByProjectIds" resultType="cn.com.ctop.common.module.vo.ProductDto">
-        select
-        distinct a.sale_id as saleId,
-        b.realname as saleName
-        from
-        ctop_project a
-        left join sys_user b on a.sale_id = b.id
-        where
-        a.id in
-        <foreach collection="projectIds" item="item" separator=","
-                       open="(" close=")">
-        #{item}
-        </foreach>
-    </select>
-
-    <update id="logicDeleteProductById">
-        update
-        ctop_product
-        set product_status = 0
-        where
-        id = #{id}
-    </update>
-
-    <delete id="deleteProductProjectMapByProductId">
-        delete
-        from
-        ctop_product_project_map
-        where
-        product_id  = #{id}
-    </delete>
-
-    <insert id="insertProductProjectMap">
-        insert into
-        ctop_product_project_map
-        (
-            product_id,
-            project_id
-        )
-        values
-        <foreach collection="projectIds" item="projectId" separator=",">
-            (
-             #{productId},
-             #{projectId}
-            )
-        </foreach>
-    </insert>
-
-    <select id="getProductNameCount" resultType="integer">
-        select
-        count(1)
-        from
-        ctop_product
-        where
-        product_name = #{productName}
-    </select>
-
-    <update id="updateProduct">
-        update
-        ctop_product
-        set
-        product_name = #{product.productName},
-        media_id = #{product.mediaId}
-      <!--  advertiser_id = #{product.advertiserId},
-        advertiser_name = #{product.advertiserName}  -->
-        where
-        id = #{product.id}
-    </update>
-
-    <select id="getProductInfo" resultType="cn.com.ctop.common.module.entity.Product">
-        select
-        id as id,
-        product_name as productName,
-        media_id as mediaId,
-        advertiser_id as advertiserId,
-        advertiser_name as advertiserName,
-        create_user_id as createUserId,
-        product_status as productStatus
-        from
-        ctop_product
-        where
-        id = #{id}
-    </select>
-
-    <select id="getProjectListByProductId" resultType="cn.com.ctop.common.module.vo.ProjectVO">
-        select
-        a.project_id as projectId,
-        b.project_name as projectName
-        from
-        ctop_product_project_map a
-        left join ctop_project b on a.project_id = b.id
-        where
-        a.product_id = #{productId}
+    <select id="getUserNameByUserId" resultType="java.lang.String">
+     select  realname  from sys_user
+     where  id = #{userId}
     </select>
 
-    <select id="getProjectIdsByProductId" resultType="Long">
-        select
-        a.project_id as projectId
-        from
-        ctop_product_project_map a
-        left join ctop_project b on a.project_id = b.id
-        where
-        a.product_id = #{productId}
-    </select>
-
-
-
-
-    <select id="deleteByProjectIdAndProductId">
-        delete
-        from
-        ctop_product_project_map
-        where
-        project_id = #{projectId}
-        and
-        product_id = #{productId}
-    </select>
-
-    <select id="getProductList" resultType="cn.com.ctop.common.module.vo.ProductVO">
-            select
-            id as id,
-            product_name as productName,
-            media_id as mediaId,
-            advertiser_id as advertiserId,
-            advertiser_name as advertiserName,
-            create_user_id as createUserId,
-            product_status as productStatus
-        from
-        ctop_product
-        where
-        product_status = 1 and
-        <if test="advertiserName != null and advertiserName != '' ">
-            advertiser_name like concat('%', #{advertiserName},'%') and
-        </if>
-        <if test="productName != null and productName != '' ">
-            product_name like concat('%', #{productName}, '%') and
-        </if>
-        1=1
-    </select>
-
-    <select id="getSalesListByProductId" resultType="cn.com.ctop.common.module.vo.SaleVO">
-        select
-        distinct b.sale_id as saleId,
-        c.realname as saleName
-        from
-        ctop_product_project_map a
-        left join (select id,project_name,sale_id from ctop_project) b on a.project_id = b.id
-        left join sys_user c on b.sale_id = c.id
-        where
-        product_id = #{productId}
-    </select>
-
-    <select id="getYunyingListByProductId" resultType="cn.com.ctop.common.module.vo.UserDto">
-        select
-        distinct user_id as userId,
-        user_name as realname
-        from
-        ctop_user_allocation a
-        where
-        project_id in (
-        select project_id
-        from
-        ctop_product_project_map
-        where product_id = #{productId}
-        )
-
-    </select>
-
-
-
-
-</mapper>
+</mapper>

+ 150 - 144
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/SysUserMapper.xml

@@ -2,69 +2,70 @@
 <!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.SysUserMapper">
 
-	<select id="selectAllUser" resultType="cn.com.ctop.common.module.entity.SysUser">
+    <select id="selectAllUser" resultType="cn.com.ctop.common.module.entity.SysUser">
 		select * from  sys_user
 	</select>
 
-	<!-- 根据用户名查询 -->
-	<select id="getUserByName" resultType="cn.com.ctop.common.module.entity.SysUser">
+    <!-- 根据用户名查询 -->
+    <select id="getUserByName" resultType="cn.com.ctop.common.module.entity.SysUser">
 		select * from  sys_user  where username = #{username} and del_flag = 0
 	</select>
 
-	<!-- 根据部门Id查询 -->
-	<select id="getUserByDepId" resultType="cn.com.ctop.common.module.entity.SysUser">
-		select * from sys_user where del_flag = 0 and id in (select user_id from sys_user_depart where dep_id=#{departId})
-		<if test="username!=null and username!=''">
-			and username = #{username}
-		</if>
-	</select>
+    <!-- 根据部门Id查询 -->
+    <select id="getUserByDepId" resultType="cn.com.ctop.common.module.entity.SysUser">
+        select * from sys_user where del_flag = 0 and id in (select user_id from sys_user_depart where
+        dep_id=#{departId})
+        <if test="username!=null and username!=''">
+            and username = #{username}
+        </if>
+    </select>
 
-	<!-- 查询用户的所属部门名称信息 -->
-	<select id="getDepNamesByUserIds" resultType="cn.com.ctop.common.module.vo.SysUserDepVo">
-		select d.depart_name,ud.user_id from sys_user_depart ud,sys_depart d where d.id = ud.dep_id and ud.user_id in
-		<foreach collection="userIds" index="index" item="id" open="(" separator="," close=")">
-			#{id}
-		</foreach>
-	</select>
+    <!-- 查询用户的所属部门名称信息 -->
+    <select id="getDepNamesByUserIds" resultType="cn.com.ctop.common.module.vo.SysUserDepVo">
+        select d.depart_name,ud.user_id from sys_user_depart ud,sys_depart d where d.id = ud.dep_id and ud.user_id in
+        <foreach collection="userIds" index="index" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </select>
 
-	<!-- 通过多个部门IDS,查询部门下的用户信息 -->
-	<select id="getUserByDepIds" resultType="cn.com.ctop.common.module.entity.SysUser">
-		select * from sys_user where del_flag = 0
-		<if test="departIds!=null  and departIds.size()>0">
-			and id in (select user_id from sys_user_depart where dep_id in
-			<foreach collection="departIds" index="index" item="id" open="(" separator="," close=")">
-				#{id}
-			</foreach>
-			)
-		</if>
-		<if test="username!=null and username!=''">
-			and username = #{username}
-		</if>
-	</select>
+    <!-- 通过多个部门IDS,查询部门下的用户信息 -->
+    <select id="getUserByDepIds" resultType="cn.com.ctop.common.module.entity.SysUser">
+        select * from sys_user where del_flag = 0
+        <if test="departIds!=null  and departIds.size()>0">
+            and id in (select user_id from sys_user_depart where dep_id in
+            <foreach collection="departIds" index="index" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+            )
+        </if>
+        <if test="username!=null and username!=''">
+            and username = #{username}
+        </if>
+    </select>
 
-	<!-- 根据角色Id查询 -->
-	<select id="getUserByRoleId" resultType="cn.com.ctop.common.module.entity.SysUser">
-		select * from sys_user where del_flag = 0 and id in (select user_id from sys_user_role where role_id=#{roleId})
-		<if test="username!=null and username!=''">
-			and username = #{username}
-		</if>
-	</select>
+    <!-- 根据角色Id查询 -->
+    <select id="getUserByRoleId" resultType="cn.com.ctop.common.module.entity.SysUser">
+        select * from sys_user where del_flag = 0 and id in (select user_id from sys_user_role where role_id=#{roleId})
+        <if test="username!=null and username!=''">
+            and username = #{username}
+        </if>
+    </select>
 
-	<!--  修改用户部门code -->
-	<update id="updateUserDepart">
+    <!--  修改用户部门code -->
+    <update id="updateUserDepart">
 		UPDATE sys_user SET org_code = #{orgCode} where username = #{username}
 	</update>
 
-	<!-- 根据手机号查询 -->
-	<select id="getUserByPhone"  resultType="cn.com.ctop.common.module.entity.SysUser">
+    <!-- 根据手机号查询 -->
+    <select id="getUserByPhone" resultType="cn.com.ctop.common.module.entity.SysUser">
 		select * from  sys_user  where phone = #{phone} and del_flag = 0
 	</select>
 
-	<!-- 根据邮箱查询用户信息 -->
-	<select id="getUserByEmail" resultType="cn.com.ctop.common.module.entity.SysUser">
+    <!-- 根据邮箱查询用户信息 -->
+    <select id="getUserByEmail" resultType="cn.com.ctop.common.module.entity.SysUser">
 	select * from  sys_user  where email = #{email} and del_flag = 0
 	</select>
-	<select id="queryRoleCode" parameterType="Object" resultType="java.util.Map">
+    <select id="queryRoleCode" parameterType="Object" resultType="java.util.Map">
 SELECT
    role_code roleCode,
    role_name roleName,
@@ -82,47 +83,54 @@ SELECT
    t1.id = #{userId,jdbcType=VARCHAR}
    )
 </select>
-	<select id="getAllUser" resultType="cn.com.ctop.common.module.vo.SysUserVo">
-      SELECT
-      t1.id userId,
-      t1.username userName,
-      t1.realname realName,
-      (SELECT role_name FROM sys_role WHERE id = t2.role_id ) roleName
-    FROM sys_user t1
-    LEFT JOIN sys_user_role t2 on t1.id = t2.user_id;
-	</select>
-	<!-- SQL片段:getUserByOrgCode 的 FROM 和 WHERE 部分 -->
-	<sql id="getUserByOrgCodeFromSql">
-		FROM
-		sys_depart
-		INNER JOIN sys_user_depart ON sys_user_depart.dep_id = sys_depart.id
-		INNER JOIN sys_user ON sys_user.id = sys_user_depart.user_id
-		WHERE
-		sys_user.del_flag = 0 AND sys_depart.org_code LIKE '${orgCode}%'
-
-		<if test="userParams != null">
-			<if test="userParams.realname != null and userParams.realname != ''">
-				AND sys_user.realname LIKE concat(concat('%',#{userParams.realname}),'%')
-			</if>
-			<if test="userParams.workNo != null and userParams.workNo != ''">
-				AND sys_user.work_no LIKE concat(concat('%',#{userParams.workNo}),'%')
-			</if>
-		</if>
-	</sql>
-	<select id="getUserListByCompany" resultType="cn.com.ctop.common.module.vo.SysUserVo">
-   SELECT
-      t2.id userId,
-      t2.username userName,
-      t2.realname realName,
- (SELECT role_name FROM sys_role WHERE id = t3.role_id ) roleName
-    FROM user_company t1 LEFT JOIN
-    sys_user t2 ON
-    t1.user_id = t2.id
-    LEFT JOIN sys_user_role t3 on t1.user_id = t3.user_id
-    WHERE t1.company_id = #{companyId}
+    <select id="getAllUser" resultType="cn.com.ctop.common.module.vo.SysUserVo">
+        SELECT
+        t1.id userId,
+        t1.username userName,
+        t1.realname realName,
+        (SELECT role_name FROM sys_role WHERE id = t2.role_id ) roleName
+        FROM sys_user t1
+        LEFT JOIN sys_user_role t2 on t1.id = t2.user_id
+        where 1 = 1
+        <if test="userName != null and userName != ''">
+            and t1.realname like concat(concat('%',#{userName}),'%')
+        </if>
     </select>
+    <!-- SQL片段:getUserByOrgCode 的 FROM 和 WHERE 部分 -->
+    <sql id="getUserByOrgCodeFromSql">
+        FROM
+        sys_depart
+        INNER JOIN sys_user_depart ON sys_user_depart.dep_id = sys_depart.id
+        INNER JOIN sys_user ON sys_user.id = sys_user_depart.user_id
+        WHERE
+        sys_user.del_flag = 0 AND sys_depart.org_code LIKE '${orgCode}%'
+
+        <if test="userParams != null">
+            <if test="userParams.realname != null and userParams.realname != ''">
+                AND sys_user.realname LIKE concat(concat('%',#{userParams.realname}),'%')
+            </if>
+            <if test="userParams.workNo != null and userParams.workNo != ''">
+                AND sys_user.work_no LIKE concat(concat('%',#{userParams.workNo}),'%')
+            </if>
+        </if>
+    </sql>
+    <select id="getUserListByCompany" resultType="cn.com.ctop.common.module.vo.SysUserVo">
+        SELECT
+        t2.id userId,
+        t2.username userName,
+        t2.realname realName,
+        (SELECT role_name FROM sys_role WHERE id = t3.role_id ) roleName
+        FROM user_company t1 LEFT JOIN
+        sys_user t2 ON
+        t1.user_id = t2.id
+        LEFT JOIN sys_user_role t3 on t1.user_id = t3.user_id
+        WHERE t1.company_id = #{companyId}
+        <if test="userName != null and userName != ''">
+            and t2.realname like concat(concat('%',#{userName}),'%')
+        </if>
 
-	<select id="getAllSale" resultType="cn.com.ctop.common.module.vo.SysUserVo">
+    </select>
+    <select id="getAllSale" resultType="cn.com.ctop.common.module.vo.SysUserVo">
        SELECT
 	t2.id userId,
 	t2.username userName,
@@ -138,7 +146,7 @@ SELECT
     </select>
 
 
-	<select id="getAllSalesByCompanyId" resultType="cn.com.ctop.common.module.vo.SysUserVo">
+    <select id="getAllSalesByCompanyId" resultType="cn.com.ctop.common.module.vo.SysUserVo">
        SELECT
 	t2.id userId,
 	t2.username userName,
@@ -152,54 +160,53 @@ SELECT
     WHERE t1.company_id = #{companyId}
 	and t4.role_name LIKE '%销售%';
     </select>
+    <!-- 根据 orgCode 查询用户,包括子部门下的用户 -->
+    <select id="getUserByOrgCode" resultType="cn.com.ctop.common.module.model.SysUserSysDepartModel">
+        SELECT
+        sys_user.id AS id,
+        sys_user.realname AS realname,
+        sys_user.work_no AS workNo,
+        sys_user.post AS post,
+        sys_user.telephone AS telephone,
+        sys_user.email AS email,
+        sys_user.phone AS phone,
+        sys_depart.id AS departId,
+        sys_depart.depart_name AS departName
+        <include refid="getUserByOrgCodeFromSql"/>
+        ORDER BY
+        sys_depart.org_code ASC
+    </select>
 
-	<!-- 根据 orgCode 查询用户,包括子部门下的用户 -->
-	<select id="getUserByOrgCode" resultType="cn.com.ctop.common.module.model.SysUserSysDepartModel">
-		SELECT
-			sys_user.id AS id,
-			sys_user.realname AS realname,
-			sys_user.work_no AS workNo,
-			sys_user.post AS post,
-			sys_user.telephone AS telephone,
-			sys_user.email AS email,
-			sys_user.phone AS phone,
-			sys_depart.id AS departId,
-			sys_depart.depart_name AS departName
-		<include refid="getUserByOrgCodeFromSql"/>
-		ORDER BY
-			sys_depart.org_code ASC
-	</select>
-
-	<!-- 查询 getUserByOrgCode 的总数-->
-	<select id="getUserByOrgCodeTotal" resultType="java.lang.Integer">
-		SELECT COUNT(1) <include refid="getUserByOrgCodeFromSql"/>
-	</select>
-
-	<!-- 批量删除角色的与用户关系-->
-	<update id="deleteBathRoleUserRelation">
-		delete from sys_user_role
-		where role_id in
-		<foreach item="id" collection="roleIdArray" open="(" separator="," close=")">
-			#{id}
-		</foreach>
-	</update>
+    <!-- 查询 getUserByOrgCode 的总数-->
+    <select id="getUserByOrgCodeTotal" resultType="java.lang.Integer">
+        SELECT COUNT(1)
+        <include refid="getUserByOrgCodeFromSql"/>
+    </select>
 
-	<!-- 批量删除角色的与权限关系-->
-	<update id="deleteBathRolePermissionRelation">
-		delete from sys_role_permission
-		where role_id in
-		<foreach item="id" collection="roleIdArray" open="(" separator="," close=")">
-			#{id}
-		</foreach>
-	</update>
+    <!-- 批量删除角色的与用户关系-->
+    <update id="deleteBathRoleUserRelation">
+        delete from sys_user_role
+        where role_id in
+        <foreach item="id" collection="roleIdArray" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    <!-- 批量删除角色的与权限关系-->
+    <update id="deleteBathRolePermissionRelation">
+        delete from sys_role_permission
+        where role_id in
+        <foreach item="id" collection="roleIdArray" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
 
-	<!-- 查询被逻辑删除的用户 -->
-	<select id="selectLogicDeleted" resultType="cn.com.ctop.common.module.entity.SysUser">
+    <!-- 查询被逻辑删除的用户 -->
+    <select id="selectLogicDeleted" resultType="cn.com.ctop.common.module.entity.SysUser">
 		SELECT * FROM sys_user ${ew.customSqlSegment}
 	</select>
 
-	<!-- 更新被逻辑删除的用户 -->
-	<update id="revertLogicDeleted">
+    <!-- 更新被逻辑删除的用户 -->
+    <update id="revertLogicDeleted">
 		UPDATE
 			sys_user
 		SET
@@ -211,8 +218,8 @@ SELECT
 			AND id IN (${userIds})
 	</update>
 
-	<!-- 彻底删除被逻辑删除的用户 -->
-	<delete id="deleteLogicDeleted">
+    <!-- 彻底删除被逻辑删除的用户 -->
+    <delete id="deleteLogicDeleted">
 		DELETE FROM sys_user WHERE del_flag = 1 AND id IN (${userIds})
 	</delete>
 
@@ -221,19 +228,18 @@ SELECT
         UPDATE sys_user SET ${fieldName} = NULL WHERE ${fieldName} = ''
     </update>
 
-	<!-- 通过多个部门IDS,查询部门下的用户信息 -->
-	<select id="queryByDepIds" resultType="cn.com.ctop.common.module.entity.SysUser">
-		select * from sys_user where del_flag = 0
-		<if test="departIds!=null  and departIds.size()>0">
-			and id in (select user_id from sys_user_depart where dep_id in
-			<foreach collection="departIds" index="index" item="id" open="(" separator="," close=")">
-				#{id}
-			</foreach>
-			)
-		</if>
-		<if test="username!=null and username!=''">
-			and username != #{username}
-		</if>
-	</select>
-
+    <!-- 通过多个部门IDS,查询部门下的用户信息 -->
+    <select id="queryByDepIds" resultType="cn.com.ctop.common.module.entity.SysUser">
+        select * from sys_user where del_flag = 0
+        <if test="departIds!=null  and departIds.size()>0">
+            and id in (select user_id from sys_user_depart where dep_id in
+            <foreach collection="departIds" index="index" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+            )
+        </if>
+        <if test="username!=null and username!=''">
+            and username != #{username}
+        </if>
+    </select>
 </mapper>

+ 5 - 38
module-common/src/main/java/cn/com/ctop/common/module/service/IProductService.java

@@ -1,48 +1,15 @@
 package cn.com.ctop.common.module.service;
 
-import cn.com.ctop.common.module.entity.Advertiser;
 import cn.com.ctop.common.module.entity.Product;
-import cn.com.ctop.common.module.entity.Project;
-import cn.com.ctop.common.module.vo.ProductVO;
-import cn.com.ctop.common.module.vo.ProjectVO;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.github.pagehelper.PageInfo;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-import java.util.Map;
 
 /**
- * 项目
- *
- * @author jeecg-boot
- * @version V1.0
- * @date 2019-11-19
+ * @Description: 产品表
+ * @Author: jeecg-boot
+ * @Date: 2020-09-08
+ * @Version: V1.0
  */
 public interface IProductService extends IService<Product> {
 
-    List<Advertiser> advertiserList();
-
-    List<Project> getProjectListByAdvertiserId(String advertiserId);
-
-    Map<String,Object> getSaleAndYunyingListByProjectIds(List<Long> projectIds);
-
-    void deleteProduct(Long id);
-
-    void insertOrUpdateProduct(ProductVO product);
-
-    Integer getProductNameCount(String productName);
-
-    void insertProductProjectMap(Long productId, List<Long> projectIds);
-
-    Map<String, Object> getProductInfo(Long productId);
-
-    void deleteByProjectIdAndProductId(Long projectId, Long productId);
-
-    List<ProjectVO> getProjectListByProductId(Long productId);
-
-    PageInfo<ProductVO> getProductList(String advertiserName, String productName, Integer pageNum, Integer pageSize);
-
-    List<Long> getProjectIdsByProductId(Long productId);
-
+    String getUserNameByUserId(String userId);
 }

+ 3 - 0
module-common/src/main/java/cn/com/ctop/common/module/service/IProjectService.java

@@ -3,6 +3,8 @@ package cn.com.ctop.common.module.service;
 import cn.com.ctop.common.module.entity.Project;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * 项目
  *
@@ -12,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IProjectService extends IService<Project> {
 
+    List<Project> listByMediaType(int projectType,int checkLink);
 }

+ 11 - 6
module-common/src/main/java/cn/com/ctop/common/module/service/impl/FileInfoServiceImpl.java

@@ -2,6 +2,7 @@ package cn.com.ctop.common.module.service.impl;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.entity.FileInfo;
+import cn.com.ctop.common.module.entity.Project;
 import cn.com.ctop.common.module.entity.UserAllocation;
 import cn.com.ctop.common.module.mapper.FileInfoMapper;
 import cn.com.ctop.common.module.service.*;
@@ -60,6 +61,8 @@ public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> i
     private IMessageTemplate messageTemplate;
     @Autowired
     private ISendMessageService sendMessageService;
+    @Autowired
+    private IProjectService projectService;
 
     @Override
     public void uploadVideoToBytedance(String accountId, String videoUrl, String userId, String materialName) {
@@ -73,11 +76,12 @@ public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> i
                 } else {
                     log.error("头条上传素材失败,返回信息:{},accountId:{}", jsonObject, accountId);
                     UserAllocation allocation = userAllocationService.getByAccountId(Long.valueOf(accountId));
-                    String message = messageTemplate.getMaterialSyncTemplate(allocation.getProjectName(), Long.valueOf(accountId), allocation.getAuthName(), materialName, jsonObject.getString("message"));
+                    Project project = projectService.getById(allocation.getProjectId());
+                    String message = messageTemplate.getMaterialSyncTemplate(project.getProjectName(), Long.valueOf(accountId), allocation.getAuthName(), materialName, jsonObject.getString("message"));
                     sendMessageService.sendMessage(userId, message);
                 }
 
-            }else{
+            } else {
                 log.info("头条上传素材返回结果为空,返回信息:{},accountId:{}", jsonObject, accountId);
             }
 
@@ -137,11 +141,11 @@ public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> i
                 JSONObject getWord = (JSONObject) word;
                 String name = getWord.getString("name");
                 getWord.remove("words");
-                getWord.put("name",name);
+                getWord.put("name", name);
                 getWord.remove("words");
                 getWord.remove("max_word_len");
                 String status = getWord.getString("status");
-                if(null!=status&&status.trim().equals("CREATIVE_WORD_STATUS_APPROVE")){
+                if (null != status && status.trim().equals("CREATIVE_WORD_STATUS_APPROVE")) {
                     array.add(getWord);
                 }
             });
@@ -152,17 +156,18 @@ public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> i
 
     /**
      * 行动号召数据获取
+     *
      * @return
      */
     @Override
-    public JSONObject getActionText(Long accountId,String landingType) {
+    public JSONObject getActionText(Long accountId, String landingType) {
         CtopOauthToken token = ctopOauthTokenService.getTokenByAccountId(accountId);
         // 请求地址
         String url = "https://ad.oceanengine.com/open_api/2/tools/action_text/get/";
         // 请求参数
         JSONObject data = new JSONObject();
         data.put("advertiser_id", accountId);
-        data.put("landing_type",landingType);
+        data.put("landing_type", landingType);
         return HttpUtils.bytedanceGetRequest(token.getAccessToken(), url, data);
     }
 

+ 9 - 137
module-common/src/main/java/cn/com/ctop/common/module/service/impl/ProductServiceImpl.java

@@ -1,154 +1,26 @@
 package cn.com.ctop.common.module.service.impl;
 
-import cn.com.ctop.common.module.entity.Advertiser;
 import cn.com.ctop.common.module.entity.Product;
-import cn.com.ctop.common.module.entity.Project;
 import cn.com.ctop.common.module.mapper.ProductMapper;
 import cn.com.ctop.common.module.service.IProductService;
-import cn.com.ctop.common.module.vo.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
-import org.apache.ibatis.annotations.Param;
-import org.apache.shiro.SecurityUtils;
-import org.jeecg.common.system.vo.LoginUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-
+/**
+ * 产品表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-09-08
+ */
 @Service
 public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements IProductService {
-
     @Autowired
     private ProductMapper productMapper;
 
     @Override
-    public List<Advertiser> advertiserList(){
-        return productMapper.getAdvertiserList();
-    }
-
-    @Override
-    public List<Project> getProjectListByAdvertiserId(String advertiserId){
-        return productMapper.getProjectListByAdvertiserId(advertiserId);
-    }
-
-    @Override
-    public Map<String,Object> getSaleAndYunyingListByProjectIds(List<Long> projectIds){
-        Map<String,Object> map = new HashMap<>();
-
-        List<ProductDto> saleList = productMapper.getSaleListByProjectIds(projectIds);
-        List<ProductDto> yunyingeList = productMapper.getYunyingListByProjectIds(projectIds);
-
-        map.put("saleList",saleList);
-        map.put("yunyingList",yunyingeList);
-
-        return map;
-    }
-
-    @Override
-    public void deleteProduct(Long id){
-        productMapper.logicDeleteProductById(id);
-    }
-
-    @Override
-    public void insertOrUpdateProduct(ProductVO product){
-        //更新
-        if(product.getId() != null){
-            //productMapper.deleteProductProjectMapByProductId(product.getId());
-            //if(product.getProjectIds() != null && product.getProjectIds().size() != 0 ){
-            //    productMapper.insertProductProjectMap(product.getProjectIds(), product.getId());
-            //}
-            productMapper.updateProduct(product);
-        }else { //入库
-            LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-            product.setCreateUserId(sysUser.getId());
-            productMapper.insertProduct(product);
-
-            if(product.getProjectIds() != null && product.getProjectIds().size() != 0 ){
-                productMapper.insertProductProjectMap(product.getProjectIds(), product.getId());
-            }
-        }
-    }
-
-    @Override
-    public Integer getProductNameCount(String productName){
-        return productMapper.getProductNameCount(productName);
-    }
-
-    @Override
-    public void insertProductProjectMap(Long productId, List<Long> projectIds){
-        productMapper.insertProductProjectMap(projectIds, productId);
-    }
-
-  @Override
-    public Map<String, Object> getProductInfo(Long productId){
-        Map<String,Object> map = new HashMap<>();
-
-        Product product = productMapper.getProductInfo(productId);
-        List<ProjectVO> projectList = productMapper.getProjectListByProductId(productId);
-
-        List<Long> projectIds = new ArrayList<>();
-        for(ProjectVO vo:projectList){
-            projectIds.add(vo.getProjectId());
-        }
-
-        List<ProductDto> saleList = productMapper.getSaleListByProjectIds(projectIds);
-        List<ProductDto> yunyingeList = productMapper.getYunyingListByProjectIds(projectIds);
-
-        map.put("saleList",saleList);
-        map.put("yunyingList",yunyingeList);
-        map.put("product",product);
-        map.put("projectList",projectList);
-
-        return map;
-    }
-
-    @Override
-    public void deleteByProjectIdAndProductId(Long projectId, Long productId){
-        productMapper.deleteByProjectIdAndProductId(productId, projectId);
-    }
-
-    @Override
-    public List<ProjectVO> getProjectListByProductId(Long productId){
-        return productMapper.getProjectListByProductId(productId);
-    }
-
-    @Override
-    public PageInfo<ProductVO> getProductList(String advertiserName, String productName, Integer pageNum, Integer pageSize){
-        PageHelper.startPage(pageNum, pageSize);
-        List<ProductVO> productList = productMapper.getProductList(advertiserName, productName);
-
-        for(ProductVO product:productList){
-            List<ProjectVO> projectListByProductId = productMapper.getProjectListByProductId(product.getId());
-            List<SaleVO> salesListByProductId = productMapper.getSalesListByProductId(product.getId());
-            List<UserDto> yunyingListByProductId = productMapper.getYunyingListByProductId(product.getId());
-            List<Long> projectIds = productMapper.getProjectIdsByProductId(product.getId());
-
-            product.setProjectIds(projectIds);
-            product.setProjectList(projectListByProductId);
-            product.setSaleList(salesListByProductId);
-            product.setYunyingList(yunyingListByProductId);
-        }
-
-        return new PageInfo<>(productList);
-
-    }
-
-    @Override
-    public List<Long> getProjectIdsByProductId(Long productId){
-
-        return productMapper.getProjectIdsByProductId(productId);
-
+    public String getUserNameByUserId(String userId) {
+        return productMapper.getUserNameByUserId(userId);
     }
-
-
-
-
-
-
 }

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

@@ -3,9 +3,12 @@ package cn.com.ctop.common.module.service.impl;
 import cn.com.ctop.common.module.entity.Project;
 import cn.com.ctop.common.module.mapper.ProjectMapper;
 import cn.com.ctop.common.module.service.IProjectService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 项目
  *
@@ -16,4 +19,12 @@ import org.springframework.stereotype.Service;
 @Service
 public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> implements IProjectService {
 
+    @Override
+    public List<Project> listByMediaType(int projectType,int checkLink) {
+        QueryWrapper<Project>queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("media_id",projectType);
+        queryWrapper.eq("check_link",checkLink);
+        queryWrapper.orderByDesc("id");
+        return this.list(queryWrapper);
+    }
 }

+ 6 - 2
module-common/src/main/java/cn/com/ctop/common/module/utils/HttpUtils.java

@@ -328,9 +328,12 @@ public class HttpUtils {
             HttpPost httppost = new HttpPost(url);
             httppost.setHeader("User-Agent", USER_AGENT);
             httppost.addHeader("Content-Type", "application/json");
-            for (String key : headers.keySet()) {
-                httppost.setHeader(key, headers.get(key));
+            if (!Check.isNull(headers)) {
+                for (String key : headers.keySet()) {
+                    httppost.setHeader(key, headers.get(key));
+                }
             }
+
             httppost.setEntity(new StringEntity(body, Charset.forName("UTF-8")));
             HttpEntity respentity;
 
@@ -679,6 +682,7 @@ public class HttpUtils {
         String strReturn = "";
         try {
             String uri = url + "?" + mapParamsSortToStringBySeperator(params, "&");
+            System.err.println(uri);
             HttpGet httpGet = new HttpGet(uri);
             if (headers != null) {
                 Iterator<String> keyIter = headers.keySet().iterator();

+ 1 - 0
module-common/src/main/java/cn/com/ctop/common/module/utils/StatusCode.java

@@ -21,6 +21,7 @@ public enum StatusCode {
     COMMON_SUCCESS("操作成功", 0, true),
     COMMON_PARAM_ERROR("参数异常", -1, false),
     COMMON_ACCOUNT_ERROR("参数异常", -2, false),
+    COMMON_INTERNET_ERROR("网络请求异常", -3, false),
     COMMON_DATA_NOT_EXIST("数据不存在或者已经被删除", -101, false),
     BYTEDANCE_PLAN_DATA_NOT_EXIST("此计划不存在或者已经被删除", -101, false),
     BYTEDANCE_ACCOUNT_DATA_NOT_EXIST("此账户尚未绑定或已停投", -101, false),

+ 0 - 25
module-common/src/main/java/cn/com/ctop/common/module/vo/ProductDto.java

@@ -1,25 +0,0 @@
-package cn.com.ctop.common.module.vo;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-
-@Data
-public class ProductDto implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    private String userId;
-
-    private String userName;
-
-    private String saleId;
-
-    private String saleName;
-
-    private Long projectId;
-
-    private String projectName;
-
-}

+ 0 - 28
module-common/src/main/java/cn/com/ctop/common/module/vo/ProductInfoDto.java

@@ -1,28 +0,0 @@
-package cn.com.ctop.common.module.vo;
-
-import com.github.pagehelper.PageInfo;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-@Data
-public class ProductInfoDto extends PageInfo implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    private String advertiserId;
-
-    private List<Long> projectIds;
-
-    private Long productId;
-
-    private Long projectId;
-
-    private String advertiserName;
-
-    private String productName;
-
-    private Integer mediaId;
-
-}

+ 0 - 52
module-common/src/main/java/cn/com/ctop/common/module/vo/ProductVO.java

@@ -1,52 +0,0 @@
-package cn.com.ctop.common.module.vo;
-
-import lombok.Data;
-
-import java.util.Date;
-import java.util.List;
-
-/**
- * 产品
- */
-@Data
-public class ProductVO {
-    /**
-     * id
-     */
-    private Long id;
-    /**
-     * 产品名称
-     */
-    private String productName;
-    /**
-     * 广告主id
-     */
-    private String advertiserId;
-    private String advertiserName;
-
-    /**
-     * 创建人
-     */
-    private String createUserId;
-
-    /**
-     * 媒体类型
-     */
-    private String mediaId;
-
-    /**
-     * 创建时间
-     */
-    private Date createTime;
-
-    private Date updateTime;
-
-    private List<Long> projectIds;
-
-    private List<ProjectVO> projectList;
-
-    private List<SaleVO> saleList;
-
-    private List<UserDto> yunyingList;
-
-}

+ 11 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/core/service/IKuaishouCrawlerService.java

@@ -4,10 +4,21 @@ import cn.com.ctop.crawler.modules.account.entity.KuaishouAdAccount;
 import cn.com.ctop.crawler.modules.account.entity.KuaishouAppAccount;
 import cn.com.ctop.crawler.modules.account.entity.KuaishouIosAccount;
 
+import java.io.UnsupportedEncodingException;
+
 public interface IKuaishouCrawlerService {
     String getVideoFeeds(KuaishouAppAccount kuaishouAppAccount,Integer page);
     String getVideoFeeds(KuaishouIosAccount kuaishouIosAccount);
     String getAdAccountVideoFeeds(KuaishouAdAccount kuaishouAdAccount,String pcursor);
+
+    String getMusicTypeList(String llsid);
+
+    String musicSearchSuggest(String keyword) throws UnsupportedEncodingException;
+
+    String musicSearchList(String keyword) throws UnsupportedEncodingException;
+
+    String getMusicList(String channel, String llsid);
+
     String getAdFeeds();
     String getUserProfile(Long userId);
 }

+ 14 - 5
module-crawler/src/main/java/cn/com/ctop/crawler/modules/core/service/impl/KuaishouCrawlerServiceImpl.java

@@ -77,6 +77,7 @@ public class KuaishouCrawlerServiceImpl implements IKuaishouCrawlerService {
         return null;
     }
 
+    @Override
     public String getMusicTypeList(String llsid){
 //        IpPool ipPool = iIpPoolService.getAvaliableIp();
         String token = "a7805c554d6a453ea3350b629b28fed9-1144829703";
@@ -86,9 +87,14 @@ public class KuaishouCrawlerServiceImpl implements IKuaishouCrawlerService {
         String url = "http://apihb6.gifshow.com";
         String path = "/rest/n/music/channel/music";
         CrawlerLog crawlerLog = KuaishouUtil.kuaishouAppDataFeatch(url, path, staticStr, paramStr, headerStr, token, null);
-        return crawlerLog.getRequestBody();
+        return crawlerLog.getResponseBody();
+    }
+
+    public static void main(String[] args) {
+
     }
 
+    @Override
     public String musicSearchSuggest(String keyword) throws UnsupportedEncodingException {
 //        IpPool ipPool = iIpPoolService.getAvaliableIp();
         String token = "a7805c554d6a453ea3350b629b28fed9-1144829703";
@@ -98,9 +104,10 @@ public class KuaishouCrawlerServiceImpl implements IKuaishouCrawlerService {
         String url = "http://apihb6.gifshow.com";
         String path = "/rest/n/music/search/suggest";
         CrawlerLog crawlerLog = KuaishouUtil.kuaishouAppDataFeatch(url, path, staticStr, paramStr, headerStr, token, null);
-        return crawlerLog.getRequestBody();
+        return crawlerLog.getResponseBody();
     }
 
+    @Override
     public String musicSearchList(String keyword) throws UnsupportedEncodingException {
 //        IpPool ipPool = iIpPoolService.getAvaliableIp();
         String token = "a7805c554d6a453ea3350b629b28fed9-1144829703";
@@ -110,10 +117,11 @@ public class KuaishouCrawlerServiceImpl implements IKuaishouCrawlerService {
         String url = "http://apihb6.gifshow.com";
         String path = "/rest/n/music/search/v3";
         CrawlerLog crawlerLog = KuaishouUtil.kuaishouAppDataFeatch(url, path, staticStr, paramStr, headerStr, token, null);
-        return crawlerLog.getRequestBody();
+        return crawlerLog.getResponseBody();
     }
 
-    public String getMusicList(String channel,String llsid){
+    @Override
+    public String getMusicList(String channel, String llsid){
 //        IpPool ipPool = iIpPoolService.getAvaliableIp();
         String token = "a7805c554d6a453ea3350b629b28fed9-1144829703";
         String staticStr = String.format("app=0&kpf=ANDROID_PHONE&ver=6.5&c=HUAWEI&mod=HUAWEI(VOG-AL10)&appver=6.5.5.9591&ftt=&isp=CUCC&kpn=KUAISHOU&lon=0&language=zh-cn&sys=ANDROID_9&max_memory=384&ud=1144829703&country_code=cn&pm_tag=&oc=HUAWEI&hotfix_ver=&did_gt=%s&iuid=&extId=4db221a192e4d1d713c5dafb204400a8&net=WIFI&did=ANDROID_07264410e70db2ca&lat=0", String.valueOf(System.currentTimeMillis()));
@@ -122,9 +130,10 @@ public class KuaishouCrawlerServiceImpl implements IKuaishouCrawlerService {
         String url = "http://apihb6.gifshow.com";
         String path = "/rest/n/music/channel/music";
         CrawlerLog crawlerLog = KuaishouUtil.kuaishouAppDataFeatch(url, path, staticStr, paramStr, headerStr, token, null);
-        return crawlerLog.getRequestBody();
+        return crawlerLog.getResponseBody();
     }
 
+
     @Override
     public String getAdFeeds(){
         IpPool ipPool = iIpPoolService.getAvaliableIp();

+ 106 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/entity/MusicInfoKuaishou.java

@@ -0,0 +1,106 @@
+package cn.com.ctop.crawler.modules.music.entity;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+/**
+ * 快手音乐信息
+ * @author jeecg-boot
+ * @date   2020-09-15
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_music_info_kuaishou")
+@Accessors(chain = true)
+public class MusicInfoKuaishou {
+
+	/**id*/
+	@TableId
+    private String id;
+	private Long musicianUid;
+	private String image;
+	private Long chorus;
+	private Long duration;
+	private Long begin;
+	private Long end;
+	private String name;
+	private Integer type;
+	private String lrcUrl;
+	private String audioUrl;
+	private String avatarUrl;
+	private String snippetUrl;
+	private Long snippetDuration;
+	private Long singingCount;
+	private String url;
+	private String expTag;
+	private String imageUrl;
+	private Long photoCount;
+	private Long usageCount;
+	private String artist;
+	private Integer genreId;
+	private String lrc;
+	private Integer audioType;
+	private String isOriginal;
+	private Date createTime;
+	private Date updateTime;
+	private Long musicChannel;
+
+	public MusicInfoKuaishou(JSONObject music,Long channelType) {
+		this.musicianUid = music.getLong("musicianUid");
+		this.image = music.getString("image");
+		this.chorus = music.getLong("chorus");
+		this.duration = music.getLong("duration");
+		this.begin = music.getLong("begin");
+		this.end = music.getLong("end");
+		this.name = music.getString("name");
+		this.id = music.getString("id");
+		this.type = music.getInteger("type");
+		JSONArray lrcUrls = music.getJSONArray("lrcUrls");
+		if(null!=lrcUrls&&!lrcUrls.isEmpty()){
+			this.lrcUrl = lrcUrls.getJSONObject(0).getString("url");
+		}
+		JSONArray audioUrls = music.getJSONArray("audioUrls");
+		if(null!=audioUrls&&!audioUrls.isEmpty()){
+			this.audioUrl = audioUrls.getJSONObject(0).getString("url");
+		}
+		this.avatarUrl = music.getString("avatarUrl");
+		this.snippetUrl = music.getString("snippetUrls");
+		this.singingCount = music.getLong("singingCount");
+		this.snippetDuration = music.getLong("snippetDuration");
+		this.url = music.getString("url");
+		this.expTag = music.getString("expTag");
+		JSONArray imageUrls = music.getJSONArray("imageUrls");
+		if(null!=imageUrls&&!imageUrls.isEmpty()){
+			this.imageUrl = imageUrls.getJSONObject(0).getString("url");
+		}
+		this.photoCount = music.getLong("photoCount");
+		this.usageCount = music.getLong("usageCount");
+		this.artist = music.getString("artist");
+		this.genreId = music.getInteger("genreId");
+		this.lrc = music.getString("lrc");
+		this.audioType = music.getInteger("audioType");
+
+		Boolean isOriginal = music.getBoolean("isOriginal");
+		if(null == isOriginal){
+			isOriginal = false;
+		}
+		if(isOriginal){
+			this.isOriginal = "true";
+		}else{
+			this.isOriginal = "false";
+		}
+		this.createTime = new Date();
+		this.updateTime = new Date();
+		this.musicChannel = channelType;
+	}
+
+	public MusicInfoKuaishou() {
+
+	}
+}

+ 45 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/entity/MusicKuaishouType.java

@@ -0,0 +1,45 @@
+package cn.com.ctop.crawler.modules.music.entity;
+
+import com.alibaba.fastjson.JSONObject;
+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-09-11
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_music_kuaishou_type")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="ctop_music_kuaishou_type对象", description="快手音乐类别")
+public class MusicKuaishouType {
+
+	@TableId
+    private Long id;
+	private String type;
+	private String name;
+	private String icon;
+	private Date createTime;
+	private Date updateTime;
+
+	public MusicKuaishouType(JSONObject data) {
+		this.setIcon(data.getString("icon"));
+		this.setName(data.getString("name"));
+		this.setType(data.getString("type"));
+		this.setId(data.getLong("id"));
+	}
+
+	public MusicKuaishouType() {
+
+	}
+
+}

+ 14 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/mapper/MusicInfoKuaishouMapper.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.crawler.modules.music.mapper;
+
+import cn.com.ctop.crawler.modules.music.entity.MusicInfoKuaishou;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 快手音乐信息
+ * @author: jeecg-boot
+ * @date:   2020-09-15
+ * @cersion: V1.0
+ */
+public interface MusicInfoKuaishouMapper extends BaseMapper<MusicInfoKuaishou> {
+
+}

+ 14 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/mapper/MusicKuaishouTypeMapper.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.crawler.modules.music.mapper;
+
+import cn.com.ctop.crawler.modules.music.entity.MusicKuaishouType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 快手音乐类别
+ * @author: jeecg-boot
+ * @date:   2020-09-11
+ * @cersion: V1.0
+ */
+public interface MusicKuaishouTypeMapper extends BaseMapper<MusicKuaishouType> {
+
+}

+ 5 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/mapper/xml/MusicInfoKuaishouMapper.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.crawler.modules.music.mapper.MusicInfoKuaishouMapper">
+
+</mapper>

+ 5 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/mapper/xml/MusicKuaishouTypeMapper.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.crawler.modules.music.mapper.MusicKuaishouTypeMapper">
+
+</mapper>

+ 14 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/service/IMusicInfoKuaishouService.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.crawler.modules.music.service;
+
+import cn.com.ctop.crawler.modules.music.entity.MusicInfoKuaishou;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 快手音乐信息
+ * @Author: jeecg-boot
+ * @Date:   2020-09-15
+ * @Version: V1.0
+ */
+public interface IMusicInfoKuaishouService extends IService<MusicInfoKuaishou> {
+
+}

+ 14 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/service/IMusicKuaishouTypeService.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.crawler.modules.music.service;
+
+import cn.com.ctop.crawler.modules.music.entity.MusicKuaishouType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 快手音乐类别
+ * @Author: jeecg-boot
+ * @Date:   2020-09-11
+ * @Version: V1.0
+ */
+public interface IMusicKuaishouTypeService extends IService<MusicKuaishouType> {
+
+}

+ 18 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/service/impl/MusicInfoKuaishouServiceImpl.java

@@ -0,0 +1,18 @@
+package cn.com.ctop.crawler.modules.music.service.impl;
+
+import cn.com.ctop.crawler.modules.music.entity.MusicInfoKuaishou;
+import cn.com.ctop.crawler.modules.music.mapper.MusicInfoKuaishouMapper;
+import cn.com.ctop.crawler.modules.music.service.IMusicInfoKuaishouService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 快手音乐信息
+ * @author jeecg-boot
+ * @date   2020-09-15
+ * @version V1.0
+ */
+@Service
+public class MusicInfoKuaishouServiceImpl extends ServiceImpl<MusicInfoKuaishouMapper, MusicInfoKuaishou> implements IMusicInfoKuaishouService {
+
+}

+ 18 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/music/service/impl/MusicKuaishouTypeServiceImpl.java

@@ -0,0 +1,18 @@
+package cn.com.ctop.crawler.modules.music.service.impl;
+
+import cn.com.ctop.crawler.modules.music.entity.MusicKuaishouType;
+import cn.com.ctop.crawler.modules.music.mapper.MusicKuaishouTypeMapper;
+import cn.com.ctop.crawler.modules.music.service.IMusicKuaishouTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 快手音乐类别
+ * @author jeecg-boot
+ * @date   2020-09-11
+ * @version V1.0
+ */
+@Service
+public class MusicKuaishouTypeServiceImpl extends ServiceImpl<MusicKuaishouTypeMapper, MusicKuaishouType> implements IMusicKuaishouTypeService {
+
+}

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

@@ -1,9 +1,6 @@
 package cn.com.ctop.manage.modules.material.service.impl;
 
-import cn.com.ctop.common.module.entity.CtopOauthToken;
-import cn.com.ctop.common.module.entity.MaterialInfo;
-import cn.com.ctop.common.module.entity.MaterialParameter;
-import cn.com.ctop.common.module.entity.UserAllocation;
+import cn.com.ctop.common.module.entity.*;
 import cn.com.ctop.common.module.enums.MaterialEnum;
 import cn.com.ctop.common.module.mapper.CtopOauthTokenMapper;
 import cn.com.ctop.common.module.mapper.MaterialInfoMapper;
@@ -65,6 +62,8 @@ public class MaterialUploadServiceImpl implements IMaterialUploadService {
     private IUserAllocationService userAllocationService;
     @Autowired
     private IKuaishouInterfaceService kuaishouInterfaceService;
+    @Autowired
+    private IProjectService projectService;
 
 
     /**
@@ -236,7 +235,8 @@ public class MaterialUploadServiceImpl implements IMaterialUploadService {
                                         log.error("快手同步素材失败,返回信息:{},请求参数:{}", resultJson, requestJson);
                                         //  发送消息到上传人
                                         UserAllocation allocation = userAllocationService.getByAccountId(accountId);
-                                        String message = messageTemplate.getMaterialSyncTemplate(allocation.getProjectName(), accountId, allocation.getAuthName(), materialInfo.getMaterialName(), resultJson.getString("message"));
+                                        Project project = projectService.getById(allocation.getProjectId());
+                                        String message = messageTemplate.getMaterialSyncTemplate(project.getProjectName(), accountId, allocation.getAuthName(), materialInfo.getMaterialName(), resultJson.getString("message"));
                                         sendMessageService.sendMessage(userId, message);
                                     }
                                 }

+ 128 - 0
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceMonitoringLinksCheckJob.java

@@ -0,0 +1,128 @@
+package cn.com.ctop.job.bytedance.handler;
+
+import cn.com.ctop.common.module.entity.Project;
+import cn.com.ctop.common.module.entity.UserAllocation;
+import cn.com.ctop.common.module.service.IProjectService;
+import cn.com.ctop.common.module.service.ISendMessageService;
+import cn.com.ctop.common.module.service.IUserAllocationService;
+import cn.com.ctop.toutiao.modules.material.entity.ByteDanceAdvertisePlan;
+import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertisePlanService;
+import cn.com.ctop.toutiao.modules.material.service.IByteDanceCreativeService;
+import com.alibaba.fastjson.JSONObject;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.xxl.job.core.log.XxlJobLogger;
+import org.jeecg.common.util.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+@Component
+public class BytedanceMonitoringLinksCheckJob {
+    @Autowired
+    private IUserAllocationService allocationService;
+    @Autowired
+    private IByteDanceAdvertisePlanService advertisePlanService;
+    @Autowired
+    private IByteDanceCreativeService creativeService;
+    @Autowired
+    private ISendMessageService sendMessageService;
+    @Autowired
+    private IProjectService projectService;
+
+    @XxlJob("bytedanceMonitoringLinksCheckJob")
+    public ReturnT<String> execute(String param) throws Exception{
+        List<Project> projects = projectService.listByMediaType(3,1);
+        if(null==projects||projects.isEmpty()){
+            return ReturnT.SUCCESS;
+        }
+        for (Project project:projects) {
+            List<UserAllocation>allocations = allocationService.getByParams(project.getId(),null,0);
+            if(null==allocations||allocations.isEmpty()){
+                continue;
+            }
+            for(UserAllocation allocation:allocations){
+                List<ByteDanceAdvertisePlan> plans = advertisePlanService.getAllPlans(allocation.getAccountId(), DateUtils.formatDate(new Date()));
+                if(null!=plans&&!plans.isEmpty()){
+                    for (ByteDanceAdvertisePlan plan:plans) {
+                        Map<String, Object> creativeDetail = creativeService.getCreativeDetail(allocation.getAccountId(), plan.getId());
+                        if(null!=creativeDetail.get("data")){
+                            JSONObject data = (JSONObject) creativeDetail.get("data");
+                            checkMonitorLink(data,plan,allocation);
+                        }
+                    }
+                }
+            }
+        }
+        XxlJobLogger.log("监测链接检查完成");
+        return ReturnT.SUCCESS;
+    }
+
+    private void checkMonitorLink(JSONObject data, ByteDanceAdvertisePlan plan, UserAllocation allocation) {
+        String downloadUrl = plan.getDownloadUrl();
+        boolean errorflag = false;
+        String errorMsg = "";
+        String token = plan.getName().split("-")[0];
+        if(null!=token&&token.equals("衍生计划")){
+            token = plan.getName().split("-")[1];
+        }
+        String tokenInfo = "surl_token="+token;
+        String appType = plan.getAppType();
+
+        if(null!=downloadUrl){
+            if(null!=appType&&appType.equals("APP_IOS")){
+                if(!downloadUrl.equals("https://apps.apple.com/cn/app/id1468454200")){
+                    errorMsg+= "应用下载链接填写异常;";
+                    errorflag = true;
+                }
+            }
+            if(null!=appType&&appType.equals("APP_ANDROID")){
+                if(!downloadUrl.contains(token)){
+                    errorMsg+= "应用下载链接填写异常;";
+                    errorflag = true;
+                }
+            }
+        }
+        //展示监测链接
+        String trackUrl = data.getString("trackUrl");
+        if(null!=trackUrl&&!trackUrl.trim().equals("")){
+            if(!trackUrl.contains(tokenInfo)){
+                errorMsg+= "展示监测链接填写异常;";
+                errorflag = true;
+            }
+        }
+        //点击监测链接
+        String actionTrackUrl = data.getString("actionTrackUrl");
+        if(null!=actionTrackUrl&&!actionTrackUrl.trim().equals("")){
+            if(null!=appType&&appType.equals("APP_IOS")){
+                if(!actionTrackUrl.contains(tokenInfo)||!actionTrackUrl.contains("app_platform=ios")){
+                    errorMsg+= "点击监测链接填写异常;";
+                    errorflag = true;
+                }
+            }
+            if(null!=appType&&appType.equals("APP_ANDROID")){
+                if(!actionTrackUrl.contains(tokenInfo)||!actionTrackUrl.contains("tt/")){
+                    errorMsg+= "点击监测链接填写异常;";
+                    errorflag = true;
+                }
+            }
+        }
+        //视频有效播放监测链接
+        String videoPlayEffectiveTrackUrl = data.getString("videoPlayEffectiveTrackUrl");
+        if(null!=videoPlayEffectiveTrackUrl&&!videoPlayEffectiveTrackUrl.trim().equals("")){
+            if(!videoPlayEffectiveTrackUrl.contains(tokenInfo)){
+                errorMsg+= "视频有效播放监测链接填写异常;";
+                errorflag = true;
+            }
+        }
+        if(errorflag){
+            sendMessage(allocation,"警告:账户:"+allocation.getAuthName()+"(id:"+allocation.getAccountId()+")下的广告计划:"+plan.getName()+"(id:"+plan.getId()+")"+"监测链接异常>>"+errorMsg);
+        }
+    }
+    private void sendMessage(UserAllocation allocation, String errorMsg) {
+        sendMessageService.sendMessage(allocation.getUserId(),errorMsg);
+    }
+}

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

@@ -1131,7 +1131,6 @@ public class BatchController {
                 queryWrapper.between("stat_date", startDate, endDate);
             }
             queryWrapper.orderByDesc("stat_date");
-            queryWrapper.orderByDesc("photo_id");
             queryWrapper.groupBy("signature");
             Page<KuaiShouVideoGet> page = new Page<>(pageNo, pageSize);
             IPage<KuaiShouVideoGet> pageList = kuaiShouVideoGetService.page(page, queryWrapper);

+ 24 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouReportDailyMaterialMapper.java

@@ -0,0 +1,24 @@
+package cn.com.ctop.kuaishou.modules.batch.mapper;
+
+import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouReportDailyMaterial;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouReportDailyMaterialVo;
+import cn.com.ctop.kuaishou.modules.report.entity.VideoGetvo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 素材
+ *
+ * @author: jeecg-boot
+ * @date: 2020-09-09
+ * @cersion: V1.0
+ */
+public interface KuaiShouReportDailyMaterialMapper extends BaseMapper<KuaiShouReportDailyMaterial> {
+    void loadMaterialDailyReport(@Param("accountId") Long accountId, @Param("localPath") String localPath);
+
+    List<KuaiShouReportDailyMaterialVo> getPhotoList(@Param("accountId") Long accountId, @Param("statDate") String statDate);
+
+    VideoGetvo getVideoGetByPhotoId(Long photoId);
+}

+ 132 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouReportDailyMaterialMapper.xml

@@ -0,0 +1,132 @@
+<?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.kuaishou.modules.batch.mapper.KuaiShouReportDailyMaterialMapper">
+
+    <insert id="loadMaterialDailyReport">
+		LOAD DATA local INFILE  #{localPath}
+	    REPLACE INTO TABLE ctop_kuaishou_report_daily_material CHARACTER SET utf8mb4
+		FIELDS TERMINATED BY ',' enclosed by '"' LINES TERMINATED BY '\n'
+		IGNORE 1 LINES
+		(photo_id,
+		image_token,
+		cover_url,
+		photo_url,
+		@photo_caption,
+		@creative_material_type_string,
+        @ad_scene,
+        charge,
+        photo_show,
+        aclick,
+        bclick,
+        photo_share,
+        photo_comment,
+        photo_like,
+        follow,
+        cancel_follow,
+        report,
+        block,
+        negative,
+        download_started,
+        download_completed,
+        activation,
+        submit,
+        stat_date,
+        @stat_hour,
+        photo_click,
+        photo_click_ratio,
+        action_ratio,
+        impression_1k_cost,
+        photo_click_cost,
+        @click_1k_cost,
+        action_cost,
+        event_pay_first_day,
+        event_pay_purchase_amount_first_day,
+        event_pay_first_day_roi,
+        event_pay,
+        event_pay_purchase_amount,
+        event_pay_roi,
+        event_register,
+        event_register_cost,
+        event_register_ratio,
+        event_jin_jian_app,
+        event_jin_jian_app_cost,
+        event_credit_grant_app,
+        event_credit_grant_app_cost,
+        event_credit_grant_app_ratio,
+        event_order_paid,
+        event_order_paid_purchase_amount,
+        event_order_paid_cost,
+        form_count,
+        form_cost,
+        form_action_ratio,
+        event_jin_jian_landing_page,
+        event_jin_jian_landing_page_cost,
+        event_credit_grant_landing_page,
+        event_credit_grant_landing_page_cost,
+        event_credit_grant_landing_ratio,
+        event_next_day_stay_cost,
+        event_next_day_stay_ratio,
+        event_next_day_stay,
+        play_3s_ratio,
+        @event_valid_clues,
+        @event_valid_clues_cost,
+        @ad_product_cnt,
+        @event_goods_view,
+        @merchant_reco_fans,
+        @event_order_amount_roi,
+        @event_goods_view_cost,
+        @merchant_reco_fans_cost,
+        @event_new_user_pay,
+        @event_new_user_pay_cost,
+        @event_new_user_pay_ratio,
+        @event_button_click,
+        @event_button_click_cost,
+        @event_button_click_ratio,
+        @play_5s_ratio,
+        @play_end_ratio,
+        @event_order_paid_roi,
+        @event_new_user_jinjian_app,
+        @event_new_user_jinjian_app_cost,
+        @event_new_user_jinjian_app_roi,
+        @event_new_user_credit_grant_app,
+        @event_new_user_credit_grant_app_cost,
+        @event_new_user_credit_grant_app_roi,
+        @event_new_user_jinjian_page,
+        @event_new_user_jinjian_page_cost,
+        @event_new_user_jinjian_page_roi,
+        @event_new_user_credit_grant_page,
+        @event_new_user_credit_grant_page_cost,
+        @event_new_user_credit_grant_page_roi,
+        @event_appoint_form,
+        @event_appoint_form_cost,
+        @event_appoint_form_ratio,
+        @event_appoint_jump_click,
+        @event_appoint_jump_click_cost,
+        @event_appoint_jump_click_ratio
+        )
+          set account_id = #{accountId}
+    </insert>
+
+    <select id="getPhotoList" resultType="cn.com.ctop.kuaishou.modules.report.entity.KuaiShouReportDailyMaterialVo">
+        select
+        id as id,
+        photo_id as photoId
+        from
+        ctop_kuaishou_report_daily_material
+        where account_id = #{accountId}
+        <if test="statDate != null and statDate != '' ">
+            and stat_date = #{statDate}
+        </if>
+    </select>
+
+    <select id="getVideoGetByPhotoId" resultType="cn.com.ctop.kuaishou.modules.report.entity.VideoGetvo">
+      select
+      signature as 'signature',
+      channel_type as 'channelType'
+      from ctop_kuaishou_video_get
+      where photo_id = #{photoId}
+      limit 1
+    </select>
+
+
+</mapper>

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

@@ -0,0 +1,14 @@
+package cn.com.ctop.kuaishou.modules.batch.service;
+
+import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouReportDailyMaterial;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 素材
+ * @Author: jeecg-boot
+ * @Date: 2020-09-09
+ * @Version: V1.0
+ */
+public interface IKuaiShouReportDailyMaterialService extends IService<KuaiShouReportDailyMaterial> {
+
+}

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

@@ -1,9 +1,11 @@
 package cn.com.ctop.kuaishou.modules.batch.service.impl;
 
 import cn.com.ctop.common.module.entity.MailLog;
+import cn.com.ctop.common.module.entity.Project;
 import cn.com.ctop.common.module.entity.UserAllocation;
 import cn.com.ctop.common.module.mapper.MailLogMapper;
 import cn.com.ctop.common.module.mapper.UserAllocationMapper;
+import cn.com.ctop.common.module.service.IProjectService;
 import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.CorpWexinUtils;
 import cn.com.ctop.common.module.utils.SendMailUtil;
@@ -28,6 +30,8 @@ public class AccountWarningServiceImpl implements IAccountWarningService {
     private UserAllocationMapper userAllocationMapper;
     @Autowired
     private MailLogMapper mailLogMapper;
+    @Autowired
+    private IProjectService projectService;
 
 
     /**
@@ -55,6 +59,7 @@ public class AccountWarningServiceImpl implements IAccountWarningService {
             if (userAllocation.getAccountStatus() == 1) {
                 return;
             }
+            Project project = projectService.getById(userAllocation.getProjectId());
             BigDecimal warningAmount = userAllocation.getWarningAmount();
             BigDecimal warningProportion = userAllocation.getWarningProportion();
             BigDecimal nowCost = hourlyAccountMapper.getCost(accountId, maxHour, statDate);
@@ -65,7 +70,7 @@ public class AccountWarningServiceImpl implements IAccountWarningService {
                         BigDecimal subtract = nowCost.subtract(lastHourCost);
                         BigDecimal divide = nowCost.divide(lastHourCost, 2, RoundingMode.HALF_UP);
                         if (subtract.compareTo(warningAmount) > -1 && divide.compareTo(warningProportion) > -1) {
-                            sendMessage(accountId, userAllocation.getAuthName(), maxHour, nowCost, userAllocation.getProjectId(), userAllocation.getProjectName());
+                            sendMessage(accountId, userAllocation.getAuthName(), maxHour, nowCost, userAllocation.getProjectId(), project.getProjectName());
                         }
                     }
                 }
@@ -77,7 +82,7 @@ public class AccountWarningServiceImpl implements IAccountWarningService {
                     BigDecimal subtract = nowCost.subtract(yesterdayHourCost);
                     BigDecimal divide = nowCost.divide(yesterdayHourCost, 2, RoundingMode.HALF_UP);
                     if (subtract.compareTo(warningAmount) > -1 && divide.compareTo(warningProportion) > -1) {
-                        sendYesterdayMessage(accountId, userAllocation.getAuthName(), maxHour, nowCost, userAllocation.getProjectId(), userAllocation.getProjectName());
+                        sendYesterdayMessage(accountId, userAllocation.getAuthName(), maxHour, nowCost, userAllocation.getProjectId(), project.getProjectName());
                     }
                 }
             }

+ 27 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouDailyReportTaskServiceImpl.java

@@ -3,7 +3,11 @@ package cn.com.ctop.kuaishou.modules.batch.service.impl;
 import cn.com.ctop.common.module.utils.*;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouDailyReportTask;
 import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouDailyReportTaskMapper;
+import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouReportDailyMaterialMapper;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouDailyReportTaskService;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouReportDailyMaterial;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouReportDailyMaterialVo;
+import cn.com.ctop.kuaishou.modules.report.entity.VideoGetvo;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportDailyCampaignMapper;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportDailyCreativeMapper;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportDailyGroupMapper;
@@ -44,6 +48,8 @@ public class KuaiShouDailyReportTaskServiceImpl extends ServiceImpl<KuaiShouDail
 
     @Autowired
     private KuaishouReportDailyCreativeMapper reportDailyCreativeMapper;
+    @Autowired
+    private KuaiShouReportDailyMaterialMapper kuaishouReportDailyMaterialMapper;
 
     @Override
     public void formatCreativeDailyReportData(Long accountId, String statDate) {
@@ -132,6 +138,27 @@ public class KuaiShouDailyReportTaskServiceImpl extends ServiceImpl<KuaiShouDail
                     XxlJobLogger.log("下载文件,accountId:{}", task.getAccountId());
                     reportDailyCreativeMapper.loadProgramCreativeDailyReport(task.getAccountId(), localPath);
                     XxlJobLogger.log("下载结束,accountId:{}", task.getAccountId());
+                } else if (task.getViewType() == 5) {
+                    kuaishouReportDailyMaterialMapper.loadMaterialDailyReport(task.getAccountId(), localPath);
+
+                    List<KuaiShouReportDailyMaterialVo> list = kuaishouReportDailyMaterialMapper.getPhotoList(task.getAccountId(), task.getStatDate());
+                    if (!Check.isNull(list)) {
+                        for (KuaiShouReportDailyMaterialVo materialVo : list) {
+                            Long id = materialVo.getId();
+                            Long photoId = materialVo.getPhotoId();
+                            VideoGetvo videoGetvo = kuaishouReportDailyMaterialMapper.getVideoGetByPhotoId(photoId);
+                            if (!Check.isNull(videoGetvo)) {
+                                KuaiShouReportDailyMaterial material = new KuaiShouReportDailyMaterial();
+                                material.setId(id);
+                                material.setSignature(videoGetvo.getSignature());
+                                material.setChannelType(videoGetvo.getChannelType());
+                                kuaishouReportDailyMaterialMapper.updateById(material);
+                            }
+                        }
+
+                    }
+
+
                 }
             }
 

+ 34 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouHistoryReportTaskServiceImpl.java

@@ -6,8 +6,12 @@ import cn.com.ctop.common.module.utils.*;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouDailyReportTask;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouHistoryReportTask;
 import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouHistoryReportTaskMapper;
+import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouReportDailyMaterialMapper;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouDailyReportTaskService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouHistoryReportTaskService;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouReportDailyMaterial;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouReportDailyMaterialVo;
+import cn.com.ctop.kuaishou.modules.report.entity.VideoGetvo;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportDailyAccountMapper;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportDailyCampaignMapper;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportDailyCreativeMapper;
@@ -58,6 +62,9 @@ public class KuaiShouHistoryReportTaskServiceImpl extends ServiceImpl<KuaiShouHi
     @Autowired
     private IKuaiShouDailyReportTaskService dailyReportTaskService;
 
+    @Autowired
+    private KuaiShouReportDailyMaterialMapper kuaishouReportDailyMaterialMapper;
+
     @Override
     public void createTask(Long accountId, String token, String startDate, String endDate, String taskType) {
         if (Check.isNull(accountId) || Check.isNull(token)) {
@@ -74,6 +81,7 @@ public class KuaiShouHistoryReportTaskServiceImpl extends ServiceImpl<KuaiShouHi
             JSONObject taskParams = new JSONObject();
             taskParams.put("start_date", startDate);
             taskParams.put("end_date", endDate);
+
             if (null != taskType && taskType.equals(CtopAdConstant.KUAISHOU_LOAD_JOB_TYPE_DAILY)) {
                 if (Check.isNull(dailyTypeList)) {
                     getDailyTypeList();
@@ -84,6 +92,7 @@ public class KuaiShouHistoryReportTaskServiceImpl extends ServiceImpl<KuaiShouHi
                     param.put("task_name", taskName);
                     taskParams.put("view_type", type);
                     param.put("task_params", taskParams);
+
                     String result = HttpUtils.kuaiShouhttpPostRequest(url, param.toJSONString(), headers);
                     JSONObject resultJson = JSONObject.parseObject(result);
                     if (!Check.isNull(resultJson)) {
@@ -223,7 +232,28 @@ public class KuaiShouHistoryReportTaskServiceImpl extends ServiceImpl<KuaiShouHi
                     reportDailyCreativeMapper.loadProgramCreativeDailyReport(task.getAccountId(), localPath);
                     XxlJobLogger.log("下载结束,accountId:{}", task.getAccountId());
                     // 程序化报表
+                } else if (task.getViewType() == 5) {
+                    kuaishouReportDailyMaterialMapper.loadMaterialDailyReport(task.getAccountId(), localPath);
+
+                    List<KuaiShouReportDailyMaterialVo> list = kuaishouReportDailyMaterialMapper.getPhotoList(task.getAccountId(), null);
+                    if (!Check.isNull(list)) {
+                        for (KuaiShouReportDailyMaterialVo materialVo : list) {
+                            Long id = materialVo.getId();
+                            Long photoId = materialVo.getPhotoId();
+                            VideoGetvo videoGetvo = kuaishouReportDailyMaterialMapper.getVideoGetByPhotoId(photoId);
+                            if (!Check.isNull(videoGetvo)) {
+                                KuaiShouReportDailyMaterial material = new KuaiShouReportDailyMaterial();
+                                material.setId(id);
+                                material.setSignature(videoGetvo.getSignature());
+                                material.setChannelType(videoGetvo.getChannelType());
+                                kuaishouReportDailyMaterialMapper.updateById(material);
+                            }
+                        }
+
+                    }
                 }
+
+
             }
             task.setTaskStatus(4);
 
@@ -237,11 +267,14 @@ public class KuaiShouHistoryReportTaskServiceImpl extends ServiceImpl<KuaiShouHi
 
 
     private void getHistoryTypeList() {
+
         historyTypeList = new ArrayList<>();
+
         historyTypeList.add(1);
         historyTypeList.add(2);
         historyTypeList.add(3);
         historyTypeList.add(4);
+        historyTypeList.add(5);
         historyTypeList.add(10);
     }
 
@@ -250,6 +283,7 @@ public class KuaiShouHistoryReportTaskServiceImpl extends ServiceImpl<KuaiShouHi
         dailyTypeList.add(2);
         dailyTypeList.add(3);
         dailyTypeList.add(4);
+        dailyTypeList.add(5);
         dailyTypeList.add(10);
     }
 

+ 19 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouReportDailyMaterialServiceImpl.java

@@ -0,0 +1,19 @@
+package cn.com.ctop.kuaishou.modules.batch.service.impl;
+
+import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouReportDailyMaterialMapper;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouReportDailyMaterialService;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouReportDailyMaterial;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 素材
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-09-09
+ */
+@Service
+public class KuaiShouReportDailyMaterialServiceImpl extends ServiceImpl<KuaiShouReportDailyMaterialMapper, KuaiShouReportDailyMaterial> implements IKuaiShouReportDailyMaterialService {
+
+}

+ 4 - 4
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/graphql/service/impl/KuaishouWebInterfaceServiceImpl.java

@@ -674,10 +674,10 @@ public class KuaishouWebInterfaceServiceImpl implements IKuaishouWebInterfaceSer
             e.printStackTrace();
         }
         ChromeOptions chromeOptions = new ChromeOptions();
-//        chromeOptions.addArguments("--headless");
-//        chromeOptions.addArguments("--no-sandbox");
-//        chromeOptions.addArguments("--disable-dev-shm-usage");
-//        chromeOptions.addArguments("--disable-gpu");
+        chromeOptions.addArguments("--headless");
+        chromeOptions.addArguments("--no-sandbox");
+        chromeOptions.addArguments("--disable-dev-shm-usage");
+        chromeOptions.addArguments("--disable-gpu");
         chromeOptions.addArguments("--window-size=1920,1080");
         chromeOptions.addArguments("--user-agent=" + HttpUtils2.USER_AGENT);
         chromeOptions.setAcceptInsecureCerts(true);

+ 419 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/KuaiShouReportDailyMaterial.java

@@ -0,0 +1,419 @@
+package cn.com.ctop.kuaishou.modules.report.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 素材
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-09-09
+ */
+@Data
+@TableName("ctop_kuaishou_report_daily_material")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_kuaishou_report_daily_material对象", description = "素材")
+public class KuaiShouReportDailyMaterial {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 账户ID
+     */
+    @Excel(name = "账户ID", width = 15)
+    @ApiModelProperty(value = "账户ID")
+    private Long accountId;
+    /**
+     * 计划ID
+     */
+    @Excel(name = "计划ID", width = 15)
+    @ApiModelProperty(value = "计划ID")
+    private Long photoId;
+    /**
+     * channelType
+     */
+    @Excel(name = "channelType", width = 15)
+    @ApiModelProperty(value = "channelType")
+    private Integer channelType;
+    /**
+     * signature
+     */
+    @Excel(name = "signature", width = 15)
+    @ApiModelProperty(value = "signature")
+    private String signature;
+    /**
+     * 封面token
+     */
+    @Excel(name = "封面token", width = 15)
+    @ApiModelProperty(value = "封面token")
+    private String imageToken;
+    /**
+     * 封面url
+     */
+    @Excel(name = "封面url", width = 15)
+    @ApiModelProperty(value = "封面url")
+    private String coverUrl;
+    /**
+     * 视频uel
+     */
+    @Excel(name = "视频uel", width = 15)
+    @ApiModelProperty(value = "视频uel")
+    private String photoUrl;
+    /**
+     * 素材类型
+     */
+    @Excel(name = "素材类型", width = 15)
+    @ApiModelProperty(value = "素材类型")
+    private String creativeMaterialTypeString;
+    /**
+     * 场景
+     */
+    @Excel(name = "场景", width = 15)
+    @ApiModelProperty(value = "场景")
+    private String adScene;
+    /**
+     * 花费(元)
+     */
+    @Excel(name = "花费(元)", width = 15)
+    @ApiModelProperty(value = "花费(元)")
+    private java.math.BigDecimal charge;
+    /**
+     * 曝光数
+     */
+    @Excel(name = "曝光数", width = 15)
+    @ApiModelProperty(value = "曝光数")
+    private Integer photoShow;
+    /**
+     * 素材曝光数
+     */
+    @Excel(name = "素材曝光数", width = 15)
+    @ApiModelProperty(value = "素材曝光数")
+    private Integer aclick;
+    /**
+     * 行为数
+     */
+    @Excel(name = "行为数", width = 15)
+    @ApiModelProperty(value = "行为数")
+    private Integer bclick;
+    /**
+     * 分享数
+     */
+    @Excel(name = "分享数", width = 15)
+    @ApiModelProperty(value = "分享数")
+    private Integer photoShare;
+    /**
+     * 评论数
+     */
+    @Excel(name = "评论数", width = 15)
+    @ApiModelProperty(value = "评论数")
+    private Integer photoComment;
+    /**
+     * 点赞数
+     */
+    @Excel(name = "点赞数", width = 15)
+    @ApiModelProperty(value = "点赞数")
+    private Integer photoLike;
+    /**
+     * 新增关注数
+     */
+    @Excel(name = "新增关注数", width = 15)
+    @ApiModelProperty(value = "新增关注数")
+    private Integer follow;
+    /**
+     * 取消关注数
+     */
+    @Excel(name = "取消关注数", width = 15)
+    @ApiModelProperty(value = "取消关注数")
+    private Integer cancelFollow;
+    /**
+     * 举报数
+     */
+    @Excel(name = "举报数", width = 15)
+    @ApiModelProperty(value = "举报数")
+    private Integer report;
+    /**
+     * 拉黑数
+     */
+    @Excel(name = "拉黑数", width = 15)
+    @ApiModelProperty(value = "拉黑数")
+    private Integer block;
+    /**
+     * 减少此类作品数
+     */
+    @Excel(name = "减少此类作品数", width = 15)
+    @ApiModelProperty(value = "减少此类作品数")
+    private Integer negative;
+    /**
+     * 应用下载数据-安卓下载开始数
+     */
+    @Excel(name = "应用下载数据-安卓下载开始数", width = 15)
+    @ApiModelProperty(value = "应用下载数据-安卓下载开始数")
+    private Integer downloadStarted;
+    /**
+     * 应用下载数据-安卓下载完成数
+     */
+    @Excel(name = "应用下载数据-安卓下载完成数", width = 15)
+    @ApiModelProperty(value = "应用下载数据-安卓下载完成数")
+    private Integer downloadCompleted;
+    /**
+     * 应用下载数据-激活数
+     */
+    @Excel(name = "应用下载数据-激活数", width = 15)
+    @ApiModelProperty(value = "应用下载数据-激活数")
+    private Integer activation;
+    /**
+     * 提交按钮点击数
+     */
+    @Excel(name = "提交按钮点击数", width = 15)
+    @ApiModelProperty(value = "提交按钮点击数")
+    private Integer submit;
+    /**
+     * 日期
+     */
+    @Excel(name = "日期", width = 15)
+    @ApiModelProperty(value = "日期")
+    private String statDate;
+    /**
+     * 封面点击数
+     */
+    @Excel(name = "封面点击数", width = 15)
+    @ApiModelProperty(value = "封面点击数")
+    private Integer photoClick;
+    /**
+     * 封面点击率
+     */
+    @Excel(name = "封面点击率", width = 15)
+    @ApiModelProperty(value = "封面点击率")
+    private Double photoClickRatio;
+    /**
+     * 行为率
+     */
+    @Excel(name = "行为率", width = 15)
+    @ApiModelProperty(value = "行为率")
+    private Double actionRatio;
+    /**
+     * 平均千次曝光花费(元)
+     */
+    @Excel(name = "平均千次曝光花费(元)", width = 15)
+    @ApiModelProperty(value = "平均千次曝光花费(元)")
+    private java.math.BigDecimal impression1kCost;
+    /**
+     * 平均点击单价(元)
+     */
+    @Excel(name = "平均点击单价(元)", width = 15)
+    @ApiModelProperty(value = "平均点击单价(元)")
+    private java.math.BigDecimal photoClickCost;
+    /**
+     * 平均行为单价(元)
+     */
+    @Excel(name = "平均行为单价(元)", width = 15)
+    @ApiModelProperty(value = "平均行为单价(元)")
+    private java.math.BigDecimal actionCost;
+    /**
+     * 应用下载数据-首日付费次数
+     */
+    @Excel(name = "应用下载数据-首日付费次数", width = 15)
+    @ApiModelProperty(value = "应用下载数据-首日付费次数")
+    private Integer eventPayFirstDay;
+    /**
+     * 应用下载数据-首日付费金额
+     */
+    @Excel(name = "应用下载数据-首日付费金额", width = 15)
+    @ApiModelProperty(value = "应用下载数据-首日付费金额")
+    private java.math.BigDecimal eventPayPurchaseAmountFirstDay;
+    /**
+     * 应用下载数据-首日ROI
+     */
+    @Excel(name = "应用下载数据-首日ROI", width = 15)
+    @ApiModelProperty(value = "应用下载数据-首日ROI")
+    private Double eventPayFirstDayRoi;
+    /**
+     * 应用下载数据-付费次数
+     */
+    @Excel(name = "应用下载数据-付费次数", width = 15)
+    @ApiModelProperty(value = "应用下载数据-付费次数")
+    private Integer eventPay;
+    /**
+     * 应用下载数据-付费金额
+     */
+    @Excel(name = "应用下载数据-付费金额", width = 15)
+    @ApiModelProperty(value = "应用下载数据-付费金额")
+    private java.math.BigDecimal eventPayPurchaseAmount;
+    /**
+     * 应用下载数据-ROI
+     */
+    @Excel(name = "应用下载数据-ROI", width = 15)
+    @ApiModelProperty(value = "应用下载数据-ROI")
+    private Double eventPayRoi;
+    /**
+     * 应用下载数据-注册数
+     */
+    @Excel(name = "应用下载数据-注册数", width = 15)
+    @ApiModelProperty(value = "应用下载数据-注册数")
+    private Integer eventRegister;
+    /**
+     * 应用下载数据-注册成本
+     */
+    @Excel(name = "应用下载数据-注册成本", width = 15)
+    @ApiModelProperty(value = "应用下载数据-注册成本")
+    private java.math.BigDecimal eventRegisterCost;
+    /**
+     * 应用下载数据-注册率
+     */
+    @Excel(name = "应用下载数据-注册率", width = 15)
+    @ApiModelProperty(value = "应用下载数据-注册率")
+    private Double eventRegisterRatio;
+    /**
+     * 应用下载数据-完件数
+     */
+    @Excel(name = "应用下载数据-完件数", width = 15)
+    @ApiModelProperty(value = "应用下载数据-完件数")
+    private Integer eventJinJianApp;
+    /**
+     * 应用下载数据-完件成本
+     */
+    @Excel(name = "应用下载数据-完件成本", width = 15)
+    @ApiModelProperty(value = "应用下载数据-完件成本")
+    private java.math.BigDecimal eventJinJianAppCost;
+    /**
+     * 应用下载数据-授信数
+     */
+    @Excel(name = "应用下载数据-授信数", width = 15)
+    @ApiModelProperty(value = "应用下载数据-授信数")
+    private Integer eventCreditGrantApp;
+    /**
+     * 应用下载数据-授信成本
+     */
+    @Excel(name = "应用下载数据-授信成本", width = 15)
+    @ApiModelProperty(value = "应用下载数据-授信成本")
+    private java.math.BigDecimal eventCreditGrantAppCost;
+    /**
+     * 应用下载数据-授信率
+     */
+    @Excel(name = "应用下载数据-授信率", width = 15)
+    @ApiModelProperty(value = "应用下载数据-授信率")
+    private Double eventCreditGrantAppRatio;
+    /**
+     * 应用下载数据-付款成功数
+     */
+    @Excel(name = "应用下载数据-付款成功数", width = 15)
+    @ApiModelProperty(value = "应用下载数据-付款成功数")
+    private Integer eventOrderPaid;
+    /**
+     * 应用下载数据-付款成功金额
+     */
+    @Excel(name = "应用下载数据-付款成功金额", width = 15)
+    @ApiModelProperty(value = "应用下载数据-付款成功金额")
+    private java.math.BigDecimal eventOrderPaidPurchaseAmount;
+    /**
+     * 落地页数据-落地页完件数
+     */
+    @Excel(name = "落地页数据-落地页完件数", width = 15)
+    @ApiModelProperty(value = "落地页数据-落地页完件数")
+    private Integer eventJinJianLandingPage;
+    /**
+     * 落地页数据-落地页完件成本
+     */
+    @Excel(name = "落地页数据-落地页完件成本", width = 15)
+    @ApiModelProperty(value = "落地页数据-落地页完件成本")
+    private java.math.BigDecimal eventJinJianLandingPageCost;
+    /**
+     * 落地页数据-落地页授信数
+     */
+    @Excel(name = "落地页数据-落地页授信数", width = 15)
+    @ApiModelProperty(value = "落地页数据-落地页授信数")
+    private Integer eventCreditGrantLandingPage;
+    /**
+     * 落地页数据-落地页授信成本
+     */
+    @Excel(name = "落地页数据-落地页授信成本", width = 15)
+    @ApiModelProperty(value = "落地页数据-落地页授信成本")
+    private java.math.BigDecimal eventCreditGrantLandingPageCost;
+    /**
+     * 落地页数据-落地页授信率
+     */
+    @Excel(name = "落地页数据-落地页授信率", width = 15)
+    @ApiModelProperty(value = "落地页数据-落地页授信率")
+    private Double eventCreditGrantLandingRatio;
+    /**
+     * 应用下载数据-次留成本(仅支持分日查询)
+     */
+    @Excel(name = "应用下载数据-次留成本(仅支持分日查询)", width = 15)
+    @ApiModelProperty(value = "应用下载数据-次留成本(仅支持分日查询)")
+    private java.math.BigDecimal eventNextDayStayCost;
+    /**
+     * 应用下载数据-次留率(仅支持分日查询)
+     */
+    @Excel(name = "应用下载数据-次留率(仅支持分日查询)", width = 15)
+    @ApiModelProperty(value = "应用下载数据-次留率(仅支持分日查询)")
+    private Integer eventNextDayStayRatio;
+    /**
+     * 落地页数据-表单提交点击率
+     */
+    @Excel(name = "落地页数据-表单提交点击率", width = 15)
+    @ApiModelProperty(value = "落地页数据-表单提交点击率")
+    private Double formActionRatio;
+    /**
+     * 应用下载数据-单次付款成本
+     */
+    @Excel(name = "应用下载数据-单次付款成本", width = 15)
+    @ApiModelProperty(value = "应用下载数据-单次付款成本")
+    private java.math.BigDecimal eventOrderPaidCost;
+    /**
+     * 应用下载数据-次留数(仅支持分日查询)
+     */
+    @Excel(name = "应用下载数据-次留数(仅支持分日查询)", width = 15)
+    @ApiModelProperty(value = "应用下载数据-次留数(仅支持分日查询)")
+    private Integer eventNextDayStay;
+    /**
+     * 落地页数据-表单提交单价
+     */
+    @Excel(name = "落地页数据-表单提交单价", width = 15)
+    @ApiModelProperty(value = "落地页数据-表单提交单价")
+    private java.math.BigDecimal formCost;
+    /**
+     * 落地页数据-表单提交数
+     */
+    @Excel(name = "落地页数据-表单提交数", width = 15)
+    @ApiModelProperty(value = "落地页数据-表单提交数")
+    private Integer formCount;
+    /**
+     * 3s播放率
+     */
+    @Excel(name = "3s播放率", width = 15)
+    @ApiModelProperty(value = "3s播放率")
+    private Double play3sRatio;
+    /**
+     * 创建时间
+     */
+    @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")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @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")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 34 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/KuaiShouReportDailyMaterialVo.java

@@ -0,0 +1,34 @@
+package cn.com.ctop.kuaishou.modules.report.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * 素材
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-09-09
+ */
+@Data
+
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class KuaiShouReportDailyMaterialVo {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @Excel(name = "计划ID", width = 15)
+    @ApiModelProperty(value = "计划ID")
+    private Long photoId;
+}

+ 13 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/VideoGetvo.java

@@ -0,0 +1,13 @@
+package cn.com.ctop.kuaishou.modules.report.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+@Data
+public class VideoGetvo implements Serializable {
+    private String signature;
+    private Integer channelType;
+
+}

+ 2 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaiShouDailyAgentMapper.java

@@ -23,4 +23,6 @@ public interface KuaiShouDailyAgentMapper extends BaseMapper<KuaiShouDailyAgent>
     KuaishouReportDailyAgentSum companyReportSum(@Param("startDate") String startDate, @Param("endDate") String endDate);
 
     List<KuaishouReportDailyAgent> companyReportAccountDetailList(@Param("date") String date, @Param("advertiserName") String advertiserName, @Param("isExportNullData") Integer o);
+
+    void replaceBatch(@Param(value = "list") List<KuaiShouDailyAgent> list);
 }

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

@@ -297,5 +297,51 @@
             </if>
         </trim>
     </insert>
+    <insert id="replaceBatch">
+        replace into ctop_kuaishou_daily_agent(
+        `date`,
+        `account_id`,
+        `kid`,
+        `advertiser_name`,
+        `advertiser_create_time`,
+        `cost_campaign_count`,
+        `balance`,
+        `cost`,
+        `xianjin_cost`,
+        `fandian_cost`,
+        `kuangfan_cost`,
+        `jili_cost`,
+        `xinyong_cost`,
+        `fengmian_show_count`,
+        `fengmian_click_count`,
+        `sucai_show_count`,
+        `convert_count`,
+        `fengmian_click_rate`,
+        `convert_click_rate`
+        )
+        values
+        <foreach collection="list" item="agent" separator=",">
+            (#{agent.date},
+            #{agent.accountId},
+            #{agent.kid},
+            #{agent.advertiserName},
+            #{agent.advertiserCreateTime},
+            #{agent.costCampaignCount},
+            #{agent.balance},
+            #{agent.cost},
+            #{agent.xianjinCost},
+            #{agent.fandianCost},
+            #{agent.kuangfanCost},
+            #{agent.jiliCost},
+            #{agent.xinyongCost},
+            #{agent.fengmianShowCount},
+            #{agent.fengmianClickCount},
+            #{agent.sucaiShowCount},
+            #{agent.convertCount},
+            #{agent.fengmianClickRate},
+            #{agent.convertClickRate})
+        </foreach>
 
-</mapper>
+    </insert>
+
+</mapper>

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

@@ -18,7 +18,6 @@
         t1.system_type systemType,
         t1.auth_name authName,
         ROUND(sum(t2.charge) / #{disCount},3) charge,
-        sum(t2.charge) charge,
         sum(t2.activation) activation,
         (
         case
@@ -68,7 +67,6 @@
         t1.system_type systemType,
         #{dateDesc} authName,
         ROUND(sum(t2.charge) / #{disCount},3) charge,
-        sum(t2.charge) charge,
         sum(t2.activation) activation,
         (
         case
@@ -84,7 +82,7 @@
         case
         when t1.system_type = 'android'
         then 16
-        when t1.system_type = 'IOS'
+        when t1.system_type = 'ios'
         then 23
         else 0
         end

+ 3 - 4
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouReportDailyAgentServiceImpl.java

@@ -54,6 +54,8 @@ public class KuaishouReportDailyAgentServiceImpl extends ServiceImpl<KuaishouRep
     @Autowired
     private KuaishouReportDailyAgentSumMapper kuaishouReportDailyAgentSumMapper;
     @Autowired
+    private KuaishouReportDailyAgentMapper kuaishouReportDailyAgentMapper;
+    @Autowired
     private KuaishouAgentAccountMapper kuaishouAgentAccountMapper;
     @Value("${jeecg.path.chrome-driver}")
     private String chromeDriver;
@@ -62,7 +64,7 @@ public class KuaishouReportDailyAgentServiceImpl extends ServiceImpl<KuaishouRep
 
     @Override
     public void replaceBatch(List<KuaiShouDailyAgent> list) {
-        for(KuaiShouDailyAgent agent:list){
+        for (KuaiShouDailyAgent agent:list) {
             kuaiShouDailyAgentMapper.insert(agent);
         }
     }
@@ -240,9 +242,6 @@ public class KuaishouReportDailyAgentServiceImpl extends ServiceImpl<KuaishouRep
     @Override
     public void getReport(String startDate, String endDate) {
         try {
-            if (!loginAgent()) {
-                return;
-            }
             String currentDate = startDate;
             Map<String, String> headerMap = new HashMap<>();
             headerMap.put("Accept", "application/json");

+ 50 - 0
module-oa/pom.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>jeecg-boot-parent</artifactId>
+        <groupId>org.jeecgframework.boot</groupId>
+        <version>2.0.2</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>cn.com.ctop</groupId>
+    <artifactId>module-oa</artifactId>
+    <name>module-oa</name>
+    <!-- FIXME change it to the project's website -->
+    <url>http://www.example.com</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.7</maven.compiler.source>
+        <maven.compiler.target>1.7</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>cn.com.ctop</groupId>
+            <artifactId>module-common</artifactId>
+            <version>2.0.2</version>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <resources>
+            <!-- 解决MyBatis配置文件引入问题 -->
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                    <include>**/*.xml</include>
+                </includes>
+                <!-- 是否替换资源中的属性-->
+                <filtering>false</filtering>
+            </resource>
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+        </resources>
+    </build>
+
+</project>

+ 0 - 0
module-oa/src/main/java/cn/com/ctop/oa/modules/constant/QYWxConstant.java


Some files were not shown because too many files changed in this diff