|
|
@@ -71,7 +71,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
/*运营端/企业端登录(PC/APP)*/
|
|
|
if (loginBase.getSystemType() == SystemTypeEnum.MANAGE.getCode()
|
|
|
|| loginBase.getSystemType() == SystemTypeEnum.COMPANY.getCode()) {
|
|
|
- // KwsUserResDto kwsUserResDto = systemService.queryByAccount(loginBase.getAccount());
|
|
|
+ // KwsUserResDto kwsUserResDto = systemService.queryByAccount(loginBase.getAccount());
|
|
|
return this.commonAuth(loginBase);
|
|
|
}
|
|
|
|
|
|
@@ -168,7 +168,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
loginRes.setClientType(loginBase.getClientType());
|
|
|
loginRes.setSystemType(loginBase.getSystemType());
|
|
|
loginRes.setToken(token);
|
|
|
- List<LoginResVo1.TabBarItem> tabBar = buildAppTabBar(loginRes,loginBase, null,1,loginRes.getEntTypes());
|
|
|
+ List<LoginResVo1.TabBarItem> tabBar = buildAppTabBar(loginRes, loginBase, null, 1, loginRes.getEntTypes());
|
|
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tabBar)) {
|
|
|
loginRes.setTabBar(tabBar);
|
|
|
}
|
|
|
@@ -262,7 +262,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
loginRes.setDriverId(user.getDriverId());
|
|
|
loginRes.setRoleName(user.getRoleName());
|
|
|
loginRes.setRoleList(user.getRoleInfoDto());
|
|
|
- List<LoginResVo1.TabBarItem> tabBar = buildAppTabBar(loginRes,loginBase, user.getRoleName(),0,loginRes.getEntTypes());
|
|
|
+ List<LoginResVo1.TabBarItem> tabBar = buildAppTabBar(loginRes, loginBase, user.getRoleName(), 0, loginRes.getEntTypes());
|
|
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tabBar)) {
|
|
|
loginRes.setTabBar(tabBar);
|
|
|
}
|
|
|
@@ -352,7 +352,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
loginRes.setRoleId(user.getRoleId());
|
|
|
loginRes.setRoleName(user.getRoleName());
|
|
|
loginRes.setRoleList(user.getRoleInfoDto());
|
|
|
- List<LoginResVo1.TabBarItem> tabBar = buildAppTabBar(loginRes,loginBase, user.getRoleName(),0,loginRes.getEntTypes());
|
|
|
+ List<LoginResVo1.TabBarItem> tabBar = buildAppTabBar(loginRes, loginBase, user.getRoleName(), 0, loginRes.getEntTypes());
|
|
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tabBar)) {
|
|
|
loginRes.setTabBar(tabBar);
|
|
|
|
|
|
@@ -614,28 +614,28 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
@Override
|
|
|
public HttpResult refreshToken(String refreshToken, String clientType, Integer systemType, String deviceId) {
|
|
|
log.info("刷新token,refreshToken:{},clientType:{},systemType:{},deviceId:{}", refreshToken, clientType, systemType, deviceId);
|
|
|
-
|
|
|
+
|
|
|
// 验证refreshToken参数
|
|
|
HttpResult validateResult = validateRefreshTokenParam(refreshToken);
|
|
|
if (validateResult != null) {
|
|
|
return validateResult;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 解析refreshToken
|
|
|
Map<String, Object> tokenInfoMap = parseRefreshToken(refreshToken);
|
|
|
if (tokenInfoMap == null) {
|
|
|
return HttpResult.error(HttpStatus.TOKEN_INVALID_CODE, "刷新令牌无效!");
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 验证refreshToken是否有效
|
|
|
HttpResult verifyResult = verifyRefreshToken(tokenInfoMap, refreshToken);
|
|
|
if (verifyResult != null) {
|
|
|
return verifyResult;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 构建LoginBase对象
|
|
|
LoginBase loginBase = buildLoginBaseFromTokenInfo(tokenInfoMap);
|
|
|
-
|
|
|
+
|
|
|
// 根据系统类型处理刷新逻辑
|
|
|
Integer tokenSystemType = Integer.valueOf(tokenInfoMap.get("systemType").toString());
|
|
|
if (Objects.equals(tokenSystemType, SystemTypeEnum.DRIVER.getCode())) {
|
|
|
@@ -644,39 +644,39 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
return handleCommonRefresh(loginBase, tokenInfoMap);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
@Override
|
|
|
public HttpResult switchAccount(String targetRefreshToken, String clientType, Integer systemType, String deviceId) {
|
|
|
log.info("切换账号,targetRefreshToken:{},clientType:{},systemType:{},deviceId:{}", targetRefreshToken, clientType, systemType, deviceId);
|
|
|
-
|
|
|
+
|
|
|
// 验证targetRefreshToken参数
|
|
|
HttpResult validateResult = validateRefreshTokenParam(targetRefreshToken);
|
|
|
if (validateResult != null) {
|
|
|
return validateResult;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 解析目标账号的refreshToken
|
|
|
Map<String, Object> targetTokenInfoMap = parseRefreshToken(targetRefreshToken);
|
|
|
if (targetTokenInfoMap == null) {
|
|
|
return HttpResult.error(HttpStatus.TOKEN_INVALID_CODE, "目标账号的刷新令牌无效!");
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 验证目标账号的refreshToken是否有效
|
|
|
HttpResult verifyResult = verifyRefreshToken(targetTokenInfoMap, targetRefreshToken);
|
|
|
if (verifyResult != null) {
|
|
|
return HttpResult.error(HttpStatus.TOKEN_INVALID_CODE, "目标账号的刷新令牌已过期或无效!");
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 清除当前登录用户的token缓存(如果存在)
|
|
|
clearCurrentUserToken(clientType, deviceId);
|
|
|
-
|
|
|
+
|
|
|
// 构建LoginBase对象(使用新的deviceId)
|
|
|
LoginBase loginBase = buildLoginBaseFromTokenInfo(targetTokenInfoMap);
|
|
|
// 如果传入了新的deviceId,则使用新的deviceId
|
|
|
if (StringUtils.isNotBlank(deviceId)) {
|
|
|
loginBase.setDeviceId(deviceId);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 根据系统类型处理切换逻辑
|
|
|
Integer targetSystemType = Integer.valueOf(targetTokenInfoMap.get("systemType").toString());
|
|
|
if (Objects.equals(SystemTypeEnum.DRIVER.getCode(), targetSystemType)) {
|
|
|
@@ -685,7 +685,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
return handleCommonRefresh(loginBase, targetTokenInfoMap);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 清除当前登录用户的token缓存
|
|
|
*/
|
|
|
@@ -696,18 +696,18 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
// 清除当前用户的token
|
|
|
String tokenKey = Global.getFullUserTokenKey(clientType, currentUser.getId());
|
|
|
RedissonUtils.delete(tokenKey);
|
|
|
-
|
|
|
+
|
|
|
// 清除当前用户的登录信息缓存
|
|
|
String loginKey = Global.getFullUserLoginKey(currentUser.getSystemType(), currentUser.getId());
|
|
|
RedissonUtils.delete(loginKey);
|
|
|
-
|
|
|
+
|
|
|
log.info("已清除当前用户token缓存,userId:{}", currentUser.getId());
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
log.warn("清除当前用户token缓存失败", e);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 验证refreshToken参数
|
|
|
*/
|
|
|
@@ -717,7 +717,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 解析refreshToken
|
|
|
*/
|
|
|
@@ -731,7 +731,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 验证refreshToken是否有效
|
|
|
*/
|
|
|
@@ -739,7 +739,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
Long userId = Long.valueOf(tokenInfoMap.get("userId").toString());
|
|
|
String tokenClientType = tokenInfoMap.get("clientType").toString();
|
|
|
String tokenDeviceId = tokenInfoMap.get("deviceId") != null ? tokenInfoMap.get("deviceId").toString() : null;
|
|
|
-
|
|
|
+
|
|
|
String key = Global.getFullRefreshTokenKey(tokenClientType, userId, tokenDeviceId);
|
|
|
String storedRefreshToken = RedissonUtils.getString(key);
|
|
|
if (StringUtils.isBlank(storedRefreshToken) || !storedRefreshToken.equals(refreshToken)) {
|
|
|
@@ -747,7 +747,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 从token信息构建LoginBase对象
|
|
|
*/
|
|
|
@@ -756,17 +756,17 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
String tokenClientType = tokenInfoMap.get("clientType").toString();
|
|
|
Integer tokenSystemType = Integer.valueOf(tokenInfoMap.get("systemType").toString());
|
|
|
String tokenDeviceId = tokenInfoMap.get("deviceId") != null ? tokenInfoMap.get("deviceId").toString() : null;
|
|
|
-
|
|
|
+
|
|
|
LoginBase loginBase = new LoginBase();
|
|
|
loginBase.setAccount(account);
|
|
|
loginBase.setClientType(tokenClientType);
|
|
|
loginBase.setSystemType(tokenSystemType);
|
|
|
loginBase.setDeviceId(tokenDeviceId);
|
|
|
loginBase.setRememberMe(true);
|
|
|
-
|
|
|
+
|
|
|
return loginBase;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 处理司机端token刷新
|
|
|
*/
|
|
|
@@ -774,7 +774,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
String account = tokenInfoMap.get("account").toString();
|
|
|
String tokenClientType = tokenInfoMap.get("clientType").toString();
|
|
|
Integer tokenSystemType = Integer.valueOf(tokenInfoMap.get("systemType").toString());
|
|
|
-
|
|
|
+
|
|
|
// 查询司机信息
|
|
|
RDriverDetailVo driver = fleetService.findDriverDetai(account);
|
|
|
if (driver == null) {
|
|
|
@@ -795,10 +795,10 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
new AsyncProcess(loginBase, null, driver, enterprise, remoteUserService).run();
|
|
|
|
|
|
// 构建返回结果
|
|
|
- LoginResVo1 loginRes = buildDriverLoginRes(loginBase,driver, enterprise, tokenClientType, tokenSystemType, newToken, newRefreshToken);
|
|
|
+ LoginResVo1 loginRes = buildDriverLoginRes(loginBase, driver, enterprise, tokenClientType, tokenSystemType, newToken, newRefreshToken);
|
|
|
return HttpResult.ok(loginRes);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 处理运营端/企业端token刷新
|
|
|
*/
|
|
|
@@ -806,7 +806,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
String account = tokenInfoMap.get("account").toString();
|
|
|
String tokenClientType = tokenInfoMap.get("clientType").toString();
|
|
|
Integer tokenSystemType = Integer.valueOf(tokenInfoMap.get("systemType").toString());
|
|
|
-
|
|
|
+
|
|
|
// 查询用户信息
|
|
|
KwsUserResDto user = systemService.queryUserDetails(account, tokenSystemType);
|
|
|
if (user == null) {
|
|
|
@@ -834,15 +834,15 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
new AsyncProcess(loginBase, user, null, enterprise, remoteUserService).run();
|
|
|
|
|
|
// 构建返回结果
|
|
|
- LoginResVo1 loginRes = buildCommonLoginRes(loginBase,user, enterprise, tokenClientType, tokenSystemType, newToken, newRefreshToken);
|
|
|
+ LoginResVo1 loginRes = buildCommonLoginRes(loginBase, user, enterprise, tokenClientType, tokenSystemType, newToken, newRefreshToken);
|
|
|
return HttpResult.ok(loginRes);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 构建司机端登录返回结果
|
|
|
*/
|
|
|
- private LoginResVo1 buildDriverLoginRes(LoginBase loginBase,RDriverDetailVo driver, EntCacheResDto enterprise,
|
|
|
- String tokenClientType, Integer tokenSystemType,
|
|
|
+ private LoginResVo1 buildDriverLoginRes(LoginBase loginBase, RDriverDetailVo driver, EntCacheResDto enterprise,
|
|
|
+ String tokenClientType, Integer tokenSystemType,
|
|
|
String newToken, String newRefreshToken) {
|
|
|
LoginResVo1 loginRes = new LoginResVo1();
|
|
|
loginRes.setId(driver.getId());
|
|
|
@@ -859,20 +859,20 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
loginRes.setToken(newToken);
|
|
|
loginRes.setRefreshToken(newRefreshToken);
|
|
|
loginRes.setDriverId(driver.getId());
|
|
|
- List<LoginResVo1.TabBarItem> tabBar = buildAppTabBar(loginRes,loginBase, null,1,loginRes.getEntTypes());
|
|
|
+ List<LoginResVo1.TabBarItem> tabBar = buildAppTabBar(loginRes, loginBase, null, 1, loginRes.getEntTypes());
|
|
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tabBar)) {
|
|
|
loginRes.setTabBar(tabBar);
|
|
|
}
|
|
|
applyAppModulePermissions(loginRes, loginBase, null);
|
|
|
return loginRes;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 构建运营端/企业端登录返回结果
|
|
|
*/
|
|
|
- private LoginResVo1 buildCommonLoginRes(LoginBase loginBase,KwsUserResDto user, EntCacheResDto enterprise,
|
|
|
- String tokenClientType, Integer tokenSystemType,
|
|
|
- String newToken, String newRefreshToken) {
|
|
|
+ private LoginResVo1 buildCommonLoginRes(LoginBase loginBase, KwsUserResDto user, EntCacheResDto enterprise,
|
|
|
+ String tokenClientType, Integer tokenSystemType,
|
|
|
+ String newToken, String newRefreshToken) {
|
|
|
LoginResVo1 loginRes = new LoginResVo1();
|
|
|
loginRes.setId(user.getId());
|
|
|
loginRes.setName(user.getName());
|
|
|
@@ -897,7 +897,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
loginRes.setDriverId(user.getDriverId());
|
|
|
loginRes.setRoleName(user.getRoleName());
|
|
|
loginRes.setRoleList(user.getRoleInfoDto());
|
|
|
- List<LoginResVo1.TabBarItem> tabBar = buildAppTabBar(loginRes,loginBase, user.getRoleName(),1,loginRes.getEntTypes());
|
|
|
+ List<LoginResVo1.TabBarItem> tabBar = buildAppTabBar(loginRes, loginBase, user.getRoleName(), 1, loginRes.getEntTypes());
|
|
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tabBar)) {
|
|
|
loginRes.setTabBar(tabBar);
|
|
|
}
|
|
|
@@ -928,9 +928,9 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
if (!isAppLogin(loginBase) || StringUtils.isBlank(roleName)) {
|
|
|
return;
|
|
|
}
|
|
|
- boolean isSeller = containsAnyRole(roleName, "销售","供应商管理员");
|
|
|
+ boolean isSeller = containsAnyRole(roleName, "销售", "供应商管理员");
|
|
|
boolean isFinance = containsAnyRole(roleName, "财务");
|
|
|
- boolean isPurchase = containsAnyRole(roleName, "采购", "买家","采购商管理员");
|
|
|
+ boolean isPurchase = containsAnyRole(roleName, "采购", "买家", "采购商管理员");
|
|
|
if (isSeller) {
|
|
|
loginRes.setShowOrderStatisticsModule(Boolean.TRUE);
|
|
|
loginRes.setShowSalesStatisticsModule(Boolean.TRUE);
|
|
|
@@ -962,8 +962,8 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- private List<LoginResVo1.TabBarItem> buildAppTabBar(LoginResVo1 loginRes,LoginBase loginBase, String roleName,int flag, String entTypeNames) {
|
|
|
- log.info("当前用户角色:{}, 企业类型:{}", roleName, entTypeNames);
|
|
|
+ private List<LoginResVo1.TabBarItem> buildAppTabBar(LoginResVo1 loginRes, LoginBase loginBase, String roleName, int flag, String entTypeNames) {
|
|
|
+ log.info("当前用户角色:{}, 企业类型:{}", roleName, entTypeNames);
|
|
|
if (!isAppLogin(loginBase)) {
|
|
|
return List.of();
|
|
|
}
|
|
|
@@ -978,7 +978,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
boolean isLogistics = StringUtils.isNotBlank(roleName) && roleName.contains("物流");
|
|
|
boolean isFinance = StringUtils.isNotBlank(roleName) && roleName.contains("财务");
|
|
|
//企业属性 (1供应商,2采购商,34PL物流,43PL物流)
|
|
|
- boolean isSupplierAdmin = StringUtils.isNotBlank(roleName) && roleName.contains("系统管理员") && org.apache.commons.lang3.StringUtils.equals(entTypeNames, "1") ;
|
|
|
+ boolean isSupplierAdmin = StringUtils.isNotBlank(roleName) && roleName.contains("系统管理员") && org.apache.commons.lang3.StringUtils.equals(entTypeNames, "1");
|
|
|
boolean isLogisticsAdmin = StringUtils.isNotBlank(roleName) && roleName.contains("系统管理员") && org.apache.commons.lang3.StringUtils.equals(entTypeNames, "3");
|
|
|
boolean isPurchaseAdmin = StringUtils.isNotBlank(roleName) && roleName.contains("系统管理员") && org.apache.commons.lang3.StringUtils.equals(entTypeNames, "2");
|
|
|
|
|
|
@@ -991,27 +991,28 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
if (isBuyer) {
|
|
|
return buildBuyerTabBar();
|
|
|
}
|
|
|
- if (isSeller ||isFinance) {
|
|
|
+ if (isSeller || isFinance) {
|
|
|
return buildSellerTabBar();
|
|
|
}
|
|
|
- if (isDriver){
|
|
|
+ if (isDriver) {
|
|
|
return buildDefaultDriverTabBar();
|
|
|
}
|
|
|
- if (isLogistics){
|
|
|
+ if (isLogistics) {
|
|
|
return buildLogisticsTabBar();
|
|
|
}
|
|
|
- if (isSupplierAdmin){
|
|
|
+ if (isSupplierAdmin) {
|
|
|
loginRes.setRoleName("供应商管理员");
|
|
|
return buildSupplierAdminTabBar();
|
|
|
}
|
|
|
- if (isLogisticsAdmin){
|
|
|
+ if (isLogisticsAdmin) {
|
|
|
loginRes.setRoleName("物流商管理员");
|
|
|
return buildLogisticsAdminTabBar();
|
|
|
}
|
|
|
- if (isPurchaseAdmin){
|
|
|
+ if (isPurchaseAdmin) {
|
|
|
log.info("用户角色包含系统管理员且企业属性为采购商,返回采购管理员TabBar");
|
|
|
loginRes.setRoleName("采购商管理员");
|
|
|
- return buildPurchaseAdminTabBar();}
|
|
|
+ return buildPurchaseAdminTabBar();
|
|
|
+ }
|
|
|
return List.of();
|
|
|
}
|
|
|
|
|
|
@@ -1321,6 +1322,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
loginUserInfo.setEntId(enterprise != null ? enterprise.getId() : null);
|
|
|
loginUserInfo.setEntName(enterprise != null ? enterprise.getFirmName() : null);
|
|
|
loginUserInfo.setClientType(loginBase.getClientType());
|
|
|
+ loginUserInfo.setEntTypes(enterprise != null ? enterprise.getEntTypes() : null);
|
|
|
String key = Global.getFullUserLoginKey(loginUserInfo.getSystemType(), loginUserInfo.getId());
|
|
|
RedissonUtils.putString(key, JSON.toJSONString(loginUserInfo), Global.APP_TOKEN_EXPIRE);
|
|
|
}
|
|
|
@@ -1350,6 +1352,7 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
loginUserInfo.setUseRoleId(user.getRoleId());
|
|
|
loginUserInfo.setUseEntId(user.getEntId());
|
|
|
loginUserInfo.setEntName(enterprise != null ? enterprise.getFirmName() : null);
|
|
|
+ loginUserInfo.setEntTypes(enterprise != null ? enterprise.getEntTypes() : null);
|
|
|
|
|
|
//普通用户需要填充数据权限
|
|
|
if (user.getIsMain().equals(Global.NO)) {
|