2 Commits d0353dd71d ... 290910c158

Author SHA1 Message Date
  王董 290910c158 Merge remote-tracking branch 'origin/master' 1 year ago
  王董 91bf0e8304 Sku管理 1 year ago
21 changed files with 604 additions and 25 deletions
  1. 4 0
      sd-business/src/main/java/com/sd/business/controller/sku/SkuClassifyController.java
  2. 19 0
      sd-business/src/main/java/com/sd/business/controller/synchro/SynchroTimeController.java
  3. 51 0
      sd-business/src/main/java/com/sd/business/entity/synchro/po/SynchroTime.java
  4. 17 0
      sd-business/src/main/java/com/sd/business/entity/synchro/vo/SynchroTimeVo.java
  5. 17 0
      sd-business/src/main/java/com/sd/business/mapper/synchro/SynchroTimeMapper.java
  6. 2 0
      sd-business/src/main/java/com/sd/business/service/sku/SkuClassifyService.java
  7. 6 0
      sd-business/src/main/java/com/sd/business/service/sku/impl/SkuClassifyServiceImpl.java
  8. 17 0
      sd-business/src/main/java/com/sd/business/service/synchro/SynchroTimeService.java
  9. 21 0
      sd-business/src/main/java/com/sd/business/service/synchro/impl/SynchroTimeServiceImpl.java
  10. 4 0
      sd-business/src/main/resources/mapper/synchro/SynchroTimeMapper.xml
  11. 11 0
      sd-framework/pom.xml
  12. 305 0
      sd-wln/src/main/java/com/sd/wln/api/HttpUtils.java
  13. 4 3
      sd-wln/src/main/java/com/sd/wln/api/SkuClassifyParam.java
  14. 9 7
      sd-wln/src/main/java/com/sd/wln/controller/WanliController.java
  15. 19 0
      sd-wln/src/main/java/com/sd/wln/service/ISynchroTimeApi.java
  16. 2 2
      sd-wln/src/main/java/com/sd/wln/service/WanliService.java
  17. 1 1
      sd-wln/src/main/java/com/sd/wln/service/WanliSkuService.java
  18. 27 0
      sd-wln/src/main/java/com/sd/wln/service/impl/SynchroTimeApi.java
  19. 23 9
      sd-wln/src/main/java/com/sd/wln/service/impl/WanliServiceImpl.java
  20. 5 3
      sd-wln/src/main/java/com/sd/wln/service/impl/WanliSkuServiceImpl.java
  21. 40 0
      sd-wln/src/main/java/com/sd/wln/timer/Schedule.java

+ 4 - 0
sd-business/src/main/java/com/sd/business/controller/sku/SkuClassifyController.java

@@ -74,4 +74,8 @@ public class SkuClassifyController {
         skuClassifyService.delete(dto.getId());
     }
 
+    @PostMapping("/saveBath")
+    public Boolean saveBath(@RequestBody List<SkuClassifyVo> skuClassifyDtos){
+        return skuClassifyService.saveBatch(skuClassifyDtos);
+    }
 }

+ 19 - 0
sd-business/src/main/java/com/sd/business/controller/synchro/SynchroTimeController.java

@@ -0,0 +1,19 @@
+package com.sd.business.controller.synchro;
+
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-04
+ */
+@RestController
+@RequestMapping("/synchroTime")
+public class SynchroTimeController {
+
+
+}

+ 51 - 0
sd-business/src/main/java/com/sd/business/entity/synchro/po/SynchroTime.java

