Selaa lähdekoodia

feat:增加微信小程序登录接口调用

ChenYL 2 vuotta sitten
vanhempi
sitoutus
d7e7b0c34b

+ 16 - 0
src/main/java/com/zhixinghe1/ots/domain/dto/LoginRequest.java

@@ -0,0 +1,16 @@
+package com.zhixinghe1.ots.domain.dto;
+
+import lombok.Data;
+
+/**
+ * @className LoginRequest
+ * @description 登录DTO
+ * @author ChenYL
+ * @date 2023/07/23 16:09
+ * @version V1.0
+ **/
+@Data
+public class LoginRequest {
+
+    private String code;
+}

+ 38 - 0
src/main/java/com/zhixinghe1/ots/domain/dto/WetChatMiniProgramLoginRequest.java

@@ -0,0 +1,38 @@
+package com.zhixinghe1.ots.domain.dto;
+
+import feign.Param;
+import lombok.Data;
+
+/**
+ * @className WetChatMiniProgramLoginRequest
+ * @description 微信小程序登录请求DTO
+ * @author ChenYL
+ * @date 2023/07/23 17:01
+ * @version V1.0
+ **/
+@Data
+public class WetChatMiniProgramLoginRequest {
+
+    /**
+     * 小程序 appId
+     */
+    // @Param("appid")
+    // private String appId;
+
+    /**
+     * 小程序 appSecret
+     */
+    // private String secret;
+
+    /**
+     * 登录时获取的 code
+     */
+    @Param("js_code")
+    private String jsCode;
+
+    /**
+     * 授权类型,此处只需填写 authorization_code
+     */
+    @Param("grant_type")
+    private String grantType;
+}

+ 47 - 0
src/main/java/com/zhixinghe1/ots/domain/dto/WetChatMiniProgramLoginResponse.java

@@ -0,0 +1,47 @@
+package com.zhixinghe1.ots.domain.dto;
+
+import com.fasterxml.jackson.annotation.JsonAlias;
+
+import lombok.Data;
+
+/**
+ * @className WetChatMiniProgramResponse
+ * @description 微信小程序登录响应
+ * @author ChenYL
+ * @date 2023/07/23 17:01
+ * @version V1.0
+ **/
+@Data
+public class WetChatMiniProgramLoginResponse {
+
+    /**
+     * 错误码
+     */
+    @JsonAlias("errcode")
+    private String errCode;
+
+    /**
+     * 错误信息
+     */
+    @JsonAlias("errmsg")
+    private String errMsg;
+
+    /**
+     * 会话密钥
+     */
+    @JsonAlias("session_key")
+    private String sessionKey;
+
+    /**
+     * 用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台账号下会返回
+     */
+    @JsonAlias("unionid")
+    private String unionId;
+
+    /**
+     * 用户唯一标识
+     */
+    @JsonAlias("openid")
+    private String openId;
+
+}

+ 26 - 0
src/main/java/com/zhixinghe1/ots/feign/WeChatMiniProgramFeign.java

@@ -0,0 +1,26 @@
+package com.zhixinghe1.ots.feign;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.cloud.openfeign.SpringQueryMap;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import com.zhixinghe1.ots.domain.dto.WetChatMiniProgramLoginRequest;
+import com.zhixinghe1.ots.domain.dto.WetChatMiniProgramLoginResponse;
+
+/**
+ * @interfaceNName WeChatMiniProgramFeign
+ * @description 微信小程序服务接口
+ * @author ChenYL
+ * @date 2023/07/23 16:48
+ * @version V1.0
+ **/
+
+@FeignClient(name = "wechatMiniProgram", url = "https://api.weixin.qq.com")
+public interface WeChatMiniProgramFeign {
+
+    /**
+     * 微信小程序登录
+     */
+    @GetMapping("/sns/jscode2session")
+    WetChatMiniProgramLoginResponse login(@SpringQueryMap WetChatMiniProgramLoginRequest loginRequest);
+}

+ 38 - 0
src/main/java/com/zhixinghe1/ots/service/controller/WeChatMiniProgramController.java

@@ -0,0 +1,38 @@
+package com.zhixinghe1.ots.service.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.zhixinghe1.ots.domain.dto.LoginRequest;
+import com.zhixinghe1.ots.domain.dto.WetChatMiniProgramLoginRequest;
+import com.zhixinghe1.ots.domain.dto.WetChatMiniProgramLoginResponse;
+import com.zhixinghe1.ots.feign.WeChatMiniProgramFeign;
+
+/**
+ * @className WeChatMiniProgramController
+ * @description 微信小程序
+ * @author ChenYL
+ * @date 2023/07/23 16:08
+ * @version V1.0
+ **/
+@RestController
+@RequestMapping("/wechat/miniprogram")
+public class WeChatMiniProgramController {
+
+    @Autowired
+    private WeChatMiniProgramFeign weChatMiniProgramFeign;
+
+    @PostMapping("/login")
+    public WetChatMiniProgramLoginResponse login(@RequestBody LoginRequest request) {
+        WetChatMiniProgramLoginRequest wetChatMiniProgramLoginRequest = new WetChatMiniProgramLoginRequest();
+        wetChatMiniProgramLoginRequest.setGrantType("authorization_code");
+        // wetChatMiniProgramLoginRequest.setSecret("fd44ec6a6fdc0937ca600fc89c3ebbe8");
+        // wetChatMiniProgramLoginRequest.setAppId("wx6468ace33a6de441");
+        wetChatMiniProgramLoginRequest.setJsCode(request.getCode());
+        WetChatMiniProgramLoginResponse login = weChatMiniProgramFeign.login(wetChatMiniProgramLoginRequest);
+        return login;
+    }
+}