Browse Source

Merge branch 'master' of codeup.aliyun.com:60c06368dbbed34fe0f0c263/job/hr_job-adq into pingkang

huangpingkang 11 tháng trước cách đây
mục cha
commit
1c330c7190

+ 12 - 4
job-adq/src/main/java/cn/com/ctop/job/adq/controller/AdqController.java

@@ -44,13 +44,21 @@ public class AdqController {
 
     @Autowired
     private IAdqFlowDetailsReportService adqFlowDetailsReportService;
+    @Autowired
+    private IAppBanWarnService appBanWarnService;
 
     @GetMapping("/testCreativeHour")
     public JSONObject testRefreshToken(Long advertiserId, String accessToken, String date) {
-        // accountReportService.getAdqAccountHour(advertiserId, accessToken, "2025-03-28", date, 1, 1);
-        accountReportService.getAdqAccountDaily(advertiserId, accessToken, "2025-03-27", date, 1, 1);
-        //    adqReportService.getAdqCreativeDaily(advertiserId, accessToken, "2025-03-27", date, 1, 1);
-        return null;
+
+            long currentTimeMillis = System.currentTimeMillis();
+            // 转换为秒级时间戳
+            long currentTimeSeconds = currentTimeMillis / 1000;
+            // 计算10分钟之前的时间戳(秒级)
+            long tenMinutesAgoSeconds = currentTimeSeconds - 600; // 10分钟前的时间戳(秒级)
+        System.err.println(tenMinutesAgoSeconds);
+            appBanWarnService.appBanWarnJob(tenMinutesAgoSeconds);
+            return null;
+
     }
 
 

+ 60 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/LySendMessageLog.java

@@ -0,0 +1,60 @@
+package cn.com.ctop.job.adq.data.entity;
+
+
+/**
+ * 【请填写功能名称】对象 adq_advertiser_list
+ *
+ * @author ruoyi
+ * @date 2025-03-03
+ */
+public class LySendMessageLog {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 管家账户ID
+     */
+    private Long id;
+
+    /**
+     * 广告主ID
+     */
+    private String appId;
+
+    /**
+     * 广告主名称
+     */
+    private String sendDate;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getAppId() {
+        return appId;
+    }
+
+    public void setAppId(String appId) {
+        this.appId = appId;
+    }
+
+    public String getSendDate() {
+        return sendDate;
+    }
+
+    public void setSendDate(String sendDate) {
+        this.sendDate = sendDate;
+    }
+
+    @Override
+    public String toString() {
+        return "LySendMessageLog{" +
+                "id=" + id +
+                ", appId='" + appId + '\'' +
+                ", sendDate='" + sendDate + '\'' +
+                '}';
+    }
+}

+ 15 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/AppBanWarnMapper.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.job.adq.data.mapper;
+
+import cn.com.ctop.job.adq.data.entity.LySendMessageLog;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface AppBanWarnMapper {
+    List<JSONObject> getAppBanList(@Param("createAt") long createAt);
+
+    void insertSendLog(LySendMessageLog sendMessageLog);
+
+    Integer checkNum(@Param("appId") String appId, @Param("date") String date);
+}

+ 31 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/xml/AppBanWarnMapper.xml

@@ -0,0 +1,31 @@
+<?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.job.adq.data.mapper.AppBanWarnMapper">
+    <insert id="insertSendLog">
+        replace into thirtpart.ly_send_message_log
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="appId != null">app_id,</if>
+            <if test="sendDate != null">send_date,</if>
+
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="appId != null">#{appId},</if>
+            <if test="sendDate != null">#{sendDate},</if>
+        </trim>
+    </insert>
+
+
+    <select id="getAppBanList" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT t1.app_id AS 'appId', t2.name AS 'appName', t1.num AS 'num'
+        FROM (SELECT app_id, COUNT(1) AS 'num'
+              FROM thirtpart.ly_ad_message_log
+              WHERE `output` LIKE '%{"errCode":1007}%'
+                AND created_at >= #{createAt}) t1
+                 LEFT JOIN thirtpart.ly_applet t2
+                           ON t1.app_id = t2.app_id
+    </select>
+    <select id="checkNum" resultType="java.lang.Integer">
+        select count(1) from thirtpart.ly_send_message_log where app_id = #{appId} and send_date = #{date}
+    </select>
+</mapper>
+

+ 5 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/IAppBanWarnService.java

@@ -0,0 +1,5 @@
+package cn.com.ctop.job.adq.data.service;
+
+public interface IAppBanWarnService {
+    void appBanWarnJob(long tenMinutesAgoSeconds);
+}

+ 80 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/AppBanWarnServiceImpl.java

@@ -0,0 +1,80 @@
+package cn.com.ctop.job.adq.data.service.impl;
+
+import cn.com.ctop.job.adq.data.entity.LySendMessageLog;
+import cn.com.ctop.job.adq.data.mapper.AppBanWarnMapper;
+import cn.com.ctop.job.adq.data.service.IAppBanWarnService;
+import cn.com.ctop.job.adq.data.utils.Check;
+import cn.com.ctop.job.adq.data.utils.DateUtils;
+import cn.com.ctop.job.adq.data.utils.HttpUtils;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@Slf4j
+public class AppBanWarnServiceImpl implements IAppBanWarnService {
+    @Autowired
+    private AppBanWarnMapper appBanWarnMapper;
+
+    @Override
+    public void appBanWarnJob(long createAt) {
+        String date = DateUtils.getNowDate("yyyyMMdd");
+        List<JSONObject> list = appBanWarnMapper.getAppBanList(createAt);
+        if (Check.isNull(list)) {
+            return;
+        }
+        for (int i = 0; i < list.size(); i++) {
+            JSONObject jsonObject = list.get(i);
+            String appId = jsonObject.getString("appId");
+            if(Check.isNull(appId)){
+                continue;
+            }
+            String appName = jsonObject.getString("appName");
+            String num = jsonObject.getString("num");
+            Integer sendNum = appBanWarnMapper.checkNum(appId, date);
+            if (sendNum == 0) {
+                JSONObject returnJson = sendMessage(appId, appName, num);
+                if (!Check.isNull(returnJson)) {
+                    Integer statusCode = returnJson.getInteger("StatusCode");
+                    Integer code = returnJson.getInteger("code");
+                    if (code == 0 && statusCode == 0) {
+                        LySendMessageLog sendMessageLog = new LySendMessageLog();
+                        sendMessageLog.setAppId(appId);
+                        sendMessageLog.setSendDate(date);
+                        appBanWarnMapper.insertSendLog(sendMessageLog);
+                    }
+                }
+            } else {
+                log.info("此应用今日已经发送预警,此次跳过,appid:{},date:{}", appId, date);
+            }
+        }
+    }
+
+
+    public JSONObject sendMessage(String appId, String appName, String num) {
+        String url = "https://open.feishu.cn/open-apis/bot/v2/hook/f7278c1e-0455-40d9-8893-d09d7936eca4";
+        // String url = "https://open.feishu.cn/open-apis/bot/v2/hook/bb4853d2-9740-4007-a0c2-92ec319c914e";
+        JSONObject param = new JSONObject();
+        param.put("msg_type", "interactive");
+        JSONObject card = new JSONObject();
+        card.put("type", "template");
+        JSONObject data = new JSONObject();
+        data.put("template_id", "AAqdt9MmVURPx");
+        JSONObject template_variable = new JSONObject();
+        template_variable.put("appId", appId);
+        template_variable.put("appName", appName);
+        template_variable.put("num", num);
+
+
+        data.put("template_variable", template_variable);
+        card.put("data", data);
+        param.put("card", card);
+        String s = HttpUtils.httpPostRequest(url, param, null);
+        JSONObject jsonObject = JSONObject.parseObject(s);
+        return jsonObject;
+
+    }
+}

+ 33 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/handler/appBanWarnJob.java

@@ -0,0 +1,33 @@
+package cn.com.ctop.job.adq.handler;
+
+import cn.com.ctop.job.adq.data.service.IAdqFlowDetailsReportService;
+import cn.com.ctop.job.adq.data.service.IAppBanWarnService;
+import cn.com.ctop.job.adq.data.utils.Check;
+import cn.com.ctop.job.adq.data.utils.DateUtils;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+
+@Slf4j
+@Component
+public class appBanWarnJob {
+@Autowired
+private IAppBanWarnService appBanWarnService;
+
+    @XxlJob("appBanWarnJob")
+    public void appBanWarnJob() throws Exception {
+        long currentTimeMillis = System.currentTimeMillis();
+        // 转换为秒级时间戳
+        long currentTimeSeconds = currentTimeMillis / 1000;
+        // 计算10分钟之前的时间戳(秒级)
+        long tenMinutesAgoSeconds = currentTimeSeconds - 600; // 10分钟前的时间戳(秒级)
+        appBanWarnService.appBanWarnJob(tenMinutesAgoSeconds);
+    }
+
+}