@@ -0,0 +1,51 @@
+package com.sd.business.entity.synchro.po;
+
+import com.ruoyi.common.core.domain.BaseIdPo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-04
+ */
+@Getter
+@Setter
+@TableName("synchro_time")
+public class SynchroTime extends BaseIdPo {
+
+    /**
+     * 抓取模块
+     */
+    private String model;
+
+    /**
+     * 是否成功 0成功 1失败
+     */
+    private Boolean result;
+
+    /**
+     * 0新增  1修改  2删除
+     */
+    private Integer type;
+
+    /**
+     * 抓取条数
+     */
+    private Integer size;
+
+    /**
+     * 耗时--毫秒
+     */
+    private Long elapsedTime;
+
+    /**
+     * 同步截止时间
+     */
+    private Long synchroTime;
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/synchro/vo/SynchroTimeVo.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.synchro.vo;
+
+import com.sd.business.entity.synchro.po.SynchroTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-07-04
+ */
+@Getter
+@Setter
+public class SynchroTimeVo extends SynchroTime {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/mapper/synchro/SynchroTimeMapper.java

@@ -0,0 +1,17 @@
+package com.sd.business.mapper.synchro;
+
+import com.sd.business.entity.synchro.po.SynchroTime;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-04
+ */
+public interface SynchroTimeMapper extends BaseMapper<SynchroTime> {
+
+}

+ 2 - 0
sd-business/src/main/java/com/sd/business/service/sku/SkuClassifyService.java

@@ -49,4 +49,6 @@ public interface SkuClassifyService extends BaseService<SkuClassify> {
      */
     void delete(Long id);
 
+    Boolean saveBatch(List<SkuClassifyVo> skuClassifyDtos);
+
 }

+ 6 - 0
sd-business/src/main/java/com/sd/business/service/sku/impl/SkuClassifyServiceImpl.java

@@ -4,6 +4,7 @@ import com.sd.business.entity.sku.po.SkuClassify;
 import com.sd.business.mapper.sku.SkuClassifyMapper;
 import com.sd.business.service.sku.SkuClassifyService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sd.business.entity.sku.vo.SkuClassifyVo;
@@ -63,4 +64,9 @@ public class SkuClassifyServiceImpl extends ServiceImpl<SkuClassifyMapper, SkuCl
         this.removeById(id);
     }
 
+    @Override
+    public Boolean saveBatch(List<SkuClassifyVo> skuClassifyDtos) {
+        return this.executeBatch(skuClassifyDtos,null);
+    }
+
 }

+ 17 - 0
sd-business/src/main/java/com/sd/business/service/synchro/SynchroTimeService.java

@@ -0,0 +1,17 @@
+package com.sd.business.service.synchro;
+
+import com.sd.business.entity.synchro.po.SynchroTime;
+import com.ruoyi.common.core.service.BaseService;
+
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-04
+ */
+public interface SynchroTimeService extends BaseService<SynchroTime> {
+
+}

+ 21 - 0
sd-business/src/main/java/com/sd/business/service/synchro/impl/SynchroTimeServiceImpl.java

@@ -0,0 +1,21 @@
+package com.sd.business.service.synchro.impl;
+
+import com.sd.business.entity.synchro.po.SynchroTime;
+import com.sd.business.mapper.synchro.SynchroTimeMapper;
+import com.sd.business.service.synchro.SynchroTimeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-04
+ */
+@Service
+public class SynchroTimeServiceImpl extends ServiceImpl<SynchroTimeMapper, SynchroTime> implements SynchroTimeService {
+
+}

+ 4 - 0
sd-business/src/main/resources/mapper/synchro/SynchroTimeMapper.xml

@@ -0,0 +1,4 @@
+<?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="com.sd.business.mapper.synchro.SynchroTimeMapper">
+</mapper>

+ 11 - 0
sd-framework/pom.xml

@@ -23,7 +23,18 @@
             <groupId>com.fjhx</groupId>
             <artifactId>hx-base</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpcore</artifactId>
+            <version>4.4.10</version>
+        </dependency>
 
+        <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.5.6</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 305 - 0
sd-wln/src/main/java/com/sd/wln/api/HttpUtils.java

