新增APP登录自定义处理

This commit is contained in:
wanggeng 2021-07-06 20:54:32 +08:00
parent 12640b9a18
commit 33d2e6b10e
4 changed files with 263 additions and 6 deletions

View File

@ -0,0 +1,22 @@
package ink.wgink.interfaces.expand.login;
import ink.wgink.pojo.bos.LoginAppUser;
import ink.wgink.pojo.bos.LoginUser;
/**
* @ClassName: ILoginAppHandlerService
* @Description: App登录授权处理
* @Author: wanggeng
* @Date: 2021/7/6 8:14 下午
* @Version: 1.0
*/
public interface ILoginAppHandlerService {
/**
* 登录处理
* @param loginAppUser
* @throws Exception
*/
void handle(LoginAppUser loginAppUser) throws Exception;
}

View File

@ -0,0 +1,221 @@
package ink.wgink.pojo.bos;
import java.io.Serializable;
/**
* @ClassName: LoginAppUser
* @Description: APP登录用户
* @Author: wanggeng
* @Date: 2021/7/6 8:25 下午
* @Version: 1.0
*/
public class LoginAppUser implements Serializable {
private static final long serialVersionUID = 6055209589041482660L;
private String userId;
private String userUsername;
private String userPassword;
private String userName;
private String userPhone;
private String userEmail;
private String userUKey;
private Integer userType;
private Integer userState;
private String userExpiredDate;
private String userAvatar;
private String lastLoginAddress;
private String lastLoginTime;
private String userLongitude;
private String userLatitude;
private Integer loginType;
private String gmtPasswordModified;
private String gmtCreate;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserUsername() {
return userUsername;
}
public void setUserUsername(String userUsername) {
this.userUsername = userUsername;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPhone() {
return userPhone;
}
public void setUserPhone(String userPhone) {
this.userPhone = userPhone;
}
public String getUserEmail() {
return userEmail;
}
public void setUserEmail(String userEmail) {
this.userEmail = userEmail;
}
public String getUserUKey() {
return userUKey;
}
public void setUserUKey(String userUKey) {
this.userUKey = userUKey;
}
public Integer getUserType() {
return userType;
}
public void setUserType(Integer userType) {
this.userType = userType;
}
public Integer getUserState() {
return userState;
}
public void setUserState(Integer userState) {
this.userState = userState;
}
public String getUserExpiredDate() {
return userExpiredDate;
}
public void setUserExpiredDate(String userExpiredDate) {
this.userExpiredDate = userExpiredDate;
}
public String getUserAvatar() {
return userAvatar;
}
public void setUserAvatar(String userAvatar) {
this.userAvatar = userAvatar;
}
public String getLastLoginAddress() {
return lastLoginAddress;
}
public void setLastLoginAddress(String lastLoginAddress) {
this.lastLoginAddress = lastLoginAddress;
}
public String getLastLoginTime() {
return lastLoginTime;
}
public void setLastLoginTime(String lastLoginTime) {
this.lastLoginTime = lastLoginTime;
}
public String getUserLongitude() {
return userLongitude;
}
public void setUserLongitude(String userLongitude) {
this.userLongitude = userLongitude;
}
public String getUserLatitude() {
return userLatitude;
}
public void setUserLatitude(String userLatitude) {
this.userLatitude = userLatitude;
}
public Integer getLoginType() {
return loginType;
}
public void setLoginType(Integer loginType) {
this.loginType = loginType;
}
public String getGmtPasswordModified() {
return gmtPasswordModified;
}
public void setGmtPasswordModified(String gmtPasswordModified) {
this.gmtPasswordModified = gmtPasswordModified;
}
public String getGmtCreate() {
return gmtCreate;
}
public void setGmtCreate(String gmtCreate) {
this.gmtCreate = gmtCreate;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("{");
sb.append("\"userId\":\"")
.append(userId).append('\"');
sb.append(",\"userUsername\":\"")
.append(userUsername).append('\"');
sb.append(",\"userPassword\":\"")
.append(userPassword).append('\"');
sb.append(",\"userName\":\"")
.append(userName).append('\"');
sb.append(",\"userPhone\":\"")
.append(userPhone).append('\"');
sb.append(",\"userEmail\":\"")
.append(userEmail).append('\"');
sb.append(",\"userUKey\":\"")
.append(userUKey).append('\"');
sb.append(",\"userType\":")
.append(userType);
sb.append(",\"userState\":")
.append(userState);
sb.append(",\"userExpiredDate\":\"")
.append(userExpiredDate).append('\"');
sb.append(",\"userAvatar\":\"")
.append(userAvatar).append('\"');
sb.append(",\"lastLoginAddress\":\"")
.append(lastLoginAddress).append('\"');
sb.append(",\"lastLoginTime\":\"")
.append(lastLoginTime).append('\"');
sb.append(",\"userLongitude\":\"")
.append(userLongitude).append('\"');
sb.append(",\"userLatitude\":\"")
.append(userLatitude).append('\"');
sb.append(",\"loginType\":")
.append(loginType);
sb.append(",\"gmtPasswordModified\":\"")
.append(gmtPasswordModified).append('\"');
sb.append(",\"gmtCreate\":\"")
.append(gmtCreate).append('\"');
sb.append('}');
return sb.toString();
}
}

View File

@ -22,15 +22,17 @@ public interface IAppSignService extends IAppSignBaseService {
* APP用户名密码登录 * APP用户名密码登录
* *
* @param appLoginDefaultVO * @param appLoginDefaultVO
* @return token * @return
* @throws Exception
*/ */
String defaultSign(AppLoginDefaultVO appLoginDefaultVO) throws UnsupportedEncodingException; String defaultSign(AppLoginDefaultVO appLoginDefaultVO) throws Exception;
/** /**
* APP手机验证码登录 * APP手机验证码登录
* *
* @param appLoginPhoneVO * @param appLoginPhoneVO
* @return token * @return token
* @throws Exception
*/ */
String phoneSign(AppLoginPhoneVO appLoginPhoneVO) throws UnsupportedEncodingException; String phoneSign(AppLoginPhoneVO appLoginPhoneVO) throws Exception;
} }

