Ver código fonte

拼多多 美团定时更新

小么熊🐻 4 anos atrás
pai
commit
37f9f98807
20 arquivos alterados com 528 adições e 31 exclusões
  1. 12 0
      zzjs-admin/pom.xml
  2. 2 0
      zzjs-admin/src/main/java/com/miaxis/ZzjsApplication.java
  3. 14 0
      zzjs-admin/src/main/resources/application-dev.yml
  4. 14 0
      zzjs-admin/src/main/resources/application-prod.yml
  5. 44 25
      zzjs-admin/src/test/java/com/miaxis/test/NormalTest3.java
  6. 3 5
      zzjs-admin/src/test/java/com/miaxis/test/NormalTest4.java
  7. 107 0
      zzjs-admin/src/test/java/com/miaxis/test/NormalTest5.java
  8. 17 0
      zzjs-common/src/main/java/com/miaxis/common/config/MeiConfig.java
  9. 15 0
      zzjs-common/src/main/java/com/miaxis/common/config/PddConfig.java
  10. 2 0
      zzjs-service/src/main/java/com/miaxis/carousel/mapper/HomePageDataInfoMapper.java
  11. 5 0
      zzjs-service/src/main/java/com/miaxis/carousel/service/IHomePageDataInfoService.java
  12. 6 0
      zzjs-service/src/main/java/com/miaxis/carousel/service/impl/HomePageDataInfoServiceImpl.java
  13. 18 0
      zzjs-service/src/main/java/com/miaxis/feign/dto/Mei.java
  14. 17 0
      zzjs-service/src/main/java/com/miaxis/feign/dto/PddResult.java
  15. 38 0
      zzjs-service/src/main/java/com/miaxis/feign/service/IMeiService.java
  16. 8 1
      zzjs-service/src/main/java/com/miaxis/feign/service/IPddService.java
  17. 1 0
      zzjs-service/src/main/java/com/miaxis/feign/service/IWaService.java
  18. 22 0
      zzjs-service/src/main/java/com/miaxis/feign/utils/FeignUtils.java
  19. 170 0
      zzjs-service/src/main/java/com/miaxis/job/MenuJob.java
  20. 13 0
      zzjs-service/src/main/resources/mapper/carousel/HomePageDataInfoMapper.xml

+ 12 - 0
zzjs-admin/pom.xml

@@ -68,6 +68,18 @@
             <artifactId>zzjs-generator</artifactId>
             <artifactId>zzjs-generator</artifactId>
             <version>1.0.1</version>
             <version>1.0.1</version>
         </dependency>
         </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>1.14</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>1.11</version>
+            <scope>test</scope>
+        </dependency>
 
 
 
 
     </dependencies>
     </dependencies>

+ 2 - 0
zzjs-admin/src/main/java/com/miaxis/ZzjsApplication.java

@@ -4,6 +4,7 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 
 /**
 /**
  * 启动程序
  * 启动程序
@@ -11,6 +12,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
  * @author miaxis
  * @author miaxis
  */
  */
 @EnableFeignClients
 @EnableFeignClients
