刘力
3 years ago
16 changed files with 238 additions and 51 deletions
-
32common/src/main/java/com/canvas/web/annotation/Limit.java
-
9common/src/main/java/com/canvas/web/aspect/LimitType.java
-
2system/src/main/java/com/canvas/web/modules/security/service/UserDetailsServiceImpl.java
-
40system/src/main/java/com/canvas/web/modules/system/controller/UserController.java
-
7system/src/main/java/com/canvas/web/modules/system/repository/OrgRepository.java
-
15system/src/main/java/com/canvas/web/modules/system/repository/UserRepository.java
-
2system/src/main/java/com/canvas/web/modules/system/service/DataService.java
-
3system/src/main/java/com/canvas/web/modules/system/service/OrgService.java
-
1system/src/main/java/com/canvas/web/modules/system/service/RoleService.java
-
25system/src/main/java/com/canvas/web/modules/system/service/UserService.java
-
27system/src/main/java/com/canvas/web/modules/system/service/dto/OrgQueryCriteria.java
-
1system/src/main/java/com/canvas/web/modules/system/service/dto/RoleDto.java
-
6system/src/main/java/com/canvas/web/modules/system/service/dto/UserQueryCriteria.java
-
42system/src/main/java/com/canvas/web/modules/system/service/impl/DataServiceImpl.java
-
6system/src/main/java/com/canvas/web/modules/system/service/impl/OrgServiceImpl.java
-
71system/src/main/java/com/canvas/web/modules/system/service/impl/UserServiceImpl.java
@ -0,0 +1,32 @@ |
|||
package com.canvas.web.annotation; |
|||
|
|||
|
|||
import com.canvas.web.aspect.LimitType; |
|||
|
|||
import java.lang.annotation.ElementType; |
|||
import java.lang.annotation.Retention; |
|||
import java.lang.annotation.RetentionPolicy; |
|||
import java.lang.annotation.Target; |
|||
|
|||
@Target(ElementType.METHOD) |
|||
@Retention(RetentionPolicy.RUNTIME) |
|||
public @interface Limit { |
|||
|
|||
//资源名称,用于描述资源接口功能 |
|||
String name() default ""; |
|||
|
|||
// 资源 key |
|||
String key() default ""; |
|||
|
|||
// key prefix |
|||
String prefix() default ""; |
|||
|
|||
// 时间的,单位秒 |
|||
int period(); |
|||
|
|||
// 限制访问次数 |
|||
int count(); |
|||
|
|||
// 限制类型 |
|||
LimitType limitType() default LimitType.CUSTOMER; |
|||
} |
@ -0,0 +1,9 @@ |
|||
package com.canvas.web.aspect; |
|||
|
|||
public enum LimitType { |
|||
|
|||
// 默认 |
|||
CUSTOMER, |
|||
// by ip addr |
|||
IP |
|||
} |
@ -0,0 +1,27 @@ |
|||
package com.canvas.web.modules.system.service.dto; |
|||
|
|||
|
|||
import com.canvas.web.annotation.DataPermission; |
|||
import com.canvas.web.annotation.Query; |
|||
import lombok.Data; |
|||
|
|||
import java.sql.Timestamp; |
|||
import java.util.List; |
|||
|
|||
@Data |
|||
@DataPermission(fieldName = "id") |
|||
public class OrgQueryCriteria { |
|||
|
|||
@Query(type = Query.Type.INNER_LIKE) |
|||
private String name; |
|||
|
|||
@Query |
|||
private Boolean enabled; |
|||
|
|||
@Query |
|||
private Long pid; |
|||
|
|||
|
|||
@Query(type = Query.Type.BETWEEN) |
|||
private List<Timestamp> createTime; |
|||
} |
@ -1,20 +1,56 @@ |
|||
package com.canvas.web.modules.system.service.impl; |
|||
|
|||
import com.canvas.web.enums.DataScopeEnum; |
|||
import com.canvas.web.modules.system.domain.Org; |
|||
import com.canvas.web.modules.system.service.DataService; |
|||
import com.canvas.web.modules.system.service.RoleService; |
|||
import com.canvas.web.modules.system.service.dto.OrgDto; |
|||
import com.canvas.web.modules.system.service.dto.RoleSmallDto; |
|||
import com.canvas.web.modules.system.service.dto.UserDto; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.springframework.cache.annotation.CacheConfig; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.List; |
|||
import java.util.*; |
|||
|
|||
|
|||
@Service |
|||
@RequiredArgsConstructor |
|||
@CacheConfig(cacheNames = "data") |
|||
public class DataServiceImpl implements DataService { |
|||
|
|||
private final RoleService roleService; |
|||
private final OrgServiceImpl orgService; |
|||
|
|||
@Override |
|||
public List<Long> getDeptIds(UserDto user) { |
|||
return null; |
|||
public List<Long> getOrgIds(UserDto user) { |
|||
//用于存储机构id |
|||
Set<Long> orgIds = new HashSet<>(); |
|||
//查询用户角色 |
|||
List<RoleSmallDto> roleSmallDtos = roleService.findByUsersId(user.getId()); |
|||
for (RoleSmallDto role : roleSmallDtos) { |
|||
DataScopeEnum dataScopeEnum = DataScopeEnum.find(role.getDataScope()); |
|||
switch (Objects.requireNonNull(dataScopeEnum)){ |
|||
case THIS_LEVEL: |
|||
orgIds.add(user.getOrg().getId()); |
|||
break; |
|||
case CUSTOMIZE: |
|||
orgIds.addAll(getCustomize(orgIds,role)); |
|||
break; |
|||
default: |
|||
return new ArrayList<>(orgIds); |
|||
} |
|||
} |
|||
return new ArrayList<>(orgIds); |
|||
} |
|||
|
|||
public Set<Long> getCustomize(Set<Long> orgIds,RoleSmallDto role){ |
|||
|
|||
Set<Org> orgs=orgService.findByRoleId(role.getId()); |
|||
for (Org org : orgs){ |
|||
orgIds.add(org.getId()); |
|||
} |
|||
return orgIds; |
|||
} |
|||
|
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue