AutoReplyVideoDataJob.java 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. package com.tzld.piaoquan.offline.job;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.google.common.collect.Lists;
  6. import com.tzld.piaoquan.growth.common.common.enums.FieshuTableColumnDataTypeEnum;
  7. import com.tzld.piaoquan.growth.common.common.enums.GhTypeEnum;
  8. import com.tzld.piaoquan.growth.common.common.enums.StrategyStatusEnum;
  9. import com.tzld.piaoquan.growth.common.component.HttpPoolClient;
  10. import com.tzld.piaoquan.growth.common.dao.mapper.CgiReplyBucketDataMapper;
  11. import com.tzld.piaoquan.growth.common.dao.mapper.GhDetailMapper;
  12. import com.tzld.piaoquan.growth.common.model.bo.FeishuTableDTO;
  13. import com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketData;
  14. import com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketDataExample;
  15. import com.tzld.piaoquan.growth.common.model.po.GhDetail;
  16. import com.tzld.piaoquan.growth.common.model.po.GhDetailExample;
  17. import com.tzld.piaoquan.growth.common.utils.DateUtil;
  18. import com.tzld.piaoquan.growth.common.utils.LarkRobotUtil;
  19. import com.xxl.job.core.biz.model.ReturnT;
  20. import com.xxl.job.core.handler.annotation.XxlJob;
  21. import lombok.extern.slf4j.Slf4j;
  22. import org.apache.commons.lang3.StringUtils;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Component;
  25. import org.springframework.util.CollectionUtils;
  26. import java.io.IOException;
  27. import java.util.*;
  28. import java.util.stream.Collectors;
  29. @Slf4j
  30. @Component
  31. public class AutoReplyVideoDataJob {
  32. private static final List<String> auditGhIds = new ArrayList<String>() {{
  33. add("gh_b63b9dde3f4b");
  34. add("gh_330ef0db846d");
  35. add("gh_330ef0db846d");
  36. add("gh_e2318164f869");
  37. add("gh_620af8e24fb9");
  38. add("gh_620af8e24fb9");
  39. add("gh_133c36b99b14");
  40. add("gh_133c36b99b14");
  41. add("gh_5ac72e2b9130");
  42. add("gh_ef8ade0fad92");
  43. add("gh_1e03b6de22bf");
  44. add("gh_5538fe297e59");
  45. add("gh_8c6fffcbaac1");
  46. add("gh_8c6fffcbaac1");
  47. add("gh_d0e830b7547e");
  48. add("gh_fb234f4e32a5");
  49. add("gh_84c5d01a61e7");
  50. add("gh_87c4b8ae885e");
  51. add("gh_29d8a63d5e5e");
  52. add("gh_b144210318e5");
  53. add("gh_b144210318e5");
  54. add("gh_1f9bf4cfa788");
  55. add("gh_4f47d12bbe04");
  56. add("gh_8c6af276df98");
  57. add("gh_1f16bc6ac60d");
  58. add("gh_4920bc4c5720");
  59. add("gh_5177a8c57917");
  60. add("gh_5177a8c57917");
  61. add("gh_5e3e6cd5e35c");
  62. add("gh_5e3e6cd5e35c");
  63. add("gh_d2c72bcc05c9");
  64. add("gh_d2c72bcc05c9");
  65. add("gh_5f2400da935c");
  66. add("gh_5f2400da935c");
  67. add("gh_669555ebea28");
  68. add("gh_28ce883486c3");
  69. add("gh_28ce883486c3");
  70. add("gh_7057ef30222b");
  71. add("gh_7057ef30222b");
  72. add("gh_b0048adc0b46");
  73. add("gh_6e61a2d5db85");
  74. add("gh_01cd19465b39");
  75. add("gh_01cd19465b39");
  76. add("gh_126c99b39cea");
  77. add("gh_4a1174e36ceb");
  78. add("gh_f81c27eb8c48");
  79. add("gh_f81c27eb8c48");
  80. add("gh_3170dc15e246");
  81. add("gh_1ccfb5620605");
  82. add("gh_315be76a746d");
  83. add("gh_4f47d12bbe04");
  84. add("gh_4f47d12bbe04");
  85. add("gh_4f47d12bbe04");
  86. }};
  87. private static final String VIDEO_DETAIL_URL = "https://longvideoapi.piaoquantv.com/longvideoapi/openapi/video/batchSelectVideoInfo";
  88. private static final String REFRESH_GZH_URL = "http://aigc-api.cybertogether.net/aigc/publish/api/refreshGzhAutoReplyMsgData";
  89. @Autowired
  90. private CgiReplyBucketDataMapper cgiReplyBucketDataMapper;
  91. @Autowired
  92. private HttpPoolClient httpPoolClient;
  93. @Autowired
  94. private GhDetailMapper ghDetailMapper;
  95. @XxlJob("validateAutoReplyVideoAuditStatusJob")
  96. public ReturnT<String> validateAutoReplyVideoAuditStatus(String param) throws IOException {
  97. Long beforeDayStart = DateUtil.getBeforeDayStart(7);
  98. List<Long> videoIds = cgiReplyBucketDataMapper.selectVideoId(new Date(beforeDayStart));
  99. if (CollectionUtils.isEmpty(videoIds)) {
  100. return ReturnT.SUCCESS;
  101. }
  102. List<Long> auditFailedVideoIds = new ArrayList<>();
  103. List<List<Long>> partition = Lists.partition(videoIds, 20);
  104. for (List<Long> videoIdList : partition) {
  105. JSONObject jsonObject = new JSONObject();
  106. jsonObject.put("videoIdList", videoIdList);
  107. String res = httpPoolClient.post(VIDEO_DETAIL_URL, jsonObject.toJSONString());
  108. if (StringUtils.isEmpty(res)) {
  109. continue;
  110. }
  111. JSONObject result = JSONObject.parseObject(res);
  112. Integer code = result.getInteger("code");
  113. if (code != 0) {
  114. continue;
  115. }
  116. JSONArray jsonArray = result.getJSONArray("data");
  117. for (int i = 0; i < jsonArray.size(); i++) {
  118. JSONObject videoDetail = jsonArray.getJSONObject(i);
  119. Integer auditStatus = videoDetail.getInteger("auditStatus");
  120. Integer appAuditStatus = videoDetail.getInteger("appAuditStatus");
  121. if (auditStatus != 5 || appAuditStatus != 5) {
  122. auditFailedVideoIds.add(videoDetail.getLong("id"));
  123. }
  124. }
  125. }
  126. if (CollectionUtils.isEmpty(auditFailedVideoIds)) {
  127. return ReturnT.SUCCESS;
  128. }
  129. List<FeishuTableDTO.Column> columns = buildCheckPublishPlanAccountColumns();
  130. List<JSONObject> rows = new ArrayList<>();
  131. for (Long videoId : auditFailedVideoIds) {
  132. CgiReplyBucketDataExample example = new CgiReplyBucketDataExample();
  133. example.createCriteria().andMiniVideoIdEqualTo(videoId).andIsDeleteEqualTo(0)
  134. .andCreateTimeGreaterThan(new Date(beforeDayStart));
  135. List<CgiReplyBucketData> cgiReplyBucketDataList = cgiReplyBucketDataMapper.selectByExample(example);
  136. // List<String> ghIds = new ArrayList<>();
  137. // List<String> manualGhIds = new ArrayList<>();
  138. for (CgiReplyBucketData cgiReplyBucketData : cgiReplyBucketDataList) {
  139. String ghId = cgiReplyBucketData.getGhId();
  140. GhDetailExample ghDetailExample = new GhDetailExample();
  141. ghDetailExample.createCriteria().andGhIdEqualTo(ghId);
  142. List<GhDetail> ghDetails = ghDetailMapper.selectByExample(ghDetailExample);
  143. if (CollectionUtils.isEmpty(ghDetails)) {
  144. continue;
  145. }
  146. GhDetail ghDetail = ghDetails.get(0);
  147. // if (Objects.equals(cgiReplyBucketData.getStrategy(), "manual")) {
  148. // ghDetail1.setStrategyStatus(StrategyStatusEnum.STRATEGY.status);
  149. // ghDetailMapper.updateByPrimaryKeySelective(ghDetail1);
  150. // manualGhIds.add(cgiReplyBucketData.getGhId());
  151. // }
  152. // ghIds.add(cgiReplyBucketData.getGhId());
  153. JSONObject row = new JSONObject();
  154. row.put("name", ghDetail.getGhName());
  155. row.put("channel", ghDetail.getChannel());
  156. row.put("video", videoId);
  157. row.put("ghId", ghDetail.getGhId());
  158. rows.add(row);
  159. try {
  160. if (auditGhIds.contains(ghId)) {
  161. String url = REFRESH_GZH_URL + "?ghId=" + cgiReplyBucketData.getGhId();
  162. String res = httpPoolClient.get(url);
  163. log.info("refresh ghId={}, res={}", cgiReplyBucketData.getGhId(), res);
  164. }
  165. } catch (Exception e) {
  166. log.error("refresh error", e);
  167. }
  168. }
  169. }
  170. Map<String, JSONObject> collect = rows.stream()
  171. .collect(Collectors.toMap(
  172. row -> row.getString("ghId") + "-" + row.getString("video"),
  173. row -> row,
  174. (existing, replacement) -> existing
  175. ));
  176. rows = new ArrayList<>(collect.values());
  177. FeishuTableDTO tableDTO = FeishuTableDTO.createTable("自动回复视频审核失败报警", columns, rows, false);
  178. JSONObject content = JSONObject.parseObject(JSONObject.toJSONString(tableDTO));
  179. JSONObject bodyParam = new JSONObject();
  180. bodyParam.put("msg_type", "interactive");
  181. bodyParam.put("card", content);
  182. LarkRobotUtil.sendAutoReplyVideoMessage(bodyParam);
  183. return ReturnT.SUCCESS;
  184. }
  185. private List<FeishuTableDTO.Column> buildCheckPublishPlanAccountColumns() {
  186. List<FeishuTableDTO.Column> columns = new ArrayList<>();
  187. FeishuTableDTO.Column nameColumn = FeishuTableDTO.createFeishuColumns(
  188. FieshuTableColumnDataTypeEnum.TEXT.getType(), "name", "账号名称", null);
  189. columns.add(nameColumn);
  190. FeishuTableDTO.Column channelColumn = FeishuTableDTO.createFeishuColumns(
  191. FieshuTableColumnDataTypeEnum.TEXT.getType(), "channel", "渠道id", null);
  192. columns.add(channelColumn);
  193. FeishuTableDTO.Column videoColumn = FeishuTableDTO.createFeishuColumns(
  194. FieshuTableColumnDataTypeEnum.TEXT.getType(), "video", "审核不通过的视频id", null);
  195. columns.add(videoColumn);
  196. FeishuTableDTO.Column ghIdColumn = FeishuTableDTO.createFeishuColumns(
  197. FieshuTableColumnDataTypeEnum.TEXT.getType(), "ghId", "ghId", null);
  198. columns.add(ghIdColumn);
  199. return columns;
  200. }
  201. }