+@EnableScheduling//开启定时任务注解
 @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
 @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
 public class ZzjsApplication
 public class ZzjsApplication
 {
 {

+ 14 - 0
zzjs-admin/src/main/resources/application-dev.yml

@@ -119,3 +119,17 @@ film:
     notifyUrl: http://218.85.55.253:65535/zzjs-admin/open-api/film/notify/filmOrder
     notifyUrl: http://218.85.55.253:65535/zzjs-admin/open-api/film/notify/filmOrder
     v1Url: http://movieapi-test.taototo.cn/
     v1Url: http://movieapi-test.taototo.cn/
     v2Url: http://movieapi2-test.taototo.cn/
     v2Url: http://movieapi2-test.taototo.cn/
+
+# 拼多多
+pdd:
+    clientId: "fa0f2debb5b0444b9719919d7b8204d1"
+    clientSecret: "3305b6bb37252495848e67fd991134651e308495"
+    pid: "1642187_203462988"
+
+# 美团联盟
+mei:
+    actId: "2"
+    key: "610077fffb51712efaa686d9ffb623da"
+    secret: "514202a9238958b16cb13805d6f79273"
+    sid: "jsshq001"
+    appId: "wxde8ac0a21135c07d"

+ 14 - 0
zzjs-admin/src/main/resources/application-prod.yml

@@ -119,3 +119,17 @@ film:
     notifyUrl: http://admin.zzxcx.net/prod-api/open-api/film/notify/filmOrder
     notifyUrl: http://admin.zzxcx.net/prod-api/open-api/film/notify/filmOrder
     v1Url: http://movieapi.pintoto.cn/
     v1Url: http://movieapi.pintoto.cn/
     v2Url: http://movieapi2.pintoto.cn/
     v2Url: http://movieapi2.pintoto.cn/
+
+# 拼多多
+pdd:
+    clientId: "fa0f2debb5b0444b9719919d7b8204d1"
+    clientSecret: "3305b6bb37252495848e67fd991134651e308495"
+    pid: "1642187_203462988"
+
+# 美团联盟
+mei:
+    actId: "2"
+    key: "610077fffb51712efaa686d9ffb623da"
+    secret: "514202a9238958b16cb13805d6f79273"
+    sid: "jsshq001"
+    appId: "wxde8ac0a21135c07d"

+ 44 - 25
zzjs-admin/src/test/java/com/miaxis/test/NormalTest3.java

@@ -1,20 +1,19 @@
 package com.miaxis.test;
 package com.miaxis.test;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.miaxis.ZzjsApplication;
 import com.miaxis.ZzjsApplication;
+import com.miaxis.carousel.service.IHomePageDataInfoService;
+import com.miaxis.carousel.vo.HomePageDataInfoVo;
+import com.miaxis.common.config.PddConfig;
 import com.miaxis.common.sms.MD5Utils;
 import com.miaxis.common.sms.MD5Utils;
-import com.miaxis.feign.dto.Film;
 import com.miaxis.feign.dto.Pdd;
 import com.miaxis.feign.dto.Pdd;
-import com.miaxis.feign.service.IFilmService;
 import com.miaxis.feign.service.IPddService;
 import com.miaxis.feign.service.IPddService;
-import com.miaxis.feign.service.IWxService;
 import org.junit.Test;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.context.junit4.SpringRunner;
 
 
-import java.text.SimpleDateFormat;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map;
 import java.util.TreeMap;
 import java.util.TreeMap;
@@ -25,12 +24,18 @@ public class NormalTest3 {
 
 
     @Autowired
     @Autowired
     private IPddService pddService;
     private IPddService pddService;
+    @Autowired
+    private IHomePageDataInfoService homePageDataInfoService;
+
+    @Autowired
+    private PddConfig pddConfig;
+
+//    private static String client_id = "fa0f2debb5b0444b9719919d7b8204d1";
+//    private static String client_secret = "3305b6bb37252495848e67fd991134651e308495";
+//    private static String pid = "1642187_203462988";
 
 
-    private static String client_id = "fa0f2debb5b0444b9719919d7b8204d1";
-    private static String client_secret = "3305b6bb37252495848e67fd991134651e308495";
-    private static String pid = "1642187_203462988";
 
 
-    public static String getSign(Map<String, Object> params,String client_secret) {
+    public static String getPddSign(Map<String, Object> params,String client_secret) {
         Map<String, Object> sortMap = new TreeMap<String, Object>();
         Map<String, Object> sortMap = new TreeMap<String, Object>();
         sortMap.putAll(params);
         sortMap.putAll(params);
         // 以k1v1k2v2...方式拼接参数
         // 以k1v1k2v2...方式拼接参数
@@ -40,9 +45,6 @@ public class NormalTest3 {
             Object v = s.getValue();
             Object v = s.getValue();
             builder.append(k).append(v);
             builder.append(k).append(v);
         }
         }
-//        if (!sortMap.isEmpty()) {
-//            builder.deleteCharAt(builder.length() - 1);
-//        }
         builder.append(client_secret);
         builder.append(client_secret);
         builder.insert(0,client_secret);
         builder.insert(0,client_secret);
         return builder.toString();
         return builder.toString();
@@ -55,35 +57,49 @@ public class NormalTest3 {
         Pdd pdd = new Pdd();
         Pdd pdd = new Pdd();
         //公共请救参数
         //公共请救参数
         pdd.setType("pdd.ddk.resource.url.gen");
         pdd.setType("pdd.ddk.resource.url.gen");
-        pdd.setClient_id(client_id);
+        pdd.setClient_id(pddConfig.getClientId());
         pdd.setTimestamp(timestamp);
         pdd.setTimestamp(timestamp);
         //请求参数
         //请求参数
         pdd.setGenerate_we_app(true);
         pdd.setGenerate_we_app(true);
-        pdd.setPid(pid);
+        pdd.setPid(pddConfig.getPid());
+        System.out.println("---"+pddConfig.getPid()+"-----");
    //     pdd.setResource_type(39996);
    //     pdd.setResource_type(39996);
-      //  pdd.setUrl("https://mobile.yangkeduo.com/duo_transfer_channel.html?resourceType=50005&pid=1642187_203462988&cpsSign=CE_210426_1642187_203462988_bd4c17974e452d309d0604bd7f8b2898&duoduo_type=2");
-        pdd.setUrl("https://mobile.yangkeduo.com/duo_transfer_channel.html?resourceType=50005&pid=1642187_203462988&cpsSign=CE_210427_1642187_203462988_dacadfcef522deb82267a7f819874327&duoduo_type=2");
-
+        pdd.setResource_type(39997);
         //sign 加密
         //sign 加密
         Map<String,Object> param = new HashMap<String,Object>();
         Map<String,Object> param = new HashMap<String,Object>();
         //公共参数
         //公共参数
         param.put("type",pdd.getType());
         param.put("type",pdd.getType());
-        param.put("client_id",pdd.getClient_id());
+        param.put("client_id",pddConfig.getClientId());
         param.put("timestamp",pdd.getTimestamp());
         param.put("timestamp",pdd.getTimestamp());
         //请求参数
         //请求参数
         param.put("generate_we_app",pdd.getGenerate_we_app());
         param.put("generate_we_app",pdd.getGenerate_we_app());
-        param.put("pid",pdd.getPid());
-//        param.put("resource_type",pdd.getResource_type());
-        param.put("url",pdd.getUrl());
-
-        String sign = getSign(param,client_secret);
-        System.out.println(sign);
+        param.put("pid",pddConfig.getPid());
+        param.put("resource_type",pdd.getResource_type());
+        String sign = getPddSign(param,pddConfig.getClientSecret());
         String md5 = MD5Utils.MD5Encode(sign).toUpperCase();
         String md5 = MD5Utils.MD5Encode(sign).toUpperCase();
         pdd.setSign(md5);
         pdd.setSign(md5);
 
 
-        System.out.println(pdd);
         String result = pddService.getPdd(pdd);
         String result = pddService.getPdd(pdd);
         System.out.println(result);
         System.out.println(result);
+
+
+        JSONObject json = JSONObject.parseObject(result);
+        String resourceUrlResponseJson = json.get("resource_url_response").toString();
+        JSONObject json2  = JSONObject.parseObject(resourceUrlResponseJson);
+        String waAppInfo = json2.get("we_app_info").toString();
+
+        JSONObject waAppInfoJson = JSONObject.parseObject(waAppInfo);
+
+        String pagePath = waAppInfoJson.get("page_path").toString();
+        String appId = waAppInfoJson.get("app_id").toString();
+
+
+        HomePageDataInfoVo hp = new HomePageDataInfoVo();
+        hp.setPictureName("话费充值");
+        hp.setJumpUrl("{\"appId\":\""+appId+"\",\"path\":\""+pagePath+"\"}");
+        homePageDataInfoService.updateHomePageDataByPictureName(hp);
+
+        homePageDataInfoService.synchroData();
     }
     }
 
 
 
 
@@ -98,4 +114,7 @@ public class NormalTest3 {
 
 
 
 
 
 
+
+
+
 }
 }

+ 3 - 5
zzjs-admin/src/test/java/com/miaxis/test/NormalTest4.java

@@ -67,13 +67,11 @@ public class NormalTest4 {
         String md5 = MD5Utils.MD5Encode(sign);
         String md5 = MD5Utils.MD5Encode(sign);
         wa.setSign(md5);
         wa.setSign(md5);
 
 
-        System.out.println(wa);
-        String result = waService.geWaInfo(wa);
-        System.out.println(result);
-
+        String str = waService.geWaInfo(wa);
+        System.out.println(str);
 
 
         ObjectMapper objectMapper = new ObjectMapper();
         ObjectMapper objectMapper = new ObjectMapper();
-        WaResult waResult = objectMapper.readValue(result, WaResult.class);
+        WaResult waResult = objectMapper.readValue(str, WaResult.class);
         System.out.println(waResult);
         System.out.println(waResult);
     }
     }
 
 

+ 107 - 0
zzjs-admin/src/test/java/com/miaxis/test/NormalTest5.java

@@ -0,0 +1,107 @@
+package com.miaxis.test;
+
+import com.alibaba.fastjson.JSONObject;
+import com.miaxis.ZzjsApplication;
+import com.miaxis.carousel.service.IHomePageDataInfoService;
+import com.miaxis.carousel.vo.HomePageDataInfoVo;
+import com.miaxis.common.config.MeiConfig;
+import com.miaxis.common.sms.MD5Utils;
+import com.miaxis.feign.dto.Mei;
+import com.miaxis.feign.service.IMeiService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.TreeMap;
+
+@SpringBootTest(classes = ZzjsApplication.class)
+@RunWith(SpringRunner.class)
+public class NormalTest5 {
+
+    @Autowired
+    private IMeiService meiService;
+    @Autowired
+    private IHomePageDataInfoService homePageDataInfoService;
+
+    @Autowired
+    private MeiConfig meiConfig;
+
+
+//    private String actId = "2";  // 必填  	活动id,可以在联盟活动列表中查看获取 2
+//    private String key = "610077fffb51712efaa686d9ffb623da"; //必填 appkey 514202a9238958b16cb13805d6f79273
+//    private String secret = "514202a9238958b16cb13805d6f79273";
+//    private String sid = "jsshq001"; //必填
+//
+//    private String appId = "wxde8ac0a21135c07d";
+
+    public static String getMeiSign(Map<String, Object> params,String client_secret) {
+        Map<String, Object> sortMap = new TreeMap<String, Object>();
+        sortMap.putAll(params);
+        // 以k1v1k2v2...方式拼接参数
+        StringBuilder builder = new StringBuilder();
+        for (Map.Entry<String, Object> s : sortMap.entrySet()) {
+            String k = s.getKey();
+            Object v = s.getValue();
+            builder.append(k).append(v);
+        }
+        builder.append(client_secret);
+        builder.insert(0,client_secret);
+        return builder.toString();
+    }
+
+    @Test
+    public void test() throws Exception {
+        long timeLong = System.currentTimeMillis();
+        String timestamp = String.valueOf(timeLong/1000);
+        Mei mei = new Mei();
+        mei.setActId(meiConfig.getActId());
+        mei.setKey(meiConfig.getKey());
+        mei.setSid(meiConfig.getSid());
+        mei.setLinkType("4");
+
+        Map<String,Object> param = new HashMap<String,Object>();
+        param.put("actId",meiConfig.getActId());
+        param.put("key",meiConfig.getKey());
+        param.put("sid",meiConfig.getSid());
+
+        param.put("linkType",4);
+        String sign = this.getMeiSign(param,meiConfig.getSecret());
+        System.out.println(sign);
+        String md5 = MD5Utils.MD5Encode(sign);
+        mei.setSign(md5);
+
+        System.out.println(md5);
+        String result = meiService.geMeiUrl(mei);
+        System.out.println(result);
+
+
+        JSONObject json = JSONObject.parseObject(result);
+        String status = json.get("status").toString();
+        String des = json.get("des").toString();
+        String pagePath = json.get("data").toString();
+
+        System.out.println(pagePath);
+
+        HomePageDataInfoVo hp = new HomePageDataInfoVo();
+        hp.setPictureName("美团外卖");
+        hp.setJumpUrl("{\"appId\":\""+meiConfig.getAppId()+"\",\"path\":\""+pagePath+"\"}");
+        homePageDataInfoService.updateHomePageDataByPictureName(hp);
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+}

+ 17 - 0
zzjs-common/src/main/java/com/miaxis/common/config/MeiConfig.java

@@ -0,0 +1,17 @@
+package com.miaxis.common.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "mei")
+public class MeiConfig {
+
+   private String actId;
+   private String key;
+   private String secret;
+   private String sid;
+   private String appId;
+}

+ 15 - 0
zzjs-common/src/main/java/com/miaxis/common/config/PddConfig.java

@@ -0,0 +1,15 @@
+package com.miaxis.common.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "pdd")
+public class PddConfig {
+
+    private String clientId;
+    private String clientSecret;
+    private String pid;
+}

