Quellcode durchsuchen

Merge #21 into master from pingkang

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

* pingkang: (2 commits)
  星图投稿类型
  Merge branch 'master' of codeup.aliyun.com:60c06368dbbed34fe0f0c263/job/hr_job-...

Signed-off-by: 1129979389@qq.com <accounts_6361eaad7b63b44dd7833e63@mail.teambition.com>
Merged-by: 1129979389@qq.com <accounts_6361eaad7b63b44dd7833e63@mail.teambition.com>

CR-link: https://codeup.aliyun.com/60c06368dbbed34fe0f0c263/job/hr_job-bytedance/change/21
huangpingkang vor 1 Jahr
Ursprung
Commit
d56a1dcf49

+ 2 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/controller/BytedanceXingTuController.java

@@ -33,6 +33,8 @@ public class BytedanceXingTuController {
             Long advId = jsonObject.getLong("advertiser_id");
             String accessToken = jsonObject.getString("access_token");
             bytedanceXingTuService.getXingTuTaskList(advId, accessToken, startDate, endDate, 1, null, 1, null);
+            bytedanceXingTuService.getXingTuChallengeList(advId, accessToken, 1);
+            bytedanceXingTuService.getXingTuChallengePlaylet(advId, accessToken);
         }
 
     }

+ 1 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceXingTuTask.java

@@ -38,4 +38,5 @@ public class BytedanceXingTuTask {
     // demand_info fields
     private String demandName;
     private String attachments; // JSON string
+    private Integer taskType;
 }

+ 11 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceXingTuMapper.java

@@ -36,4 +36,15 @@ public interface BytedanceXingTuMapper {
     void insertReportDaily(List<BytedanceXingTuReportDaily> dailyReports);
     @DS("selectdb")
     void insertReportDailySD(List<BytedanceXingTuReportDaily> dailyReports);
+
+    @DS("selectdb")
+    List<Long> queryChallengeListWithoutPlaylet(@Param("advertiserId") Long advertiserId);
+
+
+    void updateChallengePlaylet(@Param("advertiserId")Long advertiserId,@Param("challengeTaskId") Long challengeId,
+                                @Param("playletId")Long playletId,@Param("playletName") String playletName);
+
+    @DS("selectdb")
+    void updateChallengePlayletSD(@Param("advertiserId")Long advertiserId,@Param("challengeTaskId") Long challengeId,
+                                @Param("playletId")Long playletId,@Param("playletName") String playletName);
 }

+ 29 - 4
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceXingTuMapper.xml

@@ -2,18 +2,18 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="cn.com.ctop.job.bytedance.data.mapper.BytedanceXingTuMapper">
     <insert id="insertTaskId" parameterType="java.util.List">
-        INSERT ignore INTO media_api.bytedance_xingtu_task_list (challenge_task_id,advertiser_id)
+        INSERT ignore INTO media_api.bytedance_xingtu_task_list (challenge_task_id,advertiser_id,task_type)
         VALUES
         <foreach collection="list" item="item" separator=",">
