Parcourir la source

增加自动回复视频失效报警

xueyiming il y a 3 mois
Parent
commit
378f01fc14
17 fichiers modifiés avec 179 ajouts et 45 suppressions
  1. 2 2
      api-module/src/main/java/com/tzld/piaoquan/api/controller/AccountDetailController.java
  2. 4 4
      api-module/src/main/java/com/tzld/piaoquan/api/service/impl/CgiReplyServiceImpl.java
  3. 5 5
      api-module/src/main/java/com/tzld/piaoquan/api/service/impl/GhDetailServiceImpl.java
  4. 4 4
      api-module/src/main/java/com/tzld/piaoquan/api/service/impl/ThirdPartyServiceImpl.java
  5. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/BuckStrategyV1.java
  6. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/ThirdPartyPushMessageStrategyV1.java
  7. 2 2
      api-module/src/main/resources/application-test.properties
  8. 1 1
      common-module/src/main/java/com/tzld/piaoquan/growth/common/common/enums/GhTypeEnum.java
  9. 1 1
      common-module/src/main/java/com/tzld/piaoquan/growth/common/common/enums/StrategyStatusEnum.java
  10. 3 1
      common-module/src/main/java/com/tzld/piaoquan/growth/common/dao/mapper/CgiReplyBucketDataMapper.java
  11. 10 4
      common-module/src/main/java/com/tzld/piaoquan/growth/common/dao/mapper/GhDetailMapper.java
  12. 1 1
      common-module/src/main/java/com/tzld/piaoquan/growth/common/model/po/GhDetail.java
  13. 1 1
      common-module/src/main/java/com/tzld/piaoquan/growth/common/model/po/GhDetailExample.java
  14. 16 0
      common-module/src/main/java/com/tzld/piaoquan/growth/common/utils/LarkRobotUtil.java
  15. 14 8
      common-module/src/main/resources/mapper/CgiReplyBucketDataMapper.xml
  16. 9 9
      common-module/src/main/resources/mapper/GhDetailMapper.xml
  17. 104 0
      offline-module/src/main/java/com/tzld/piaoquan/offline/job/AutoReplyVideoDataJob.java

+ 2 - 2
api-module/src/main/java/com/tzld/piaoquan/api/controller/AccountDetailController.java

@@ -1,7 +1,7 @@
 package com.tzld.piaoquan.api.controller;
 
-import com.tzld.piaoquan.api.common.enums.GhTypeEnum;
-import com.tzld.piaoquan.api.common.enums.StrategyStatusEnum;
+import com.tzld.piaoquan.growth.common.common.enums.GhTypeEnum;
+import com.tzld.piaoquan.growth.common.common.enums.StrategyStatusEnum;
 import com.tzld.piaoquan.api.model.vo.GhDetailVo;
 import com.tzld.piaoquan.api.model.vo.GhTypeVo;
 import com.tzld.piaoquan.api.model.vo.StrategyStatusVo;

+ 4 - 4
api-module/src/main/java/com/tzld/piaoquan/api/service/impl/CgiReplyServiceImpl.java

@@ -1,13 +1,13 @@
 package com.tzld.piaoquan.api.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
-import com.tzld.piaoquan.api.common.enums.GhTypeEnum;
+import com.tzld.piaoquan.growth.common.common.enums.GhTypeEnum;
 import com.tzld.piaoquan.api.common.enums.ReplyStrategyServiceEnum;
-import com.tzld.piaoquan.api.dao.mapper.GhDetailMapper;
+import com.tzld.piaoquan.growth.common.dao.mapper.GhDetailMapper;
 import com.tzld.piaoquan.api.model.bo.BucketDataParam;
 import com.tzld.piaoquan.api.model.bo.ReplyBucketData;
-import com.tzld.piaoquan.api.model.po.GhDetail;
-import com.tzld.piaoquan.api.model.po.GhDetailExample;
+import com.tzld.piaoquan.growth.common.model.po.GhDetail;
+import com.tzld.piaoquan.growth.common.model.po.GhDetailExample;
 import com.tzld.piaoquan.api.service.CgiReplyService;
 import com.tzld.piaoquan.api.service.strategy.ReplyStrategyService;
 import com.tzld.piaoquan.growth.common.utils.LarkRobotUtil;

