You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.3 KiB
96 lines
3.3 KiB
package com.example.demo.Node;
|
|
|
|
import lombok.Data;
|
|
import java.util.HashSet;
|
|
import java.util.Set;
|
|
|
|
@Data
|
|
public class RefundApprovalNode {
|
|
private String nodeName;
|
|
private Integer level;
|
|
private Set<String> roles; // 审批所需的角色集合
|
|
private Set<Integer> allowedMarketIds; // 允许审批的地区ID集合
|
|
private Set<String> allowedMarketNames; // 允许审批的地区名称集合(向后兼容)
|
|
private boolean required;
|
|
|
|
public RefundApprovalNode() {
|
|
this.roles = new HashSet<>();
|
|
this.allowedMarketIds = new HashSet<>();
|
|
this.allowedMarketNames = new HashSet<>();
|
|
}
|
|
|
|
public RefundApprovalNode(String nodeName, Integer level, String role, boolean required) {
|
|
this();
|
|
this.nodeName = nodeName;
|
|
this.level = level;
|
|
if (role != null) {
|
|
this.roles.add(role);
|
|
}
|
|
this.required = required;
|
|
}
|
|
|
|
public RefundApprovalNode(String nodeName, Integer level, Set<String> roles, Set<Integer> allowedMarketIds, boolean required) {
|
|
this.nodeName = nodeName;
|
|
this.level = level;
|
|
this.roles = roles != null ? roles : new HashSet<>();
|
|
this.allowedMarketIds = allowedMarketIds != null ? allowedMarketIds : new HashSet<>();
|
|
this.allowedMarketNames = new HashSet<>();
|
|
this.required = required;
|
|
}
|
|
// 构造函数:接受多个角色(数组形式)和地区ID集合
|
|
public RefundApprovalNode(String nodeName, Integer level, String[] roles, Set<Integer> allowedMarketIds, boolean required) {
|
|
this();
|
|
this.nodeName = nodeName;
|
|
this.level = level;
|
|
if (roles != null) {
|
|
for (String role : roles) {
|
|
this.roles.add(role);
|
|
}
|
|
}
|
|
this.allowedMarketIds = allowedMarketIds != null ? allowedMarketIds : new HashSet<>();
|
|
this.required = required;
|
|
}
|
|
|
|
public void addRole(String role) {
|
|
if (this.roles == null) {
|
|
this.roles = new HashSet<>();
|
|
}
|
|
this.roles.add(role);
|
|
}
|
|
|
|
public void addMarketId(Integer marketId) {
|
|
if (this.allowedMarketIds == null) {
|
|
this.allowedMarketIds = new HashSet<>();
|
|
}
|
|
this.allowedMarketIds.add(marketId);
|
|
}
|
|
|
|
public void addMarketName(String marketName) {
|
|
if (this.allowedMarketNames == null) {
|
|
this.allowedMarketNames = new HashSet<>();
|
|
}
|
|
this.allowedMarketNames.add(marketName);
|
|
}
|
|
|
|
// 检查节点是否对指定地区ID可见
|
|
public boolean isMarketAllowed(Integer marketId) {
|
|
if (allowedMarketIds == null || allowedMarketIds.isEmpty()) {
|
|
return true; // 没有地区限制,所有地区都可见
|
|
}
|
|
return allowedMarketIds.contains(marketId);
|
|
}
|
|
|
|
// 检查节点是否对指定地区名称可见(向后兼容)
|
|
public boolean isMarketAllowedByName(String marketName) {
|
|
if ((allowedMarketNames == null || allowedMarketNames.isEmpty()) &&
|
|
(allowedMarketIds == null || allowedMarketIds.isEmpty())) {
|
|
return true; // 没有地区限制,所有地区都可见
|
|
}
|
|
|
|
if (allowedMarketNames != null && !allowedMarketNames.isEmpty()) {
|
|
return allowedMarketNames.contains(marketName);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|