刘力
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
-
34system/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
-
23system/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
-
4system/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
-
59system/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; |
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.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 com.canvas.web.modules.system.service.dto.UserDto; |
||||
import lombok.RequiredArgsConstructor; |
import lombok.RequiredArgsConstructor; |
||||
import org.springframework.cache.annotation.CacheConfig; |
import org.springframework.cache.annotation.CacheConfig; |
||||
import org.springframework.stereotype.Service; |
import org.springframework.stereotype.Service; |
||||
|
|
||||
import java.util.List; |
|
||||
|
import java.util.*; |
||||
|
|
||||
|
|
||||
@Service |
@Service |
||||
@RequiredArgsConstructor |
@RequiredArgsConstructor |
||||
@CacheConfig(cacheNames = "data") |
@CacheConfig(cacheNames = "data") |
||||
public class DataServiceImpl implements DataService { |
public class DataServiceImpl implements DataService { |
||||
|
|
||||
|
private final RoleService roleService; |
||||
|
private final OrgServiceImpl orgService; |
||||
|
|
||||
@Override |
@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