+ 5 - 5
api-module/src/main/java/com/tzld/piaoquan/api/service/impl/GhDetailServiceImpl.java

@@ -1,11 +1,11 @@
 package com.tzld.piaoquan.api.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
-import com.tzld.piaoquan.api.common.enums.GhTypeEnum;
-import com.tzld.piaoquan.api.common.enums.StrategyStatusEnum;
-import com.tzld.piaoquan.api.dao.mapper.GhDetailMapper;
-import com.tzld.piaoquan.api.model.po.GhDetail;
-import com.tzld.piaoquan.api.model.po.GhDetailExample;
+import com.tzld.piaoquan.growth.common.common.enums.GhTypeEnum;
+import com.tzld.piaoquan.growth.common.common.enums.StrategyStatusEnum;
+import com.tzld.piaoquan.growth.common.dao.mapper.GhDetailMapper;
+import com.tzld.piaoquan.growth.common.model.po.GhDetail;
+import com.tzld.piaoquan.growth.common.model.po.GhDetailExample;
 import com.tzld.piaoquan.api.model.vo.GhDetailVo;
 import com.tzld.piaoquan.api.service.GhDetailService;
 import com.tzld.piaoquan.growth.common.common.base.CommonResponse;

+ 4 - 4
api-module/src/main/java/com/tzld/piaoquan/api/service/impl/ThirdPartyServiceImpl.java

@@ -3,13 +3,13 @@ package com.tzld.piaoquan.api.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.aliyun.odps.data.Record;
-import com.tzld.piaoquan.api.common.enums.GhTypeEnum;
+import com.tzld.piaoquan.growth.common.common.enums.GhTypeEnum;
 import com.tzld.piaoquan.api.common.enums.ReplyStrategyServiceEnum;
 import com.tzld.piaoquan.api.common.enums.SecretEnum;
-import com.tzld.piaoquan.api.dao.mapper.GhDetailMapper;
+import com.tzld.piaoquan.growth.common.dao.mapper.GhDetailMapper;
 import com.tzld.piaoquan.api.model.bo.*;
-import com.tzld.piaoquan.api.model.po.GhDetail;
-import com.tzld.piaoquan.api.model.po.GhDetailExample;
+import com.tzld.piaoquan.growth.common.model.po.GhDetail;
+import com.tzld.piaoquan.growth.common.model.po.GhDetailExample;
 import com.tzld.piaoquan.api.model.vo.PushMessageParam;
 import com.tzld.piaoquan.api.model.vo.PushMessageVo;
 import com.tzld.piaoquan.api.model.vo.ReportUvVo;

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/BuckStrategyV1.java

@@ -6,7 +6,7 @@ import com.tzld.piaoquan.api.common.enums.ReplyStrategyServiceEnum;
 import com.tzld.piaoquan.api.component.TouLiuHttpClient;
 import com.tzld.piaoquan.api.dao.mapper.AlgGhAutoreplyVideoRankDataMapper;
 import com.tzld.piaoquan.growth.common.dao.mapper.CgiReplyBucketDataMapper;
-import com.tzld.piaoquan.api.dao.mapper.GhDetailMapper;
+import com.tzld.piaoquan.growth.common.dao.mapper.GhDetailMapper;
 import com.tzld.piaoquan.api.model.bo.*;
 import com.tzld.piaoquan.api.model.po.AlgGhAutoreplyVideoRankData;
 import com.tzld.piaoquan.api.model.po.AlgGhAutoreplyVideoRankDataExample;

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/ThirdPartyPushMessageStrategyV1.java

@@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 
 import com.tzld.piaoquan.api.common.enums.ReplyStrategyServiceEnum;
-import com.tzld.piaoquan.api.common.enums.StrategyStatusEnum;
+import com.tzld.piaoquan.growth.common.common.enums.StrategyStatusEnum;
 import com.tzld.piaoquan.api.component.TouLiuHttpClient;
 import com.tzld.piaoquan.api.dao.mapper.AlgGhAutoreplyVideoRankDataMapper;
 import com.tzld.piaoquan.growth.common.dao.mapper.CgiReplyBucketDataMapper;

+ 2 - 2
api-module/src/main/resources/application-test.properties

@@ -12,8 +12,8 @@ xxl.job.admin.addresses=http://xxl-job-test-internal.piaoquantv.com/xxl-job-admi
 
 small_page_url=https://testapi.piaoquantv.com
 
