feat(property): 新增入驻员工登录功能
This commit is contained in:
@@ -35,6 +35,11 @@
|
||||
<artifactId>ruoyi-api-system</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>property-api</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- RuoYi Common Redis-->
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
|
@@ -8,10 +8,13 @@ import org.dromara.common.core.service.PermissionService;
|
||||
import org.dromara.common.core.utils.SpringUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.property.api.model.LoginResidentPerson;
|
||||
import org.dromara.system.api.model.LoginUser;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* sa-token 权限管理实现类
|
||||
@@ -26,15 +29,30 @@ public class SaPermissionImpl implements StpInterface {
|
||||
@Override
|
||||
public List<String> getPermissionList(Object loginId, String loginType) {
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (ObjectUtil.isNull(loginUser) || !loginUser.getLoginId().equals(loginId)) {
|
||||
LoginResidentPerson loginResidentPerson = LoginHelper.getLoginResident();
|
||||
// 使用Objects.equals进行null安全的比较
|
||||
boolean isUserMatch = ObjectUtil.isNotNull(loginUser) && Objects.equals(loginUser.getLoginId(), loginId);
|
||||
boolean isResidentMatch = ObjectUtil.isNotNull(loginResidentPerson) && Objects.equals(loginResidentPerson.getLoginId(), loginId);
|
||||
if (isUserMatch) {
|
||||
// 用户匹配时的逻辑
|
||||
PermissionService permissionService = getPermissionService();
|
||||
if (ObjectUtil.isNotNull(permissionService)) {
|
||||
List<String> list = StringUtils.splitList(loginId.toString(), ":");
|
||||
return new ArrayList<>(permissionService.getMenuPermission(Long.parseLong(list.get(1))));
|
||||
} else {
|
||||
if (ObjectUtil.isNull(permissionService)) {
|
||||
throw new ServiceException("PermissionService 实现类不存在");
|
||||
}
|
||||
List<String> parts = StringUtils.splitList(loginId.toString(), ":");
|
||||
return new ArrayList<>(permissionService.getMenuPermission(Long.parseLong(parts.get(1))));
|
||||
} else if (isResidentMatch) {
|
||||
// 居民匹配时的逻辑
|
||||
return Arrays.asList(
|
||||
"resident:person:list",
|
||||
"resident:person:add",
|
||||
"resident:person:query",
|
||||
"resident:person:edit",
|
||||
"resident:person:remove"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
UserType userType = UserType.getUserType(loginUser.getUserType());
|
||||
if (userType == UserType.APP_USER) {
|
||||
// 其他端 自行根据业务编写
|
||||
|
@@ -11,6 +11,7 @@ import lombok.NoArgsConstructor;
|
||||
import org.dromara.common.core.constant.SystemConstants;
|
||||
import org.dromara.common.core.constant.TenantConstants;
|
||||
import org.dromara.common.core.enums.UserType;
|
||||
import org.dromara.property.api.model.LoginResidentPerson;
|
||||
import org.dromara.system.api.model.LoginUser;
|
||||
|
||||
import java.util.Set;
|
||||
@@ -83,6 +84,57 @@ public class LoginHelper {
|
||||
return (T) session.get(LOGIN_USER_KEY);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 入驻员工
|
||||
*/
|
||||
private static final String UNIT_KEY = "unitId";
|
||||
public static final String UNIT_NAME_KEY = "unitName";
|
||||
private static final String RESIDENT_PERSON_KEY = "residentPerson";
|
||||
|
||||
/**
|
||||
* 登录系统 基于 设备类型
|
||||
* 针对相同用户体系不同设备
|
||||
*
|
||||
* @param loginUser 登录用户信息
|
||||
* @param model 配置参数
|
||||
*/
|
||||
public static void residentLogin(LoginResidentPerson loginUser, SaLoginParameter model) {
|
||||
model = ObjectUtil.defaultIfNull(model, new SaLoginParameter());
|
||||
StpUtil.login(loginUser.getLoginId(),
|
||||
model.setExtra(TENANT_KEY, loginUser.getTenantId())
|
||||
.setExtra(USER_KEY, loginUser.getUserId())
|
||||
.setExtra(USER_NAME_KEY, loginUser.getUsername())
|
||||
.setExtra(UNIT_KEY, loginUser.getUnitId())
|
||||
.setExtra(UNIT_NAME_KEY, loginUser.getUnitName())
|
||||
);
|
||||
StpUtil.getTokenSession().set(RESIDENT_PERSON_KEY, loginUser);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户(多级缓存)
|
||||
*/
|
||||
@SuppressWarnings("unchecked cast")
|
||||
public static <T extends LoginResidentPerson> T getLoginResident() {
|
||||
SaSession session = StpUtil.getTokenSession();
|
||||
if (ObjectUtil.isNull(session)) {
|
||||
return null;
|
||||
}
|
||||
return (T) session.get(RESIDENT_PERSON_KEY);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户基于token
|
||||
*/
|
||||
@SuppressWarnings("unchecked cast")
|
||||
public static <T extends LoginResidentPerson> T getLoginResident(String token) {
|
||||
SaSession session = StpUtil.getTokenSessionByToken(token);
|
||||
if (ObjectUtil.isNull(session)) {
|
||||
return null;
|
||||
}
|
||||
return (T) session.get(RESIDENT_PERSON_KEY);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户id
|
||||
*/
|
||||
|
Reference in New Issue
Block a user