Selaa lähdekoodia

配合最新core-solar修改,增加获取微信小程序登录手机号功能

luoshi 1 vuosi sitten
vanhempi
commit
06b6fa1b1f

+ 6 - 0
src/main/java/com/qmth/ops/api/controller/open/OpenWxappController.java

@@ -2,6 +2,7 @@ package com.qmth.ops.api.controller.open;
 
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.core.solar.model.WxappAccessToken;
+import com.qmth.boot.core.solar.model.WxappPhoneNumber;
 import com.qmth.boot.core.solar.model.WxappSession;
 import com.qmth.boot.tools.signature.SignatureType;
 import com.qmth.ops.api.constants.OpsApiConstants;
@@ -30,4 +31,9 @@ public class OpenWxappController {
     public WxappSession getSessionByCode(@RequestParam String appId, @RequestParam String code) {
         return wxappService.getSessionByCode(appId, code).output();
     }
+
+    @PostMapping("/get_phone_number")
+    public WxappPhoneNumber getPhoneNumber(@RequestParam String appId, @RequestParam String code) {
+        return wxappService.getPhoneNumber(appId, code).getPhoneNumberInfo().output();
+    }
 }

+ 15 - 0
src/main/java/com/qmth/ops/biz/service/WxappService.java

@@ -12,6 +12,7 @@ import com.qmth.ops.biz.query.WxappQuery;
 import com.qmth.ops.biz.wxapp.api.WxappApiClient;
 import com.qmth.ops.biz.wxapp.dto.AccessTokenResult;
 import com.qmth.ops.biz.wxapp.dto.Code2SessionResult;
+import com.qmth.ops.biz.wxapp.dto.GetPhoneNumberResult;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -131,5 +132,19 @@ public class WxappService extends ServiceImpl<WxappDao, Wxapp> {
             throw result.exception();
         }
     }
+
+    public GetPhoneNumberResult getPhoneNumber(String appId, String code) {
+        Wxapp wxapp = findById(appId);
+        if (wxapp == null) {
+            throw new ParameterException("Invalid WxappId");
+        }
+        WxappAccessToken accessToken = getAccessToken(appId);
+        GetPhoneNumberResult result = wxappApiClient.getPhoneNumber(accessToken.getAccessToken(), code);
+        if (result.success()) {
+            return result;
+        } else {
+            throw result.exception();
+        }
+    }
 }
 

+ 5 - 0
src/main/java/com/qmth/ops/biz/wxapp/api/WxappApiClient.java

@@ -3,7 +3,9 @@ package com.qmth.ops.biz.wxapp.api;
 import com.qmth.boot.core.retrofit.annotatioin.RetrofitClient;
 import com.qmth.ops.biz.wxapp.dto.AccessTokenResult;
 import com.qmth.ops.biz.wxapp.dto.Code2SessionResult;
+import com.qmth.ops.biz.wxapp.dto.GetPhoneNumberResult;
 import retrofit2.http.GET;
+import retrofit2.http.POST;
 import retrofit2.http.Query;
 
 @RetrofitClient(baseUrl = "https://api.weixin.qq.com/")
@@ -16,4 +18,7 @@ public interface WxappApiClient {
     @GET("sns/jscode2session")
     Code2SessionResult code2session(@Query("appid") String appId, @Query("secret") String secret,
             @Query("js_code") String code, @Query("grant_type") String grantType);
+
+    @POST("wxa/business/getuserphonenumber")
+    GetPhoneNumberResult getPhoneNumber(@Query("access_token") String accessToken, @Query("code") String code);
 }

+ 44 - 0
src/main/java/com/qmth/ops/biz/wxapp/dto/GetPhoneNumberResult.java

@@ -0,0 +1,44 @@
+package com.qmth.ops.biz.wxapp.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class GetPhoneNumberResult implements BaseResult {
+
+    @JsonProperty("phone_info")
+    private PhoneNumberInfo phoneNumberInfo;
+
+    @JsonProperty("errcode")
+    private Long errorCode;
+
+    @JsonProperty("errmsg")
+    private String errorMessage;
+
+    public PhoneNumberInfo getPhoneNumberInfo() {
+        return phoneNumberInfo;
+    }
+
+    public void setPhoneNumberInfo(PhoneNumberInfo phoneNumberInfo) {
+        this.phoneNumberInfo = phoneNumberInfo;
+    }
+
+    @Override
+    public Long getErrorCode() {
+        return errorCode;
+    }
+
+    @Override
+    public void setErrorCode(Long errorCode) {
+        this.errorCode = errorCode;
+    }
+
+    @Override
+    public String getErrorMessage() {
+        return errorMessage;
+    }
+
+    @Override
+    public void setErrorMessage(String errorMessage) {
+        this.errorMessage = errorMessage;
+    }
+
+}

+ 50 - 0
src/main/java/com/qmth/ops/biz/wxapp/dto/PhoneNumberInfo.java

@@ -0,0 +1,50 @@
+package com.qmth.ops.biz.wxapp.dto;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.qmth.boot.core.solar.model.WxappPhoneNumber;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class PhoneNumberInfo {
+
+    @JsonProperty("phoneNumber")
+    private String phoneNumber;
+
+    @JsonProperty("purePhoneNumber")
+    private String purePhoneNumber;
+
+    @JsonProperty("countryCode")
+    private String countryCode;
+
+    public String getPhoneNumber() {
+        return phoneNumber;
+    }
+
+    public void setPhoneNumber(String phoneNumber) {
+        this.phoneNumber = phoneNumber;
+    }
+
+    public String getPurePhoneNumber() {
+        return purePhoneNumber;
+    }
+
+    public void setPurePhoneNumber(String purePhoneNumber) {
+        this.purePhoneNumber = purePhoneNumber;
+    }
+
+    public String getCountryCode() {
+        return countryCode;
+    }
+
+    public void setCountryCode(String countryCode) {
+        this.countryCode = countryCode;
+    }
+
+    public WxappPhoneNumber output() {
+        WxappPhoneNumber result = new WxappPhoneNumber();
+        result.setPhoneNumber(phoneNumber);
+        result.setPurePhoneNumber(purePhoneNumber);
+        result.setCountryCode(countryCode);
+        return result;
+    }
+}