ソースを参照

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 1 年間 前
親
コミット
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");
             Long advId = jsonObject.getLong("advertiser_id");
             String accessToken = jsonObject.getString("access_token");
             String accessToken = jsonObject.getString("access_token");
             bytedanceXingTuService.getXingTuTaskList(advId, accessToken, startDate, endDate, 1, null, 1, null);
             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
     // demand_info fields
     private String demandName;
     private String demandName;
     private String attachments; // JSON string
     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);
     void insertReportDaily(List<BytedanceXingTuReportDaily> dailyReports);
     @DS("selectdb")
     @DS("selectdb")
     void insertReportDailySD(List<BytedanceXingTuReportDaily> dailyReports);
     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" >
 <!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">
 <mapper namespace="cn.com.ctop.job.bytedance.data.mapper.BytedanceXingTuMapper">
     <insert id="insertTaskId" parameterType="java.util.List">
     <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
         VALUES
         <foreach collection="list" item="item" separator=",">
         <foreach collection="list" item="item" separator=",">
-            (#{item.challengeTaskId},#{item.advertiserId})
+            (#{item.challengeTaskId},#{item.advertiserId},#{item.taskType})
         </foreach>
         </foreach>
     </insert>
     </insert>
 
 
     <insert id="insertTaskIdSD" parameterType="java.util.List">
     <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
         VALUES
         <foreach collection="list" item="item" separator=",">
         <foreach collection="list" item="item" separator=",">
-            (#{item.challengeTaskId},#{item.advertiserId})
+            (#{item.challengeTaskId},#{item.advertiserId},#{item.taskType})
         </foreach>
         </foreach>
     </insert>
     </insert>
 
 
@@ -175,6 +175,26 @@
         and advertiser_id = #{advertiserId}
         and advertiser_id = #{advertiserId}
     </update>
     </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 id="queryXingTuAccount" resultType="com.alibaba.fastjson.JSONObject">
         select x.advertiser_id, access_token
         select x.advertiser_id, access_token
         from deepthink.bytedance_xingtu_advertiser_list x
         from deepthink.bytedance_xingtu_advertiser_list x
@@ -222,4 +242,9 @@
               on x.admin_advertiser_id = a.admin_advertiser_id
               on x.admin_advertiser_id = a.admin_advertiser_id
         where data_dimension like 'xingtu_task_%'
         where data_dimension like 'xingtu_task_%'
     </select>
     </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>
 </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();
     List<JSONObject> getXingTuRetryJob();
     void getXingTuTaskList(Long advertiserId, String accessToken, String startDate, String endDate, Integer page,
     void getXingTuTaskList(Long advertiserId, String accessToken, String startDate, String endDate, Integer page,
                            Long errorId, Integer isLog, Integer isSend);
                            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 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 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();
         return bytedanceXingTuMapper.queryXingTuRetryJob();
     }
     }
 
 
+    //抖音小程序/小游戏
     public void getXingTuTaskList(Long advertiserId, String accessToken, String startDate, String endDate, Integer page,
     public void getXingTuTaskList(Long advertiserId, String accessToken, String startDate, String endDate, Integer page,
                                   Long errorId, Integer isLog, Integer isSend) {
                                   Long errorId, Integer isLog, Integer isSend) {
         try {
         try {
@@ -89,6 +90,7 @@ public class BytedanceXingTuServiceImpl implements IBytedanceXingTuService {
                             BytedanceXingTuTask task = new BytedanceXingTuTask();
                             BytedanceXingTuTask task = new BytedanceXingTuTask();
                             task.setChallengeTaskId(demandId);
                             task.setChallengeTaskId(demandId);
                             task.setAdvertiserId(advertiserId);
                             task.setAdvertiserId(advertiserId);
+                            task.setTaskType(1);
                             tasks.add(task);
                             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) {
     public void getXingTuTaskInfo(Long advertiserId, Long taskId, String accessToken, Long errorId, Integer isLog, Integer isSend) {
         try {
         try {
             String url = "https://api.oceanengine.com/open_api/2/star/demand/om_get_challenge/";
             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");
             Long advId = jsonObject.getLong("advertiser_id");
             String accessToken = jsonObject.getString("access_token");
             String accessToken = jsonObject.getString("access_token");
             bytedanceXingTuService.getXingTuTaskList(advId, accessToken, startDate, endDate, 1, null, 1, null);
             bytedanceXingTuService.getXingTuTaskList(advId, accessToken, startDate, endDate, 1, null, 1, null);
+            bytedanceXingTuService.getXingTuChallengeList(advId, accessToken, 1);
+            bytedanceXingTuService.getXingTuChallengePlaylet(advId, accessToken);
         }
         }
 
 
     }
     }