فهرست منبع

修改微信公众号获取二维码

yusm 1 ماه پیش
والد
کامیت
8f0d5d8d92

+ 79 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/WechatAccountController.java

@@ -1,17 +1,23 @@
 package com.management.platform.controller;
 
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.User;
 import com.management.platform.entity.WechatAccount;
 import com.management.platform.service.UserService;
 import com.management.platform.service.WechatAccountService;
 import com.management.platform.util.HttpRespMsg;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.*;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * <p>
@@ -21,6 +27,7 @@ import javax.servlet.http.HttpServletRequest;
  * @author Seyason
  * @since 2025-04-15
  */
+@Slf4j
 @RestController
 @RequestMapping("/wechat-account")
 public class WechatAccountController {
@@ -31,6 +38,9 @@ public class WechatAccountController {
     @Resource
     private UserService userService;
 
+    @Resource
+    private RestTemplate restTemplate;
+
     @RequestMapping("/getAccessToken")
     private HttpRespMsg getAccessToken(HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
@@ -42,5 +52,74 @@ public class WechatAccountController {
         return httpRespMsg;
     }
 
+    @RequestMapping(value = "sendInterviewInvitation")
+    public HttpRespMsg sendInterviewInvitation(String userId,HttpServletRequest request) {
+        HttpRespMsg msg = new HttpRespMsg();
+        String token = request.getHeader("Token");
+        User user = userService.getById(token);
+        WechatAccount wechatAccount = wechatAccountService.getOne(new QueryWrapper<WechatAccount>().eq("company_id", user.getCompanyId()));
+        String accessToken = wechatAccountService.getAccessToken(user.getCompanyId(), wechatAccount.getAppId());
+        try {
+
+            String result =createForeverStrTicket(accessToken, userId);
+            JSONObject jsonObject = JSONObject.parseObject(result);
+            String ticket = null ;
+            if(null!=jsonObject){
+                ticket = jsonObject.getString("ticket");
+                System.out.println("创建永久带参二维码成功,ticket="+ticket);
+            }
+            msg.data=ticket;
+            return msg;
+        } catch (Exception e) {
+            msg.setData(e.getMessage());
+        }
+        return msg;
+    }
+
+
+    @RequestMapping(value = "test")
+    public HttpRespMsg test(String accessToken,String sceneStr) {
+        String foreverStrTicket = createForeverStrTicket(accessToken, sceneStr);
+        return new HttpRespMsg();
+    }
+
+
+    /**
+     * 创建永久二维码(字符串)
+     *
+     * @param accessToken
+     * @param sceneStr
+     *            场景str
+     * @return
+     */
+    public String createForeverStrTicket(String accessToken, String sceneStr){
+        Map<String, String> intMap = new HashMap<>();
+        intMap.put("scene_str", sceneStr);
+        Map<String, Map<String, String>> mapMap = new HashMap<>();
+        mapMap.put("scene", intMap);
+        Map<String, Object> paramsMap = new HashMap<>();
+        paramsMap.put("action_name", "QR_LIMIT_STR_SCENE");
+        paramsMap.put("action_info", mapMap);
+        String  jsonObject = JSONObject.toJSONString(paramsMap);
+
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        String requestUrl = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token="+accessToken;
+
+
+        HttpEntity<String> requestEntity = new HttpEntity<String>(jsonObject, headers);
+        ResponseEntity<String> responseEntity = restTemplate.exchange(requestUrl,
+                HttpMethod.POST, requestEntity, String.class);
+
+        if (responseEntity.getStatusCode() == HttpStatus.OK) {
+            JSONObject json = JSONObject.parseObject(responseEntity.getBody());
+            log.info("返回:" + json.toJSONString());
+            if (json.getIntValue("errcode") == 0) {
+                log.info("json==>"+json.toJSONString());
+            }
+        }
+        return "";
+    }
+
 }
 

+ 37 - 7
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/WeiXinTicketController.java

@@ -3,15 +3,19 @@ package com.management.platform.controller;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.management.platform.entity.WeiXinTicketEntity;
+import com.management.platform.service.WechatAccountService;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.HttpUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.*;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.client.RestTemplate;
 
+import javax.annotation.Resource;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -23,6 +27,8 @@ import java.util.Map;
 
 @RestController
 @RequestMapping("weixinTicket")
+
+@Slf4j
 public class WeiXinTicketController {
 
 	@Value("${weixin.ticket.action_name.QR_SCENE}")
@@ -34,14 +40,21 @@ public class WeiXinTicketController {
 	private static final String APP_SECRET = "17ad07f90ee845f99f4c1605647ef755";
 	private static final String GRANT_TYPE = "client_credential";
 
+	@Resource
+	private  RestTemplate restTemplate;
+
+	@Resource
+	private WechatAccountService wechatAccountService;
+
+
 	
 	@RequestMapping(value = "sendInterviewInvitation",method=RequestMethod.POST)
 	public HttpRespMsg sendInterviewInvitation(@RequestBody WeiXinTicketEntity reqDto) throws Exception{
 		HttpRespMsg msg = new HttpRespMsg();
 		try {
-			String accessToken = getWeiXinAccessToken();
+			String accessToken = wechatAccountService.getAccessToken(6374,"");
 			String sceneStr = reqDto.getSceneStr();
-			String result = new WeiXinTicketController().createForeverStrTicket(accessToken, sceneStr);
+			String result =this.createForeverStrTicket(accessToken, sceneStr);
 			JSONObject jsonObject = JSONObject.parseObject(result);
 			String ticket = null ;
 			if(null!=jsonObject){
@@ -94,7 +107,7 @@ public class WeiXinTicketController {
 		Map<String, Map<String, Integer>> mapMap = new HashMap<>();
 		mapMap.put("scene", intMap);
 		Map<String, Object> paramsMap = new HashMap<>();
-		paramsMap.put("action_name", QR_STR_SCENE);
+		paramsMap.put("action_name", "QR_LIMIT_STR_SCENE");
 		paramsMap.put("action_info", mapMap);
 		String  jsonObject = JSONObject.toJSONString(paramsMap);
 		String requestUrl = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=";
@@ -110,18 +123,35 @@ public class WeiXinTicketController {
 	 *            场景str
 	 * @return
 	 */
-	public String createForeverStrTicket(String accessToken, String sceneStr) throws Exception {
+	public String createForeverStrTicket(String accessToken, String sceneStr){
 		Map<String, String> intMap = new HashMap<>();
 		intMap.put("scene_str", sceneStr);
 		Map<String, Map<String, String>> mapMap = new HashMap<>();
 		mapMap.put("scene", intMap);
 		Map<String, Object> paramsMap = new HashMap<>();
-		paramsMap.put("action_name", QR_STR_SCENE);
+		paramsMap.put("action_name", "QR_LIMIT_STR_SCENE");
 		paramsMap.put("action_info", mapMap);
 		String  jsonObject = JSONObject.toJSONString(paramsMap);
+
+		HttpHeaders headers = new HttpHeaders();
+		headers.setContentType(MediaType.APPLICATION_JSON);
 		String requestUrl = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token="+accessToken;
-		String result = HttpUtil.post(requestUrl,accessToken, jsonObject);
-		return result;
+
+
+		HttpEntity<String> requestEntity = new HttpEntity<String>(jsonObject, headers);
+		ResponseEntity<String> responseEntity = this.restTemplate.exchange(requestUrl,
+				HttpMethod.POST, requestEntity, String.class);
+
+		if (responseEntity.getStatusCode() == HttpStatus.OK) {
+			JSONObject json = JSONObject.parseObject(responseEntity.getBody());
+			log.info("返回:" + json.toJSONString());
+			if (json.getIntValue("errcode") == 0) {
+				log.info("");
+			}
+		}
+
+		return "";
+
 	}
 
 

+ 5 - 4
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/WechatAccountServiceImpl.java

@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.entity.WechatAccount;
 import com.management.platform.mapper.WechatAccountMapper;
 import com.management.platform.service.WechatAccountService;
-import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 
@@ -21,11 +21,12 @@ import java.time.LocalDateTime;
  * @since 2025-04-15
  */
 @Service
-@RequiredArgsConstructor
 public class WechatAccountServiceImpl extends ServiceImpl<WechatAccountMapper, WechatAccount> implements WechatAccountService {
 
-    private final WechatAccountMapper wechatAccountMapper;
-    private final RestTemplate restTemplate;
+    @Autowired
+    private  WechatAccountMapper wechatAccountMapper;
+    @Autowired
+    private  RestTemplate restTemplate;
 
     // 提前5分钟刷新,避免临界点问题
     private static final int TOKEN_EXPIRE_BUFFER = 5 ;