package doumeemes.core.model; import doumeemes.dao.business.model.Company; import doumeemes.dao.business.model.Department; import doumeemes.dao.ext.vo.CompanyExtListVO; import doumeemes.dao.ext.vo.CompanyUserExtListVO; import doumeemes.dao.ext.vo.DepartmentExtListVO; import doumeemes.dao.system.model.SystemPermission; import doumeemes.dao.system.model.SystemRole; import doumeemes.dao.system.model.SystemUser; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; /** * 登录用户信息 * @author Eva.Caesar Liu * @date 2022/04/18 18:12 */ @Data public class LoginUserInfo implements Serializable { private Integer id; private String username; private String realname; private String avatar; private Date birthday; private String sex; private Integer type; private Integer status; private CompanyExtListVO company; private List roles; private List permissions; //根部门 private DepartmentExtListVO rootDepartment ; //直属公司级部门 private DepartmentExtListVO comDepartment ; //当前切换的公司级部门 private DepartmentExtListVO curComDepartment ; //直属部门 private DepartmentExtListVO department ; //关联的组织用户信息 private CompanyUserExtListVO companyUser ; //权限范围内的工序,如果为空为null,只能看自己的 private List procedureIds ; //数据权限部门编码集合,为null表示全部,为size()==0表示只能看自己的,size>0表示指定部门集合的数据 private List departPermissionList; public static LoginUserInfo from(SystemUser user, List roles, List permissions, CompanyExtListVO company, DepartmentExtListVO rootDepartment, DepartmentExtListVO comDepartment, DepartmentExtListVO department, List departPermissionList, CompanyUserExtListVO cu) { if (user == null) { return null; } // 拷贝用户信息 LoginUserInfo loginUserInfo = new LoginUserInfo(); BeanUtils.copyProperties(user, loginUserInfo); loginUserInfo.setRootDepartment(rootDepartment); loginUserInfo.setComDepartment(comDepartment); loginUserInfo.setCurComDepartment(comDepartment); loginUserInfo.setDepartment(department); loginUserInfo.setCompany(company); loginUserInfo.setCompanyUser(cu); //工序的权限范围 if(cu!= null && StringUtils.isNotBlank(cu.getProcedureIds())){ loginUserInfo.setProcedureIds(new ArrayList<>()); String[] ts = cu.getProcedureIds().split(","); for(String s : ts){ loginUserInfo.getProcedureIds().add(Integer.parseInt(s)); } } loginUserInfo.setDepartPermissionList(departPermissionList); // 设置角色信息 List rs = new ArrayList<>(); for (SystemRole role : roles) { rs.add(role.getCode()); } loginUserInfo.setRoles(rs); // 设置权限信息 List pms = new ArrayList<>(); for (SystemPermission permission : permissions) { pms.add(permission.getCode()); } loginUserInfo.setPermissions(pms); return loginUserInfo; } }