Explorar o código

巨量创意抓取

xuzuoyun %!s(int64=5) %!d(string=hai) anos
pai
achega
26f48c9276
Modificáronse 18 ficheiros con 482 adicións e 3 borrados
  1. 5 0
      jeecg-boot-module-system/pom.xml
  2. 0 2
      jeecg-boot-module-system/src/main/java/org/jeecg/JeecgApplication.java
  3. 2 0
      jeecg-boot-module-system/src/main/java/org/jeecg/config/ureport/PropertiesConfig.java
  4. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/config/ureport/ServletConfig.java
  5. 251 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/OceanengineJob.java
  6. 30 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/entity/DouyinHot.java
  7. 48 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/entity/EffectCase.java
  8. 22 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/entity/HotMaterial.java
  9. 10 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/mapper/DouyinHotMapper.java
  10. 7 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/mapper/EffectCaseMapper.java
  11. 7 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/mapper/HotMaterialMapper.java
  12. 34 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/mapper/xml/DouyinHotMapper.xml
  13. 10 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/service/IDouyinHotService.java
  14. 7 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/service/IEffectCaseService.java
  15. 7 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/service/IHotMaterialService.java
  16. 19 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/service/impl/DouyinHotServiceImpl.java
  17. 11 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/service/impl/EffectCaseServiceImpl.java
  18. 11 0
      module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/service/impl/HotMaterialServiceImpl.java

+ 5 - 0
jeecg-boot-module-system/pom.xml

@@ -136,6 +136,11 @@
             <artifactId>poi-ooxml</artifactId>
             <version>3.17</version>
         </dependency>
+        <dependency>
+            <groupId>com.bstek.ureport</groupId>
+            <artifactId>ureport2-core</artifactId>
+            <version>2.2.9</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 0 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/JeecgApplication.java

@@ -4,7 +4,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.servlet.MultipartConfigFactory;
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
@@ -13,7 +12,6 @@ import org.springframework.core.env.Environment;
 import org.springframework.web.client.RestTemplate;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
-import javax.servlet.MultipartConfigElement;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 

+ 2 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/config/ureport/PropertiesConfig.java

@@ -11,6 +11,8 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.Properties;
 
+import static java.lang.System.setProperties;
+
 @Slf4j
 @Configuration
 @ConditionalOnBean(UReportConfig.class)

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/config/ureport/ServletConfig.java

@@ -9,7 +9,7 @@ import org.springframework.context.annotation.ImportResource;
 import javax.servlet.Servlet;
 
 @Configuration
