Browse Source

auth:新增接口getresiwxphone

master
yinzuomei 5 years ago
parent
commit
cc33909ffc
  1. 19
      epmet-auth/src/main/java/com/epmet/controller/LoginController.java
  2. 35
      epmet-auth/src/main/java/com/epmet/dto/form/ResiWxPhoneFormDTO.java
  3. 9
      epmet-auth/src/main/java/com/epmet/service/LoginService.java
  4. 21
      epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java

19
epmet-auth/src/main/java/com/epmet/controller/LoginController.java

@ -8,9 +8,11 @@ import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.LoginByPassWordFormDTO;
import com.epmet.dto.form.LoginByWxCodeFormDTO;
import com.epmet.dto.form.ResiWxPhoneFormDTO;
import com.epmet.dto.result.UserTokenResultDTO;
import com.epmet.service.CaptchaService;
import com.epmet.service.LoginService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -96,4 +98,21 @@ public class LoginController {
public Result logout(@LoginUser TokenDto tokenDto, HttpServletRequest request) {
return loginService.logoutByToken(tokenDto);
}
/**
* @param formDTO
* @return com.epmet.commons.tools.utils.Result
* @author yinzuomei
* @description 获取用户微信绑定的手机号
* @Date 2020/7/2 14:33
**/
@PostMapping("getresiwxphone")
public Result getResiWxPhone(@RequestBody ResiWxPhoneFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, ResiWxPhoneFormDTO.AddUserInternalGroup.class);
String phone = loginService.getResiWxPhone(formDTO);
if (StringUtils.isNotBlank(phone) && !"null".equals(phone)) {
return new Result().ok(phone);
}
return new Result().ok("");
}
}

35
epmet-auth/src/main/java/com/epmet/dto/form/ResiWxPhoneFormDTO.java

@ -0,0 +1,35 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 描述一下
*
* @author yinzuomei@elink-cn.com
* @date 2020/7/2 14:28
*/
@Data
public class ResiWxPhoneFormDTO implements Serializable {
private static final long serialVersionUID = 4381236451736209332L;
public interface AddUserInternalGroup {}
/**
* 微信code
*/
@NotBlank(message = "wxCode不能为空",groups = {AddUserInternalGroup.class})
private String wxCode;
/**
* 用户信息
*/
@NotBlank(message = "encryptedData不能为空",groups = {AddUserInternalGroup.class})
private String encryptedData;
/**
* 加密算法的初始向量
*/
@NotBlank(message = "iv不能为空",groups = {AddUserInternalGroup.class})
private String iv;
}

9
epmet-auth/src/main/java/com/epmet/service/LoginService.java

@ -5,6 +5,7 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.LoginByPassWordFormDTO;
import com.epmet.dto.form.LoginByWxCodeFormDTO;
import com.epmet.dto.form.ResiWxPhoneFormDTO;
import com.epmet.dto.result.UserTokenResultDTO;
/**
@ -50,4 +51,12 @@ public interface LoginService {
**/
WxMaJscode2SessionResult getWxMaUser(String app, String wxCode);
/**
* @return java.lang.String
* @param formDTO
* @author yinzuomei
* @description 获取用户微信绑定的手机号
* @Date 2020/7/2 14:33
**/
String getResiWxPhone(ResiWxPhoneFormDTO formDTO);
}

21
epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java

@ -1,6 +1,8 @@
package com.epmet.service.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
import com.epmet.common.token.constant.LoginConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
@ -129,6 +131,25 @@ public class LoginServiceImpl implements LoginService {
return wxMaJscode2SessionResult;
}
@Override
public String getResiWxPhone(ResiWxPhoneFormDTO formDTO) {
String phone="";
try {
WxMaService wxMaService = wxMaServiceUtils.resiWxMaService();
WxMaJscode2SessionResult wxMaJscode2SessionResult = wxMaService.jsCode2SessionInfo(formDTO.getWxCode());
WxMaPhoneNumberInfo phoneNoInfo = wxMaService.getUserService().getPhoneNoInfo(wxMaJscode2SessionResult.getSessionKey(),
formDTO.getEncryptedData(),
formDTO.getIv());
if (null != phoneNoInfo) {
phone= phoneNoInfo.getPurePhoneNumber();
}
} catch (WxErrorException e) {
e.printStackTrace();
log.error(String.format("获取用户微信绑定的手机号接口异常"));
}
return phone;
}
/**
* 根据openId查询用户id
*

Loading…
Cancel
Save