-pushMessage.callback.topic=3rd_party_push_message_callback_prod
-pushMessage.callback.groupId=GID_3RD_PARTY_PUSH_MESSAGE_CALLBACK_PROD
+pushMessage.callback.topic=3rd_party_push_message_callback_dev
+pushMessage.callback.groupId=GID_3RD_PARTY_PUSH_MESSAGE_CALLBACK_DEV
 pushMessage.callback.tag=mini
 
 apollo.meta: http://apolloconfig-internal.piaoquantv.com

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/common/enums/GhTypeEnum.java → common-module/src/main/java/com/tzld/piaoquan/growth/common/common/enums/GhTypeEnum.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.api.common.enums;
+package com.tzld.piaoquan.growth.common.common.enums;
 
 import java.util.Objects;
 

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/common/enums/StrategyStatusEnum.java → common-module/src/main/java/com/tzld/piaoquan/growth/common/common/enums/StrategyStatusEnum.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.api.common.enums;
+package com.tzld.piaoquan.growth.common.common.enums;
 
 import java.util.Objects;
 

+ 3 - 1
common-module/src/main/java/com/tzld/piaoquan/growth/common/dao/mapper/CgiReplyBucketDataMapper.java

@@ -1,13 +1,13 @@
 package com.tzld.piaoquan.growth.common.dao.mapper;
 
 