-@ImportResource("classpath:ureport-console-context.xml")
+//@ImportResource("classpath:ureport-console-context.xml")
 public class ServletConfig {
 
     @Bean

+ 251 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/OceanengineJob.java

@@ -0,0 +1,251 @@
+package org.jeecg.modules.ctop.job;
+
+import cn.com.ctop.common.module.utils.HttpUtils2;
+import cn.com.ctop.common.module.utils.ResultMapUtils;
+import cn.com.ctop.common.module.utils.StatusCode;
+import cn.com.ctop.crawler.modules.core.util.FateadmHttpUtil;
+import cn.com.ctop.crawler.modules.core.util.FateadmUtil;
+import cn.com.ctop.crawler.modules.oceanengine.entity.DouyinHot;
+import cn.com.ctop.crawler.modules.oceanengine.entity.EffectCase;
+import cn.com.ctop.crawler.modules.oceanengine.entity.HotMaterial;
+import cn.com.ctop.crawler.modules.oceanengine.service.IDouyinHotService;
+import cn.com.ctop.crawler.modules.oceanengine.service.IEffectCaseService;
+import cn.com.ctop.crawler.modules.oceanengine.service.IHotMaterialService;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import javafx.scene.effect.Effect;
+import org.apache.http.impl.cookie.BasicClientCookie;
+import org.openqa.selenium.Cookie;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.chrome.ChromeDriver;
+import org.openqa.selenium.chrome.ChromeOptions;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.*;
+
+public class OceanengineJob implements Job {
+    @Autowired
+    private IDouyinHotService douyinHotService;
+    @Autowired
+    private IEffectCaseService effectCaseService;
+    @Autowired
+    private IHotMaterialService hotMaterialService;
+
+    private void hotMaterialHandler(int page,int appCode,String appName){
+        String result = HttpUtils2.httpGetRequest("https://cc.oceanengine.com/creative_center_server/api/hot_material/list?material_type=3&order_by=convert_show_rate&period_type=3&aggr_app_code="+appCode+"&page="+page+"&limit=100");
+        System.out.println(result);
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+        try {
+            JsonNode node = mapper.readTree(result);
+            int code = node.get("code").asInt();
+            if (code == 0) {
+                if (node.get("data") != null&&node.get("data").get("materials")!=null) {
+                    String dataJson = node.get("data").get("materials").toString();
+                    List<HotMaterial> list = mapper.readValue(dataJson,new TypeReference<List<HotMaterial>>() {});
+                    if(list != null && list.size() > 0){
+                        for (HotMaterial material : list){
+                            material.setAppCode(appCode);
+                            material.setAppName(appName);
+                            material.setVideoUrl("https://aweme.snssdk.com/aweme/v1/playwm/?video_id="+material.getVid()+"&line=0");
+                            hotMaterialService.saveOrUpdate(material);
+                        }
+                        hotMaterialHandler(page+1,appCode,appName);
+                    }
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+    private void effectCaseHandler(int page){
+        String result = HttpUtils2.httpGetRequest("https://cc.oceanengine.com/creative_center_server/api/case/effect_case_list?industry=0&style=0&mode=0&page="+page+"&limit=100");
+        System.out.println(result);
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+        try {
+            JsonNode node = mapper.readTree(result);
+            int code = node.get("code").asInt();
+            if(code == 0) {
+                if (node.get("data") != null) {
+                    String dataJson = node.get("data").get("effect_cases").toString();
+                    List<EffectCase> list = mapper.readValue(dataJson,new TypeReference<List<EffectCase>>() {});
+                    if (list != null && list.size() > 0) {
+                        for (EffectCase effectCase:list){
+                            String resultDetail = HttpUtils2.httpGetRequest("https://cc.oceanengine.com/creative_center_server/api/case/effect_case/"+effectCase.getId());
+                            JsonNode detailNode = mapper.readTree(resultDetail);
+                            int detailCode = detailNode.get("code").asInt();
+                            if(detailCode == 0){
+                                if(detailNode.get("data") != null){
+//                                    String detailJson = node.get("data").get("effect_cases").toString();
+//                                    EffectCase effectCase1 = mapper.readValue(detailJson,EffectCase.class);
+                                    effectCase.setAuthor(detailNode.get("data").get("effect_case").get("author").asText());
+                                    effectCase.setCreateDate(detailNode.get("data").get("effect_case").get("create_date").asText());
+                                    effectCase.setCreativeId(detailNode.get("data").get("effect_case").get("creative_id").asLong());
+                                    effectCase.setCreativeScore(detailNode.get("data").get("effect_case").get("creative_score").asText());
+                                    effectCase.setEffect(detailNode.get("data").get("effect_case").get("effect").toString());
+                                    effectCase.setMethods(detailNode.get("data").get("effect_case").get("methods").toString());
+                                    effectCase.setVideoUrl("https://aweme.snssdk.com/aweme/v1/playwm/?video_id="+effectCase.getVid()+"&line=0");
+                                    effectCase.setCreativeLabel(detailNode.get("data").get("effect_case").get("creative_label").toString());
+                                }
+                            }
+                            effectCaseService.saveOrUpdate(effectCase);
+                        }
+                        effectCaseHandler(page+1);
+                    }
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+    private void douyinHotHandler(int page,int listType){
+        String result = HttpUtils2.httpGetRequest("https://cc.oceanengine.com/creative_center_server/api/hot_video/user_side/list?page="+page+"&limit=100&list_type="+listType+"&aggr_duration_type=-1");
+        System.out.println(result);
+        ObjectMapper mapper = new ObjectMapper();
+        try {
+            JsonNode node = mapper.readTree(result);
+            int code = node.get("code").asInt();
+            if(code == 0){
+                if(node.get("data")!= null){
+                    String dataJson = node.get("data").get("items").toString();
+                    List<DouyinHot> list = mapper.readValue(dataJson,new TypeReference<List<DouyinHot>>() {});
+                    if (list != null && list.size() > 0){
+//                        douyinHotService.replaceBatch(list);
+                        for (DouyinHot douyinHot : list){
+                            douyinHot.setUrl("https://aweme.snssdk.com/aweme/v1/playwm/?video_id="+douyinHot.getVideoId()+"&line=0");
+                            douyinHotService.saveOrUpdate(douyinHot);
+                        }
+                        douyinHotHandler(page+1,listType);
+                    }else {
+                        if(listType < 4){
+                            douyinHotHandler(1,listType+1);
+                        }
+                    }
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+
+    }
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        String account="1728681417@qq.com";
+        String password = "Yy-704127411";
+        login(account,password);
+//        douyinHotHandler(1,1);
+//        effectCaseHandler(1);
+        hotMaterialHandler(1,1,"西瓜");
+        hotMaterialHandler(1,3,"火山");
+        hotMaterialHandler(1,4,"抖音");
+        hotMaterialHandler(1,8,"头条");
+        hotMaterialHandler(1,9,"穿山甲");
+    }
+
+    private void login(String account,String password){
+        String url = "https://cc.oceanengine.com/login";
+        System.getProperties().setProperty("webdriver.chrome.driver", "D:/chromedriver.exe");
+        ChromeOptions chromeOptions = new ChromeOptions();
+//        chromeOptions.addArguments("--headless");
+        chromeOptions.addArguments("--no-sandbox");
+        chromeOptions.addArguments("--window-size=1920,1080");
+        chromeOptions.addArguments("--user-agent=" + HttpUtils2.USER_AGENT);
+        chromeOptions.setAcceptInsecureCerts(true);
+        WebDriver webDriver = new ChromeDriver(chromeOptions);
+        //清除所有的缓存
+        webDriver.manage().deleteAllCookies();
+        try {
+            //获取登录页面
+            webDriver.get(url);
+            for (Cookie cookie : webDriver.manage().getCookies()) {
+                BasicClientCookie ck = new BasicClientCookie(cookie.getName(), cookie.getValue());
+                ck.setDomain("oceanengine.com");
+                ck.setExpiryDate(cookie.getExpiry());
+                ck.setPath(cookie.getPath());
+                HttpUtils2.cookieStore.addCookie(ck);
+            }
+            Map<String, String> header = new HashMap<>();
+            header.put("Accept", "*/*");
+            header.put("Connection", "keep-alive");
+            header.put("Host", "sso.toutiao.com");
+            header.put("Content-Type", "application/x-www-form-urlencoded");
+            header.put("Origin", "https://cc.oceanengine.com");
+            header.put("Referer", "https://cc.oceanengine.com/login");
+            Map<String, Object> param = new HashMap<>();
+            param.put("mobile", "");
+            param.put("code", "");
+            param.put("account", account);
+            param.put("password", password);
+            param.put("captcha", "hqde");
+            param.put("is_30_days_no_login", "true");
+            param.put("service", "https://cc.oceanengine.com");
+            String res = HttpUtils2.httpPostParamRequest("https://sso.toutiao.com/account_login/", param, header);
+            System.out.println(res);
+            ObjectMapper mapper = new ObjectMapper();
+            mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+            JsonNode jsonNode = mapper.readTree(res);
+            //errorcode == 1102 验证码错误,请重新输入验证码
+            //errorcode == 1101 验证码为空
+
+            Integer errorCode = jsonNode.get("error_code").asInt();
+            String orderId = null;
+            while (errorCode != 0) {
+                //用户名或者密码错误
+                if (null != errorCode && errorCode == 1009) {
+                    return;
+                }
+                FateadmUtil fateadmUtil = new FateadmUtil();
+                fateadmUtil.init();
+                if (orderId != null) {
+                    fateadmUtil.Justice(orderId);
+                }
+                String captcha = jsonNode.get("captcha").asText();
+                Base64.Decoder decoder = Base64.getDecoder();
+                FateadmHttpUtil.HttpResp resp = fateadmUtil.Predict("30400", decoder.decode(captcha));
+                param.put("captcha", resp.pred_resl);
+                orderId = resp.req_id;
+                res = HttpUtils2.httpPostParamRequest("https://sso.toutiao.com/account_login/", param, header);
+                System.out.println(res);
+                jsonNode = mapper.readTree(res);
+                errorCode = jsonNode.get("error_code").asInt();
+            }
+            if (errorCode == 0) {
+                //表示登录成功
+
+                List<org.apache.http.cookie.Cookie> cookies = HttpUtils2.cookieStore.getCookies();
+                for (org.apache.http.cookie.Cookie ck : cookies) {
+                    Cookie cookie = new Cookie(ck.getName(), ck.getValue(), "." + ck.getDomain(), ck.getPath(), ck.getExpiryDate());
+                    webDriver.manage().addCookie(cookie);
+                }
+                String redirectUrl = jsonNode.get("redirect_url").asText();
+                webDriver.get(redirectUrl);
+                //登录成功 进入推广页面
+                webDriver.get("https://cc.oceanengine.com/inspiration/douyin-rank-list");
+                Thread.sleep(3000);
+                for (Cookie cookie : webDriver.manage().getCookies()) {
+                    BasicClientCookie ck = new BasicClientCookie(cookie.getName(), cookie.getValue());
+                    ck.setDomain("cc.oceanengine.com");
+                    ck.setExpiryDate(cookie.getExpiry());
+                    ck.setPath(cookie.getPath());
+                    HttpUtils2.cookieStore.addCookie(ck);
+                }
+
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            //获得cookie
+            Set<Cookie> coo = webDriver.manage().getCookies();
+            //清除所有的缓存
+            webDriver.manage().deleteAllCookies();
+            webDriver.quit();
+        }
+    }
+}

+ 30 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/entity/DouyinHot.java

@@ -0,0 +1,30 @@
+package cn.com.ctop.crawler.modules.oceanengine.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+@TableName("ctop_oceanengine_douyin_hot")
+public class DouyinHot {
+    @TableId(value = "id", type = IdType.INPUT)
+    private Long id;
+    private Long mid;
+    @JsonProperty("video_id")
+    private String videoId;
+    @JsonProperty("core_user_id")
+    private Long userId;
+    @JsonProperty("core_user_name")
+    private String userName;
+    private String title;
+    @JsonProperty("head_image_uri")
+    private String headImageUri;
+    private Integer play;
+    @JsonProperty("like_cnt")
+    private Integer likeCnt;
+    private Integer share;
+    private Integer comment;
+    private String url;
+}

+ 48 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/entity/EffectCase.java

@@ -0,0 +1,48 @@
+package cn.com.ctop.crawler.modules.oceanengine.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@JsonIgnoreProperties({ "methods", "effect","creativeLabel","tag" })
+@TableName("ctop_oceanengine_effect_case")
+public class EffectCase {
+    @TableId(value = "id", type = IdType.INPUT)
+    private Long id;
+    private String vid;
+    @JsonProperty("creative_label_1")
+    @TableField(value = "creative_label_1")
+    private String creativeLabel1;
+    @JsonProperty("creative_label_2")
+    @TableField(value = "creative_label_2")
+    private Integer creativeLabel2;
+    @JsonProperty("create_date")
+    private String createDate;
+    @JsonProperty("creative_id")
+    private Long creativeId;
+    private String methods;
+    @JsonProperty("video_url")
+    private String videoUrl;
+    private String author;
+    private String effect;
+    @JsonProperty("conversion_type")
+    private String conversionType;
+    private String creativeLabel;
+    private String tag;
+    @JsonProperty("creative_title")
+    private String creativeTitle;
+    @JsonProperty("creative_info")
+    private String creativeInfo;
+    @JsonProperty("creative_score")
+    private String creativeScore;
+    @JsonProperty("industry_tag")
+    private String industryTag;
+}

+ 22 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/entity/HotMaterial.java

@@ -0,0 +1,22 @@
+package cn.com.ctop.crawler.modules.oceanengine.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+@JsonIgnoreProperties({ "appCode", "appName" })
+@TableName("ctop_oceanengine_hot_material")
+public class HotMaterial {
+    @TableId(value = "id",type = IdType.INPUT)
+    @JsonProperty("material_id")
+    private Long id;
+    private String vid;
+    private String videoUrl;
+    private String title;
+    private Integer appCode;
+    private String appName;
+}

+ 10 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/mapper/DouyinHotMapper.java

@@ -0,0 +1,10 @@
+package cn.com.ctop.crawler.modules.oceanengine.mapper;
+
+import cn.com.ctop.crawler.modules.oceanengine.entity.DouyinHot;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.List;
+
+public interface DouyinHotMapper extends BaseMapper<DouyinHot> {
+    public void replaceBatch(List<DouyinHot> list);
+}

+ 7 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/mapper/EffectCaseMapper.java

@@ -0,0 +1,7 @@
+package cn.com.ctop.crawler.modules.oceanengine.mapper;
+
+import cn.com.ctop.crawler.modules.oceanengine.entity.EffectCase;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface EffectCaseMapper extends BaseMapper<EffectCase> {
+}

+ 7 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/mapper/HotMaterialMapper.java

@@ -0,0 +1,7 @@
+package cn.com.ctop.crawler.modules.oceanengine.mapper;
+
+import cn.com.ctop.crawler.modules.oceanengine.entity.HotMaterial;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface HotMaterialMapper extends BaseMapper<HotMaterial> {
+}

+ 34 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/mapper/xml/DouyinHotMapper.xml

@@ -0,0 +1,34 @@
+<?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="cn.com.ctop.crawler.modules.oceanengine.mapper.DouyinHotMapper">
+
+    <insert id="replaceBatch">
+        replace into ctop_oceanengine_douyin_hot(
+        id,
+        mid,
+        video_id,
+        user_id,
+        user_name,
+        title,
+        head_image_uri,
+        play,
+        like_cnt,
+        comment,
+        share)
+        values
+        <foreach collection="list" item="item" separator=",">
+            (
+            #{item.id},
+            #{item.mid},
+            #{item.videoId},
+            #{item.userId},
+            #{item.userName},
+            #{item.title},
+            #{item.headImageUri},
+            #{item.play},
+            #{item.likeCnt},
+            #{item.comment},
+            #{item.share})
+        </foreach>
+    </insert>
+</mapper>

+ 10 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/service/IDouyinHotService.java

@@ -0,0 +1,10 @@
+package cn.com.ctop.crawler.modules.oceanengine.service;
+
+import cn.com.ctop.crawler.modules.oceanengine.entity.DouyinHot;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+public interface IDouyinHotService extends IService<DouyinHot> {
+    public void replaceBatch(List<DouyinHot> list);
+}

+ 7 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/service/IEffectCaseService.java

@@ -0,0 +1,7 @@
+package cn.com.ctop.crawler.modules.oceanengine.service;
+
+import cn.com.ctop.crawler.modules.oceanengine.entity.EffectCase;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface IEffectCaseService extends IService<EffectCase> {
+}

+ 7 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/service/IHotMaterialService.java

@@ -0,0 +1,7 @@
+package cn.com.ctop.crawler.modules.oceanengine.service;
+
+import cn.com.ctop.crawler.modules.oceanengine.entity.HotMaterial;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface IHotMaterialService extends IService<HotMaterial> {
+}

+ 19 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/service/impl/DouyinHotServiceImpl.java

@@ -0,0 +1,19 @@
+package cn.com.ctop.crawler.modules.oceanengine.service.impl;
+
+import cn.com.ctop.crawler.modules.oceanengine.entity.DouyinHot;
+import cn.com.ctop.crawler.modules.oceanengine.mapper.DouyinHotMapper;
+import cn.com.ctop.crawler.modules.oceanengine.service.IDouyinHotService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class DouyinHotServiceImpl extends ServiceImpl<DouyinHotMapper, DouyinHot> implements IDouyinHotService {
+    @Autowired
+    private DouyinHotMapper douyinHotMapper;
+    public void replaceBatch(List<DouyinHot> list){
+        douyinHotMapper.replaceBatch(list);
+    }
+}

+ 11 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/service/impl/EffectCaseServiceImpl.java

@@ -0,0 +1,11 @@
+package cn.com.ctop.crawler.modules.oceanengine.service.impl;
+
+import cn.com.ctop.crawler.modules.oceanengine.entity.EffectCase;
+import cn.com.ctop.crawler.modules.oceanengine.mapper.EffectCaseMapper;
+import cn.com.ctop.crawler.modules.oceanengine.service.IEffectCaseService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service
+public class EffectCaseServiceImpl extends ServiceImpl<EffectCaseMapper, EffectCase> implements IEffectCaseService {
+}

+ 11 - 0
module-crawler/src/main/java/cn/com/ctop/crawler/modules/oceanengine/service/impl/HotMaterialServiceImpl.java

@@ -0,0 +1,11 @@
+package cn.com.ctop.crawler.modules.oceanengine.service.impl;
+
+import cn.com.ctop.crawler.modules.oceanengine.entity.HotMaterial;
+import cn.com.ctop.crawler.modules.oceanengine.mapper.HotMaterialMapper;
+import cn.com.ctop.crawler.modules.oceanengine.service.IHotMaterialService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service
+public class HotMaterialServiceImpl extends ServiceImpl<HotMaterialMapper, HotMaterial> implements IHotMaterialService {
+}