View File

@ -4,6 +4,7 @@ import ink.wgink.exceptions.AppDeviceException;
import ink.wgink.exceptions.AppVersionException; import ink.wgink.exceptions.AppVersionException;
import ink.wgink.exceptions.SearchException; import ink.wgink.exceptions.SearchException;
import ink.wgink.exceptions.UpdateException; import ink.wgink.exceptions.UpdateException;
import ink.wgink.interfaces.expand.login.ILoginAppHandlerService;
import ink.wgink.login.app.pojo.vos.appsign.AppLoginDefaultVO; import ink.wgink.login.app.pojo.vos.appsign.AppLoginDefaultVO;
import ink.wgink.login.app.pojo.vos.appsign.AppLoginPhoneVO; import ink.wgink.login.app.pojo.vos.appsign.AppLoginPhoneVO;
import ink.wgink.login.app.pojo.vos.appsign.AppLoginVO; import ink.wgink.login.app.pojo.vos.appsign.AppLoginVO;
@ -11,11 +12,13 @@ import ink.wgink.login.app.service.appdeviceuser.IAppDeviceUserService;
import ink.wgink.login.app.service.appsign.IAppSignService; import ink.wgink.login.app.service.appsign.IAppSignService;
import ink.wgink.login.app.service.appversion.IAppVersionService; import ink.wgink.login.app.service.appversion.IAppVersionService;
import ink.wgink.login.base.service.BaseAppSignService; import ink.wgink.login.base.service.BaseAppSignService;
import ink.wgink.pojo.bos.LoginAppUser;
import ink.wgink.service.user.pojo.pos.UserPO; import ink.wgink.service.user.pojo.pos.UserPO;
import ink.wgink.service.user.service.IUserService; import ink.wgink.service.user.service.IUserService;
import ink.wgink.util.date.DateUtil; import ink.wgink.util.date.DateUtil;
import ink.wgink.util.request.RequestUtil; import ink.wgink.util.request.RequestUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -45,9 +48,12 @@ public class AppSignServiceImpl extends BaseAppSignService implements IAppSignSe
private PasswordEncoder passwordEncoder; private PasswordEncoder passwordEncoder;
@Autowired @Autowired
private IUserService userService; private IUserService userService;
@Autowired(required = false)
private ILoginAppHandlerService loginAppHandlerService;
@Override @Override
public String defaultSign(AppLoginDefaultVO appLoginDefaultVO) throws UnsupportedEncodingException { public String defaultSign(AppLoginDefaultVO appLoginDefaultVO) throws Exception {
String userPassword = appLoginDefaultVO.getPassword(); String userPassword = appLoginDefaultVO.getPassword();
checkApiLock(appLoginDefaultVO); checkApiLock(appLoginDefaultVO);
UserPO userPO = userService.getPOByUsername(appLoginDefaultVO.getUsername()); UserPO userPO = userService.getPOByUsername(appLoginDefaultVO.getUsername());
@ -62,7 +68,7 @@ public class AppSignServiceImpl extends BaseAppSignService implements IAppSignSe
} }
@Override @Override
public String phoneSign(AppLoginPhoneVO appLoginPhoneVO) throws UnsupportedEncodingException { public String phoneSign(AppLoginPhoneVO appLoginPhoneVO) throws Exception {
UserPO userPO = userService.getPOByUsername(appLoginPhoneVO.getUsername()); UserPO userPO = userService.getPOByUsername(appLoginPhoneVO.getUsername());
if (userPO == null) { if (userPO == null) {
throw new SearchException("用户不存在"); throw new SearchException("用户不存在");
@ -77,7 +83,7 @@ public class AppSignServiceImpl extends BaseAppSignService implements IAppSignSe
* @param appLoginVO * @param appLoginVO
* @param userPO * @param userPO
*/ */
private void userLogin(AppLoginVO appLoginVO, UserPO userPO) { private void userLogin(AppLoginVO appLoginVO, UserPO userPO) throws Exception {
if (userPO.getUserState() == 1) { if (userPO.getUserState() == 1) {
throw new SearchException("账号已冻结"); throw new SearchException("账号已冻结");
} }
@ -88,6 +94,12 @@ public class AppSignServiceImpl extends BaseAppSignService implements IAppSignSe
if (!StringUtils.isBlank(appLoginVO.getDeviceNo()) && !appDeviceUserService.canSign(userPO.getUserId(), appLoginVO.getDeviceNo())) { if (!StringUtils.isBlank(appLoginVO.getDeviceNo()) && !appDeviceUserService.canSign(userPO.getUserId(), appLoginVO.getDeviceNo())) {
throw new AppDeviceException("非法登录设备"); throw new AppDeviceException("非法登录设备");
} }
if (loginAppHandlerService != null) {
LOG.debug("自定义登录处理");
LoginAppUser loginAppUser = new LoginAppUser();
BeanUtils.copyProperties(userPO, loginAppUser);
loginAppHandlerService.handle(loginAppUser);
}
LOG.debug("更新登录信息"); LOG.debug("更新登录信息");
updateLoginInfo(userPO, appLoginVO.getLongitude(), appLoginVO.getLatitude()); updateLoginInfo(userPO, appLoginVO.getLongitude(), appLoginVO.getLatitude());
} }