@@ -0,0 +1,305 @@
+package com.sd.wln.api;
+
+import cn.hutool.json.JSONUtil;
+import com.ruoyi.common.constant.Constants;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpStatus;
+import org.apache.http.StatusLine;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import javax.net.ssl.*;
+import java.io.*;
+import java.net.ConnectException;
+import java.net.SocketTimeoutException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.security.cert.X509Certificate;
+
+/**
+ * 通用http发送方法
+ */
+public class HttpUtils {
+
+    private static final Logger log = LoggerFactory.getLogger(HttpUtils.class);
+
+    /**
+     * 向指定 URL 发送GET方法的请求
+     *
+     * @param url   发送请求的 URL
+     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendGet(String url, String param) {
+        return sendGet(url, param, Constants.UTF8);
+    }
+
+    /**
+     * 向指定 URL 发送GET方法的请求
+     *
+     * @param url         发送请求的 URL
+     * @param param       请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @param contentType 编码类型
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendGet(String url, String param, String contentType) {
+        StringBuilder result = new StringBuilder();
+        BufferedReader in = null;
+        try {
+            String urlNameString = url + "?" + param;
+            log.info("sendGet - {}", urlNameString);
+            URL realUrl = new URL(urlNameString);
+            URLConnection connection = realUrl.openConnection();
+            connection.setRequestProperty("accept", "*/*");
+            connection.setRequestProperty("connection", "Keep-Alive");
+            connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            connection.connect();
+            in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType));
+            String line;
+            while ((line = in.readLine()) != null) {
+                result.append(line);
+            }
+            log.info("recv - {}", result);
+        } catch (ConnectException e) {
+            log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e);
+        } catch (SocketTimeoutException e) {
+            log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e);
+        } catch (IOException e) {
+            log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e);
+        } catch (Exception e) {
+            log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e);
+        } finally {
+            try {
+                if (in != null) {
+                    in.close();
+                }
+            } catch (Exception ex) {
+                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * 向指定 URL 发送POST方法的请求
+     *
+     * @param url   发送请求的 URL
+     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendPostTOPA(String url, String param) {
+        PrintWriter out = null;
+        BufferedReader in = null;
+        StringBuilder result = new StringBuilder();
+        try {
+            String urlNameString = url;
+            log.info("sendPost - {}", urlNameString);
+            URL realUrl = new URL(urlNameString);
+            URLConnection conn = realUrl.openConnection();
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            conn.setRequestProperty("Accept-Charset", "utf-8");
+            conn.setRequestProperty("contentType", "utf-8");
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+            out = new PrintWriter(conn.getOutputStream());
+            out.print(param);
+            out.flush();
+            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
+            String line;
+            while ((line = in.readLine()) != null) {
+                result.append(line);
+            }
+            log.info("recv - {}", result);
+        } catch (ConnectException e) {
+            log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
+        } catch (SocketTimeoutException e) {
+            log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
+        } catch (IOException e) {
+            log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
+        } catch (Exception e) {
+            log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
+        } finally {
+            try {
+                if (out != null) {
+                    out.close();
+                }
+                if (in != null) {
+                    in.close();
+                }
+            } catch (IOException ex) {
+                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
+            }
+        }
+        return result.toString();
+    }
+
+    public static String sendSSLPost(String url, String param) {
+        StringBuilder result = new StringBuilder();
+        String urlNameString = url + "?" + param;
+        try {
+            log.info("sendSSLPost - {}", urlNameString);
+            SSLContext sc = SSLContext.getInstance("SSL");
+            sc.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());
+            URL console = new URL(urlNameString);
+            HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            conn.setRequestProperty("Accept-Charset", "utf-8");
+            conn.setRequestProperty("contentType", "utf-8");
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+
+            conn.setSSLSocketFactory(sc.getSocketFactory());
+            conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
+            conn.connect();
+            InputStream is = conn.getInputStream();
+            BufferedReader br = new BufferedReader(new InputStreamReader(is));
+            String ret = "";
+            while ((ret = br.readLine()) != null) {
+                if (ret != null && !"".equals(ret.trim())) {
+                    result.append(new String(ret.getBytes("ISO-8859-1"), "utf-8"));
+                }
+            }
+            log.info("recv - {}", result);
+            conn.disconnect();
+            br.close();
+        } catch (ConnectException e) {
+            log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e);
+        } catch (SocketTimeoutException e) {
+            log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e);
+        } catch (IOException e) {
+            log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e);
+        } catch (Exception e) {
+            log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e);
+        }
+        return result.toString();
+    }
+
+    /**
+     * post请求
+     * @param url
+     * @return
+     */
+    public static String sendPost(String url, Object param) {
+        String params = JSONUtil.toJsonStr(param);
+        CloseableHttpClient httpclient = HttpClients.createDefault();
+        HttpPost httpPost = new HttpPost(url);
+        httpPost.setHeader("Accept", "application/json");
+        httpPost.setHeader("Content-Type", "application/json");
+        httpPost.setHeader("User-Agent", "PostmanRuntime/7.29.2");
+        httpPost.setHeader("Accept", "*/*");
+        String charSet = "UTF-8";
+        StringEntity entity = new StringEntity(params, charSet);
+        httpPost.setEntity(entity);
+        CloseableHttpResponse response = null;
+        try {
+            response = httpclient.execute(httpPost);
+            StatusLine status = response.getStatusLine();
+            int state = status.getStatusCode();
+            if (state == HttpStatus.SC_OK) {
+                HttpEntity responseEntity = response.getEntity();
+                String jsonString = EntityUtils.toString(responseEntity);
+//                String a = new String(jsonString.getBytes("ISO-8859-1"),charSet);
+                return jsonString;
+            }
+        } catch (ClientProtocolException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            if (response != null) {
+                try {
+                    response.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            try {
+                httpclient.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return null;
+    }
+
+    /**
+     * post请求
+     * @param url
+     * @return
+     */
+    public static String getPost(String url, Object param,Object address) {
+        String params = JSONUtil.toJsonStr(param);
+        CloseableHttpClient httpclient = HttpClients.createDefault();
+        HttpPost httpPost = new HttpPost(url);
+        httpPost.setHeader("Accept", "application/json");
+        httpPost.setHeader("Content-Type", "application/json");
+        httpPost.setHeader("User-Agent", "PostmanRuntime/7.29.2");
+        httpPost.setHeader("Accept", "*/*");
+        String charSet = "UTF-8";
+        StringEntity entity = new StringEntity(params, charSet);
+        httpPost.setEntity(entity);
+        CloseableHttpResponse response = null;
+        try {
+            response = httpclient.execute(httpPost);
+            StatusLine status = response.getStatusLine();
+            int state = status.getStatusCode();
+            if (state == HttpStatus.SC_OK) {
+                HttpEntity responseEntity = response.getEntity();
+                String jsonString = EntityUtils.toString(responseEntity);
+//                String a = new String(jsonString.getBytes("ISO-8859-1"),charSet);
+                return jsonString;
+            }
+        } catch (ClientProtocolException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            if (response != null) {
+                try {
+                    response.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            try {
+                httpclient.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return null;
+    }
+
+    private static class TrustAnyTrustManager implements X509TrustManager {
+        @Override
+        public void checkClientTrusted(X509Certificate[] chain, String authType) {
+        }
+
+        @Override
+        public void checkServerTrusted(X509Certificate[] chain, String authType) {
+        }
+
+        @Override
+        public X509Certificate[] getAcceptedIssuers() {
+            return new X509Certificate[]{};
+        }
+    }
+
+    private static class TrustAnyHostnameVerifier implements HostnameVerifier {
+        @Override
+        public boolean verify(String hostname, SSLSession session) {
+            return true;
+        }
+    }
+
+}

+ 4 - 3
sd-business/src/main/java/com/sd/business/entity/sku/po/SkuClassifyParam.java → sd-wln/src/main/java/com/sd/wln/api/SkuClassifyParam.java

@@ -1,13 +1,14 @@
-package com.sd.business.entity.sku.po;
+package com.sd.wln.api;
 
-import com.sd.wln.api.Signature;
+
+import lombok.Data;
 
 /**
  * @Author
  * @Description //TODO
  * @Date 2023年07月03日 15:01
  **/
-
+@Data
 public class SkuClassifyParam extends Signature {
     private static final long serialVersionUID = 1L;
 

+ 9 - 7
sd-wln/src/main/java/com/sd/wln/controller/WanliController.java

@@ -1,30 +1,32 @@
 package com.sd.wln.controller;
 
+import com.ruoyi.common.annotation.Anonymous;
 import com.ruoyi.common.core.domain.R;
-import com.sd.business.entity.sku.po.SkuClassify;
-import com.sd.business.entity.sku.po.SkuClassifyParam;
+import com.sd.wln.api.SkuClassifyParam;
 import com.sd.wln.service.WanliService;
-import org.apache.http.client.HttpClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
+
 /**
  * @Author
  * @Description //TODO
  * @Date 2023年07月03日 14:36
  **/
+@Anonymous
 @RestController
 @RequestMapping("/wanli")
 public class WanliController {
 
-    @Autowired
+    @Resource
     WanliService wanliService;
 
-    @PostMapping("/importSku")
-    public R importSku(@RequestBody SkuClassifyParam param){
-        return R.ok(wanliService.importSku(param));
+    @PostMapping("/importClssify")
+    public R importClssify(@RequestBody SkuClassifyParam param){
+        return R.ok(wanliService.importClssify(param));
     }
 }

+ 19 - 0
sd-wln/src/main/java/com/sd/wln/service/ISynchroTimeApi.java

@@ -0,0 +1,19 @@
+package com.sd.wln.service;
+
+import com.sd.business.entity.synchro.po.SynchroTime;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * 同步时间api
+ */
+public interface ISynchroTimeApi {
+
+    /**
+     * 添加抓取记录
+     * @return
+     */
+    @PostMapping("/save")
+    boolean save(@RequestBody SynchroTime synchroTime);
+
+}

+ 2 - 2
sd-wln/src/main/java/com/sd/wln/service/WanliService.java

@@ -1,7 +1,7 @@
 package com.sd.wln.service;
 
-import com.sd.business.entity.sku.po.SkuClassifyParam;
+import com.sd.wln.api.SkuClassifyParam;
 
 public interface WanliService {
-    Integer importSku(SkuClassifyParam param);
+    Integer importClssify(SkuClassifyParam param);
 }

+ 1 - 1
sd-wln/src/main/java/com/sd/wln/service/WanliSkuService.java

@@ -1,7 +1,7 @@
 package com.sd.wln.service;
 
 import cn.hutool.json.JSONObject;
-import com.sd.business.entity.sku.po.SkuClassifyParam;
+import com.sd.wln.api.SkuClassifyParam;
 
 public interface WanliSkuService {
     JSONObject getSkuClassIfy(SkuClassifyParam param);

+ 27 - 0
sd-wln/src/main/java/com/sd/wln/service/impl/SynchroTimeApi.java

@@ -0,0 +1,27 @@
+package com.sd.wln.service.impl;
+
+import com.sd.business.entity.synchro.po.SynchroTime;
+import com.sd.business.service.synchro.SynchroTimeService;
+import com.sd.wln.service.ISynchroTimeApi;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import javax.annotation.Resource;
+
+/**
+ * @Author
+ * @Description //TODO
+ * @Date 2023年07月04日 16:28
+ **/
+
+public class SynchroTimeApi implements ISynchroTimeApi {
+
+    @Resource
+    private SynchroTimeService synchroTimeService;
+
+    @PostMapping("save")
+    @Override
+    public boolean save(@RequestBody SynchroTime synchroTime) {
+        return synchroTimeService.save(synchroTime);
+    }
+}

+ 23 - 9
sd-wln/src/main/java/com/sd/wln/service/impl/WanliServiceImpl.java

@@ -3,14 +3,19 @@ package com.sd.wln.service.impl;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
-import com.alibaba.nacos.shaded.com.google.common.base.Joiner;
-import com.sd.business.entity.sku.po.SkuClassifyParam;
+import com.ruoyi.common.utils.MapUtil;
 import com.sd.business.entity.sku.vo.SkuClassifyVo;
 import com.sd.business.service.sku.SkuClassifyService;
+import com.sd.wln.api.HttpUtils;
+import com.sd.wln.api.SkuClassifyParam;
+import com.sd.wln.api.WanliAPIConstant;
 import com.sd.wln.service.WanliService;
 import com.sd.wln.service.WanliSkuService;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -21,15 +26,15 @@ import java.util.stream.Collectors;
  * @Description //TODO
  * @Date 2023年07月03日 14:37
  **/
-
+@Service
 public class WanliServiceImpl implements WanliService {
-    @Autowired
+    @Resource
     SkuClassifyService skuClassifyService;
-    @Autowired
+    @Resource
     WanliSkuService wanliSkuService;
 
     @Override
-    public Integer importSku(SkuClassifyParam param) {
+    public Integer importClssify(SkuClassifyParam param) {
         List<SkuClassifyVo> skuClassifyList = skuClassifyService.getList();
         List<Long> ids = skuClassifyList.stream().map(SkuClassifyVo::getId).collect(Collectors.toList());
         JSONObject jsonObject = wanliSkuService.getSkuClassIfy(param);
@@ -56,10 +61,19 @@ public class WanliServiceImpl implements WanliService {
         }
         for (SkuClassifyVo s:skuClassifyVoList){
             List<Long> parentCategory = getParentCategory(s.getId(), skuClassifyVoList);
-            s.setAncestors(Joiner.on(",").join(parentCategory));
+            s.setAncestors(StringUtils.join(parentCategory,","));
         }
-
-        return null;
+        skuClassifyService.saveBatch(skuClassifyVoList);
+        return skuClassifyVoList.size();
+    }
+    public static void main(String[] args) {
+        SkuClassifyParam param = new SkuClassifyParam();
+        param.setPage(1);
+        param.setLimit(50);
+        param.setCom_uid("22768050183124");
+        param.generate(MapUtil.createLinkString(MapUtil.beanToMap(param)));
+        String result = HttpUtils.sendPost(WanliAPIConstant.GOODS_API.getGoodsCatagory,MapUtil.beanToMap(param));
+        JSONObject jsonObject = JSONUtil.parseObj(result);
     }
 
 

+ 5 - 3
sd-wln/src/main/java/com/sd/wln/service/impl/WanliSkuServiceImpl.java

@@ -3,21 +3,23 @@ package com.sd.wln.service.impl;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.ruoyi.common.utils.MapUtil;
-import com.ruoyi.common.utils.http.HttpUtils;
-import com.sd.business.entity.sku.po.SkuClassifyParam;
+import com.sd.wln.api.HttpUtils;
+import com.sd.wln.api.SkuClassifyParam;
 import com.sd.wln.api.WanliAPIConstant;
 import com.sd.wln.service.WanliSkuService;
+import org.springframework.stereotype.Service;
 
 /**
  * @Author
  * @Description //TODO
  * @Date 2023年07月03日 15:29
  **/
-
+@Service
 public class WanliSkuServiceImpl implements WanliSkuService {
 
     @Override
     public JSONObject getSkuClassIfy(SkuClassifyParam param) {
+
         param.generate(MapUtil.createLinkString(MapUtil.beanToMap(param)));
         String skuResult = HttpUtils.sendPost(WanliAPIConstant.GOODS_API.getGoodsCatagory, MapUtil.beanToMap(param));
         JSONObject jsonObject = JSONUtil.parseObj(skuResult);

+ 40 - 0
sd-wln/src/main/java/com/sd/wln/timer/Schedule.java

@@ -0,0 +1,40 @@
+package com.sd.wln.timer;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.sd.wln.service.ISynchroTimeApi;
+import com.sd.wln.api.SkuClassifyParam;
+import com.sd.wln.service.WanliService;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Author
+ * @Description //TODO
+ * @Date 2023年07月04日 16:12
+ **/
+@Component
+@EnableScheduling
+public class Schedule {
+    /**
+     * 分类拉取---定时器--每天1点执行
+     */
+    @Scheduled(cron = "0 0 1 * * ?")
+    private void configureTasksGetProductCategory(){
+        SkuClassifyParam param = new SkuClassifyParam();
+        param.setCom_uid("22768050183124");
+        WanliService wanliService = SpringUtil.getBean(WanliService.class);
+        ISynchroTimeApi iSynchroTimeApi = SpringUtil.getBean(ISynchroTimeApi.class);
+        int result = wanliService.importClssify(param);
+        if(result>0){
+//            //插入一条新的爬取记录
+//            SynchroTime synchroTime = new SynchroTime();
+//            synchroTime.setModel(SynchroTimeModelEnum.MODEL_PRODUCT_CATEGORY.getValue());
+//            synchroTime.setSynchroTime(System.currentTimeMillis());
+//            synchroTime.setSize(result);
+//            synchroTime.setResult(0);
+//            synchroTime.setType(0);
+//            iSynchroTimeApi.save(synchroTime);
+        }
+    }
+}