用户登录优化,修改为不使用短信验证码的方案了。

This commit is contained in:
2026-04-09 15:03:22 +08:00
parent 9846990604
commit be6376f10d
11 changed files with 340 additions and 131 deletions

View File

@@ -33,6 +33,7 @@ public class PlatformIdAOP {
PlatformKey platformKey = method.getAnnotation(PlatformKey.class);
if(platformKey != null){
PlatformContext.changeKey(platformKey.value());
PlatformContext.set("platform_id",1);
}
NoPlatform noPlatform = method.getAnnotation(NoPlatform.class);
if(noPlatform != null){

View File

@@ -59,7 +59,8 @@ public class LoginOrRegisterController extends BaseApiController {
* 手机号和验证码登录
*/
@RequestMapping(value = "/member/login" , method = RequestMethod.POST)
public ResponseDTO register(@RequestParam("mobile")String mobile,@RequestParam("captcha")String captcha){
@Deprecated
public ResponseDTO register(@RequestParam("mobile")String mobile,@RequestParam("captcha")String captcha){
return ResponseDTO.ok().addAttribute("authorization",loginRegisterService.loginByMobile(mobile,captcha));
}
@@ -68,6 +69,7 @@ public class LoginOrRegisterController extends BaseApiController {
* 微信授权登录
*/
@RequestMapping(value = "/member/login/wx" , method = RequestMethod.POST)
@Deprecated
public ResponseDTO loginWx(@RequestParam("code") String code, @RequestParam("nickname") String nickname,
@RequestParam("avatar") String avatar){
String openId = wechatService.getXcxOpenId(code); //查询openId:
@@ -79,11 +81,13 @@ public class LoginOrRegisterController extends BaseApiController {
}
/**
* 绑定手机号
* 微信小程序手机号一键登录
* loginCode: wx.login获取的code用于获取openId
* phoneCode: wx.getPhoneNumber获取的code用于获取手机号
*/
@RequestMapping(value = "/member/login/wx/phone" , method = RequestMethod.POST)
public ResponseDTO phone(BindMobileDTO bindMobileDTO){
MemberTokenDTO memberTokenDTO = loginRegisterService.bildMobile(bindMobileDTO);
MemberTokenDTO memberTokenDTO = loginRegisterService.loginWithPhoneCode(bindMobileDTO);
return ResponseDTO.ok()
.addAttribute("authorization",memberTokenDTO);
}

View File

@@ -25,8 +25,9 @@ public class UploadController extends BaseApiController {
@RequestMapping("/upload/avatar")
@AccessToken
public ResponseDTO uploadImg(@RequestParam("image") MultipartFile file) throws IOException {
Integer loginMemberId = getLoginMemberId();
String imgUrl = ossClientUtil.uploadImg(file);
loginRegisterService.updateInformation(getLoginMemberId(),null,imgUrl);
loginRegisterService.updateInformation(loginMemberId,null,imgUrl);
return ResponseDTO.ok();
}

View File

@@ -7,10 +7,12 @@ import com.sv.api.context.PlatformContext;
import com.sv.dto.api.BindMobileDTO;
import com.sv.dto.api.MemberInformationDTO;
import com.sv.dto.api.MemberTokenDTO;
import com.sv.dto.api.wechat.WechatLoginResult;
import com.sv.entity.Member;
import com.sv.entity.MemberAuth;
import com.sv.exception.api.ExceptionCodeTemplate;
import com.sv.api.util.OSSHelper;
import com.sv.api.service.impl.wechat.WechatService;
import com.sv.service.api.MemberAuthService;
import com.sv.service.api.MemberService;
import com.sv.service.api.MemberTokenService;
@@ -21,6 +23,7 @@ import com.ydd.framework.core.common.utils.ValidationUtils;
import com.ydd.framework.core.entity.enums.DeletedEnum;
import com.ydd.framework.core.exception.ServiceException;
import com.ydd.framework.core.service.impl.BaseServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
@@ -60,11 +63,14 @@ public class LoginRegisterServiceImpl extends BaseServiceImpl {
@Resource
private OSSClientUtil ossClientUtil;
@Resource
private WechatService wechatService;
/**
* 手机号注册
*/
@Transactional
@Deprecated
public MemberTokenDTO registerByMobile(String mobile,String captcha,String name,Integer sex,Integer age,String address){
ValidationUtils.assertNotBlank(mobile, "请输入手机号码");
VenueValidateUtils.assertMobile(mobile);
@@ -100,6 +106,7 @@ public class LoginRegisterServiceImpl extends BaseServiceImpl {
* 手机号和验证码登录
*/
@Transactional
@Deprecated
public MemberTokenDTO loginByMobile(String mobile, String captcha){
// 参数校验
ValidationUtils.assertNotBlank(mobile, "请输入手机号码");
@@ -216,85 +223,85 @@ public class LoginRegisterServiceImpl extends BaseServiceImpl {
/**
* 绑定手机号
*/
public MemberTokenDTO bildMobile(BindMobileDTO bindMobileDTO){
// 参数校验
ValidationUtils.assertNotBlank(bindMobileDTO.getMobile(), "请输入手机号码");
VenueValidateUtils.assertMobile(bindMobileDTO.getMobile());
ValidationUtils.assertNotNull(bindMobileDTO.getNickname());
ValidationUtils.assertNotNull(bindMobileDTO.getAvatar());
ValidationUtils.assertNotNull(bindMobileDTO.getOpenId());
ValidationUtils.assertNotBlank(bindMobileDTO.getCaptcha(), "请输入验证码");
// 校验验证码是否正确
captchaCacheService.assertCaptcha(bindMobileDTO.getMobile(), ApiConstants.PHONE_SMS_CAPTCHA_PREFIX, bindMobileDTO.getCaptcha());
MemberTokenDTO memberTokenDTO = null;
Member member = memberService.findByMobile(bindMobileDTO.getMobile());
// 不存在直接注册
if (member == null){
// 根据手机号码创建新用户
member = memberService.createByMobile(bindMobileDTO.getMobile(),bindMobileDTO.getName(),
bindMobileDTO.getSex(),bindMobileDTO.getAge(),bindMobileDTO.getAddress(),PlatformContext.getValue());
// 修改用户图像
updateInformation(member.getId(),bindMobileDTO.getNickname(),bindMobileDTO.getAvatar());
// 删除验证码
captchaCacheService.remove(bindMobileDTO.getMobile(), ApiConstants.REGISTER_SMS_CAPTCHA_PREFIX);
// 查询认证
MemberAuth memberAuth = memberAuthService.findByMobile(bindMobileDTO.getMobile());
if (memberAuth == null){
// 创建用户登录认证
memberAuth = memberAuthService.createByMobileByOpenId(member.getId(),member.getPlatformId(),
bindMobileDTO.getMobile(),bindMobileDTO.getOpenId());
}
// 查询访问凭证,并强制更新
memberTokenDTO = memberTokenService.findDTOByMemberId(memberAuth.getMemberId(), Boolean.TRUE);
}else {
if (DeletedEnum.YES.value.equals(member.getDeleted())) {
throw new ServiceException(ExceptionCodeTemplate.NONE_MEMBER_INFORMATION);
}
if(member.getStatus().intValue() == MemberStatusEnum.DISABLE.value.intValue()){
throw new ServiceException(ExceptionCodeTemplate.MEMBER_ERROR);
}
// 查询用户登录的方式member_auth表中
memberTokenDTO = checkLogin(member.getId(),bindMobileDTO.getOpenId(),member,bindMobileDTO);
}
return memberTokenDTO;
}
// public MemberTokenDTO bildMobile(BindMobileDTO bindMobileDTO){
// // 参数校验
//// ValidationUtils.assertNotBlank(bindMobileDTO.getMobile(), "请输入手机号码");
// VenueValidateUtils.assertMobile(bindMobileDTO.getMobile());
// ValidationUtils.assertNotNull(bindMobileDTO.getNickname());
// ValidationUtils.assertNotNull(bindMobileDTO.getAvatar());
// ValidationUtils.assertNotNull(bindMobileDTO.getOpenId());
//// ValidationUtils.assertNotBlank(bindMobileDTO.getCaptcha(), "请输入验证码");
// // 校验验证码是否正确
//// captchaCacheService.assertCaptcha(bindMobileDTO.getMobile(), ApiConstants.PHONE_SMS_CAPTCHA_PREFIX, bindMobileDTO.getCaptcha());
//
// MemberTokenDTO memberTokenDTO = null;
// Member member = memberService.findByMobile(bindMobileDTO.getMobile());
// // 不存在直接注册
// if (member == null){
// // 根据手机号码创建新用户
// member = memberService.createByMobile(bindMobileDTO.getMobile(),bindMobileDTO.getName(),
// bindMobileDTO.getSex(),bindMobileDTO.getAge(),bindMobileDTO.getAddress(),PlatformContext.getValue());
// // 修改用户图像
// updateInformation(member.getId(),bindMobileDTO.getNickname(),bindMobileDTO.getAvatar());
// // 删除验证码
// captchaCacheService.remove(bindMobileDTO.getMobile(), ApiConstants.REGISTER_SMS_CAPTCHA_PREFIX);
//
// // 查询认证
// MemberAuth memberAuth = memberAuthService.findByMobile(bindMobileDTO.getMobile());
// if (memberAuth == null){
// // 创建用户登录认证
// memberAuth = memberAuthService.createByMobileByOpenId(member.getId(),member.getPlatformId(),
// bindMobileDTO.getMobile(),bindMobileDTO.getOpenId());
// }
//
// // 查询访问凭证,并强制更新
// memberTokenDTO = memberTokenService.findDTOByMemberId(memberAuth.getMemberId(), Boolean.TRUE);
// }else {
// if (DeletedEnum.YES.value.equals(member.getDeleted())) {
// throw new ServiceException(ExceptionCodeTemplate.NONE_MEMBER_INFORMATION);
// }
// if(member.getStatus().intValue() == MemberStatusEnum.DISABLE.value.intValue()){
// throw new ServiceException(ExceptionCodeTemplate.MEMBER_ERROR);
// }
//
// // 查询用户登录的方式member_auth表中
// memberTokenDTO = checkLogin(member.getId(),bindMobileDTO.getOpenId(),member,bindMobileDTO);
// }
//
// return memberTokenDTO;
// }
/**
* 具体查看用户的登录情况
*/
@Transactional
public MemberTokenDTO checkLogin(Integer memberId,String openId,Member member,BindMobileDTO bindMobileDTO){
MemberTokenDTO memberTokenDTO = null;
// 微信登录方式
MemberAuth memberAuth = memberAuthService.checkLoginWay(memberId,MemberAuthTypeEnum.WEIXIN.value);
// 如果用户有用微信登录过并且openId,与登录中的一致则直接登录否则拒绝登录3
if (memberAuth != null){
if (memberAuth.getAuthId().equals(openId)) {
// 查询访问凭证,并强制更新
memberTokenDTO = memberTokenService.findDTOByMemberId(memberAuth.getMemberId(), Boolean.TRUE);
// 修改用户信息
updateMember(member,bindMobileDTO);
}else {
throw new ServiceException("手机号已被绑定");
}
}else {
// 用户注册过member表中有数据登录表中没有数据直接更新用户登录表
// 创建用户登录认证
memberAuth = memberAuthService.createByMobileByOpenId(member.getId(),member.getPlatformId(),
bindMobileDTO.getMobile(),bindMobileDTO.getOpenId());
// 查询访问凭证,并强制更新
memberTokenDTO = memberTokenService.findDTOByMemberId(memberAuth.getMemberId(), Boolean.TRUE);
// 修改用户图像
updateInformation(memberAuth.getMemberId(),bindMobileDTO.getNickname(),bindMobileDTO.getAvatar());
}
return memberTokenDTO;
}
// @Transactional
// public MemberTokenDTO checkLogin(Integer memberId,String openId,Member member,BindMobileDTO bindMobileDTO){
// MemberTokenDTO memberTokenDTO = null;
// // 微信登录方式
// MemberAuth memberAuth = memberAuthService.checkLoginWay(memberId,MemberAuthTypeEnum.WEIXIN.value);
// // 如果用户有用微信登录过并且openId,与登录中的一致则直接登录否则拒绝登录3
// if (memberAuth != null){
// if (memberAuth.getAuthId().equals(openId)) {
// // 查询访问凭证,并强制更新
// memberTokenDTO = memberTokenService.findDTOByMemberId(memberAuth.getMemberId(), Boolean.TRUE);
// // 修改用户信息
// updateMember(member,bindMobileDTO);
// }else {
// throw new ServiceException("手机号已被绑定");
// }
// }else {
// // 用户注册过member表中有数据登录表中没有数据直接更新用户登录表
// // 创建用户登录认证
// memberAuth = memberAuthService.createByMobileByOpenId(member.getId(),member.getPlatformId(),
// bindMobileDTO.getMobile(),bindMobileDTO.getOpenId());
// // 查询访问凭证,并强制更新
// memberTokenDTO = memberTokenService.findDTOByMemberId(memberAuth.getMemberId(), Boolean.TRUE);
// // 修改用户图像
// updateInformation(memberAuth.getMemberId(),bindMobileDTO.getNickname(),bindMobileDTO.getAvatar());
// }
//
// return memberTokenDTO;
// }
/**
* 更新用户信息
@@ -317,7 +324,7 @@ public class LoginRegisterServiceImpl extends BaseServiceImpl {
member.setAddress(bindMobileDTO.getAddress());
}
try {
member.setAvatar(updateWxImgToOss(bindMobileDTO.getAvatar()));
// member.setAvatar(updateWxImgToOss(bindMobileDTO.getAvatar()));
} catch (Exception e) {
e.printStackTrace();
}
@@ -332,6 +339,62 @@ public class LoginRegisterServiceImpl extends BaseServiceImpl {
memberTokenService.logout(memberId);
}
/**
* 微信小程序手机号一键登录
* 通过loginCode获取openId通过phoneCode获取手机号直接完成登录
*/
@Transactional
public MemberTokenDTO loginWithPhoneCode(BindMobileDTO bindMobileDTO){
String loginCode = bindMobileDTO.getLoginCode();
String phoneCode = bindMobileDTO.getPhoneCode();
if (StringUtils.isBlank(loginCode)) {
throw new ServiceException("loginCode不能为空");
}
if (StringUtils.isBlank(phoneCode)) {
throw new ServiceException("phoneCode不能为空");
}
Integer value = PlatformContext.getValue();
WechatLoginResult wechatResult = wechatService.getXcxOpenIdAndPhone(loginCode, phoneCode);
String openId = wechatResult.getOpenId();
String mobile = wechatResult.getPhoneNumber();
MemberTokenDTO memberTokenDTO = null;
synchronized (openId.intern()){
Member member = memberService.findByMobile(mobile);
if (member == null) {
member = memberService.createByMobile(mobile, bindMobileDTO.getNickname(),
bindMobileDTO.getSex(), bindMobileDTO.getAge(), bindMobileDTO.getAddress(), value);
updateInformation(member.getId(), bindMobileDTO.getNickname(), bindMobileDTO.getAvatar());
MemberAuth memberAuth = memberAuthService.findByMobile(mobile);
if (memberAuth == null) {
memberAuth = memberAuthService.createByMobileByOpenId(member.getId(), member.getPlatformId(), mobile, openId);
}
memberTokenDTO = memberTokenService.findDTOByMemberId(memberAuth.getMemberId(), Boolean.TRUE);
} else {
if (DeletedEnum.YES.value.equals(member.getDeleted())) {
throw new ServiceException(ExceptionCodeTemplate.NONE_MEMBER_INFORMATION);
}
if (member.getStatus().intValue() == MemberStatusEnum.DISABLE.value.intValue()) {
throw new ServiceException(ExceptionCodeTemplate.MEMBER_ERROR);
}
MemberAuth memberAuth = memberAuthService.findByAuthId(openId);
if (memberAuth == null) {
memberAuth = memberAuthService.createByMobileByOpenId(member.getId(), member.getPlatformId(), mobile, openId);
memberTokenDTO = memberTokenService.findDTOByMemberId(memberAuth.getMemberId(), Boolean.TRUE);
} else if (memberAuth.getMemberId().intValue() == member.getId().intValue()) {
memberTokenDTO = memberTokenService.findDTOByMemberId(memberAuth.getMemberId(), Boolean.TRUE);
} else {
throw new ServiceException("该手机号已被其他微信账号绑定");
}
updateInformation(member.getId(), bindMobileDTO.getNickname(), bindMobileDTO.getAvatar());
}
}
return memberTokenDTO;
}
/***
* 修改用户图像
*/
@@ -346,7 +409,7 @@ public class LoginRegisterServiceImpl extends BaseServiceImpl {
}
member.setAvatar(avatar);
try {
member.setAvatar(updateWxImgToOss(avatar));
// member.setAvatar(updateWxImgToOss(avatar));
} catch (Exception e) {
e.printStackTrace();
}

View File

@@ -1,9 +1,11 @@
package com.sv.api.service.impl.wechat;
import com.sv.api.context.PlatformContext;
import com.sv.dto.api.wechat.AccessTokenResponse;
import com.sv.dto.api.wechat.PhoneNumberResponse;
import com.sv.dto.api.wechat.WechatLoginResult;
import com.sv.entity.Platform;
import com.sv.service.common.PlatformService;
import com.sv.service.utils.HttpClientUtils;
import com.ydd.framework.core.common.utils.HttpUtils;
import com.ydd.framework.core.common.utils.JsonMapper;
import com.ydd.framework.core.exception.ExceptionCodeTemplate;
@@ -21,65 +23,71 @@ import javax.annotation.Resource;
public class WechatService extends BaseServiceImpl {
private Logger logger = LoggerFactory.getLogger(WechatService.class);
//小程序登录 获取信息url
private static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code";
private static final String GET_PHONE_URL = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=%s";
private static final String CGI_BIN_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s";
/**
* 微信全局token缓存变量
*/
public final static String REDIS_ACCESS_TOKEN = "SZPM_ACCESS_TOKEN";
@Resource
private PlatformService platformServiceImpl;
public final static int PLATFORM_ID = 1;
/**
* 通过code获取openid 小程序
*
* @param code
* @return
*/
public String getXcxOpenId(String code) {
Platform platform = platformServiceImpl.findById(PlatformContext.getValue());
Platform platform = platformServiceImpl.findById(PLATFORM_ID);
if (platform == null) {
logger.error("平台信息不存在platformId: " + PLATFORM_ID);
throw new ServiceException(ExceptionCodeTemplate.SERVICE_EXCEPTION);
}
String url = String.format(ACCESS_TOKEN_URL, platform.getAppId(), platform.getSecret(), code);
String result = HttpUtils.get(url);
AccessTokenResponse response = JsonMapper.nonEmptyMapper().fromJson(result, AccessTokenResponse.class);
if (StringUtils.isBlank(response.getOpenid())) {
logger.error("小程序openid获取失败" + result);
throw new ServiceException(ExceptionCodeTemplate.SERVICE_EXCEPTION);
} else {
String openId = response.getOpenid();
String accessToken = response.getAccess_token();
return openId;
}
return response.getOpenid();
}
/* private boolean checkWxXml( Map<String,String> params) throws IOException {
String signFromAPIResponse = params.get("sign").toString();
if (signFromAPIResponse == "" || signFromAPIResponse == null) {
logger.info("API返回的数据签名数据不存在有可能被第三方篡改!!!");
return false;
public WechatLoginResult getXcxOpenIdAndPhone(String loginCode, String phoneCode) {
Platform platform = platformServiceImpl.findById(PLATFORM_ID);
if (platform == null) {
logger.error("平台信息不存在platformId: " + PLATFORM_ID);
throw new ServiceException(ExceptionCodeTemplate.SERVICE_EXCEPTION);
}
//清掉返回数据对象里面的Sign数据不能把这个数据也加进去进行签名然后用签名算法进行签名
params.put("sign", "");
String signForAPIResponse = getSign(params);
logger.info("签名验证后的sign:"+signForAPIResponse+" 微信回调传入的sign:"+signFromAPIResponse);
if (!signForAPIResponse.equalsIgnoreCase(signFromAPIResponse)) {
logger.info("API返回的数据签名数据不一样有可能被第三方篡改!!!");
return false;
}
return true;
}*/
/* private String getSign(Map<String, String> map) {
SortedMap<String, String> signParams = new TreeMap<>();
for (Map.Entry<String, String> stringStringEntry : map.entrySet()) {
signParams.put(stringStringEntry.getKey(), stringStringEntry.getValue());
}
signParams.remove("sign");
String sign = CommonUtils.getSign(signParams, key);
return sign;
}*/
String openId = getXcxOpenId(loginCode);
String accessToken = getAccessToken(platform);
String phoneNumber = getPhoneNumber(phoneCode, accessToken);
return new WechatLoginResult(openId, phoneNumber);
}
private String getAccessToken(Platform platform) {
String url = String.format(CGI_BIN_TOKEN_URL, platform.getAppId(), platform.getSecret());
String result = HttpUtils.get(url);
AccessTokenResponse response = JsonMapper.nonEmptyMapper().fromJson(result, AccessTokenResponse.class);
if (StringUtils.isBlank(response.getAccess_token())) {
logger.error("小程序access_token获取失败" + result);
throw new ServiceException(ExceptionCodeTemplate.SERVICE_EXCEPTION);
}
return response.getAccess_token();
}
private String getPhoneNumber(String code, String accessToken) {
String url = String.format(GET_PHONE_URL, accessToken);
String jsonBody = "{\"code\":\"" + code + "\"}";
String result = HttpClientUtils.doPostJson(url, jsonBody);
PhoneNumberResponse response = JsonMapper.nonEmptyMapper().fromJson(result, PhoneNumberResponse.class);
if (response.getErrcode() == null || response.getErrcode() != 0) {
logger.error("小程序手机号获取失败:" + result);
throw new ServiceException(ExceptionCodeTemplate.SERVICE_EXCEPTION);
}
if (response.getPhone_info() == null || StringUtils.isBlank(response.getPhone_info().getPhoneNumber())) {
logger.error("小程序手机号为空:" + result);
throw new ServiceException(ExceptionCodeTemplate.SERVICE_EXCEPTION);
}
return response.getPhone_info().getPhoneNumber();
}
}

View File

@@ -5,11 +5,21 @@ import java.io.Serializable;
public class BindMobileDTO implements Serializable {
/**
* 小程序login code (wx.login获取)
*/
private String loginCode;
/**
* 小程序openId
*/
private String openId;
/**
* 微信手机号 code (wx.getPhoneNumber获取)
*/
private String phoneCode;
/**
* 微信昵称
*/
@@ -21,12 +31,12 @@ public class BindMobileDTO implements Serializable {
private String avatar;
/**
* 手机号码
* 手机号码 (从phoneCode解析得到)
*/
private String mobile;
/**
* 验证码
* 验证码 (不再使用)
*/
private String captcha;
@@ -121,4 +131,20 @@ public class BindMobileDTO implements Serializable {
public void setAddress(String address) {
this.address = address;
}
public String getLoginCode() {
return loginCode;
}
public void setLoginCode(String loginCode) {
this.loginCode = loginCode;
}
public String getPhoneCode() {
return phoneCode;
}
public void setPhoneCode(String phoneCode) {
this.phoneCode = phoneCode;
}
}

View File

@@ -8,7 +8,7 @@ public class AccessTokenResponse implements Serializable {
private String refresh_token;
private String openid;
private String scope;
private int errcode;
private Integer errcode;
private String errmsg;
public String getAccess_token() {
@@ -51,11 +51,11 @@ public class AccessTokenResponse implements Serializable {
this.scope = scope;
}
public int getErrcode() {
public Integer getErrcode() {
return errcode;
}
public void setErrcode(int errcode) {
public void setErrcode(Integer errcode) {
this.errcode = errcode;
}

View File

@@ -0,0 +1,73 @@
package com.sv.dto.api.wechat;
import java.io.Serializable;
public class PhoneNumberResponse implements Serializable {
private Integer errcode;
private String errmsg;
private PhoneInfo phone_info;
public Integer getErrcode() {
return errcode;
}
public void setErrcode(Integer errcode) {
this.errcode = errcode;
}
public String getErrmsg() {
return errmsg;
}
public void setErrmsg(String errmsg) {
this.errmsg = errmsg;
}
public PhoneInfo getPhone_info() {
return phone_info;
}
public void setPhone_info(PhoneInfo phone_info) {
this.phone_info = phone_info;
}
public static class PhoneInfo implements Serializable {
private String phoneNumber;
private String purePhoneNumber;
private Integer countryCode;
private Long dataMasking;
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 Integer getCountryCode() {
return countryCode;
}
public void setCountryCode(Integer countryCode) {
this.countryCode = countryCode;
}
public Long getDataMasking() {
return dataMasking;
}
public void setDataMasking(Long dataMasking) {
this.dataMasking = dataMasking;
}
}
}

View File

@@ -0,0 +1,33 @@
package com.sv.dto.api.wechat;
import java.io.Serializable;
public class WechatLoginResult implements Serializable {
private String openId;
private String phoneNumber;
public WechatLoginResult() {
}
public WechatLoginResult(String openId, String phoneNumber) {
this.openId = openId;
this.phoneNumber = phoneNumber;
}
public String getOpenId() {
return openId;
}
public void setOpenId(String openId) {
this.openId = openId;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}

View File

@@ -55,7 +55,6 @@ import java.util.List;
* @param id 编号
* @return 用户
*/
@PlatformKey
Member findById(Integer id);
/**

View File

@@ -221,7 +221,7 @@ public class MemberService extends BaseServiceImpl {
// 创建用户
Member member = new Member();
member.setNickname(mobile);
member.setNickname("用户" + RandomStringUtils.randomNumeric(8));
String inviteCode = "";
Integer count = 1;
while (count == 1) {
@@ -369,7 +369,8 @@ public class MemberService extends BaseServiceImpl {
memberDTO.setId(member.getId());
memberDTO.setAvatar(member.getAvatar() == null ? "" : member.getAvatar());
memberDTO.setNickname(member.getNickname());
memberDTO.setMobile(member.getMobile());
String mobile = member.getMobile();
memberDTO.setMobile(mobile != null && mobile.length() == 11 ? mobile.substring(0, 3) + "****" + mobile.substring(7) : mobile);
memberDTO.setName(member.getName() == null ? "" : member.getName());
memberDTO.setSex(member.getSex());
memberDTO.setAge(member.getAge() == null ? null : member.getAge());