Kaynağa Gözat

微信小程序获取openid

李进 2 yıl önce
ebeveyn
işleme
9ffff01c74

+ 6 - 0
authorize-api-service/pom.xml

@@ -61,6 +61,12 @@
             <artifactId>xy-captcha</artifactId>
             <version>1.0</version>
         </dependency>
+
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-miniapp</artifactId>
+            <version>4.4.0</version>
+        </dependency>
     </dependencies>
     <build>
         <resources>

+ 0 - 6
authorize-api-service/src/main/java/com/xy/entity/SysWorkUserThird.java

@@ -45,10 +45,4 @@ public class SysWorkUserThird extends BaseEntity<SysWorkUserThird> {
      */
     private String name;
 
-    /**
-     * 系统ID
-     */
-    private Long sysId;
-
-
 }

+ 25 - 0
authorize-api-service/src/main/java/com/xy/third/config/ThirdLoginConfig.java

@@ -0,0 +1,25 @@
+package com.xy.third.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "third-login")
+public class ThirdLoginConfig {
+
+    private Wx wx;
+
+    @Data
+    public static class Wx {
+
+        private String appid;
+
+        private String secret;
+
+    }
+
+}

+ 21 - 0
authorize-api-service/src/main/java/com/xy/third/dto/wx/WxMaDto.java

@@ -0,0 +1,21 @@
+package com.xy.third.dto.wx;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotBlank;
+
+public class WxMaDto {
+
+    @Data
+    @Accessors(chain = true)
+    public static class OpenId {
+
+        @NotBlank(message = "code不能为空")
+        @ApiModelProperty("code")
+        private String code;
+
+    }
+
+}

+ 52 - 0
authorize-api-service/src/main/java/com/xy/third/service/wx/WxMaServiceImpls.java

@@ -0,0 +1,52 @@
+package com.xy.third.service.wx;
+
+import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
+import cn.binarywang.wx.miniapp.config.WxMaConfig;
+import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
+import cn.binarywang.wx.miniapp.util.WxMaConfigHolder;
+import com.xy.annotate.RestMappingController;
+import com.xy.collections.map.JHashMap;
+import com.xy.third.config.ThirdLoginConfig;
+import com.xy.third.dto.wx.WxMaDto;
+import com.xy.utils.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * 微信小程序
+ *
+ * @author lijin
+ */
+@AllArgsConstructor
+@Api(tags = "微信小程序")
+@RestMappingController("wx-ma")
+public class WxMaServiceImpls {
+
+    private ThirdLoginConfig thirdLoginConfig;
+
+    @PostMapping("oenId")
+    @ApiOperation("获取openId")
+    public R<String> openId(@RequestBody @Validated WxMaDto.OpenId openId) {
+        ThirdLoginConfig.Wx wx = thirdLoginConfig.getWx();
+        WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
+        config.setAppid(wx.getAppid());
+        config.setSecret(wx.getSecret());
+        WxMaService wxMaService = new WxMaServiceImpl();
+        wxMaService.setMultiConfigs(new JHashMap<String, WxMaConfig>().set("config", config));
+        try {
+            WxMaJscode2SessionResult session = wxMaService.getUserService().getSessionInfo(openId.getCode());
+            return R.ok(session.getOpenid());
+        } catch (Exception e) {
+            return R.fail("code无效");
+        } finally {
+            WxMaConfigHolder.remove();
+        }
+    }
+
+}

+ 26 - 0
authorize-api-service/src/main/java/com/xy/ztest/Test.java

@@ -0,0 +1,26 @@
+package com.xy.ztest;
+
+import com.xy.utils.MybatisGenerator2;
+
+public class Test {
+
+    public static void main(String[] args) {
+        MybatisGenerator2.Generator.builder()
+                .author("lijin")
+                .commPath("F:/idea-project/xy/xy-authorize")
+                .dtoModule("authorize-api")
+                .dtoPackage("com.xy")
+                .serviceModule("authorize-api")
+                .servicePackage("com.xy")
+                .implModule("authorize-api-service")
+                .implPackage("com.xy")
+                .mapperModule("authorize-api-service")
+                .mapperPackage("com.xy")
+                .feignModule("authorize-api-cloud")
+                .feignPackage("com.xy")
+                .entityModule("authorize-api-service")
+                .entityPackage("com.xy")
+                .build().create();
+    }
+
+}

+ 7 - 0
authorize-start/src/main/resources/bootstrap.yml

@@ -66,3 +66,10 @@ sa-token:
   is-log: false
   # 是否输出启动日志
   isPrint: false
+
+# 第三方登录配置
+third-login:
+  # 微信
+  wx:
+    appid: wxecb8522186879691
+    secret: 2f3769bc1491f62876f0b98481aec525