提交 5701669e 作者: chenshiqiang

Merge remote-tracking branch 'origin/master'

...@@ -58,6 +58,13 @@ public class KbAuthorizedUserController { ...@@ -58,6 +58,13 @@ public class KbAuthorizedUserController {
public Result<?> edit(@RequestBody KbAuthorizedUser authorizedUser){ public Result<?> edit(@RequestBody KbAuthorizedUser authorizedUser){
return authorizedUserService.edit(authorizedUser); return authorizedUserService.edit(authorizedUser);
} }
/**
* 编辑授权用户
* */
@PostMapping("/editBatch")
public Result<?> editBatch(@RequestBody List<KbAuthorizedUser> authorizedUsers){
return authorizedUserService.editBatch(authorizedUsers);
}
/** /**
* 删除授权用户 * 删除授权用户
...@@ -121,4 +128,17 @@ public class KbAuthorizedUserController { ...@@ -121,4 +128,17 @@ public class KbAuthorizedUserController {
return authorizedUserService.knowBelongWho(knowledgeProjectId,knowledgeId); return authorizedUserService.knowBelongWho(knowledgeProjectId,knowledgeId);
} }
/**
* 判断每条资讯是否有操作权限
* private String knowledgeProjectId;
* private String kbKnowledgeId;
* */
@GetMapping("/operationAuthority")
public Result<?> operationAuthority(
@RequestParam(name="knowledgeProjectId") String knowledgeProjectId,
@RequestParam(name="operation") String operation,
@RequestParam(name="kbKnowledgeId") String kbKnowledgeId){
return authorizedUserService.operationAuthority(knowledgeProjectId,kbKnowledgeId,operation);
}
} }
...@@ -36,6 +36,8 @@ public class KbAuthuserKnowMap extends Model<KbAuthuserKnowMap> { ...@@ -36,6 +36,8 @@ public class KbAuthuserKnowMap extends Model<KbAuthuserKnowMap> {
@TableField("knowledge_project_id") @TableField("knowledge_project_id")
private String knowledgeProjectId; private String knowledgeProjectId;
@TableField("permisson_codes")
private String permissonCodes;
@TableField("create_date") @TableField("create_date")
private Date createDate; private Date createDate;
......
...@@ -57,4 +57,13 @@ public interface KbAuthorizedUserMapper extends BaseMapper<KbAuthorizedUser> { ...@@ -57,4 +57,13 @@ public interface KbAuthorizedUserMapper extends BaseMapper<KbAuthorizedUser> {
"GROUP BY a.id" "GROUP BY a.id"
) )
KbAuthorizedUser getOne(@Param(Constants.WRAPPER) QueryWrapper<KbAuthorizedUser> query); KbAuthorizedUser getOne(@Param(Constants.WRAPPER) QueryWrapper<KbAuthorizedUser> query);
@Select("SELECT a.user_id,a.knowledge_project_id,a.role_id,b.role_code,b.role_name,d.permission_code,d.permission_name FROM kb_user_role_map a " +
"LEFT JOIN kb_role b ON a.role_id = b.id " +
"LEFT JOIN kb_role_permission_map c ON b.id = c.role_id " +
"LEFT JOIN kb_permissions d ON c.permission_id = d.id " +
"${ew.customSqlSegment}"
)
List<UserKnowPermissionVo> getUserPermissionByquery(@Param(Constants.WRAPPER) QueryWrapper<KbAuthorizedUser> query);
} }
package com.zzsn.knowbase.mapper; package com.zzsn.knowbase.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.zzsn.knowbase.entity.KbAuthorizedUser;
import com.zzsn.knowbase.entity.KbRole; import com.zzsn.knowbase.entity.KbRole;
import com.zzsn.knowbase.vo.RolePermissonVo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/** /**
* <p> * <p>
...@@ -15,4 +23,10 @@ import org.apache.ibatis.annotations.Mapper; ...@@ -15,4 +23,10 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface KbRoleMapper extends BaseMapper<KbRole> { public interface KbRoleMapper extends BaseMapper<KbRole> {
@Select("SELECT a.*,p.id as permission_id,p.permission_code,p.permission_name FROM kb_role a " +
"LEFT JOIN kb_role_permission_map b ON a.id = b.role_id " +
"LEFT JOIN kb_permissions p on p.id = b.permission_id " +
"${ew.customSqlSegment}"
)
List<RolePermissonVo> getRolePermission (@Param(Constants.WRAPPER) QueryWrapper<KbAuthorizedUser> query);
} }
...@@ -47,4 +47,8 @@ public interface KbAuthorizedUserService extends IService<KbAuthorizedUser> { ...@@ -47,4 +47,8 @@ public interface KbAuthorizedUserService extends IService<KbAuthorizedUser> {
Result<?> getAll(KbAuthorizedUser user); Result<?> getAll(KbAuthorizedUser user);
Result<?> knowBelongWho(String knowledgeProjectId, String knowledgeId); Result<?> knowBelongWho(String knowledgeProjectId, String knowledgeId);
Result<?> editBatch(List<KbAuthorizedUser> authorizedUsers);
Result<?> operationAuthority(String knowledgeProjectId, String kbKnowledgeId, String operation);
} }
...@@ -45,8 +45,8 @@ public class DocumentServiceImpl implements DocumentService { ...@@ -45,8 +45,8 @@ public class DocumentServiceImpl implements DocumentService {
/** /**
* 大小限制,默认10M * 大小限制,默认10M
*/ */
@Value("${document.file-size.limit:10485760}") @Value("${filesize-max}")
private Long docFileSizeLimit; private String filesizeMax;
@Value("${files.docservice.url.site}") @Value("${files.docservice.url.site}")
private String documentServerHost; private String documentServerHost;
@Value("${files.docservice.url.api}") @Value("${files.docservice.url.api}")
...@@ -293,8 +293,8 @@ public class DocumentServiceImpl implements DocumentService { ...@@ -293,8 +293,8 @@ public class DocumentServiceImpl implements DocumentService {
log.error("$$$ 目标文档[{}]不可读,无法打开!", docFile.getAbsolutePath()); log.error("$$$ 目标文档[{}]不可读,无法打开!", docFile.getAbsolutePath());
throw new DocumentException(ErrorCodeEnum.DOC_FILE_UNREADABLE); throw new DocumentException(ErrorCodeEnum.DOC_FILE_UNREADABLE);
} }
if (docFile.length() > docFileSizeLimit) { if (docFile.length() > Long.parseLong(filesizeMax)) {
log.error("$$$ 目标文档大小超过限制({}B > {}B),无法打开!", docFile.length(), docFileSizeLimit); log.error("$$$ 目标文档大小超过限制({}B > {}B),无法打开!", docFile.length(), Long.parseLong(filesizeMax));
throw new DocumentException(ErrorCodeEnum.DOC_FILE_OVERSIZE); throw new DocumentException(ErrorCodeEnum.DOC_FILE_OVERSIZE);
} }
String ext = StringUtils.lowerCase(FilenameUtils.getExtension(docFile.getName())); String ext = StringUtils.lowerCase(FilenameUtils.getExtension(docFile.getName()));
......
...@@ -13,11 +13,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -13,11 +13,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.knowbase.entity.*; import com.zzsn.knowbase.entity.*;
import com.zzsn.knowbase.mapper.KbAuthorizedUserMapper; import com.zzsn.knowbase.mapper.KbAuthorizedUserMapper;
import com.zzsn.knowbase.mapper.KbRoleMapper;
import com.zzsn.knowbase.service.*; import com.zzsn.knowbase.service.*;
import com.zzsn.knowbase.util.SpringContextUtils; import com.zzsn.knowbase.util.SpringContextUtils;
import com.zzsn.knowbase.vo.AddUserPermissKnowsVo; import com.zzsn.knowbase.vo.*;
import com.zzsn.knowbase.vo.Result;
import com.zzsn.knowbase.vo.UserInfoVo;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -55,6 +54,8 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap ...@@ -55,6 +54,8 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
KbKnowledgeProjectService knowledgeProjectService; KbKnowledgeProjectService knowledgeProjectService;
@Autowired @Autowired
KbAuthuserKnowMapService kbAuthuserKnowMapService; KbAuthuserKnowMapService kbAuthuserKnowMapService;
@Autowired
KbRoleMapper kbRoleMapper;
/** /**
* 校验第三方用户接口地址 * 校验第三方用户接口地址
...@@ -304,11 +305,14 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap ...@@ -304,11 +305,14 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
}); });
return Result.error(res.toString()); return Result.error(res.toString());
} }
//角色对应权限关系
List<RolePermissonVo> rolePermission = kbRoleMapper.getRolePermission(Wrappers.query());
Map<String, List<RolePermissonVo>> collect = rolePermission.stream().collect(Collectors.groupingBy(RolePermissonVo::getId));
List<KbAuthuserKnowMap> saves = new ArrayList<>(); List<KbAuthuserKnowMap> saves = new ArrayList<>();
List<KbAuthuserKnowledgeprojectMap> saves1 = new ArrayList<>(); List<KbAuthuserKnowledgeprojectMap> saves1 = new ArrayList<>();
authorizedUsers.forEach(user->{ authorizedUsers.forEach(user->{
//第一次在这个节点添加资讯授权 //第一次在这个节点添加资讯授权
if (CollectionUtil.isEmpty(listSign)) { if (CollectionUtil.isEmpty(listSign)) {
KbAuthuserKnowledgeprojectMap kbAuthuserKnowledgeprojectMap = new KbAuthuserKnowledgeprojectMap(); KbAuthuserKnowledgeprojectMap kbAuthuserKnowledgeprojectMap = new KbAuthuserKnowledgeprojectMap();
...@@ -318,17 +322,31 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap ...@@ -318,17 +322,31 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
kbAuthuserKnowledgeprojectMap.setCreateDate(new Date()); kbAuthuserKnowledgeprojectMap.setCreateDate(new Date());
saves1.add(kbAuthuserKnowledgeprojectMap); saves1.add(kbAuthuserKnowledgeprojectMap);
} }
knowledgeIds.forEach(know->{ knowledgeIds.forEach(know->{
KbAuthuserKnowMap kbAuthuserKnowMap = new KbAuthuserKnowMap(); KbAuthuserKnowMap kbAuthuserKnowMap = new KbAuthuserKnowMap();
kbAuthuserKnowMap.setAuthUserId(user.getId()); kbAuthuserKnowMap.setAuthUserId(user.getId());
kbAuthuserKnowMap.setCreateDate(new Date()); kbAuthuserKnowMap.setCreateDate(new Date());
kbAuthuserKnowMap.setKnowledgeId(know); kbAuthuserKnowMap.setKnowledgeId(know);
List<RolePermissonVo> rolePermissonVos = collect.get(user.getRoleId());
StringBuffer b = new StringBuffer();
rolePermissonVos.forEach(p -> b.append(","+p.getPermissionCode()));
if (b.length()>0) {
kbAuthuserKnowMap.setPermissonCodes(b.substring(1));
}
kbAuthuserKnowMap.setKnowledgeProjectId(knowledgeProjectId); kbAuthuserKnowMap.setKnowledgeProjectId(knowledgeProjectId);
saves.add(kbAuthuserKnowMap); saves.add(kbAuthuserKnowMap);
}); });
}); });
if (CollectionUtil.isNotEmpty(saves)) {
kbAuthuserKnowMapService.saveBatch(saves); kbAuthuserKnowMapService.saveBatch(saves);
}
if (CollectionUtil.isNotEmpty(saves1)) {
authuserKnowledgeprojectMapService.saveBatch(saves1); authuserKnowledgeprojectMapService.saveBatch(saves1);
}
return Result.OK(); return Result.OK();
} }
...@@ -382,6 +400,141 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap ...@@ -382,6 +400,141 @@ public class KbAuthorizedUserServiceImpl extends ServiceImpl<KbAuthorizedUserMap
} }
} }
@Override
@Transactional
public Result<?> editBatch(List<KbAuthorizedUser> authorizedUsers) {
if (CollectionUtil.isEmpty(authorizedUsers)){
return Result.OK("本次没有编辑用户");
}
authorizedUsers.forEach(e->e.setUpdateTime(new Date()));
super.updateBatchById(authorizedUsers);
List<String> authUserIds = authorizedUsers.stream().map(KbAuthorizedUser::getId).collect(Collectors.toList());
if (!"0".equals(authorizedUsers.get(0).getKnowledgeProjectId())) {
//所编辑知识库分类节点下所有的子节点
List<KbKnowledgeProject> knowPros = knowledgeProjectService.list(Wrappers.<KbKnowledgeProject>lambdaQuery()
.like(KbKnowledgeProject::getFullPath, authorizedUsers.get(0).getKnowledgeProjectId())
);
List<String> knowProIds = knowPros.stream().map(KbKnowledgeProject::getId).collect(Collectors.toList());
kbUserRoleMapService.remove(Wrappers.<KbUserRoleMap>lambdaQuery()
.in(KbUserRoleMap::getUserId,authUserIds)
.in(KbUserRoleMap::getKnowledgeProjectId,knowProIds)
);
List<KbUserRoleMap> maps = new ArrayList<>();
authorizedUsers.forEach(user->{
List<String> list = Arrays.asList(user.getRoleId().split(","));
list.forEach(e->{
knowProIds.forEach(ee->{
KbUserRoleMap kbUserRoleMap = new KbUserRoleMap();
kbUserRoleMap.setUserId(user.getId());
kbUserRoleMap.setRoleId(e);
kbUserRoleMap.setKnowledgeProjectId(ee);
kbUserRoleMap.setCreateDate(new Date());
maps.add(kbUserRoleMap);
});
});
});
kbUserRoleMapService.saveBatch(maps);
}else {
kbUserRoleMapService.remove(Wrappers.<KbUserRoleMap>lambdaQuery().in(KbUserRoleMap::getUserId,authUserIds));
authuserKnowledgeprojectMapService.remove(Wrappers.<KbAuthuserKnowledgeprojectMap>lambdaQuery().in(KbAuthuserKnowledgeprojectMap::getAuthUserId,authUserIds));
kbAuthuserKnowMapService.remove(Wrappers.<KbAuthuserKnowMap>lambdaQuery().in(KbAuthuserKnowMap::getAuthUserId,authUserIds));
List<KbAuthuserKnowledgeprojectMap> authUserKnowProjectMaps = new ArrayList<>();
List<KbUserRoleMap> userRoleMaps = new ArrayList<>();
authorizedUsers.forEach(user -> {
/**插入用户知识库权限关系表*/
if (StringUtils.isNotBlank(user.getKnowledgeProjectId())){
KbAuthuserKnowledgeprojectMap kbAuthuserKnowledgeprojectMap = new KbAuthuserKnowledgeprojectMap();
kbAuthuserKnowledgeprojectMap.setAuthUserId(user.getId());
kbAuthuserKnowledgeprojectMap.setKnowledgeProjectId(user.getKnowledgeProjectId());
kbAuthuserKnowledgeprojectMap.setSign(0);
// authuserKnowledgeprojectMapService.save(kbAuthuserKnowledgeprojectMap);
authUserKnowProjectMaps.add(kbAuthuserKnowledgeprojectMap);
}
/**插入用户角色关系表*/
if (StringUtils.isNotBlank(user.getRoleId())){
String roleId = user.getRoleId();
List<String> list = Arrays.asList(roleId.split(","));
list.forEach(e->{
KbUserRoleMap kbUserRoleMap = new KbUserRoleMap();
kbUserRoleMap.setUserId(user.getId());
kbUserRoleMap.setRoleId(e);
kbUserRoleMap.setKnowledgeProjectId(user.getKnowledgeProjectId());
userRoleMaps.add(kbUserRoleMap);
});
// kbUserRoleMapService.saveBatch(maps);
}
});
authuserKnowledgeprojectMapService.saveBatch(authUserKnowProjectMaps);
kbUserRoleMapService.saveBatch(userRoleMaps);
}
return Result.OK();
}
@Override
public Result<?> operationAuthority(String knowledgeProjectId, String kbKnowledgeId, String operation) {
KbAuthorizedUser userInfo = SpringContextUtils.getUserInfo();
if (userInfo.getIsAll() == 0){
QueryWrapper<KbAuthorizedUser> query = new QueryWrapper<>();
query.eq("a.id",userInfo.getId());
List<RolePermissonVo> rolePermission = kbRoleMapper.getRolePermission(query);
if (CollectionUtil.isNotEmpty(rolePermission)){
List<String> collect = rolePermission.stream().map(RolePermissonVo::getPermissionCode).collect(Collectors.toList());
if (collect.contains(operation)){
return Result.OK(true);
}
}
}else {
QueryWrapper<KbAuthorizedUser> query = new QueryWrapper<>();
query.eq("a.user_id",userInfo.getId());
query.eq("a.knowledge_project_id",knowledgeProjectId);
List<UserKnowPermissionVo> userPermissionByquery = authorizedUserMapper.getUserPermissionByquery(query);
if (CollectionUtil.isNotEmpty(userPermissionByquery)){
List<String> collect = userPermissionByquery.stream().map(UserKnowPermissionVo::getPermissionCode).collect(Collectors.toList());
if (collect.contains(operation)){
return Result.OK(true);
}
}
List<KbAuthuserKnowMap> list = kbAuthuserKnowMapService.list(Wrappers.<KbAuthuserKnowMap>lambdaQuery()
.eq(KbAuthuserKnowMap::getAuthUserId, userInfo.getId())
.eq(KbAuthuserKnowMap::getKnowledgeProjectId, knowledgeProjectId)
.eq(KbAuthuserKnowMap::getKnowledgeId, kbKnowledgeId));
HashSet<String> pre = new HashSet<>();
list.forEach(e->{
if (StringUtils.isNotBlank(e.getPermissonCodes())){
pre.addAll(new HashSet<>(Arrays.asList(e.getPermissonCodes().split(","))));
}
});
if (pre.contains(operation)){
return Result.OK(true);
}
}
return Result.OK(false);
}
@Override @Override
@Transactional @Transactional
......
...@@ -80,15 +80,18 @@ public class LocalFileServiceImpl implements ILocalFileService { ...@@ -80,15 +80,18 @@ public class LocalFileServiceImpl implements ILocalFileService {
String fileExtension = fileUtility.getFileExtension(fileName); // 获取文件扩展名 String fileExtension = fileUtility.getFileExtension(fileName); // 获取文件扩展名
String fileType = fileUtility.getFileType(fileName); //获取文件类型 String fileType = fileUtility.getFileType(fileName); //获取文件类型
long fileSize = file.getSize(); // get file size long fileSize = file.getSize(); // get file size
log.info("文件上传:"+ fileName);
// check if the file size exceeds the maximum file size or is less than 0 // check if the file size exceeds the maximum file size or is less than 0
if (fileUtility.getMaxFileSize() < fileSize || fileSize <= 0) { if (fileUtility.getMaxFileSize() < fileSize || fileSize <= 0) {
Result result = Result.error("文件大小不正确!"); Result result = Result.error("文件大小不正确!");
log.info("文件大小不正确!");
return result; return result;
} }
// check if file extension is supported by the editor // check if file extension is supported by the editor
if (!fileUtility.getFileExts().contains(fileExtension)) { if (!fileUtility.getFileExts().contains(fileExtension)) {
Result result = Result.error("不支持的文件类型!"); Result result = Result.error("不支持的文件类型!");
log.info("不支持的文件类型!");
return result; return result;
} }
...@@ -105,12 +108,14 @@ public class LocalFileServiceImpl implements ILocalFileService { ...@@ -105,12 +108,14 @@ public class LocalFileServiceImpl implements ILocalFileService {
knowFile.setFileType(fileType); knowFile.setFileType(fileType);
knowFile.setFileSize(fileSize); knowFile.setFileSize(fileSize);
Result result = Result.OK(knowFile); Result result = Result.OK(knowFile);
log.info("文件上传成功:" + fileName + "---" + filePath);
return result; // create user metadata and return it return result; // create user metadata and return it
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
// if the operation of file uploading is unsuccessful, an error occurs // if the operation of file uploading is unsuccessful, an error occurs
Result result = Result.error("上传文件时出现问题!"); Result result = Result.error("上传文件时出现问题!");
log.info("上传文件时出现问题!");
return result; return result;
} }
...@@ -193,15 +198,15 @@ public class LocalFileServiceImpl implements ILocalFileService { ...@@ -193,15 +198,15 @@ public class LocalFileServiceImpl implements ILocalFileService {
public void callBack(HttpServletRequest request, HttpServletResponse response) throws IOException{ public void callBack(HttpServletRequest request, HttpServletResponse response) throws IOException{
PrintWriter writer = null; PrintWriter writer = null;
JSONObject jsonObj = null; JSONObject jsonObj = null;
System.out.println("===saveeditedfile------------"); log.info("===saveeditedfile------------");
try { try {
writer = response.getWriter(); writer = response.getWriter();
Scanner scanner = new Scanner(request.getInputStream()).useDelimiter("\\A"); Scanner scanner = new Scanner(request.getInputStream()).useDelimiter("\\A");
String body = scanner.hasNext() ? scanner.next() : ""; String body = scanner.hasNext() ? scanner.next() : "";
jsonObj = (JSONObject) new JSONParser().parse(body); jsonObj = (JSONObject) new JSONParser().parse(body);
System.out.println(jsonObj); log.info(jsonObj.toJSONString());
System.out.println("===saveeditedfile:" + jsonObj.get("status")); log.info("===saveeditedfile:" + jsonObj.get("status"));
/* /*
0-找不到具有密钥标识符的文档, 0-找不到具有密钥标识符的文档,
1-文档正在编辑, 1-文档正在编辑,
...@@ -257,11 +262,11 @@ public class LocalFileServiceImpl implements ILocalFileService { ...@@ -257,11 +262,11 @@ public class LocalFileServiceImpl implements ILocalFileService {
* 定义要与文档存储服务保存的编辑文档的链接。当状态值仅等于2或3时,存在链路。 * 定义要与文档存储服务保存的编辑文档的链接。当状态值仅等于2或3时,存在链路。
* */ * */
String downloadUri = (String) jsonObj.get("url"); String downloadUri = (String) jsonObj.get("url");
System.out.println("====文档编辑完成,现在开始保存编辑后的文档,其下载地址为:" + downloadUri); log.info("====文档编辑完成,现在开始保存编辑后的文档,其下载地址为:" + downloadUri);
//解析得出文件名 //解析得出文件名
//String fileName = downloadUri.substring(downloadUri.lastIndexOf('/')+1); //String fileName = downloadUri.substring(downloadUri.lastIndexOf('/')+1);
String fileName = request.getParameter("fileName"); String fileName = request.getParameter("fileName");
System.out.println("====下载的文件名:" + fileName); log.info("====下载的文件名:" + fileName);
URL url = new URL(downloadUri); URL url = new URL(downloadUri);
java.net.HttpURLConnection connection = (java.net.HttpURLConnection) url.openConnection(); java.net.HttpURLConnection connection = (java.net.HttpURLConnection) url.openConnection();
......
package com.zzsn.knowbase.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author obcy
* @since 2024-01-04
*/
@Data
public class RolePermissonVo implements Serializable {
private String id;
/**
* 角色名称
*/
private String roleName;
/**
* 角色编码
*/
private String roleCode;
/**
* 备注
*/
private String notes;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
/**
* 权限名称
*/
private String permissionName;
/**
* 权限编码
*/
private String permissionCode;
/**
* 权限id
*/
private String permissionId;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论