-            (#{item.challengeTaskId},#{item.advertiserId})
+            (#{item.challengeTaskId},#{item.advertiserId},#{item.taskType})
         </foreach>
     </insert>
 
     <insert id="insertTaskIdSD" parameterType="java.util.List">
-        INSERT INTO media_api.bytedance_xingtu_task_list (challenge_task_id,advertiser_id)
+        INSERT INTO media_api.bytedance_xingtu_task_list (challenge_task_id,advertiser_id,task_type)
         VALUES
         <foreach collection="list" item="item" separator=",">
-            (#{item.challengeTaskId},#{item.advertiserId})
+            (#{item.challengeTaskId},#{item.advertiserId},#{item.taskType})
         </foreach>
     </insert>
 
@@ -175,6 +175,26 @@
         and advertiser_id = #{advertiserId}
     </update>
 
+    <update id="updateChallengePlaylet">
+        UPDATE media_api.bytedance_xingtu_task_list
+        <set>
+            <if test="playletId != null">playlet_id = #{playletId},</if>
+            <if test="playletName != null">playlet_name = #{playletName},</if>
+        </set>
+        WHERE challenge_task_id = #{challengeTaskId}
+        and advertiser_id = #{advertiserId}
+    </update>
+
+    <update id="updateChallengePlayletSD">
+        UPDATE media_api.bytedance_xingtu_task_list
+        <set>
+            <if test="playletId != null">playlet_id = #{playletId},</if>
+            <if test="playletName != null">playlet_name = #{playletName},</if>
+        </set>
+        WHERE challenge_task_id = #{challengeTaskId}
+        and advertiser_id = #{advertiserId}
+    </update>
+
     <select id="queryXingTuAccount" resultType="com.alibaba.fastjson.JSONObject">
         select x.advertiser_id, access_token
         from deepthink.bytedance_xingtu_advertiser_list x
@@ -222,4 +242,9 @@
               on x.admin_advertiser_id = a.admin_advertiser_id
         where data_dimension like 'xingtu_task_%'
     </select>
+
+    <select id="queryChallengeListWithoutPlaylet" resultType="java.lang.Long">
+        select challenge_task_id from  media_api.bytedance_xingtu_task_list
+        where advertiser_id = ${advertiserId} and task_type = 2 and playlet_id is null
+    </select>
 </mapper>

+ 2 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceXingTuService.java

@@ -11,6 +11,8 @@ public interface IBytedanceXingTuService {
     List<JSONObject> getXingTuRetryJob();
     void getXingTuTaskList(Long advertiserId, String accessToken, String startDate, String endDate, Integer page,
                            Long errorId, Integer isLog, Integer isSend);
+    void getXingTuChallengeList(Long advertiserId, String accessToken,  Integer page);
     void getXingTuTaskInfo(Long advertiserId, Long taskId, String accessToken, Long errorId, Integer isLog, Integer isSend);
     void getXingTuTaskReport(Long advertiserId, Long taskId, String accessToken, Integer page, Long errorId, Integer isLog, Integer isSend);
+    void getXingTuChallengePlaylet(Long advertiserId, String accessToken);
 }

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

@@ -51,6 +51,7 @@ public class BytedanceXingTuServiceImpl implements IBytedanceXingTuService {
         return bytedanceXingTuMapper.queryXingTuRetryJob();
     }
 
+    //抖音小程序/小游戏
     public void getXingTuTaskList(Long advertiserId, String accessToken, String startDate, String endDate, Integer page,
                                   Long errorId, Integer isLog, Integer isSend) {
         try {
@@ -89,6 +90,7 @@ public class BytedanceXingTuServiceImpl implements IBytedanceXingTuService {
                             BytedanceXingTuTask task = new BytedanceXingTuTask();
                             task.setChallengeTaskId(demandId);
                             task.setAdvertiserId(advertiserId);
+                            task.setTaskType(1);
                             tasks.add(task);
                         }
                     }
@@ -123,6 +125,111 @@ public class BytedanceXingTuServiceImpl implements IBytedanceXingTuService {
         }
     }
 
+    //投稿
+    public void getXingTuChallengeList(Long advertiserId, String accessToken,  Integer page) {
+        try {
+            String url = "https://api.oceanengine.com/open_api/2/star/challenge/list/";
+            Map<String, Object> paramsMap = new HashMap<>();
+            paramsMap.put("star_id", advertiserId);
+            paramsMap.put("page", page);
+            int pageSize = 100;
+            paramsMap.put("limit", pageSize);
+            Map<String, String> headers = new HashMap<>();
+            headers.put("Access-Token", accessToken);
+            headers.put("Content-Type", "application/json");
+            String s = HttpUtils.httpGet(url, paramsMap, headers);
+            JSONObject result = JSONObject.parseObject(s);
+            if (Check.isNull(result)) {
+                log.info("账户id:{},星图投稿列表请求结果返回为空", advertiserId);
+                return;
+            }
+            List<BytedanceXingTuTask> tasks = new ArrayList<>();
+            Integer code = result.getInteger("code");
+            boolean hasMore = false;
+            if (code == 0) {
+                JSONObject data = result.getJSONObject("data");
+                if (!Check.isNull(data)) {
+                    JSONArray rows = data.getJSONArray("challenge_tasks");
+                    if (!Check.isNull(rows)) {
+                        hasMore = rows.size() == pageSize;
+                        for (int i = 0; i < rows.size(); i++) {
+                            JSONObject rowJson = rows.getJSONObject(i);
+                            Long taskId = rowJson.getLong("challenge_task_id");
+                            BytedanceXingTuTask task = new BytedanceXingTuTask();
+                            task.setChallengeTaskId(taskId);
+                            task.setAdvertiserId(advertiserId);
+                            task.setTaskType(2);
+                            tasks.add(task);
+                        }
+                    }
+                }
+            } else {
+                log.info("账户id:{},星图投稿列表请求结果失败,返回数据:{}", advertiserId, result);
+                return;
+            }
+            if (!Check.isNull(tasks)) {
+                bytedanceXingTuMapper.insertTaskId(tasks);
+                try {
+                    bytedanceXingTuMapper.insertTaskIdSD(tasks);
+                }catch (Exception e) {
+                    log.error("",e);
+                }
+                log.info("账户ID:{},星图投稿列表请求成功,page:{}", advertiserId, page);
+            }
+            if (hasMore) {
+                getXingTuChallengeList(advertiserId, accessToken, page + 1);
+            } else {
+                log.info("账户ID:{},星图任务列表请求成功", advertiserId);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    //投稿类型 剧
+    public void getXingTuChallengePlaylet(Long advertiserId, String accessToken) {
+        try {
+            List<Long> challengeIds = bytedanceXingTuMapper.queryChallengeListWithoutPlaylet(advertiserId);
+            String url = "https://api.oceanengine.com/open_api/2/star/challenge/items_data/";
+            Map<String, Object> paramsMap = new HashMap<>();
+            paramsMap.put("star_id", advertiserId);
+            paramsMap.put("page", 1);
+            int pageSize = 50;
+            paramsMap.put("limit", pageSize);
+            Map<String, String> headers = new HashMap<>();
+            headers.put("Access-Token", accessToken);
+            headers.put("Content-Type", "application/json");
+            for (Long challengeId : challengeIds) {
+                paramsMap.put("challenge_task_id", challengeId);
+                String s = HttpUtils.httpGet(url, paramsMap, headers);
+                JSONObject result = JSONObject.parseObject(s);
+                if (Check.isNull(result)) {
+                    log.info("账户id:{} {},星图投稿关联剧结果返回为空", advertiserId, challengeId);
+                    continue;
+                }
+                Integer code = result.getInteger("code");
+                if (code == 0) {
+                    JSONObject data = result.getJSONObject("data");
+                    if (!Check.isNull(data)) {
+                        JSONArray rows = data.getJSONArray("data_list");
+                        if (!Check.isNull(rows)) {
+                            Long playletId = rows.getJSONObject(0).getLong("playlet_id");
+                            String playletName = rows.getJSONObject(0).getString("playlet_name");
+                            bytedanceXingTuMapper.updateChallengePlaylet(advertiserId,challengeId,playletId,playletName);
+                            bytedanceXingTuMapper.updateChallengePlayletSD(advertiserId,challengeId,playletId,playletName);
+                        }
+                    }
+                } else {
+                    log.info("账户id:{} {},星图投稿关联剧请求结果失败,返回数据:{}", advertiserId,challengeId, result);
+                    continue;
+                }
+                log.info("账户ID:{} {},星图投稿关联剧请求成功", advertiserId, challengeId);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
     public void getXingTuTaskInfo(Long advertiserId, Long taskId, String accessToken, Long errorId, Integer isLog, Integer isSend) {
         try {
             String url = "https://api.oceanengine.com/open_api/2/star/demand/om_get_challenge/";

+ 2 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceXingTuJob.java

@@ -29,6 +29,8 @@ public class BytedanceXingTuJob {
             Long advId = jsonObject.getLong("advertiser_id");
             String accessToken = jsonObject.getString("access_token");
             bytedanceXingTuService.getXingTuTaskList(advId, accessToken, startDate, endDate, 1, null, 1, null);
+            bytedanceXingTuService.getXingTuChallengeList(advId, accessToken, 1);
+            bytedanceXingTuService.getXingTuChallengePlaylet(advId, accessToken);
         }
 
     }