package com.boss.cxgovac.pauth.entity;
import java.io.Serializable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import org.apache.commons.beanutils.PropertyUtils;
import org.hibernate.validator.constraints.NotEmpty;
import com.boss.cxgovac.common.utils.StringUtil;
import com.boss.cxgovac.pauth.common.entity.UpdateGroup;
import lombok.Data;
@Data
@Entity
@Table(name="afa_auth_resource")
public class PtyAuthResource implements Serializable {
private static final long serialVersionUID = 1L;
@NotEmpty(message = "资源ID不能为空", groups = {UpdateGroup.class})
@Id
@Column(name="RESOURCE_ID")
private String resourceId;
@Column(name="APP_ID")
private String appId;
@NotEmpty(message = "功能CODE不能为空", groups = {UpdateGroup.class})
@Column(name="FUNC_CODE")
private String funcCode;
@Column(name="IS_DELETE")
private String isDelete;
@Column(name="LAST_MODIFY_TIME")
private String lastModifyTime;
@NotEmpty(message = "操作类型不能为空", groups = {UpdateGroup.class})
@Column(name="OP_TYPE")
private String opType;
@NotEmpty(message = "角色CODE不能为空", groups = {UpdateGroup.class})
@Column(name="PARTY_CODE")
private String partyCode;
@Column(name="RESOURCE_CODE")
private String resourceCode;
@Column(name="RESOURCE_NAME")
private String resourceName;
@Override
public boolean equals(Object resource) {
if (resource == null) {
return false;
}
if (!(resource instanceof PtyAuthResource)) {
return false;
}
PtyAuthResource target = (PtyAuthResource) resource;
return this.resourceId.equals(target.resourceId);
}
/**
* 转成map对象
*
* @return
*/
public Map map() {
try {
Map map = PropertyUtils.describe(this);
map.remove("class");
Iterator<Entry> itera = map.entrySet().iterator();
Entry entry = null;
Object value = null;
while (itera.hasNext()) {
value = itera.next().getValue();
if (Objects.isNull(value) || StringUtil.isEmpty(value.toString())) {
itera.remove();
}
if (!Objects.isNull(value) && value instanceof List) {
List list = (List)value;
if (list.size() == 0) {
itera.remove();
}
}
}
return map;
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
}
对象类里面重写equals方法
public PageResult<PtyAppResourceVo> funcResourcePage(PtyAuthResourceQo authResourceQo) {
PtyAuthResource ptyAuthResource = new PtyAuthResource();
BeanUtils.copyProperties(authResourceQo, ptyAuthResource);
// 查询所有功能的资源
PageInfo<PtyAuthResource> pageInfo = PageHelper
.startPage(authResourceQo.getPageIndex(), authResourceQo.getPageSize())
.doSelectPageInfo(() -> authResourceDao.selectNotAuthResource(ptyAuthResource));
List<PtyAuthResource> all = pageInfo.getList();
// 查询已授权的
PageInfo<PtyAuthResource> pageInfoAuth = PageHelper
.startPage(authResourceQo.getPageIndex(), authResourceQo.getPageSize())
.doSelectPageInfo(() -> authResourceDao.select(ptyAuthResource));
List<PtyAuthResource> authed = pageInfoAuth.getList();
List<PtyAppResourceVo> result = all.stream().map(resource -> {
PtyAppResourceVo vo = new PtyAppResourceVo();
BeanUtils.copyProperties(resource, vo);
if (!authed.contains(resource)) {
vo.setOpType("hide");
}
return vo;
}).collect(Collectors.toList());
return new PageResult<PtyAppResourceVo>().setTotal(pageInfo.getTotal()).setResult(result);
}