+ 2 - 0
zzjs-service/src/main/java/com/miaxis/carousel/mapper/HomePageDataInfoMapper.java

@@ -28,4 +28,6 @@ public interface HomePageDataInfoMapper extends BaseMapper<HomePageDataInfo> {
      * @return
      * @return
      */
      */
     HomePageDataInfoVo getHomePageDataById(@Param("id") Long id);
     HomePageDataInfoVo getHomePageDataById(@Param("id") Long id);
+
+    int updateHomePageDataByPictureName(HomePageDataInfoVo homePageDataInfoVo);
 }
 }

+ 5 - 0
zzjs-service/src/main/java/com/miaxis/carousel/service/IHomePageDataInfoService.java

@@ -44,6 +44,8 @@ public interface IHomePageDataInfoService extends IService<HomePageDataInfo>{
      */
      */
     Response<HomePageDataInfoVo> getHomePageDataById(Long id);
     Response<HomePageDataInfoVo> getHomePageDataById(Long id);
 
 
+
+
     /**
     /**
      * 删除首页数据(伪删除)
      * 删除首页数据(伪删除)
      * @param ids
      * @param ids
@@ -58,6 +60,9 @@ public interface IHomePageDataInfoService extends IService<HomePageDataInfo>{
      */
      */
     Response getHomePageDataList();
     Response getHomePageDataList();
 
 
+
+    int updateHomePageDataByPictureName(HomePageDataInfoVo homePageDataInfoVo);
+
     /**
     /**
      * 同步数据
      * 同步数据
      * @return
      * @return

+ 6 - 0
zzjs-service/src/main/java/com/miaxis/carousel/service/impl/HomePageDataInfoServiceImpl.java

@@ -93,6 +93,11 @@ public class HomePageDataInfoServiceImpl extends ServiceImpl<HomePageDataInfoMap
         }
         }
     }
     }
 
 
+    @Override
+    public int updateHomePageDataByPictureName(HomePageDataInfoVo homePageDataInfoVo) {
+       return  homePageDataInfoMapper.updateHomePageDataByPictureName(homePageDataInfoVo);
+    }
+
     /**
     /**
      * 获取首页数据详细信息
      * 获取首页数据详细信息
      * @param id
      * @param id
@@ -103,6 +108,7 @@ public class HomePageDataInfoServiceImpl extends ServiceImpl<HomePageDataInfoMap
         return Response.success(homePageDataInfoMapper.getHomePageDataById(id));
         return Response.success(homePageDataInfoMapper.getHomePageDataById(id));
     }
     }
 
 
+
     /**
     /**
      * 删除首页数据(伪删除)
      * 删除首页数据(伪删除)
      * @param ids
      * @param ids

+ 18 - 0
zzjs-service/src/main/java/com/miaxis/feign/dto/Mei.java

@@ -0,0 +1,18 @@
+package com.miaxis.feign.dto;
+
+import lombok.Data;
+
+@Data
+public class Mei {
+
+    //公共参数
+    private String actId;  // 必填  	活动id,可以在联盟活动列表中查看获取 2
+    private String key; //必填 appkey 514202a9238958b16cb13805d6f79273
+    private String sid; //必填 推广位sid,支持通过接口自定义创建,不受平台200个上限限制,长度不能超过64个字符,支持小写字母和数字,历史已创建的推广位不受这个约束
+    private String linkType; //必填 链接类型,枚举值:1 h5链接 2 deeplink(唤起)链接 3 中间页唤起链接 4 微信小程序唤起路径
+    private String sign; //请求签名,计算方法参考文档中签名(sign)生成逻辑
+
+
+
+
+}

+ 17 - 0
zzjs-service/src/main/java/com/miaxis/feign/dto/PddResult.java

@@ -0,0 +1,17 @@
+package com.miaxis.feign.dto;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@JsonInclude(value= JsonInclude.Include.NON_NULL)
+@AllArgsConstructor
+public class PddResult {
+
+    private String resource_url_response;
+
+
+
+
+}

+ 38 - 0
zzjs-service/src/main/java/com/miaxis/feign/service/IMeiService.java

@@ -0,0 +1,38 @@
+package com.miaxis.feign.service;
+
+import com.miaxis.common.config.FeignConfig;
+import com.miaxis.feign.dto.Mei;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.cloud.openfeign.SpringQueryMap;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Map;
+
+/**
+ *
+ * 电影接口测试
+ */
+@FeignClient(name="meiService",
+        url = "https://runion.meituan.com",configuration = FeignConfig.class)
+@Component
+public interface IMeiService {
+
+//    @GetMapping(value = "/generateLink")
+//    String geMeiUrl(@RequestParam("actId") String actId,
+//                    @RequestParam("key") String key,
+//                    @RequestParam("sid") String sid,
+//                    @RequestParam("linkType") String linkType,
+//                    @RequestParam("sign") String sign);
+
+
+
+//    @GetMapping(value = "/generateLink")
+//    String geMeiUrl(@SpringQueryMap Mei mei);
+
+
+    @GetMapping(value = "/generateLink")
+    String geMeiUrl(@SpringQueryMap Object params);
+
+}

+ 8 - 1
zzjs-service/src/main/java/com/miaxis/feign/service/IPddService.java

@@ -1,9 +1,10 @@
 package com.miaxis.feign.service;
 package com.miaxis.feign.service;
 
 
 
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.miaxis.common.config.FeignConfig;
 import com.miaxis.common.config.FeignConfig;
-import com.miaxis.feign.dto.Film;
 import com.miaxis.feign.dto.Pdd;
 import com.miaxis.feign.dto.Pdd;
+import com.miaxis.feign.dto.PddResult;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -16,8 +17,14 @@ import org.springframework.web.bind.annotation.PostMapping;
         url = "http://gw-api.pinduoduo.com",configuration = FeignConfig.class)
         url = "http://gw-api.pinduoduo.com",configuration = FeignConfig.class)
 @Component
 @Component
     public interface IPddService {
     public interface IPddService {
+//    @PostMapping(value = "/api/router")
+//    String getPdd(Pdd pdd);
+
+
     @PostMapping(value = "/api/router")
     @PostMapping(value = "/api/router")
     String getPdd(Pdd pdd);
     String getPdd(Pdd pdd);
 
 
 
 
+
+
 }
 }

+ 1 - 0
zzjs-service/src/main/java/com/miaxis/feign/service/IWaService.java

@@ -4,6 +4,7 @@ package com.miaxis.feign.service;
 import com.miaxis.common.config.FeignConfig;
 import com.miaxis.common.config.FeignConfig;
 import com.miaxis.feign.dto.Film;
 import com.miaxis.feign.dto.Film;
 import com.miaxis.feign.dto.Wa;
 import com.miaxis.feign.dto.Wa;
+import com.miaxis.feign.dto.WaResult;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.http.MediaType;
 import org.springframework.http.MediaType;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;

+ 22 - 0
zzjs-service/src/main/java/com/miaxis/feign/utils/FeignUtils.java

@@ -0,0 +1,22 @@
+package com.miaxis.feign.utils;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class FeignUtils {
+
+    /**
+     * @Description: 将数据转换到相应的容器
+     * @return
+     * @throws
+     */
+    public static <T> T convertValue(Object bean, Class<T> clazz){
+        try{
+            ObjectMapper mapper = new ObjectMapper();
+            return mapper.convertValue(bean, clazz);
+        }catch(Exception e){
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+}

+ 170 - 0
zzjs-service/src/main/java/com/miaxis/job/MenuJob.java

@@ -0,0 +1,170 @@
+package com.miaxis.job;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.miaxis.carousel.service.IHomePageDataInfoService;
+import com.miaxis.carousel.vo.HomePageDataInfoVo;
+import com.miaxis.common.config.MeiConfig;
+import com.miaxis.common.config.PddConfig;
+import com.miaxis.common.sms.MD5Utils;
+import com.miaxis.common.utils.DateUtils;
+import com.miaxis.feign.dto.Mei;
+import com.miaxis.feign.dto.Pdd;
+import com.miaxis.feign.service.IMeiService;
+import com.miaxis.feign.service.IPddService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.util.unit.DataUnit;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.TreeMap;
+
+@Slf4j
+@Component
+public class MenuJob {
+
+    @Autowired
+    private IPddService pddService;
+    @Autowired
+    private IMeiService meiService;
+    @Autowired
+    private IHomePageDataInfoService homePageDataInfoService;
+    @Autowired
+    private PddConfig pddConfig;
+    @Autowired
+    private MeiConfig meiConfig;
+
+//    @Scheduled(cron = "0/30 * * * * ?")
+    @Scheduled(cron = "0 0 10 1/7 * ?")
+    public void autoGetUrl() throws Exception {
+        getPddUrl();
+        getMeiUrl();
+        homePageDataInfoService.synchroData();
+        log.info("--------更新美团,拼多多URL完成!~---------------");
+    }
+
+
+    public static String getSign(Map<String, Object> params, String client_secret) {
+        Map<String, Object> sortMap = new TreeMap<String, Object>();
+        sortMap.putAll(params);
+        // 以k1v1k2v2...方式拼接参数
+        StringBuilder builder = new StringBuilder();
+        for (Map.Entry<String, Object> s : sortMap.entrySet()) {
+            String k = s.getKey();
+            Object v = s.getValue();
+            builder.append(k).append(v);
+        }
+        builder.append(client_secret);
+        builder.insert(0,client_secret);
+        System.out.println(builder.toString());
+        return builder.toString();
+    }
+
+    public void getPddUrl() throws Exception {
+
+//        String client_id = "fa0f2debb5b0444b9719919d7b8204d1";
+//        String client_secret = "3305b6bb37252495848e67fd991134651e308495";
+//        String pid = "1642187_203462988";
+
+        long timeLong = System.currentTimeMillis();
+        String timestamp = String.valueOf(timeLong/1000);
+        Pdd pdd = new Pdd();
+        //公共请救参数
+        pdd.setType("pdd.ddk.resource.url.gen");
+        pdd.setClient_id(pddConfig.getClientId());
+        pdd.setTimestamp(timestamp);
+        //请求参数
+        pdd.setGenerate_we_app(true);
+        pdd.setPid(pddConfig.getPid());
+        //     pdd.setResource_type(39996);
+        pdd.setResource_type(39997);
+        //sign 加密
+        Map<String,Object> param = new HashMap<String,Object>();
+        //公共参数
+        param.put("type",pdd.getType());
+        param.put("client_id",pdd.getClient_id());
+        param.put("timestamp",pdd.getTimestamp());
+        //请求参数
+        param.put("generate_we_app",pdd.getGenerate_we_app());
+        param.put("pid",pdd.getPid());
+        param.put("resource_type",pdd.getResource_type());
+        String sign = getSign(param,pddConfig.getClientSecret());
+        String md5 = MD5Utils.MD5Encode(sign).toUpperCase();
+        pdd.setSign(md5);
+
+        String result = pddService.getPdd(pdd);
+
+        JSONObject json = JSONObject.parseObject(result);
+        String resourceUrlResponseJson = json.get("resource_url_response").toString();
+        JSONObject json2  = JSONObject.parseObject(resourceUrlResponseJson);
+        String waAppInfo = json2.get("we_app_info").toString();
+
+        JSONObject waAppInfoJson = JSONObject.parseObject(waAppInfo);
+
+        String pagePath = waAppInfoJson.get("page_path").toString();
+        String appId = waAppInfoJson.get("app_id").toString();
+
+        HomePageDataInfoVo hp = new HomePageDataInfoVo();
+        hp.setPictureName("话费充值");
+        hp.setJumpUrl("{\"appId\":\""+appId+"\",\"path\":\""+pagePath+"\"}");
+        homePageDataInfoService.updateHomePageDataByPictureName(hp);
+        System.out.println(Thread.currentThread().getName()+"完成testTask1,完成时间:"+new Date());
+    }
+
+
+
+    public void getMeiUrl() throws Exception {
+
+//        String actId = "2";  // 必填  	活动id,可以在联盟活动列表中查看获取 2
+//        String key = "610077fffb51712efaa686d9ffb623da"; //必填 appkey 514202a9238958b16cb13805d6f79273
+//        String secret = "514202a9238958b16cb13805d6f79273";
+//        String sid = "jsshq001"; //必填
+//
+//        String appId = "wxde8ac0a21135c07d";
+
+        long timeLong = System.currentTimeMillis();
+        String timestamp = String.valueOf(timeLong/1000);
+        Mei mei = new Mei();
+        mei.setActId(meiConfig.getActId());
+        mei.setKey(meiConfig.getKey());
+        mei.setSid(meiConfig.getSid());
+        mei.setLinkType("4");
+
+        Map<String,Object> param = new HashMap<String,Object>();
+        param.put("actId",meiConfig.getActId());
+        param.put("key",meiConfig.getKey());
+        param.put("sid",meiConfig.getSid());
+
+        param.put("linkType",4);
+        String sign = this.getSign(param,meiConfig.getSecret());
+        System.out.println(sign);
+        String md5 = MD5Utils.MD5Encode(sign);
+        mei.setSign(md5);
+
+        System.out.println(md5);
+        String result = meiService.geMeiUrl(mei);
+        System.out.println(result);
+
+
+        JSONObject json = JSONObject.parseObject(result);
+        String status = json.get("status").toString();
+        String des = json.get("des").toString();
+        String pagePath = json.get("data").toString();
+
+        System.out.println(pagePath);
+
+        HomePageDataInfoVo hp = new HomePageDataInfoVo();
+        hp.setPictureName("美团外卖");
+        hp.setJumpUrl("{\"appId\":\""+meiConfig.getAppId()+"\",\"path\":\""+pagePath+"\"}");
+        homePageDataInfoService.updateHomePageDataByPictureName(hp);
+    }
+
+
+
+
+}

+ 13 - 0
zzjs-service/src/main/resources/mapper/carousel/HomePageDataInfoMapper.xml

@@ -62,4 +62,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where ci.id = #{id}
         where ci.id = #{id}
     </select>
     </select>
 
 
+
+
+    <update id="updateHomePageDataByPictureName" parameterType="com.miaxis.carousel.vo.HomePageDataInfoVo">
+        update home_page_data_info f
+        <set>
+            <if test="jumpUrl!=null">
+                f.jump_url= #{jumpUrl}
+            </if>
+        </set>
+        where f.picture_name = #{pictureName}
+    </update>
+
+
 </mapper>
 </mapper>