Browse Source

微信消息推送demo

pengjing 1 year ago
parent
commit
3b4d87ff3c

+ 5 - 0
pom.xml

@@ -164,6 +164,11 @@
             <version>3.4.0</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-mp</artifactId>
+            <version>2.7.0</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 7 - 0
src/main/java/com/hz/employmentsite/AppConfig.java

@@ -69,6 +69,13 @@ public class AppConfig {
     @Value("${appconfig.oauthconfig.client_secret}")
     public String oauthconfig_client_secret;
 
+    @Value("${appconfig.wxconfig.appId}")
+    public String wxAppId;
+    @Value("${appconfig.wxconfig.appSecret}")
+    public String wxAppSecret;
+    @Value("${appconfig.wxconfig.messageTemplateId}")
+    public String wxMessageTemplateId;
+
 
 
     /**

+ 1 - 0
src/main/java/com/hz/employmentsite/config/WebConfiguration.java

@@ -61,6 +61,7 @@ public class WebConfiguration implements WebMvcConfigurer {
         excludePath.add("/api/oauth/oauthLogin");//单点登录
         excludePath.add("/api/system/file/downFileToUrl/**");  //下载附件
         excludePath.add("/api/common/getQRCode");
+        excludePath.add("/api/wx/**");
         excludePath.add("/static/**");  //静态资源
         excludePath.add("/mobile/**");  //静态资源
         excludePath.add("/web/**");  //静态资源

+ 50 - 0
src/main/java/com/hz/employmentsite/controller/WxController.java

@@ -0,0 +1,50 @@
+package com.hz.employmentsite.controller;
+
+import com.hz.employmentsite.filter.exception.BaseResponse;
+import com.hz.employmentsite.filter.exception.RespGenerstor;
+import com.hz.employmentsite.services.service.WechatService;
+import com.hz.employmentsite.util.RemoteHelper;
+import me.chanjar.weixin.mp.api.WxMpService;
+import org.apache.commons.collections.map.AbstractMapDecorator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/api/wx")
+public class WxController {
+
+    /*@Autowired
+    private RemoteHelper remoteHelper;
+
+    @GetMapping("/getWxToken")
+    public String getWxToken() {
+        Map<String, String> params = new HashMap<>();
+        params.put("grant_type","client_credential");
+        params.put("appid","wx765e6ec59e26c288");
+        params.put("secret","a44d8034671866e957484f5ed4e1df48");
+        remoteHelper.getJson(params, "https://api.weixin.qq.com/cgi-bin/token",null);
+
+        return "";
+    }*/
+
+    @Autowired
+    private WechatService wechatService;
+
+    @PostMapping("/sentMsg")
+    public BaseResponse<String> sentMsg(){
+        Map<String,String> data = new HashMap<>();
+        data.put("keyword1","巧克力");
+        data.put("keyword2","39.8元");
+        data.put("keyword3","2014年9月22日");
+
+
+        return RespGenerstor.success(wechatService.sentMsg("admin",data));
+    }
+
+}

+ 62 - 0
src/main/java/com/hz/employmentsite/services/impl/WechatServiceImpl.java

@@ -0,0 +1,62 @@
+package com.hz.employmentsite.services.impl;
+
+import com.hz.employmentsite.AppConfig;
+import com.hz.employmentsite.services.service.WechatService;
+import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
+import me.chanjar.weixin.mp.api.WxMpService;
+import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
+import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
+import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+@Service("WechatService")
+@Slf4j
+public class WechatServiceImpl implements WechatService {
+
+    @Autowired
+    AppConfig appConfig;
+
+
+    @Override
+    public Integer sentMsg(String toUserId, Map<String,String> sentData){
+        String openId = "";
+
+        WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage();
+        wxStorage.setAppId(appConfig.wxAppId); //appID
+        wxStorage.setSecret(appConfig.wxAppSecret);//app密钥
+        WxMpService wxMpService = new WxMpServiceImpl();
+        wxMpService.setWxMpConfigStorage(wxStorage);
+
+        //数据
+        List<WxMpTemplateData> data=new ArrayList<>();
+
+        sentData.forEach((key,value)->{
+            data.add(new WxMpTemplateData(key,value));
+        });
+
+        //2,推送消息
+        WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
+                .toUser(openId)//要推送的用户openid
+                .data(data) //数据
+                .templateId(appConfig.wxMessageTemplateId)//模版id
+                .url("http://www.baidu.com") // 点击详情跳转地址
+                .build();
+        //发起推送
+        try {
+            String msg = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
+        } catch (Exception e) {
+            log.info("sentMsg:微信消息推送失败"+ e.getMessage());
+            e.printStackTrace();
+        }
+
+        return 1;
+    }
+
+}

+ 9 - 0
src/main/java/com/hz/employmentsite/services/service/WechatService.java

@@ -0,0 +1,9 @@
+package com.hz.employmentsite.services.service;
+
+import java.util.Map;
+
+public interface WechatService {
+
+    Integer sentMsg(String toUserId, Map<String,String> sentData);
+
+}

+ 4 - 0
src/main/resources/application.yml

@@ -117,5 +117,9 @@ appconfig:
     mobileServiceUrl: xxx
     client_id: xxx
     client_secret: xxx
+  wxconfig:
+    appId: ''
+    appSecret: ''
+    messageTemplateId: ''