Procházet zdrojové kódy

商品库上传 优化

zhaotx před 1 rokem
rodič
revize
b32bcb89b4

+ 4 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/ReportsAdPushMapper.java

@@ -9,6 +9,10 @@ import java.util.Map;
 public interface ReportsAdPushMapper {
 
     List<JSONObject> selectUserList();
+    Map<String, String> allBusinessPushData(@Param("date") Long date);
+    List<Map<String, String>> allBusinessTopMovie(@Param("date") Long date);
+    JSONObject businessTypeData(@Param("date") Long date, @Param("businessTypes") List<Integer> businessTypes);
+
 
     //给老板的
     Map<String, String> tmpPushData(@Param("date") Long date);

+ 1 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceProductUpdateMapper.xml

@@ -86,6 +86,7 @@
         (select video_id from thirtpart.ly_third_videos where platform=2 and submission_status=2
         and video_id in (select video_id from thirtpart.ly_video_audit_records where audit_status=2))
         and id in (select video_id from thirtpart.ly_third_videos where platform=1)
+        and id not in (select ly_video_id from deepthink.bytedance_upload_album)
     </select>
     <select id="getDeveloperAccount" resultType="com.alibaba.fastjson.JSONObject">
         select app_id, secret as app_secret from deepthink.bytedance_auth_config where auth_status=1 limit 1

+ 62 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/ReportsAdPushMapper.xml

@@ -351,4 +351,66 @@
         on b.dept_id=c.dept_id
         where stat_datetime=${date} and b.dept_id=${deptId}
     </select>
+    <select id="allBusinessPushData" resultType="java.util.Map">
+        select concat(round(if(ifnull(sum(cost_amount),0)=0, 0, (ifnull(sum(iaa_amount),0)+ifnull(sum(pay_amount), 0))/sum(cost_amount)*100 ), 2), '%') AS water_roi,
+        concat(round(if(ifnull(sum(real_cost_amount),0)=0, 0, (ifnull(sum(share_iaa_amount),0)+ifnull(sum(share_pay_amount),0))/sum(real_cost_amount)*100), 2), '%') AS real_roi,
+        ifnull(sum(cost_amount),0) AS cost_amount,
+        round(ifnull(sum(pay_amount), 0), 2) AS pay_amount,
+        ifnull(sum(share_iaa_amount), 0) as share_iaa_amount,
+        ifnull(sum(share_iaa_amount), 0) + ifnull(sum(share_pay_amount), 0) - ifnull(round(sum(real_cost_amount), 2), 0) AS real_profit,
+        ifnull(sum(iaa_amount), 0) + ifnull(sum(pay_amount), 0) - ifnull(sum(cost_amount), 0) AS water_profit,
+        ifnull(sum(share_iaa_amount), 0) + ifnull(sum(share_pay_amount), 0) as end_amount,
+        date_format(update_time, '%Y-%m-%d %H:%i:%s') as update_time
+        from
+        (select sum(cost_amount) as cost_amount, sum(real_cost_amount) as real_cost_amount, max(update_time) as update_time
+        from application.media_ad_report_daily
+        where stat_date = #{date}
+        ) tb1,
+        (select sum(pay_amount) as pay_amount, sum(iaa_amount) as iaa_amount,
+        sum(share_iaa_amount) as share_iaa_amount, sum(share_pay_amount) as share_pay_amount
+        from application.user_data_report_daily
+        where stat_date = #{date}
+        ) tb2
+    </select>
+    <select id="allBusinessTopMovie" resultType="java.util.Map">
+        select tb4.standard_movie_id, tb4.standard_movie_name as movie_name, group_concat(distinct case tb4.movie_source when 2 then 2 else 1 end) as movie_source,
+        rank() over (order by sum(end_amount) desc) as rk,
+        sum(share_end_amount) as share_end_amount, sum(end_amount) as end_amount,  sum(cost_amount) as cost_amount, sum(real_cost_amount) as real_cost_amount,
+        concat(round(if(ifnull(sum(cost_amount),0)=0, 0, sum(end_amount)/sum(cost_amount)*100), 2), '%') AS water_roi,
+        concat(round(if(ifnull(sum(real_cost_amount),0)=0, 0, sum(share_end_amount)/sum(real_cost_amount)*100), 2), '%') AS real_roi
+        from
+        (select product_id from application.media_product_report_daily where stat_date=${date}
+        union select movie_id from application.user_data_report_daily where stat_date=${date}
+        ) tb1
+        left join
+        (select product_id, round(ifnull(sum(cost_amount),0),2) as cost_amount, sum(real_cost_amount) as real_cost_amount
+        from application.media_product_report_daily where stat_date=${date}
+        group by product_id
+        ) tb2 on tb1.product_id=tb2.product_id
+        left join
+        (select movie_id, ifnull(sum(iaa_amount), 0) + ifnull(sum(pay_amount), 0) as end_amount,
+        ifnull(sum(share_iaa_amount), 0) + ifnull(sum(share_pay_amount), 0) as share_end_amount
+        from application.user_data_report_daily where stat_date=${date}
+        group by movie_id
+        ) tb3 on tb1.product_id=tb3.movie_id
+        left join
+        (select moive_id, standard_movie_id, standard_movie_name, movie_source from deepthink.all_moive
+        ) tb4 on tb1.product_id=tb4.moive_id
+        where 1=1 and tb1.product_id!='-9999'
+        group by tb4.standard_movie_name
+        order by sum(end_amount) desc
+        limit 10
+    </select>
+    <select id="businessTypeData" resultType="com.alibaba.fastjson.JSONObject">
+        select ifnull(sum(share_pay_amount),0) as iap_end_amount,
+        ifnull(sum(share_iaa_amount),0) as iaa_end_amount
+        from application.user_data_report_daily where stat_date=${date}
+        and ma_appid in
+        (select app_id from deepthink.mini_app_info where business_type in
+        <if test="businessTypes != null and businessTypes.size > 0">
+            <foreach item="item" index="index" collection="businessTypes" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>)
+    </select>
 </mapper>

+ 9 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IReportsByBusinessPushService.java

@@ -0,0 +1,9 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+public interface IReportsByBusinessPushService {
+
+    void send();
+
+    void preSend();
+    void test();
+}

+ 12 - 10
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceProductUpdateServiceImpl.java

@@ -28,7 +28,7 @@ public class BytedanceProductUpdateServiceImpl implements IBytedanceProductUpdat
 
     @Override
     public void run() throws Exception {
-        List<String> errors = new ArrayList<>();
+        Set<String> errors = new HashSet<>();
         log.info("付费商品库更新中...");
         iapProductUpdate(errors);
         log.info("付费商品库更新完成");
@@ -36,8 +36,10 @@ public class BytedanceProductUpdateServiceImpl implements IBytedanceProductUpdat
         iaaProductUpdate(errors);
         log.info("免费商品库更新完成");
         if (!Check.isNull(errors)){
-            errors.add(0, "商品上传报错通知");
-            FeishuRobotUtil.sendTextToWebhook(StringUtils.join(errors, "\n"), HOOK_URL);
+            List<String> info = new ArrayList<>();
+            info.add("商品上传报错通知");
+            info.addAll(errors);
+            FeishuRobotUtil.sendTextToWebhook(StringUtils.join(info, "\n"), HOOK_URL);
         }
     }
 
@@ -114,7 +116,7 @@ public class BytedanceProductUpdateServiceImpl implements IBytedanceProductUpdat
      * 付费短剧更新
      * @param errorBlanket
      */
-    private void iapProductUpdate(List<String> errorBlanket){
+    private void iapProductUpdate(Set<String> errorBlanket){
         //IAP
         List<JSONObject> iapPlatformList = bytedanceProductUpdateMapper.getIAPPlatformList(); //商品库列表
         List<JSONObject> iapVideoList = bytedanceProductUpdateMapper.getIAPVideoList(); //剧目列表
@@ -174,7 +176,7 @@ public class BytedanceProductUpdateServiceImpl implements IBytedanceProductUpdat
      */
     private int uploadIapProduct(JSONObject platform, JSONObject album,
                                   Map<String, Map<String, String>> advertiserToLinkMap,
-                                  List<String> errorBlanket,
+                                  Set<String> errorBlanket,
                                   JSONObject productType){
         String url = "https://ad.oceanengine.com/open_api/2/dpa/product/update/";
         Map<String, String> headers = new HashMap<>();
@@ -250,7 +252,7 @@ public class BytedanceProductUpdateServiceImpl implements IBytedanceProductUpdat
         return code;
     }
 
-    private void iaaProductUpdate(List<String> errorBlanket){
+    private void iaaProductUpdate(Set<String> errorBlanket){
         //IAA
         List<JSONObject> iaaPlatformList = bytedanceProductUpdateMapper.getIAAPlatformList();
         List<JSONObject> iaaVideoList = bytedanceProductUpdateMapper.getIAAVideoList();
@@ -304,7 +306,7 @@ public class BytedanceProductUpdateServiceImpl implements IBytedanceProductUpdat
 
     private int uploadIaaProduct(JSONObject platform, JSONObject album, Map<String,
             Map<String, String>> advertiserToLinkMap,
-                                  List<String> errorBlanket,
+                                  Set<String> errorBlanket,
                                   JSONObject productType){
         String url = "https://ad.oceanengine.com/open_api/2/dpa/product/update/";
         Map<String, String> headers = new HashMap<>();
@@ -372,7 +374,7 @@ public class BytedanceProductUpdateServiceImpl implements IBytedanceProductUpdat
      * @param instanceId 字节小程序的实例ID
      * @return map key: album_id, value: 对应的字节小程序推广链接,sslocal开头
      */
-    private Map<String, String> getBytedancePlayletPromoteLink(String advertiserId, String accessToken, String instanceId, List<JSONObject> requests, List<String> errorBlanket){
+    private Map<String, String> getBytedancePlayletPromoteLink(String advertiserId, String accessToken, String instanceId, List<JSONObject> requests, Set<String> errorBlanket){
         JSONArray playletDetailInfo = getPlayletDetail(advertiserId, accessToken, instanceId, errorBlanket);
         if (playletDetailInfo == null || playletDetailInfo.isEmpty()){
             return null;
@@ -460,7 +462,7 @@ public class BytedanceProductUpdateServiceImpl implements IBytedanceProductUpdat
 
     }
 
-    private JSONArray getPlayletDetail(String advertiserId, String accessToken, String instanceId, List<String> errorBlanket) {
+    private JSONArray getPlayletDetail(String advertiserId, String accessToken, String instanceId, Set<String> errorBlanket) {
         String getPlayletDetailUrl = "https://api.oceanengine.com/open_api/v3.0/tools/asset_link/list/";
         getPlayletDetailUrl = getPlayletDetailUrl.replace("${ADVERTISER_ID}", advertiserId);
         getPlayletDetailUrl = getPlayletDetailUrl.replace("${INSTANCE_ID}", instanceId);
@@ -504,7 +506,7 @@ public class BytedanceProductUpdateServiceImpl implements IBytedanceProductUpdat
             return;
         }
         for (JSONObject vi : wxVideoInfos){
-            Long videoId = vi.getLong("video_id");
+            Long videoId = vi.getLong("id");
             String albumId = uploadAlbum(videoId, appId, appAccessToken);
             if (albumId == null){
                 info.add("上传短剧失败,videoId: " + videoId + ", 剧目名称: " + vi.getString("name"));

+ 282 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/ReportsByBusinessPushServiceImpl.java

@@ -0,0 +1,282 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.mapper.ReportsAdPushMapper;
+import cn.com.ctop.job.bytedance.data.service.IReportsByBusinessPushService;
+import cn.com.ctop.job.bytedance.data.utils.Check;
+import cn.com.ctop.job.bytedance.data.utils.DateUtils;
+import cn.com.ctop.job.bytedance.utils.FeishuRobotUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import javafx.util.Pair;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@Slf4j
+public class ReportsByBusinessPushServiceImpl implements IReportsByBusinessPushService {
+
+
+    public static final String APP_ID = "cli_a772633aaeff5013";
+    public static final String APP_KEY = "lEHaMdEoBVrrLNc5RtC11f8XsANnKgB4";
+    @Autowired
+    ReportsAdPushMapper reportsPushMapper;
+
+    private static final String TEMPLATE_VERSION = "1.0.0";
+    private static final String TEMPLATE_ID = "AAq4oeDXECopo";
+
+
+    /**
+     * 10点正式推送
+     */
+    @Override
+    public void send() {
+        List<String> userIds = Arrays.asList(
+                "44fbaed6" //zhaotx
+//                ,"ebeeced9" //yumeng
+//                ,"265g9ef1" //wangshu
+//                ,"ee518161" //zhaozhicheng
+//                ,"c5f6b59d" //yuyang
+//                ,"d834552b" //hemenghao
+//                ,"a3235a61" //louzijun
+//                ,"58e7a98a"  //xsq
+        );
+        List<String> chatid = Arrays.asList(
+                "oc_275f17aa4bf8fae649ef281a2b9250f6"
+        );
+        sendParam("", userIds, chatid);
+    }
+
+    /**
+     * 9点预推送给开发人员
+     */
+    @Override
+    public void preSend() {
+        List<String> userIds = Arrays.asList(
+                "44fbaed6" //zhaotx
+                ,"ebeeced9" //yumeng
+                ,"58e7a98a"  //xsq
+                ,"2ga9669f" //angaoqi
+                ,"43gb7fbc" //huangpingkang
+        );
+        List<String> chatid = Arrays.asList(
+        );
+        sendParam("暂不包含广点通当日数据", userIds, chatid);
+    }
+
+    @Override
+    public void test(){
+        sendParam("", Arrays.asList("44fbaed6"), Collections.EMPTY_LIST);
+    }
+
+
+    private void sendParam(String description, List<String> userIds, List<String> chatid){
+        String token;
+        try {
+            token = FeishuRobotUtil.getTenantToken(APP_ID, APP_KEY);
+        }catch (IOException e){
+            log.error("获取飞书token失败", e);
+            return;
+        }
+        //日期时间 - 统统以昨日为准
+        String today = DateUtils.getNowAddDate("yyyy-MM-dd", -1);
+        String lastDay = DateUtils.getNowAddDate("yyyy-MM-dd", -2);
+        Long todayLong = Long.parseLong(today.replaceAll("-", ""));
+        Long lastDayLong = Long.parseLong(lastDay.replaceAll("-", ""));
+
+        Map<String, String> todayData = reportsPushMapper.allBusinessPushData(todayLong);
+        Map<String, String> lastDayData = reportsPushMapper.allBusinessPushData(lastDayLong);
+
+        String updateTime = String.valueOf(todayData.get("update_time"));
+        List<Pair<String, String>> columns = Arrays.asList(
+                new Pair<>("cost_amount", "消耗金额"),
+                new Pair<>("end_amount", "结算金额"),
+                new Pair<>("pay_amount", "充值金额"),
+                new Pair<>("share_iaa_amount", "广告预估收入"),
+//                new Pair<>("water_roi", "流水ROI"),
+                new Pair<>("real_roi", "真实ROI"),
+//                new Pair<>("water_profit", "流水利润"),
+                new Pair<>("real_profit", "真实利润")
+        );
+        JSONArray dateIndicatorTable = new JSONArray();
+        for (Pair<String, String> column : columns) {
+            String key = column.getKey();
+            String name = column.getValue();
+            JSONObject obj = new JSONObject();
+            if (!name.contains("ROI")){
+                String todayDataValue = String.valueOf(todayData.getOrDefault(key, "0"));
+                String lastDayDataValue = String.valueOf(lastDayData.getOrDefault(key, "0"));
+                obj.put("indicatorName", name);
+                obj.put("todayData", todayDataValue);
+                obj.put("lastDayData", lastDayDataValue);
+                double todayDataDouble = Double.parseDouble(todayDataValue);
+                double lastDayDataDouble = Double.parseDouble(lastDayDataValue);
+                if (lastDayDataDouble != 0) {
+                    double rate = (todayDataDouble - lastDayDataDouble) / lastDayDataDouble * 100;
+                    String rateStr = String.format("%.2f%%", rate);
+                    obj.put("roundRate", rateStr);
+                    if (rate > 0.0){
+                        obj.put("rateColor", "red");
+                    }else if (rate < 0.0){
+                        obj.put("rateColor", "green");
+                    }
+                } else {
+                    obj.put("roundRate", "0.00%");
+                    obj.put("rateColor", "black");
+                }
+            }else {
+                String todayDataValue = String.valueOf(todayData.get(key));
+                String lastDayDataValue = String.valueOf(lastDayData.get(key));
+                obj.put("indicatorName", name);
+                obj.put("todayData", todayDataValue);
+                obj.put("lastDayData", lastDayDataValue);
+                obj.put("roundRate", "-");
+                obj.put("rateColor", "black");
+            }
+            dateIndicatorTable.add(obj);
+        }
+
+        List<Map<String, String>> movieData = reportsPushMapper.allBusinessTopMovie(todayLong);
+        JSONArray movieRankTable = new JSONArray();
+        for (Map<String, String> movie : movieData){
+            JSONObject obj = new JSONObject();
+            String movieSource = String.valueOf(movie.get("movie_source"));
+            String movieName = String.valueOf(movie.get("movie_name"));
+            if (!Check.isNull(movieSource) && movieSource.contains("1")){
+                obj.put("movieNameColor", "blue");
+            }else {
+                obj.put("movieNameColor", "grey");
+            }
+            obj.put("rank", String.valueOf(movie.get("rk")));
+            obj.put("movieName", movieName);
+            obj.put("endAmount", String.valueOf(movie.get("share_end_amount")));
+            obj.put("realROI", String.valueOf(movie.get("real_roi")));
+            movieRankTable.add(obj);
+        }
+
+        List<Map<String, String>> deptData = reportsPushMapper.deptRank2(todayLong);
+        JSONArray deptRank = new JSONArray();
+        for (Map<String, String> dept : deptData){
+            JSONObject obj = new JSONObject();
+            obj.put("rank", String.valueOf(dept.get("rk")));
+            obj.put("deptName", String.valueOf(dept.get("dept_name")));
+            obj.put("todayCost", String.valueOf(dept.get("cost_amount")));
+            obj.put("ROI", String.valueOf(dept.get("real_roi")));
+            deptRank.add(obj);
+        }
+
+        JSONObject allBusinessData = reportsPushMapper.businessTypeData(todayLong, Arrays.asList(2,4,6));
+        JSONObject b6 = reportsPushMapper.businessTypeData(todayLong, Arrays.asList(6));
+        JSONObject b4 = reportsPushMapper.businessTypeData(todayLong, Arrays.asList(4));
+        JSONObject b2 = reportsPushMapper.businessTypeData(todayLong, Arrays.asList(2));
+        JSONArray businessTypeTable = new JSONArray();
+        JSONObject allObj = new JSONObject();
+        allObj.put("type", "整体");
+        allObj.put("iap_end_amount", allBusinessData.getString("iap_end_amount"));
+        allObj.put("iaa_end_amount", allBusinessData.getString("iaa_end_amount"));
+        businessTypeTable.add(allObj);
+        JSONObject b6Obj = new JSONObject();
+        b6Obj.put("type", "达人");
+        b6Obj.put("iap_end_amount", b6.getString("iap_end_amount"));
+        b6Obj.put("iaa_end_amount", b6.getString("iaa_end_amount"));
+        businessTypeTable.add(b6Obj);
+        JSONObject b4Obj = new JSONObject();
+        b4Obj.put("type", "端原生");
+        b4Obj.put("iap_end_amount", b4.getString("iap_end_amount"));
+        b4Obj.put("iaa_end_amount", b4.getString("iaa_end_amount"));
+        businessTypeTable.add(b4Obj);
+        JSONObject b2Obj = new JSONObject();
+        b2Obj.put("type", "自分销");
+        b2Obj.put("iap_end_amount", b2.getString("iap_end_amount"));
+        b2Obj.put("iaa_end_amount", b2.getString("iaa_end_amount"));
+        businessTypeTable.add(b2Obj);
+
+
+
+        JSONObject template_variable = new JSONObject();
+        template_variable.put("updateTime", updateTime);
+        template_variable.put("todayDate", today);
+        template_variable.put("lastDayDate", lastDay);
+        template_variable.put("dateIndicatorTable", dateIndicatorTable);
+        template_variable.put("movieRankTable", movieRankTable);
+        template_variable.put("deptRank", deptRank);
+        template_variable.put("description", description);
+        template_variable.put("businessTypeList", businessTypeTable);
+
+
+        for (String userId : userIds) {
+            sendToFeishu(token, template_variable, userId);
+        }
+
+        for (String chat : chatid) {
+            sendToChatGroup(token, template_variable, chat);
+        }
+    }
+
+    private void sendToFeishu(String token, JSONObject template_variable, String receive_id) {
+        JSONObject content = new JSONObject();
+        JSONObject contentData = new JSONObject();
+        contentData.put("template_id",TEMPLATE_ID);
+        contentData.put("template_version_name", TEMPLATE_VERSION);
+        contentData.put("template_variable", template_variable);
+        content.put("type", "template");
+        content.put("data", contentData);
+
+        JSONObject request = new JSONObject();
+        request.put("receive_id", receive_id);
+        request.put("msg_type", "interactive");
+        request.put("content", content.toJSONString());
+        //发送
+        try (CloseableHttpClient client = HttpClients.createDefault()){
+            HttpPost httpPost = new HttpPost("https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=user_id");
+            httpPost.setHeader("Authorization", "Bearer "+token);
+            HttpEntity entity = new StringEntity(request.toJSONString(), "UTF-8");
+            httpPost.setEntity(entity);
+            httpPost.setHeader("Content-Type", "application/json; charset=utf-8");
+            CloseableHttpResponse respon = client.execute(httpPost);
+            System.out.println("发送结果: "+ EntityUtils.toString(respon.getEntity(), "UTF-8"));
+        }catch (IOException e){
+            log.error("发送飞书消息失败", e);
+        }
+    }
+
+    private void sendToChatGroup(String token, JSONObject template_variable, String chatid) {
+        JSONObject content = new JSONObject();
+        JSONObject contentData = new JSONObject();
+        contentData.put("template_id",TEMPLATE_ID);
+        contentData.put("template_version_name", TEMPLATE_VERSION);
+        contentData.put("template_variable", template_variable);
+        content.put("type", "template");
+        content.put("data", contentData);
+
+        JSONObject request = new JSONObject();
+        request.put("receive_id", chatid);
+        request.put("msg_type", "interactive");
+        request.put("content", content.toJSONString());
+        //发送
+        try (CloseableHttpClient client = HttpClients.createDefault()){
+            HttpPost httpPost = new HttpPost("https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=chat_id");
+            httpPost.setHeader("Authorization", "Bearer "+token);
+            HttpEntity entity = new StringEntity(request.toJSONString(), "UTF-8");
+            httpPost.setEntity(entity);
+            httpPost.setHeader("Content-Type", "application/json; charset=utf-8");
+            CloseableHttpResponse respon = client.execute(httpPost);
+            System.out.println("发送结果: "+ EntityUtils.toString(respon.getEntity(), "UTF-8"));
+        }catch (IOException e){
+            log.error("发送飞书消息失败", e);
+        }
+    }
+}

+ 18 - 5
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/FeishuPushJob.java

@@ -25,6 +25,8 @@ public class FeishuPushJob {
     IUserLoginRecordService userLoginRecordService;
     @Autowired
     ICutGroupRankPushService cutGroupRankPushService;
+    @Autowired
+    IReportsByBusinessPushService reportsByBusinessPushService;
 
     @XxlJob("unbindWarnPush")
     public void unbindWarnPush(){
@@ -34,40 +36,51 @@ public class FeishuPushJob {
     public void bindAppErrorWarnPush(){
         bindAppErrorWarnService.send();
     }
+
+    //投放战报
     @XxlJob("reportsAdPush")
     public void reportsAdPush(){
         reportsAdPushService.send();
     }
+
+    //优化师实时战报(小组排行榜)
     @XxlJob("optimizerRankPush")
     public void optimizerRankPush(){
         optimizerRankPushService.send();
     }
+
+    //优化师实时战绩
     @XxlJob("totalRankPush")
     public void totalRankPush(){
         totalRankPushService.send();
     }
+
+    //短剧业务概况(投放)
     @XxlJob("dateReportsPush")
     public void dateReportsPush(){
         dateReportsPushService.send();
     }
 
-    @XxlJob("loginRecordPush")
-    public void loginRecordPush(){
-        userLoginRecordService.queryUserLoginRecord();
-    }
-
+    //短剧业务概况预投放(12点)
     @XxlJob("preDateReportsPush")
     public void preDataReportsPush(){
         dateReportsPushService.send12hour();
     }
 
+    //短剧业务概况预投放-给开发
     @XxlJob("dataReportsToDeveloper")
     public void dataReportsToDeveloper(){
         dateReportsPushService.preSend();
     }
 
+    //剪辑排行榜
     @XxlJob("cutGroupRankPush")
     public void cutGroupRankPush(){
         cutGroupRankPushService.send();
     }
+
+    @XxlJob("loginRecordPush")
+    public void loginRecordPush(){
+        userLoginRecordService.queryUserLoginRecord();
+    }
 }