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

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

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

parent 572b55cf
......@@ -11,7 +11,10 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
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 = "小程序-公众号登陆相关")
@RestController
......@@ -25,18 +28,20 @@ public class SweetWechatLoginController {
@GetMapping("userInfo")
@ApiOperation("小程序解密手机号")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "code", value = "微信code", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "encryptedData", value = "encryptedData", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "iv", value = "iv", required = true),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "type", value = "1草莓 2五百里 3mdsk 4正在 5跳飞船音乐节 6小家伙"),
@ApiImplicitParam(type = "query", dataType = "String", name = "userCode", value = " 获取 uid oid的 code"),
@ApiImplicitParam(type = "query", dataType = "String", name = "code", value = "获取手机号的 code", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "encryptedData", value = "encryptedData"),
@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(
@RequestParam(required = false) String userCode,
@RequestParam() String code,
@RequestParam() String encryptedData,
@RequestParam() String iv,
@RequestParam(required = false) String encryptedData,
@RequestParam(required = false) String iv,
@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使用")
......
......@@ -12,13 +12,11 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
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.WechatUserInfoVo;
import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.WechatUsersRedisUtils;
import com.liquidnet.service.sweet.vo.SweetAppletUsersVo;
import com.liquidnet.service.sweet.vo.SweetWechatUsersVo;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.bean.WxOAuth2UserInfo;
import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
......@@ -58,20 +56,29 @@ public class SweetWechatLoginServiceImpl {
@Lazy
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);
try {
// 获取unid openid
WxMaJscode2SessionResult sessionInfo = sweetWechatService.sessionInfo(code, type);
if (null == sessionInfo) {
WxMaJscode2SessionResult sessionInfo = null;
WxMaPhoneNumberInfo wxMaPhoneNumberInfo = null;
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");
}
String unionId = sessionInfo.getUnionid();
String openId = sessionInfo.getOpenid();
// 解密手机号码信息
WxMaPhoneNumberInfo wxMaPhoneNumberInfo = sweetWechatService.phoneNumberInfo(sessionInfo.getSessionKey(), encryptedData, iv, type);
unionId = sessionInfo.getUnionid();
openId = sessionInfo.getOpenid();
if (Objects.isNull(wxMaPhoneNumberInfo) || StringUtils.isBlank(wxMaPhoneNumberInfo.getPhoneNumber())) {
return ResponseDto.failure("解密手机信息失败");
return ResponseDto.failure("获取手机信息失败");
}
String phoneNumber = wxMaPhoneNumberInfo.getPhoneNumber();
String purePhoneNumber = wxMaPhoneNumberInfo.getPurePhoneNumber();
......
......@@ -43,6 +43,16 @@ public class SweetWechatService {
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 @@
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-miniapp</artifactId>
<version>4.1.0</version>
<version>4.7.0</version>
</dependency>
<dependency>
<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