-
 import com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketData;
 import com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketDataExample;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+
 @Mapper
 public interface CgiReplyBucketDataMapper {
     long countByExample(CgiReplyBucketDataExample example);
@@ -31,4 +31,6 @@ public interface CgiReplyBucketDataMapper {
     int updateByPrimaryKeySelective(CgiReplyBucketData row);
 
     int updateByPrimaryKey(CgiReplyBucketData row);
+
+    List<Long> selectVideoId();
 }

+ 10 - 4
api-module/src/main/java/com/tzld/piaoquan/api/dao/mapper/GhDetailMapper.java → common-module/src/main/java/com/tzld/piaoquan/growth/common/dao/mapper/GhDetailMapper.java

@@ -1,10 +1,16 @@
-package com.tzld.piaoquan.api.dao.mapper;
+package com.tzld.piaoquan.growth.common.dao.mapper;
 
-import com.tzld.piaoquan.api.model.po.GhDetail;
-import com.tzld.piaoquan.api.model.po.GhDetailExample;
-import java.util.List;
+
+import com.tzld.piaoquan.growth.common.model.po.GhDetail;
+import com.tzld.piaoquan.growth.common.model.po.GhDetailExample;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
 
+@Mapper
+@Repository
 public interface GhDetailMapper {
     long countByExample(GhDetailExample example);
 

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/model/po/GhDetail.java → common-module/src/main/java/com/tzld/piaoquan/growth/common/model/po/GhDetail.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.api.model.po;
+package com.tzld.piaoquan.growth.common.model.po;
 
 import java.util.Date;
 

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/model/po/GhDetailExample.java → common-module/src/main/java/com/tzld/piaoquan/growth/common/model/po/GhDetailExample.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.api.model.po;
+package com.tzld.piaoquan.growth.common.model.po;
 
 
 import com.tzld.piaoquan.growth.common.utils.page.Page;

+ 16 - 0
common-module/src/main/java/com/tzld/piaoquan/growth/common/utils/LarkRobotUtil.java

@@ -19,6 +19,8 @@ public class LarkRobotUtil {
 
     private static final String TIP_URL = "https://open.feishu.cn/open-apis/bot/v2/hook/0eb8793a-5bb3-43d7-aa74-fed1c91e3d9b";
 
+    private static final String AUTO_REPLY_VIDEO_URL = "https://open.feishu.cn/open-apis/bot/v2/hook/0d80b7dc-47d1-4c27-a7e1-97f2fb6ba26e";
+
     private static final HttpPoolClientUtil HTTP_POOL_CLIENT_UTIL_DEFAULT = HttpClientUtil.create(3000, 10000, 20, 100, 3, 3000);
 
 
@@ -60,6 +62,20 @@ public class LarkRobotUtil {
         }
     }
 
+
+    public static void sendAutoReplyVideoMessage(String msg) {
+        try {
+            JSONObject param = new JSONObject();
+            param.put("msg_type", "text");
+            JSONObject content = new JSONObject();
+            content.put("text", msg);
+            param.put("content", content);
+            HTTP_POOL_CLIENT_UTIL_DEFAULT.post(AUTO_REPLY_VIDEO_URL, param.toJSONString());
+        } catch (Exception e) {
+            log.error("Lark sendMessage error", e);
+        }
+    }
+
     private static String getSign(long timestamp) throws NoSuchAlgorithmException, InvalidKeyException {
         //把timestamp+"\n"+密钥当做签名字符串
         String stringToSign = timestamp + "\n" + SECRET;

+ 14 - 8
common-module/src/main/resources/mapper/CgiReplyBucketDataMapper.xml

@@ -1,7 +1,7 @@
 <?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="com.tzld.piaoquan.growth.common.dao.mapper.CgiReplyBucketDataMapper">
-  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.api.model.po.CgiReplyBucketData">
+  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketData">
     <id column="id" jdbcType="BIGINT" property="id" />
     <result column="strategy" jdbcType="VARCHAR" property="strategy" />
     <result column="sort" jdbcType="INTEGER" property="sort" />
@@ -83,7 +83,7 @@
     mini_page_path, mini_video_id, page_path_url_id, news_publish_content_id, plan_id,
     is_delete, create_time, update_time
   </sql>
-  <select id="selectByExample" parameterType="com.tzld.piaoquan.api.model.po.CgiReplyBucketDataExample" resultMap="BaseResultMap">
+  <select id="selectByExample" parameterType="com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketDataExample" resultMap="BaseResultMap">
     select
     <if test="distinct">
       distinct
@@ -107,13 +107,13 @@
     delete from cgi_reply_bucket_data
     where id = #{id,jdbcType=BIGINT}
   </delete>
-  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.api.model.po.CgiReplyBucketDataExample">
+  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketDataExample">
     delete from cgi_reply_bucket_data
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
     </if>
   </delete>
-  <insert id="insert" parameterType="com.tzld.piaoquan.api.model.po.CgiReplyBucketData">
+  <insert id="insert" parameterType="com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketData">
     <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
       SELECT LAST_INSERT_ID()
     </selectKey>
@@ -130,7 +130,7 @@
       #{planId,jdbcType=VARCHAR}, #{isDelete,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP},
       #{updateTime,jdbcType=TIMESTAMP})
   </insert>
-  <insert id="insertSelective" parameterType="com.tzld.piaoquan.api.model.po.CgiReplyBucketData">
+  <insert id="insertSelective" parameterType="com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketData">
     <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
       SELECT LAST_INSERT_ID()
     </selectKey>
@@ -236,7 +236,7 @@
       </if>
     </trim>
   </insert>
-  <select id="countByExample" parameterType="com.tzld.piaoquan.api.model.po.CgiReplyBucketDataExample" resultType="java.lang.Long">
+  <select id="countByExample" parameterType="com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketDataExample" resultType="java.lang.Long">
     select count(*) from cgi_reply_bucket_data
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
@@ -324,7 +324,7 @@
       <include refid="Update_By_Example_Where_Clause" />
     </if>
   </update>
-  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.api.model.po.CgiReplyBucketData">
+  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketData">
     update cgi_reply_bucket_data
     <set>
       <if test="strategy != null">
@@ -378,7 +378,7 @@
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
-  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.api.model.po.CgiReplyBucketData">
+  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketData">
     update cgi_reply_bucket_data
     set strategy = #{strategy,jdbcType=VARCHAR},
       sort = #{sort,jdbcType=INTEGER},
@@ -398,4 +398,10 @@
       update_time = #{updateTime,jdbcType=TIMESTAMP}
     where id = #{id,jdbcType=BIGINT}
   </update>
+
+  <select id="selectVideoId" resultType="java.lang.Long">
+    select distinct mini_video_id
+    from cgi_reply_bucket_data
+    where is_delete = 0;
+  </select>
 </mapper>

+ 9 - 9
api-module/src/main/resources/mapper/GhDetailMapper.xml → common-module/src/main/resources/mapper/GhDetailMapper.xml

@@ -1,7 +1,7 @@
 <?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="com.tzld.piaoquan.api.dao.mapper.GhDetailMapper">
-  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.api.model.po.GhDetail">
+<mapper namespace="com.tzld.piaoquan.growth.common.dao.mapper.GhDetailMapper">
+  <resultMap id="BaseResultMap" type="com.tzld.piaoquan.growth.common.model.po.GhDetail">
     <id column="id" jdbcType="BIGINT" property="id" />
     <result column="gh_id" jdbcType="VARCHAR" property="ghId" />
     <result column="gh_name" jdbcType="VARCHAR" property="ghName" />
@@ -78,7 +78,7 @@
     id, gh_id, gh_name, `type`, category1, category2, is_delete, create_time, update_time, 
     channel, video_ids, strategy_status, autoreply_send_minigram_num
   </sql>
-  <select id="selectByExample" parameterType="com.tzld.piaoquan.api.model.po.GhDetailExample" resultMap="BaseResultMap">
+  <select id="selectByExample" parameterType="com.tzld.piaoquan.growth.common.model.po.GhDetailExample" resultMap="BaseResultMap">
     select
     <if test="distinct">
       distinct
@@ -105,13 +105,13 @@
     delete from gh_detail
     where id = #{id,jdbcType=BIGINT}
   </delete>
-  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.api.model.po.GhDetailExample">
+  <delete id="deleteByExample" parameterType="com.tzld.piaoquan.growth.common.model.po.GhDetailExample">
     delete from gh_detail
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
     </if>
   </delete>
-  <insert id="insert" parameterType="com.tzld.piaoquan.api.model.po.GhDetail">
+  <insert id="insert" parameterType="com.tzld.piaoquan.growth.common.model.po.GhDetail">
     insert into gh_detail (id, gh_id, gh_name, 
       `type`, category1, category2, 
       is_delete, create_time, update_time, 
@@ -123,7 +123,7 @@
       #{channel,jdbcType=VARCHAR}, #{videoIds,jdbcType=VARCHAR}, #{strategyStatus,jdbcType=INTEGER}, 
       #{autoreplySendMinigramNum,jdbcType=INTEGER})
   </insert>
-  <insert id="insertSelective" parameterType="com.tzld.piaoquan.api.model.po.GhDetail">
+  <insert id="insertSelective" parameterType="com.tzld.piaoquan.growth.common.model.po.GhDetail">
     insert into gh_detail
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">
@@ -208,7 +208,7 @@
       </if>
     </trim>
   </insert>
-  <select id="countByExample" parameterType="com.tzld.piaoquan.api.model.po.GhDetailExample" resultType="java.lang.Long">
+  <select id="countByExample" parameterType="com.tzld.piaoquan.growth.common.model.po.GhDetailExample" resultType="java.lang.Long">
     select count(*) from gh_detail
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
@@ -280,7 +280,7 @@
       <include refid="Update_By_Example_Where_Clause" />
     </if>
   </update>
-  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.api.model.po.GhDetail">
+  <update id="updateByPrimaryKeySelective" parameterType="com.tzld.piaoquan.growth.common.model.po.GhDetail">
     update gh_detail
     <set>
       <if test="ghId != null">
@@ -322,7 +322,7 @@
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
-  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.api.model.po.GhDetail">
+  <update id="updateByPrimaryKey" parameterType="com.tzld.piaoquan.growth.common.model.po.GhDetail">
     update gh_detail
     set gh_id = #{ghId,jdbcType=VARCHAR},
       gh_name = #{ghName,jdbcType=VARCHAR},

+ 104 - 0
offline-module/src/main/java/com/tzld/piaoquan/offline/job/AutoReplyVideoDataJob.java

@@ -1,10 +1,114 @@
 package com.tzld.piaoquan.offline.job;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.google.common.collect.Lists;
+import com.tzld.piaoquan.growth.common.common.enums.GhTypeEnum;
+import com.tzld.piaoquan.growth.common.common.enums.StrategyStatusEnum;
+import com.tzld.piaoquan.growth.common.component.HttpPoolClient;
+import com.tzld.piaoquan.growth.common.dao.mapper.CgiReplyBucketDataMapper;
+import com.tzld.piaoquan.growth.common.dao.mapper.GhDetailMapper;
+import com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketData;
+import com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketDataExample;
+import com.tzld.piaoquan.growth.common.model.po.GhDetail;
+import com.tzld.piaoquan.growth.common.model.po.GhDetailExample;
+import com.tzld.piaoquan.growth.common.utils.LarkRobotUtil;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Component
 public class AutoReplyVideoDataJob {
 
+    private static final String VIDEO_DETAIL_URL = "https://longvideoapi.piaoquantv.com/longvideoapi/openapi/video/batchSelectVideoInfo";
+
+    @Autowired
+    private CgiReplyBucketDataMapper cgiReplyBucketDataMapper;
+
+    @Autowired
+    private HttpPoolClient httpPoolClient;
+
+    @Autowired
+    private GhDetailMapper ghDetailMapper;
+
+
+    @XxlJob("validateAutoReplyVideoAuditStatusJob")
+    public ReturnT<String> validateAutoReplyVideoAuditStatus(String param) throws IOException {
+        List<Long> videoIds = cgiReplyBucketDataMapper.selectVideoId();
+        if (CollectionUtils.isEmpty(videoIds)) {
+            return ReturnT.SUCCESS;
+        }
+        List<Long> auditFailedVideoIds = new ArrayList<>();
+        List<List<Long>> partition = Lists.partition(videoIds, 20);
+        for (List<Long> videoIdList : partition) {
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("videoIdList", videoIdList);
+            String res = httpPoolClient.post(VIDEO_DETAIL_URL, jsonObject.toJSONString());
+            if (StringUtils.isEmpty(res)) {
+                continue;
+            }
+            JSONObject result = JSONObject.parseObject(res);
+            Integer code = result.getInteger("code");
+            if (code != 0) {
+                continue;
+            }
+            JSONArray jsonArray = result.getJSONArray("data");
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject videoDetail = jsonArray.getJSONObject(i);
+                Integer auditStatus = videoDetail.getInteger("auditStatus");
+                Integer appAuditStatus = videoDetail.getInteger("appAuditStatus");
+                if (auditStatus != 5 || appAuditStatus != 5) {
+                    auditFailedVideoIds.add(videoDetail.getLong("id"));
+                }
+            }
+        }
+        if (CollectionUtils.isEmpty(auditFailedVideoIds)) {
+            return ReturnT.SUCCESS;
+        }
+        String videoMsg = String.format("审核不通过的视频列表:%s", auditFailedVideoIds);
+        System.out.println(videoMsg);
+        LarkRobotUtil.sendAutoReplyVideoMessage(videoMsg);
+
+        for (Long videoId : auditFailedVideoIds) {
+            CgiReplyBucketDataExample example = new CgiReplyBucketDataExample();
+            example.createCriteria().andMiniVideoIdEqualTo(videoId).andIsDeleteEqualTo(0);
+            List<CgiReplyBucketData> cgiReplyBucketDataList = cgiReplyBucketDataMapper.selectByExample(example);
+            List<String> ghIds = cgiReplyBucketDataList.stream().map(CgiReplyBucketData::getGhId).collect(Collectors.toList());
+            List<String> manualGhIds = new ArrayList<>();
+            for (CgiReplyBucketData cgiReplyBucketData : cgiReplyBucketDataList) {
+                if (Objects.equals(cgiReplyBucketData.getStrategy(), "manual")) {
+                    String ghId = cgiReplyBucketData.getGhId();
+                    GhDetailExample ghDetailExample = new GhDetailExample();
+                    ghDetailExample.createCriteria().andGhIdEqualTo(ghId).andTypeEqualTo(GhTypeEnum.THIRD_PARTY_GH.type);
+                    List<GhDetail> ghDetails = ghDetailMapper.selectByExample(ghDetailExample);
+                    if (!CollectionUtils.isEmpty(ghDetails)) {
+                        for (GhDetail ghDetail : ghDetails) {
+                            ghDetail.setStrategyStatus(StrategyStatusEnum.STRATEGY.status);
+                            ghDetailMapper.updateByPrimaryKeySelective(ghDetail);
+                        }
+                    }
+                    manualGhIds.add(cgiReplyBucketData.getGhId());
+                }
+            }
+            String msg = String.format("审核不通过的视频id:%s \n 配置了该视频的ghId列表:%s \n 保底视频更新为策略视频的ghId列表:%s",
+                    videoId, ghIds, manualGhIds);
+            System.out.println(msg);
+            LarkRobotUtil.sendAutoReplyVideoMessage(msg);
+        }
+
+        return ReturnT.SUCCESS;
+    }
+
 }