记得上下班打卡 | git大法好,push需谨慎

Commit 0f72e88e authored by 姜秀龙's avatar 姜秀龙

LostFound 小程序获取手机号方式更改

parent 572b55cf
...@@ -11,7 +11,10 @@ import io.swagger.annotations.ApiImplicitParams; ...@@ -11,7 +11,10 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "小程序-公众号登陆相关") @Api(tags = "小程序-公众号登陆相关")
@RestController @RestController
...@@ -25,18 +28,20 @@ public class SweetWechatLoginController { ...@@ -25,18 +28,20 @@ public class SweetWechatLoginController {
@GetMapping("userInfo") @GetMapping("userInfo")
@ApiOperation("小程序解密手机号") @ApiOperation("小程序解密手机号")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "code", value = "微信code", required = true), @ApiImplicitParam(type = "query", dataType = "String", name = "userCode", value = " 获取 uid oid的 code"),
@ApiImplicitParam(type = "query", dataType = "String", name = "encryptedData", value = "encryptedData", required = true), @ApiImplicitParam(type = "query", dataType = "String", name = "code", value = "获取手机号的 code", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "iv", value = "iv", required = true), @ApiImplicitParam(type = "query", dataType = "String", name = "encryptedData", value = "encryptedData"),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "type", value = "1草莓 2五百里 3mdsk 4正在 5跳飞船音乐节 6小家伙"), @ApiImplicitParam(type = "query", dataType = "String", name = "iv", value = "iv"),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "type", value = "1草莓 2五百里 3mdsk 4正在 5跳飞船音乐节 6小家伙", required = true),
}) })
public ResponseDto userInfo( public ResponseDto userInfo(
@RequestParam(required = false) String userCode,
@RequestParam() String code, @RequestParam() String code,
@RequestParam() String encryptedData, @RequestParam(required = false) String encryptedData,
@RequestParam() String iv, @RequestParam(required = false) String iv,
@RequestParam(defaultValue = "1") Integer type @RequestParam(defaultValue = "1") Integer type
) { ) {
return sweetLoginService.userInfo(code, encryptedData, iv, type); return sweetLoginService.userInfo(userCode, code, encryptedData, iv, type);
} }
@ApiOperation(value = "小程序获取openid", notes = "这里仅用于获取OPENID使用") @ApiOperation(value = "小程序获取openid", notes = "这里仅用于获取OPENID使用")
......
...@@ -12,13 +12,11 @@ import com.liquidnet.service.base.ResponseDto; ...@@ -12,13 +12,11 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.feign.adam.api.FeignAdamBaseClient; import com.liquidnet.service.feign.adam.api.FeignAdamBaseClient;
import com.liquidnet.service.feign.stone.api.FeignStoneIntegralClient;
import com.liquidnet.service.sweet.dto.vo.WechatTokenInfoVo; import com.liquidnet.service.sweet.dto.vo.WechatTokenInfoVo;
import com.liquidnet.service.sweet.dto.vo.WechatUserInfoVo; import com.liquidnet.service.sweet.dto.vo.WechatUserInfoVo;
import com.liquidnet.service.sweet.utils.QueueUtils; import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.WechatUsersRedisUtils; import com.liquidnet.service.sweet.utils.WechatUsersRedisUtils;
import com.liquidnet.service.sweet.vo.SweetAppletUsersVo; import com.liquidnet.service.sweet.vo.SweetAppletUsersVo;
import com.liquidnet.service.sweet.vo.SweetWechatUsersVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.bean.WxOAuth2UserInfo; import me.chanjar.weixin.common.bean.WxOAuth2UserInfo;
import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken; import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
...@@ -58,20 +56,29 @@ public class SweetWechatLoginServiceImpl { ...@@ -58,20 +56,29 @@ public class SweetWechatLoginServiceImpl {
@Lazy @Lazy
private FeignAdamBaseClient feignAdamBaseClient; private FeignAdamBaseClient feignAdamBaseClient;
public ResponseDto userInfo(String code, String encryptedData, String iv, Integer type) { public ResponseDto userInfo(String userCode, String code, String encryptedData, String iv, Integer type) {
log.info("小程序解密用户信息参数:[code=[{}], encryptedData=[{}], [iv=[{}], type=[{}]", code, encryptedData, iv, type); log.info("小程序解密用户信息参数:[code=[{}], encryptedData=[{}], [iv=[{}], type=[{}]", code, encryptedData, iv, type);
try { try {
// 获取unid openid WxMaJscode2SessionResult sessionInfo = null;
WxMaJscode2SessionResult sessionInfo = sweetWechatService.sessionInfo(code, type); WxMaPhoneNumberInfo wxMaPhoneNumberInfo = null;
if (null == sessionInfo) { String unionId = null;
String openId = null;
if (type == 1 && Objects.isNull(encryptedData)) {
// 获取unid openid
sessionInfo = sweetWechatService.sessionInfo(userCode, type);
// 解密手机号码信息
wxMaPhoneNumberInfo = sweetWechatService.getPhoneNumber(code, type);
} else {
sessionInfo = sweetWechatService.sessionInfo(code, type);
wxMaPhoneNumberInfo = sweetWechatService.phoneNumberInfo(sessionInfo.getSessionKey(), encryptedData, iv, type);
}
if (Objects.isNull(sessionInfo)) {
return ResponseDto.failure("login handler error"); return ResponseDto.failure("login handler error");
} }
String unionId = sessionInfo.getUnionid(); unionId = sessionInfo.getUnionid();
String openId = sessionInfo.getOpenid(); openId = sessionInfo.getOpenid();
// 解密手机号码信息
WxMaPhoneNumberInfo wxMaPhoneNumberInfo = sweetWechatService.phoneNumberInfo(sessionInfo.getSessionKey(), encryptedData, iv, type);
if (Objects.isNull(wxMaPhoneNumberInfo) || StringUtils.isBlank(wxMaPhoneNumberInfo.getPhoneNumber())) { if (Objects.isNull(wxMaPhoneNumberInfo) || StringUtils.isBlank(wxMaPhoneNumberInfo.getPhoneNumber())) {
return ResponseDto.failure("解密手机信息失败"); return ResponseDto.failure("获取手机信息失败");
} }
String phoneNumber = wxMaPhoneNumberInfo.getPhoneNumber(); String phoneNumber = wxMaPhoneNumberInfo.getPhoneNumber();
String purePhoneNumber = wxMaPhoneNumberInfo.getPurePhoneNumber(); String purePhoneNumber = wxMaPhoneNumberInfo.getPurePhoneNumber();
......
...@@ -43,6 +43,16 @@ public class SweetWechatService { ...@@ -43,6 +43,16 @@ public class SweetWechatService {
return wxMaService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, iv); return wxMaService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, iv);
} }
public WxMaPhoneNumberInfo getPhoneNumber(String code, Integer anum) {
WxMaService wxMaService = wechatMaConfigure.getWxMaService(anum);
try {
return wxMaService.getUserService().getPhoneNumber(code);
} catch (Exception e) {
log.error("getPhoneNumber error", e);
return null;
}
}
/** /**
* 服务号-------------- * 服务号--------------
*/ */
......
...@@ -280,7 +280,7 @@ ...@@ -280,7 +280,7 @@
<dependency> <dependency>
<groupId>com.github.binarywang</groupId> <groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-miniapp</artifactId> <artifactId>weixin-java-miniapp</artifactId>
<version>4.1.0</version> <version>4.7.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.github.binarywang</groupId> <groupId>com.github.binarywang</groupId>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment