فهرست منبع

feat(kuaishou): 新增快手短剧剧集及剧集详情批量插入功能

- 在KuaiShouDramaMapper中添加insertEpisodeInfo方法支持批量插入剧集详情
- 补充KuaiShouDramaMapper.xml对应的insertEpisodeInfo SQL语句,采用replace方式插入
- KuaiShouDramaServiceImpl新增对剧集详情数据的解析及批量插入逻辑
- 调整日志等级,批量获取剧集信息成功时改为info级别日志
- 优化异常处理,捕获异常时记录日志代替堆栈打印
- 在.gitignore中新增.ace-tool规则忽略相应文件
hpk 8 ماه پیش
والد
کامیت
cb44f82c6d

+ 1 - 0
.gitignore

@@ -32,3 +32,4 @@ gen
 hs_err_pid*
 **/target/
 #application.yml
+.ace-tool/

+ 3 - 0
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/mapper/KuaiShouDramaMapper.java

@@ -1,6 +1,7 @@
 package cn.com.ctop.job.kuaishou.data.mapper;
 
 import cn.com.ctop.job.kuaishou.data.entity.KuaiShouDramaAdReportDetail;
+import cn.com.ctop.job.kuaishou.data.entity.KuaiShouDramaEpisodeInfo;
 import cn.com.ctop.job.kuaishou.data.entity.KuaiShouDramaOrder;
 import cn.com.ctop.job.kuaishou.data.entity.KuaiShouDramaSalerCopyRightData;
 import cn.com.ctop.job.kuaishou.data.entity.KuaiShouDramaSeriesInfo;
@@ -33,5 +34,7 @@ public interface KuaiShouDramaMapper {
 
 
     List<JSONObject> queryAdminAdvertiserToken(@Param("adminAdvertiserId") Long adminAdvertiserId);
+
+    void insertEpisodeInfo(List<KuaiShouDramaEpisodeInfo> episodeInfoList);
 }
 

+ 17 - 0
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/mapper/xml/KuaiShouDramaMapper.xml

@@ -284,4 +284,21 @@
         </if>
     </select>
 
+    <insert id="insertEpisodeInfo" parameterType="java.util.List">
+        replace INTO media_api.kuaishou_drama_episode_info (
+        admin_advertiser_id, series_id, series_name, episode_id, episode_name, order_no, free_episode
+        ) VALUES
+        <foreach collection="list" item="item" index="index" separator=",">
+            (
+            #{item.adminAdvertiserId},
+            #{item.seriesId},
+            #{item.seriesName},
+            #{item.episodeId},
+            #{item.episodeName},
+            #{item.orderNo},
+            #{item.freeEpisode}
+            )
+        </foreach>
+    </insert>
+
 </mapper>

+ 39 - 20
job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/data/service/impl/KuaiShouDramaServiceImpl.java

@@ -2,6 +2,7 @@ package cn.com.ctop.job.kuaishou.data.service.impl;
 
 import cn.com.ctop.job.kuaishou.data.constant.KuaishouLinkConstants;
 import cn.com.ctop.job.kuaishou.data.entity.KuaiShouDramaAdReportDetail;
+import cn.com.ctop.job.kuaishou.data.entity.KuaiShouDramaEpisodeInfo;
 import cn.com.ctop.job.kuaishou.data.entity.KuaiShouDramaOrder;
 import cn.com.ctop.job.kuaishou.data.entity.KuaiShouDramaSalerCopyRightData;
 import cn.com.ctop.job.kuaishou.data.entity.KuaiShouDramaSeriesInfo;
