瀏覽代碼

Merge branch 'test'

# Conflicts:
#	jeecg-boot-module-system/src/main/resources/application-test.yml
#	jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
songyh 4 年之前
父節點
當前提交
5fcccee227

+ 32 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java

@@ -30,6 +30,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.common.annotation.Required;
 import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
@@ -131,9 +132,14 @@ public class SysUserController {
     }
 
     @RequestMapping(value = "/getAllUser", method = RequestMethod.GET)
-    public Result<Object> getAllUser(String status) {
+    public Result<Object> getAllUser(@RequestParam("status")String status,@RequestParam(name="userId",required = false )String userId) {
         try {
             List<SysUserVo> allUser = sysUserService.getAllUser(null, status);
+            if(!Check.isNull(userId)){
+                List<SysUserVo> mulUserList = treeCategoryData(allUser, userId);    //获取自己的下属id
+                allUser.removeAll(mulUserList);
+            }
+
             return Result.ok(allUser);
         } catch (Exception e) {
             e.printStackTrace();
@@ -141,6 +147,18 @@ public class SysUserController {
         return Result.error("查询失败");
     }
 
+    public List<SysUserVo> treeCategoryData(List<SysUserVo> allList, String leaderId) {
+        List<SysUserVo> mapList = new ArrayList<>();
+        for (SysUserVo vo : allList) {
+            if (leaderId.equals(vo.getLeaderId())){
+                mapList.add(vo);
+                mapList.addAll(treeCategoryData(allList,vo.getUserId()));
+            }
+        }
+        return mapList;
+
+    }
+
 
     /**
      * 获取用户列表数据
@@ -370,6 +388,18 @@ public class SysUserController {
             } else {
                 sysUser = sysUserService.queryPageList(sysUser).get(0);
                 SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class);
+
+                //汇报上级选择合法性校验:校验被修改人的汇报上级的汇报上级是不是本人
+                String leaderId = user.getLeaderId();
+                if(!Check.isNull(leaderId) && !sysUser.getLeaderId().equals(leaderId)){    //判断此次修改是否修改了leadId
+                    String leaderIdOfLeaderUser = sysUserService.getById(leaderId).getLeaderId();
+                    if(!Check.isNull(leaderIdOfLeaderUser) && leaderIdOfLeaderUser.equals(user.getId())){   //汇报上级的上级领导不为空,且恰好是自己构成了管理循环
+                        result.error500("要修改的汇报上级是自己的下属,请重新选择!");
+                        return result;
+                    }
+                }
+
+                //添加修改记录的日志
                 BytedanceOperationLog bytedanceOperationLog = new BytedanceOperationLog();
                 bytedanceOperationLog.setOldData(sysUser.toString());
                 bytedanceOperationLog.setNewData(user.toString());
@@ -382,7 +412,7 @@ public class SysUserController {
 
                 user.setLeaderName(user.getLeaderName().trim());
                 user.setUpdateTime(new Date());
-                user.setLeaderName(user.getLeaderName().trim());
+//                user.setLeaderName(user.getLeaderName().trim());
                 //String passwordEncode = PasswordUtil.encrypt(user.getUsername(), user.getPassword(), sysUser.getSalt());
                 user.setPassword(sysUser.getPassword());
                 String roles = jsonObject.getString("selectedroles");//用户角色

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

@@ -119,7 +119,7 @@ spring:
         min-idle: 0     #最小等待连接中的数量,设 0 为没有限制
       shutdown-timeout: 100ms
     password: hcst@2020
-    port: 637900
+    port: 6379
 #mybatis plus 设置
 mybatis-plus:
   mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml,classpath*:cn/com/ctop/**/xml/*Mapper.xml

+ 9 - 11
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -6,8 +6,8 @@ import cn.com.ctop.common.module.service.IBindAccountLoginService;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.kuaishou.modules.graphql.service.IKuaishouWebInterfaceService;
+import cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouAccountMaterialReportDaily;
 import cn.com.ctop.kuaishou.modules.report.mapper.EtlKuaishouAccountMaterialReportDailyMapper;
-import cn.com.ctop.kuaishou.modules.report.service.IEtlKuaishouAccountMaterialReportDailyService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportDailyImageService;
 import cn.com.ctop.oa.modules.service.IWechatNoListService;
 import cn.com.ctop.toutiao.modules.link.service.IETLReportBytedanceVideoService;
@@ -76,23 +76,19 @@ public class SampleTest {
     private IBytedanceReportService bytedanceReportService;
     @Autowired
     private IETLReportBytedanceVideoService etlReportBytedanceVideoService;
-    @Autowired
-    private IEtlKuaishouAccountMaterialReportDailyService materialReportDailyService;
 
     @Test
     public void loadKuaishouCookie() throws ParseException {
+        CtopOauthToken tokenByAccountId = tokenService.getTokenByAccountId(1700996735138951L);
+        advertiserDataService.getMaterialList(tokenByAccountId);
 
-        Date startDate = new Date();
-        for (int i = 1; i <= 2; i++) {
-            if (i == 1) {
-                continue;
-            }
-            System.err.println(DateUtils.addDay(new Date(), -i));
-            materialReportDailyService.etlKuaishouAccountMaterialReportInfo(DateUtils.formatDate(DateUtils.addDay(new Date(), -i)));
-        }
+        CtopOauthToken tokenByAccountId1 = tokenService.getTokenByAccountId(1700996735589383L);
+        advertiserDataService.getMaterialList(tokenByAccountId1);
     }
 
 
+
+
     @Test
     public void deleteKuaishouComment() {
         Long start = System.currentTimeMillis();
@@ -127,6 +123,7 @@ public class SampleTest {
     }
 
 
+
     @Test
     public void etlBytedanceVideoInfo() {
         String startDate = "2021-02-01";
@@ -150,6 +147,7 @@ public class SampleTest {
     }
 
 
+
     @Test
     public void formatVideoReportData() {
         for (int i = 1; i < 45; i++) {

+ 1 - 0
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/SysUserMapper.xml

@@ -91,6 +91,7 @@ SELECT
     <select id="getAllUser" resultType="cn.com.ctop.common.module.vo.SysUserVo">
         SELECT
         t1.id userId,
+        t1.leader_id,
         t1.username userName,
         t1.realname realName,
         (SELECT role_name FROM sys_role WHERE id = t2.role_id ) roleName

+ 2 - 0
module-common/src/main/java/cn/com/ctop/common/module/vo/SysUserVo.java

@@ -30,4 +30,6 @@ public class SysUserVo implements Serializable {
 
     private String roleName;
 
+    private String leaderId;
+
 }

+ 2 - 0
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceMaterialsLoadJob.java

@@ -53,7 +53,9 @@ public class BytedanceMaterialsLoadJob {
         } catch (InterruptedException e) {
             e.printStackTrace();
         }
+        //修改视频类型
         videoInfoService.updateMaterialType();
+        //修改图片类型
         imageInfoService.updateType();
         XxlJobHelper.log("物料数据同步完成");
     }

+ 19 - 0
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceRejectReasonJob.java

@@ -0,0 +1,19 @@
+package cn.com.ctop.job.bytedance.handler;
+
+import cn.com.ctop.common.module.utils.HttpUtils;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.jeecg.common.util.DateUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+@Component
+public class BytedanceRejectReasonJob {
+    private static final String URLPREFIX = "http://118.24.244.213:8808/bytedance-api/ctop/bytedanceRejectReason/getReasonInRecentHours?hour=";
+    @XxlJob("bytedanceRejectReasonJob")
+    public void execute() throws Exception {
+
+        //定时任务设置每2个小时执行一次,就传入参数hour是2.每次运行获取2个小时内的计划,拉取审核建议
+        HttpUtils.httpGet(URLPREFIX + 24, null, null);
+    }
+}

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

@@ -780,19 +780,28 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
 
     @Override
     public void loadKuaishouDataSingle(CtopOauthToken token) throws java.text.ParseException {
-        Date endDate = new Date();
-        for (int i = 0; i < 7; i++) {
-            Date getStartDate = DateUtils.addDay(endDate, -i);
+        String beginDateStr = allocationMapper.getUserAllocation(token.getAccountId()).getAuthBeginTime();
+        beginDateStr = Check.isNull(beginDateStr) ? DateUtils.formatDate(DateUtils.addDay(new Date(),-180),"yyyy-MM-dd") : beginDateStr;
+        Date beginDate = DateUtils.parseDate(beginDateStr,DateUtils.WEB_FORMAT);
+        Date endDate = DateUtils.addDay(new Date(),-1);
+        while (!beginDate.after(endDate)){
+            beginDate = DateUtils.addDay(beginDate,1);
+            getAdvertiserReportHourly(token, beginDate, beginDate);
+            getAdvertiserReportDaily(token, beginDate, beginDate, null);
+        }
+//        Date endDate = new Date();
+//        for (int i = 0; i < 7; i++) {
+//            Date getStartDate = DateUtils.addDay(endDate, -i);
             //1: 获取广告主信息数据
-            getAdvertiserReportHourly(token, getStartDate, getStartDate);
-            getAdvertiserReportDaily(token, getStartDate, getStartDate, null);
+//            getAdvertiserReportHourly(token, beginDate, endDate);
+//            getAdvertiserReportDaily(token, beginDate, endDate, null);
             //2:获取广告计划信息数据
-            // getAdvertiserCampaignReportHourly(token, getStartDate, getStartDate);
+            //getAdvertiserCampaignReportHourly(token, getStartDate, getStartDate);
             //3:获取广告组信息数据
             // getAdvertiserGroupReportHourly(token, getStartDate, getStartDate);
             //4: 获取广告创意信息数据
             // getAdvertiserCreativeReportHourly(token, getStartDate, getStartDate);
-        }
+//        }
         //获取全量广告计划数据
         getCampaignList(token, null, null);
         //获取全量广组主数据
@@ -801,9 +810,9 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
         getCreativeList(token, null, null);
         getAppList(token.getAccountId(), token.getAccessToken());
         log.info("----------------开始历史数据获取,accountId:{}", token.getAccountId());
-        String endDateStr = DateUtils.getDate("yyyy-MM-dd");
-        String startDate = DateUtils.addMonth(endDateStr, -1);
-        historyReportTaskService.createTask(token.getAccountId(), token.getAccessToken(), startDate, endDateStr, CtopAdConstant.KUAISHOU_LOAD_JOB_TYPE_HISTORY);
+        String endDateStr = DateUtils.formatDate(endDate,"yyyy-MM-dd");
+//        String startDate = DateUtils.addMonth(endDateStr, -1);
+        historyReportTaskService.createTask(token.getAccountId(), token.getAccessToken(), beginDateStr, endDateStr, CtopAdConstant.KUAISHOU_LOAD_JOB_TYPE_HISTORY);
         getVideoList(token, null, null);
         //   getSuZaoList(token.getAccessToken(), token.getAccountId(), 1, null, null);
         String nowDate = DateUtils.getNowDate("yyyy-MM-dd");

+ 6 - 1
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/mapper/BytedanceImageInfoMapper.java

@@ -16,7 +16,12 @@ public interface BytedanceImageInfoMapper extends BaseMapper<BytedanceImageInfo>
 
     void replaceBatch(@Param(value = "imageInfos")List<BytedanceImageInfo> imageInfos);
 
+    //大图竖图
     void updateImageVerticalType();
-
+    //大图横图
     void updateImageHorizonType();
+    //开屏
+    void updateImageUnionType();
+    //开屏 或者 竖图
+    //void updateImageUnionIOrVerticalType();
 }

+ 22 - 2
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/mapper/xml/BytedanceImageInfoMapper.xml

@@ -15,7 +15,8 @@
         signature,
         image_create_time,
         create_time,
-        update_time,image_url)
+        update_time,image_url,
+        file_name)
         values
         <foreach collection="imageInfos" item="imageInfo" separator=",">
             (#{imageInfo.id},
@@ -29,10 +30,28 @@
             #{imageInfo.signature},
             #{imageInfo.imageCreateTime},
             #{imageInfo.createTime},
-            #{imageInfo.updateTime},#{imageInfo.imageUrl})
+            #{imageInfo.updateTime},#{imageInfo.imageUrl},
+            #{imageInfo.fileName})
         </foreach>
     </insert>
 
+    <!-- 开屏 或者 竖图 -->
+    <update id="updateImageUnionIOrVerticalType">
+        update
+            ctop_bytedance_image_info
+        set type = 4
+        where width &lt; height and (type is null or type = 3)
+          and (width between 1080 and 1440)  and (height between 1920 and 2560)
+    </update>
+    <!-- 开屏 -->
+    <update id="updateImageUnionType">
+        update
+            ctop_bytedance_image_info
+        set type = 3
+        where width &lt; height and type is null
+          and width = 1080 and height = 1920
+    </update>
+    <!-- 大图竖图 -->
     <update id="updateImageVerticalType">
         update
             ctop_bytedance_image_info
@@ -40,6 +59,7 @@
         where height &gt; width and type is null
         and (height between 1280 and 2560)  and (width between 720 and 1440);
     </update>
+    <!-- 大图横图 -->
     <update id="updateImageHorizonType">
         update ctop_bytedance_image_info
             set type = 1

+ 3 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/IBytedanceImageInfoService.java

@@ -14,5 +14,8 @@ import java.util.List;
 public interface IBytedanceImageInfoService extends IService<BytedanceImageInfo> {
     void replaceBatch(List<BytedanceImageInfo> videoInfoList);
 
+    /**
+     * 清洗图片素材类型
+     */
     void updateType();
 }

+ 6 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/impl/BytedanceImageInfoServiceImpl.java

@@ -27,7 +27,13 @@ public class BytedanceImageInfoServiceImpl extends ServiceImpl<BytedanceImageInf
 
     @Override
     public void updateType() {
+        //大图竖图 -2
         imageInfoMapper.updateImageVerticalType();
+        //大图横图 -1
         imageInfoMapper.updateImageHorizonType();
+        //开屏-3
+        imageInfoMapper.updateImageUnionType();
+        //开屏 或者 竖图 -4
+        //imageInfoMapper.updateImageUnionIOrVerticalType();
     }
 }

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

@@ -74,7 +74,7 @@ public class ReportServiceImpl implements IReportService {
     private IByteDanceAdvertiserDataService advertiserDataService;
     @Autowired
     private IBytedanceInterfaceService bytedanceInterfaceService;
-    @Autowired
+    @Resource
     private UserAllocationMapper allocationMapper;
 
     @Override
@@ -444,24 +444,36 @@ public class ReportServiceImpl implements IReportService {
 
     @Override
     public void loadBytedanceHistoryData(CtopOauthToken token) {
-        for (int i = 1; i < 180; i++) {
-            Date getDate = DateUtils.addDay(new Date(),-i);
-            this.getAdvertiserCreativeReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
-            this.getAdvertiserPlanReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
-            this.getAdvertiserReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
-        }
-
         try {
+            String beginDateStr = allocationMapper.getUserAllocation(token.getAccountId()).getAuthBeginTime();
+            beginDateStr = Check.isNull(beginDateStr) ? DateUtils.formatDate(DateUtils.addDay(new Date(),-180),"yyyy-MM-dd") : beginDateStr;
+            Date beginDate = DateUtils.parseDate(beginDateStr,DateUtils.WEB_FORMAT);
+            Date endDate2 = DateUtils.addDay(new Date(),-1);
+            while (!beginDate.after(endDate2)){
+                beginDate = DateUtils.addDay(beginDate,1);
+    //        for (int i = 1; i < 180; i++) {
+    //            Date getDate = DateUtils.addDay(new Date(),1);
+                this.getAdvertiserCreativeReport(token, beginDate, beginDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
+                this.getAdvertiserPlanReport(token, beginDate, beginDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
+                this.getAdvertiserReport(token, beginDate, beginDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
+    //        }
+
+            }
+
+
             advertiserDataService.getMaterialList(token);
             log.info("获取历史素材报表:accountId:{}", token.getAccountId());
-            String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
-            String endDate = DateUtils.addDay(nowDate, -180);
+//            String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
+//            String endDate = DateUtils.addDay(nowDate, -180);
             SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
-            Date end = simpleDateFormat.parse(nowDate);
-            Date start = simpleDateFormat.parse(endDate);
-            List<Date> dates = DateUtils.findDates(start, end);
-            for (int i = 0; i < dates.size(); i++) {
-                String formatDate = simpleDateFormat.format(dates.get(i));
+//            Date end = simpleDateFormat.parse(nowDate);
+//            Date start = simpleDateFormat.parse(endDate);
+//            List<Date> dates = DateUtils.findDates(start, end);
+
+            beginDate = DateUtils.parseDate(beginDateStr,DateUtils.WEB_FORMAT);
+            while (!beginDate.after(endDate2)){
+                beginDate = DateUtils.addDay(beginDate,1);
+                String formatDate = simpleDateFormat.format(beginDate);
                 //试玩报表
                 bytedanceInterfaceService.bytedancePlayableReport(token,formatDate,formatDate);
                 //
@@ -472,8 +484,21 @@ public class ReportServiceImpl implements IReportService {
                     byteDanceVideoReportDailyService.videoInfoListByAccountId(formatDate, formatDate, token.getAccountId());
                 }
 
-                //
             }
+//            for (int i = 0; i < dates.size(); i++) {
+//                String formatDate = simpleDateFormat.format(dates.get(i));
+//                //试玩报表
+//                bytedanceInterfaceService.bytedancePlayableReport(token,formatDate,formatDate);
+//                //
+//                //素材报表
+//                int code = bytedanceReportService.bytedanceMaterialReport(token, formatDate, formatDate);
+//                //如果成功的话跑视频清洗数据方法,失败会进入重试库,重试成功后再清洗数据
+//                if (code == 200 || code == 1) {
+//                    byteDanceVideoReportDailyService.videoInfoListByAccountId(formatDate, formatDate, token.getAccountId());
+//                }
+//
+//                //
+//            }
         } catch (Exception e) {
             e.printStackTrace();
         }