diff --git a/basic-interface/src/main/java/ink/wgink/interfaces/expand/login/ILoginAppHandlerService.java b/basic-interface/src/main/java/ink/wgink/interfaces/expand/login/ILoginAppHandlerService.java new file mode 100644 index 00000000..be2585d4 --- /dev/null +++ b/basic-interface/src/main/java/ink/wgink/interfaces/expand/login/ILoginAppHandlerService.java @@ -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; + +} diff --git a/basic-pojo/src/main/java/ink/wgink/pojo/bos/LoginAppUser.java b/basic-pojo/src/main/java/ink/wgink/pojo/bos/LoginAppUser.java new file mode 100644 index 00000000..9e412ea0 --- /dev/null +++ b/basic-pojo/src/main/java/ink/wgink/pojo/bos/LoginAppUser.java @@ -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(); + } +} diff --git a/login-app/src/main/java/ink/wgink/login/app/service/appsign/IAppSignService.java b/login-app/src/main/java/ink/wgink/login/app/service/appsign/IAppSignService.java index a8e70d0b..1cdee437 100644 --- a/login-app/src/main/java/ink/wgink/login/app/service/appsign/IAppSignService.java +++ b/login-app/src/main/java/ink/wgink/login/app/service/appsign/IAppSignService.java @@ -22,15 +22,17 @@ public interface IAppSignService extends IAppSignBaseService { * APP用户名密码登录 * * @param appLoginDefaultVO - * @return token + * @return + * @throws Exception */ - String defaultSign(AppLoginDefaultVO appLoginDefaultVO) throws UnsupportedEncodingException; + String defaultSign(AppLoginDefaultVO appLoginDefaultVO) throws Exception; /** * APP手机验证码登录 * * @param appLoginPhoneVO * @return token + * @throws Exception */ - String phoneSign(AppLoginPhoneVO appLoginPhoneVO) throws UnsupportedEncodingException; + String phoneSign(AppLoginPhoneVO appLoginPhoneVO) throws Exception; } diff --git a/login-app/src/main/java/ink/wgink/login/app/service/appsign/impl/AppSignServiceImpl.java b/login-app/src/main/java/ink/wgink/login/app/service/appsign/impl/AppSignServiceImpl.java index 54b1f4ba..e3dd43d6 100644 --- a/login-app/src/main/java/ink/wgink/login/app/service/appsign/impl/AppSignServiceImpl.java +++ b/login-app/src/main/java/ink/wgink/login/app/service/appsign/impl/AppSignServiceImpl.java @@ -4,6 +4,7 @@ import ink.wgink.exceptions.AppDeviceException; import ink.wgink.exceptions.AppVersionException; import ink.wgink.exceptions.SearchException; 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.AppLoginPhoneVO; 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.appversion.IAppVersionService; 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.service.IUserService; import ink.wgink.util.date.DateUtil; import ink.wgink.util.request.RequestUtil; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; @@ -45,9 +48,12 @@ public class AppSignServiceImpl extends BaseAppSignService implements IAppSignSe private PasswordEncoder passwordEncoder; @Autowired private IUserService userService; + @Autowired(required = false) + private ILoginAppHandlerService loginAppHandlerService; + @Override - public String defaultSign(AppLoginDefaultVO appLoginDefaultVO) throws UnsupportedEncodingException { + public String defaultSign(AppLoginDefaultVO appLoginDefaultVO) throws Exception { String userPassword = appLoginDefaultVO.getPassword(); checkApiLock(appLoginDefaultVO); UserPO userPO = userService.getPOByUsername(appLoginDefaultVO.getUsername()); @@ -62,7 +68,7 @@ public class AppSignServiceImpl extends BaseAppSignService implements IAppSignSe } @Override - public String phoneSign(AppLoginPhoneVO appLoginPhoneVO) throws UnsupportedEncodingException { + public String phoneSign(AppLoginPhoneVO appLoginPhoneVO) throws Exception { UserPO userPO = userService.getPOByUsername(appLoginPhoneVO.getUsername()); if (userPO == null) { throw new SearchException("用户不存在"); @@ -77,7 +83,7 @@ public class AppSignServiceImpl extends BaseAppSignService implements IAppSignSe * @param appLoginVO * @param userPO */ - private void userLogin(AppLoginVO appLoginVO, UserPO userPO) { + private void userLogin(AppLoginVO appLoginVO, UserPO userPO) throws Exception { if (userPO.getUserState() == 1) { 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())) { throw new AppDeviceException("非法登录设备"); } + if (loginAppHandlerService != null) { + LOG.debug("自定义登录处理"); + LoginAppUser loginAppUser = new LoginAppUser(); + BeanUtils.copyProperties(userPO, loginAppUser); + loginAppHandlerService.handle(loginAppUser); + } LOG.debug("更新登录信息"); updateLoginInfo(userPO, appLoginVO.getLongitude(), appLoginVO.getLatitude()); }