@@ -267,7 +268,7 @@ public class KuaiShouDramaServiceImpl implements IKuaiShouDramaService {
             if (isLog != null && isLog == 1 && (null == code || code != 3)) {
                 errorLogService.addError(advertiserId, startDate, endDate, "drama_saler_cr_data", "daily", new JSONObject().fluentPut("msg", message).fluentPut("seriesType", seriesType).toJSONString(), 2);
             }
-            if (code != null && code == 3 && errId != null){
+            if (code != null && code == 3 && errId != null) {
                 errorLogService.deleteInfoByErrorId(errId);
             }
             return;
@@ -437,7 +438,7 @@ public class KuaiShouDramaServiceImpl implements IKuaiShouDramaService {
         if (!Check.isNull(seriesIds)) {
             updateSeriesEpisodeNum(advertiserId, accessToken, seriesIds);
         }
-        log.error("批量获取快手短剧剧集信息完成 accountId:{}", advertiserId);
+        log.info("批量获取快手短剧剧集信息完成 accountId:{}", advertiserId);
     }
 
 
@@ -456,31 +457,49 @@ public class KuaiShouDramaServiceImpl implements IKuaiShouDramaService {
             Integer code = resultJson.getInteger("code");
             String message = resultJson.getString("message");
             if (null == code || code != 0) {
-                log.error("批量获取快手短剧剧集信息查询接口异常:{},accountId:{}", message, advertiserId);
-            }
-            JSONArray data = resultJson.getJSONArray("data");
-            List<KuaiShouDramaSeriesInfo> seriesInfos = new ArrayList<>();
-            for (Object datum : data) {
-                JSONObject seriesInfo = JSONObject.parseObject(datum.toString());
-                JSONArray episodeList = seriesInfo.getJSONArray("episode_list");
-                String seriesName = seriesInfo.getString("mini_series_name");
-                Long seriesId = seriesInfo.getLong("mini_series_id");
-                Integer episodeNum = null;
-                if (!Check.isNull(episodeList)) {
-                    episodeNum = episodeList.size();
+                log.error("批量获取快手短剧剧集信息查询接口异常:{},accountId:{},seriesIds:{}", message, advertiserId, param.get("mini_series_ids"));
+            } else {
+                JSONArray data = resultJson.getJSONArray("data");
+                List<KuaiShouDramaSeriesInfo> seriesInfos = new ArrayList<>();
+                List<KuaiShouDramaEpisodeInfo> episodeInfos = new ArrayList<>();
+                for (Object datum : data) {
+                    JSONObject seriesInfo = JSONObject.parseObject(datum.toString());
+                    JSONArray episodeList = seriesInfo.getJSONArray("episode_list");
+                    String seriesName = seriesInfo.getString("mini_series_name");
+                    Long seriesId = seriesInfo.getLong("mini_series_id");
+                    Integer episodeNum = null;
+                    if (!Check.isNull(episodeList)) {
+                        episodeNum = episodeList.size();
+                        for (int i = 0; i < episodeList.size(); i++) {
+                            JSONObject episodeJson = episodeList.getJSONObject(i);
+                            KuaiShouDramaEpisodeInfo episodeInfo = new KuaiShouDramaEpisodeInfo();
+                            episodeInfo.setAdminAdvertiserId(advertiserId);
+                            episodeInfo.setSeriesId(seriesId);
+                            episodeInfo.setSeriesName(seriesName);
+                            episodeInfo.setEpisodeId(episodeJson.getLong("episode_id"));
+                            episodeInfo.setEpisodeName(episodeJson.getString("episode_name"));
+                            episodeInfo.setOrderNo(episodeJson.getInteger("order_no"));
+                            episodeInfo.setFreeEpisode(episodeJson.getBoolean("free_episode"));
+                            episodeInfos.add(episodeInfo);
+                        }
+                    }
+                    KuaiShouDramaSeriesInfo kuaiShouDramaSeriesInfo = new KuaiShouDramaSeriesInfo(advertiserId, seriesId, seriesName, null, null, episodeNum);
+                    seriesInfos.add(kuaiShouDramaSeriesInfo);
                 }
-                KuaiShouDramaSeriesInfo kuaiShouDramaSeriesInfo = new KuaiShouDramaSeriesInfo(advertiserId, seriesId, seriesName, null, null, episodeNum);
-                seriesInfos.add(kuaiShouDramaSeriesInfo);
-            }
-            if (!Check.isNull(seriesInfos)) {
-                kuaiShouDramaMapper.insertSeriesInfo(seriesInfos);
+                if (!Check.isNull(seriesInfos)) {
+                    kuaiShouDramaMapper.insertSeriesInfo(seriesInfos);
+                }
+                if (!Check.isNull(episodeInfos)) {
+                    kuaiShouDramaMapper.insertEpisodeInfo(episodeInfos);
+                }
+                log.info("批量获取快手短剧剧集信息查询接口成功:{},accountId:{},seriesIds:{}", message, advertiserId, param.get("mini_series_ids"));
             }
             if (size > 20) {
                 List<Long> longs = new ArrayList<>(seriesIds.subList(20, size));
                 updateSeriesEpisodeNum(advertiserId, accessToken, longs);
             }
         } catch (Exception e) {
-            e.printStackTrace();
+            log.error("updateSeriesEpisodeNum error, advertiserId:{}", advertiserId, e);
         }
 
     }