Compare commits
	
		
			No commits in common. 'b1aec4d9f841e0f028eb5f12b2031f762c230b39' and 'a02cf3dc62bf70f2ea4cd3443a0ff741ac51020c' have entirely different histories. 
		
	
	
		
			b1aec4d9f8
			...
			a02cf3dc62
		
	
		
	
				 2 changed files with 0 additions and 100 deletions
			
			
		| @ -1,33 +0,0 @@ | |||||||
| package cn.iocoder.yudao.module.system.controller.admin.weixin; |  | ||||||
| 
 |  | ||||||
| import cn.iocoder.yudao.module.system.service.weixin.WeChatService; |  | ||||||
| import org.springframework.beans.factory.annotation.Autowired; |  | ||||||
| import org.springframework.web.bind.annotation.GetMapping; |  | ||||||
| import org.springframework.web.bind.annotation.RequestMapping; |  | ||||||
| import org.springframework.web.bind.annotation.RestController; |  | ||||||
| 
 |  | ||||||
| import javax.annotation.security.PermitAll; |  | ||||||
| 
 |  | ||||||
| @RestController |  | ||||||
| @RequestMapping("/wechat") |  | ||||||
| @PermitAll |  | ||||||
| public class WeChatController { |  | ||||||
| 
 |  | ||||||
|     @Autowired |  | ||||||
|     private WeChatService weChatService; |  | ||||||
| 
 |  | ||||||
|     @GetMapping("/send") |  | ||||||
|     @PermitAll |  | ||||||
|     public String sendMessage() { |  | ||||||
|         try { |  | ||||||
|             String accessToken = weChatService.getAccessToken(); |  | ||||||
|             String openId = "ogEz46_ADXNd_SmC9f57tYZkswRg"; // 替换为用户的 OpenID
 |  | ||||||
|             String templateId = "E8RK91cPLMios6ZHoKx6FJOV4H2kodx6yPWYp7jpLJY"; // 替换为订阅消息模板 ID
 |  | ||||||
|             weChatService.sendSubscribeMessage(accessToken, openId, templateId); |  | ||||||
|             return "Message sent successfully"; |  | ||||||
|         } catch (Exception e) { |  | ||||||
|             e.printStackTrace(); |  | ||||||
|             return "Failed to send message"; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,67 +0,0 @@ | |||||||
| package cn.iocoder.yudao.module.system.service.weixin; |  | ||||||
| import com.fasterxml.jackson.databind.node.ObjectNode; |  | ||||||
| import org.apache.http.client.methods.HttpPost; |  | ||||||
| import org.apache.http.entity.StringEntity; |  | ||||||
| import org.springframework.beans.factory.annotation.Autowired; |  | ||||||
| import org.springframework.beans.factory.annotation.Value; |  | ||||||
| import org.springframework.stereotype.Service; |  | ||||||
| import org.apache.http.client.methods.HttpGet; |  | ||||||
| import org.apache.http.impl.client.CloseableHttpClient; |  | ||||||
| import org.apache.http.impl.client.HttpClients; |  | ||||||
| import org.apache.http.util.EntityUtils; |  | ||||||
| import com.fasterxml.jackson.databind.JsonNode; |  | ||||||
| import com.fasterxml.jackson.databind.ObjectMapper; |  | ||||||
| 
 |  | ||||||
| @Service |  | ||||||
| public class WeChatService { |  | ||||||
|     @Autowired |  | ||||||
|     private ObjectMapper objectMapper; |  | ||||||
|     @Value("${wx.miniapp.appid}") |  | ||||||
|     private String APP_ID ; // 替换为你的小程序 AppID
 |  | ||||||
|     @Value("${wx.miniapp.secret}") |  | ||||||
|     private  String APP_SECRET; // 替换为你的小程序 AppSecret
 |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * 获取微信 Access Token |  | ||||||
|      */ |  | ||||||
|     public String getAccessToken() throws Exception { |  | ||||||
|         String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + APP_ID + "&secret=" + APP_SECRET; |  | ||||||
|         CloseableHttpClient httpClient = HttpClients.createDefault(); |  | ||||||
|         HttpGet httpGet = new HttpGet(url); |  | ||||||
|         String response = EntityUtils.toString(httpClient.execute(httpGet).getEntity()); |  | ||||||
|         httpClient.close(); |  | ||||||
| 
 |  | ||||||
|         ObjectMapper mapper = new ObjectMapper(); |  | ||||||
|         JsonNode node = mapper.readTree(response); |  | ||||||
|         return node.get("access_token").asText(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * 发送订阅消息 |  | ||||||
|      */ |  | ||||||
|     public void sendSubscribeMessage(String accessToken, String openId, String templateId) throws Exception { |  | ||||||
|         String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + accessToken; |  | ||||||
| 
 |  | ||||||
|         // 构建消息内容
 |  | ||||||
|         ObjectNode data = objectMapper.createObjectNode(); |  | ||||||
|         data.put("touser", openId); // 用户的 OpenID
 |  | ||||||
|         data.put("template_id", templateId); // 订阅消息模板 ID
 |  | ||||||
|         data.put("page", "pages/index/index"); // 点击消息跳转的小程序页面
 |  | ||||||
|         data.put("data", objectMapper.createObjectNode() |  | ||||||
|                 .put("thing1", objectMapper.createObjectNode().put("value", "Hello, World!")) |  | ||||||
|                 .at("thing2")); |  | ||||||
| 
 |  | ||||||
|         // 发送 HTTP 请求
 |  | ||||||
|         CloseableHttpClient httpClient = HttpClients.createDefault(); |  | ||||||
|         HttpPost httpPost = new HttpPost(url); |  | ||||||
|         httpPost.setHeader("Content-Type", "application/json"); |  | ||||||
|         httpPost.setEntity(new StringEntity(data.toString())); |  | ||||||
|         String response = EntityUtils.toString(httpClient.execute(httpPost).getEntity()); |  | ||||||
|         httpClient.close(); |  | ||||||
| 
 |  | ||||||
|         System.out.println("订阅消息发送结果: " + response); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|      |  | ||||||
| } |  | ||||||
					Loading…
					
					
				
		Reference in new issue