pms-parent/pms-global/src/main/resources/application-global.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pms-wechat-trace/src/main/java/com/dy/pmsTrace/PmsWechatTraceApplication.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pms-wechat-trace/src/main/java/com/dy/pmsTrace/login/AuthController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pms-wechat-trace/src/main/java/com/dy/pmsTrace/login/QueryVo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pms-wechat-trace/src/main/java/com/dy/pmsTrace/login/WeChatService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pms-wechat-trace/src/main/java/com/dy/pmsTrace/util/RestTemplateUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pms-parent/pms-wechat-trace/src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
pms-parent/pms-global/src/main/resources/application-global.yml
@@ -84,6 +84,9 @@ report: webPort: 12350 idSuffix: 7 wechat: webPort: 12351 idSuffix: 8 file: idSuffix: 99 file1: pms-parent/pms-wechat-trace/src/main/java/com/dy/pmsTrace/PmsWechatTraceApplication.java
@@ -1,9 +1,15 @@ package com.dy.pmsTrace; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.EnableAspectJAutoProxy; @SpringBootApplication @EnableAspectJAutoProxy @ComponentScan(basePackages = {"com.dy.common", "com.dy.pmsGlobal", "com.dy.pmsTrace"}) @MapperScan(basePackages={"com.dy.pmsGlobal.dao*"}) public class PmsWechatTraceApplication { public static void main(String[] args) { pms-parent/pms-wechat-trace/src/main/java/com/dy/pmsTrace/login/AuthController.java
New file @@ -0,0 +1,36 @@ package com.dy.pmsTrace.login; import com.alibaba.fastjson2.JSONObject; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/wechat") public class AuthController { private WeChatService weChatService; @Autowired public void setWechatService(WeChatService weChatUserService){ this.weChatService = weChatUserService; } @PostMapping("/login") public BaseResponse<Boolean> login(@RequestBody QueryVo vo) { try { JSONObject wxResponse = weChatService.login(vo.code); if (wxResponse.containsKey("openid")) { // 成功获取到了用户的openid,session_key和其他信息 // 这里可以进行更多业务逻辑操作,例如生成自定义token返回给客户端 return BaseResponseUtils.buildSuccess(wxResponse); } else { // 如果有错误信息,直接返回 return BaseResponseUtils.buildError(wxResponse); } } catch (Exception e) { return BaseResponseUtils.buildError(e.getMessage()); } } } pms-parent/pms-wechat-trace/src/main/java/com/dy/pmsTrace/login/QueryVo.java
New file @@ -0,0 +1,14 @@ package com.dy.pmsTrace.login; import com.dy.common.webUtil.QueryConditionVo; import lombok.*; @Data @EqualsAndHashCode(callSuper = false) @ToString(callSuper = true) @NoArgsConstructor @AllArgsConstructor @Builder public class QueryVo extends QueryConditionVo { public String code; } pms-parent/pms-wechat-trace/src/main/java/com/dy/pmsTrace/login/WeChatService.java
New file @@ -0,0 +1,40 @@ package com.dy.pmsTrace.login; import com.alibaba.fastjson2.JSONObject; import com.dy.pmsTrace.util.RestTemplateUtil; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.IOException; import java.util.HashMap; import java.util.Map; @Service public class WeChatService { @Value("${wechat.appId}") private String appId; @Value("${wechat.appSecret}") private String appSecret; @Value("${wechat.loginUrl}") private String loginUrl; private final RestTemplateUtil restTemplateUtil; public WeChatService(RestTemplateUtil restTemplateUtil) { this.restTemplateUtil = restTemplateUtil; } public JSONObject login(String code) throws IOException { Map<String, Object> queryParams = new HashMap<>(); queryParams.put("appid", appId); queryParams.put("secret", appSecret); queryParams.put("js_code", code); queryParams.put("grant_type", "authorization_code"); Map<String, String> headerParams = new HashMap<>(); return restTemplateUtil.get(loginUrl, queryParams, headerParams); } } pms-parent/pms-wechat-trace/src/main/java/com/dy/pmsTrace/util/RestTemplateUtil.java
New file @@ -0,0 +1,111 @@ package com.dy.pmsTrace.util; import com.alibaba.fastjson2.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.*; import org.springframework.stereotype.Component; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import java.io.IOException; import java.util.HashMap; import java.util.Map; /** * @author ZhuBaoMin * @date 2024-03-06 13:47 * @LastEditTime 2024-03-06 13:47 * @Description */ @Component public class RestTemplateUtil { @Autowired private RestTemplate restTemplate; public JSONObject get(String url, Map<String, Object> queryParams) throws IOException { return get(url, queryParams, new HashMap<>(1)); } public JSONObject get(String url, Map<String, Object> queryParams, Map<String, String> headerParams) throws IOException { String tempUrl = setParamsByAppendUrl(queryParams, url); HttpHeaders headers = new HttpHeaders(); headerParams.forEach(headers::add); HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(null, headers); ResponseEntity<String> response = restTemplate.exchange(tempUrl, HttpMethod.GET, httpEntity, String.class); return JSONObject.parseObject(response.getBody()); } public JSONObject getHeaders(String url, Map<String, Object> queryParams, Map<String, String> headerParams) throws IOException { String tempUrl = setParamsByAppendUrl(queryParams, url); HttpHeaders headers = new HttpHeaders(); headerParams.forEach(headers::add); HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(null, headers); ResponseEntity<String> response = restTemplate.exchange(tempUrl, HttpMethod.GET, httpEntity, String.class); JSONObject jsonObject = new JSONObject(); jsonObject.put("headers", response.getHeaders()); jsonObject.put("body", response.getBody()); return jsonObject; } public JSONObject get2(String url, Map<String, Object> queryParams, Map<String, String> headerParams) throws IOException { String tempUrl = setParamsByPath(queryParams, url); HttpHeaders headers = new HttpHeaders(); headerParams.forEach(headers::add); HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(null, headers); ResponseEntity<String> response = restTemplate.exchange(tempUrl, HttpMethod.GET, httpEntity, String.class, queryParams); return JSONObject.parseObject(response.getBody()); } public JSONObject post(String url, String json, Map<String, String> headerParams) { HttpHeaders headers = new HttpHeaders(); headerParams.forEach(headers::add); headers.setContentType(MediaType.APPLICATION_JSON); headers.add("Accept", MediaType.APPLICATION_JSON.toString()); HttpEntity<String> httpEntity = new HttpEntity<>(json, headers); ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class); return JSONObject.parseObject(response.getBody()); } private String setParamsByPath(Map<String, Object> queryParams, String url) { // url?id={id}&name={name} if (queryParams == null || queryParams.isEmpty()) { return url; } StringBuilder sb = new StringBuilder(); try { for (Map.Entry<String, Object> entry : queryParams.entrySet()) { sb.append("&").append(entry.getKey()).append("=").append("{").append(entry.getKey()).append("}"); } if (!url.contains("?")) { sb.deleteCharAt(0).insert(0, "?"); } } catch (Exception e) { e.printStackTrace(); } return url + sb; } private String setParamsByAppendUrl(Map<String, Object> queryParams, String url) { // url?id=1&name=zzc if (queryParams == null || queryParams.isEmpty()) { return url; } StringBuilder sb = new StringBuilder(); try { for (Map.Entry<String, Object> entry : queryParams.entrySet()) { sb.append("&").append(entry.getKey()).append("="); sb.append(entry.getValue()); } if (!url.contains("?")) { sb.deleteCharAt(0).insert(0, "?"); } } catch (Exception e) { e.printStackTrace(); } return url + sb; } } pms-parent/pms-wechat-trace/src/main/resources/application.yml
@@ -4,15 +4,16 @@ #web服务端口,tomcat默认是8080 server: port: ${pms.base.webPort} port: ${pms.wechat.webPort} servlet: context-path: /base #web访问上下文路径 context-path: /wechat #web访问上下文路径 context-parameters: #GenerateIdSetSuffixListener中应用,取值范围是0-99 idSuffix: ${pms.base.idSuffix} idSuffix: ${pms.webPort.idSuffix} #ConfigListener中应用 #configFileNames: config-global.xml,config-demo.xml user: defaultTrueRandomFalsePassword: true #true:采用默认密码,false:系统产生随机密码 defaultPassword: "ABC123" #默认密码 wechat: appId: wx2e6beb0eca7c3672 appSecret: b8f8ce34e13d3ba2eeaeba89068d7fbe loginUrl: https://api.weixin.qq.com/sns/jscode2session