feat(permission): 优化权限管理模块的数据结构和查询逻辑
- 在AdminPermissionApiMapper.xml中添加admin_api表关联查询,增加module_name和functionName字段 - 将PermissionRoleColumnMapVO相关查询方法返回类型改为PermissionRoleColumnMapDTO - 创建新的PermissionRoleColumnMapDTO数据传输对象用于权限角色列映射 - 创建PermissionRoleColumnMapItemVO视图对象用于表单字段展示 - 修改FormController中的事务处理和表单新增逻辑 - 更新PermissionApiItemVO实体类,区分moduleName、functionName和apiName字段 - 重构AdminPermissionRoleColumnMapServiceImpl中的数据转换逻辑 - 添加数据库查询结果到VO对象的转换方法和分组处理机制
This commit is contained in:
parent
8c12488b2d
commit
10e94a4784
|
|
@ -107,18 +107,32 @@ public class FormController extends ControllerBase {
|
||||||
/**
|
/**
|
||||||
* 新增表单
|
* 新增表单
|
||||||
*/
|
*/
|
||||||
|
@Transactional
|
||||||
@PostMapping("add")
|
@PostMapping("add")
|
||||||
public void add(@Valid @RequestBody FormAddRequest request) {
|
public void add(@Valid @RequestBody FormAddRequest request) {
|
||||||
VUtils.trueThrowBusinessError(permissionTableService.lambdaQuery()
|
VUtils.trueThrowBusinessError(permissionTableService.lambdaQuery()
|
||||||
.eq(AdminPermissionTable::getTableName, request.getTableName())
|
.eq(AdminPermissionTable::getTableName, request.getTableName())
|
||||||
.exists()
|
.exists()
|
||||||
).throwMessage("表单已存在");
|
).throwMessage("表单已存在");
|
||||||
permissionTableService.save(new AdminPermissionTable()
|
AdminPermissionTable table=new AdminPermissionTable()
|
||||||
.setTableName(request.getTableName())
|
.setTableName(request.getTableName())
|
||||||
.setTableDesc(request.getTableDesc())
|
.setTableDesc(request.getTableDesc())
|
||||||
.setRemark(request.getRemark())
|
.setRemark(request.getRemark())
|
||||||
.setCreateBy(AdminUserUtil.getUserName())
|
.setCreateBy(AdminUserUtil.getUserName())
|
||||||
.setCreateTime(LocalDateTime.now())
|
.setCreateTime(LocalDateTime.now());
|
||||||
|
permissionTableService.save(table);
|
||||||
|
List<DescVO> columns = tableInfoService.getTableColumnInfos(request.getTableName());
|
||||||
|
permissionColumnService.saveBatch(
|
||||||
|
columns.stream()
|
||||||
|
.map(col -> new AdminPermissionColumn()
|
||||||
|
.setTableId(table.getId())
|
||||||
|
.setColName(col.getName())
|
||||||
|
.setColCode(StrUtil.toCamelCase(col.getName()))
|
||||||
|
.setColDesc(col.getDesc())
|
||||||
|
.setCreateBy(AdminUserUtil.getUserName())
|
||||||
|
.setCreateTime(LocalDateTime.now())
|
||||||
|
)
|
||||||
|
.collect(Collectors.toList())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -248,7 +262,7 @@ public class FormController extends ControllerBase {
|
||||||
permissionApiService.updateBatchById(
|
permissionApiService.updateBatchById(
|
||||||
items.stream().map(item -> new AdminPermissionApi()
|
items.stream().map(item -> new AdminPermissionApi()
|
||||||
.setId(item.getId())
|
.setId(item.getId())
|
||||||
.setApiName(item.getApiName())
|
.setApiName(item.getFunctionName())
|
||||||
.setUpdateBy(AdminUserUtil.getUserName())
|
.setUpdateBy(AdminUserUtil.getUserName())
|
||||||
.setUpdateTime(LocalDateTime.now())
|
.setUpdateTime(LocalDateTime.now())
|
||||||
).collect(Collectors.toList())
|
).collect(Collectors.toList())
|
||||||
|
|
@ -264,7 +278,7 @@ public class FormController extends ControllerBase {
|
||||||
items1.stream().map(item -> new AdminPermissionApi()
|
items1.stream().map(item -> new AdminPermissionApi()
|
||||||
.setId(item.getId())
|
.setId(item.getId())
|
||||||
.setApiId(item.getApiId())
|
.setApiId(item.getApiId())
|
||||||
.setApiName(item.getApiName())
|
.setApiName(item.getFunctionName())
|
||||||
.setTableId(request.getTableId())
|
.setTableId(request.getTableId())
|
||||||
.setCreateBy(AdminUserUtil.getUserName())
|
.setCreateBy(AdminUserUtil.getUserName())
|
||||||
.setCreateTime(LocalDateTime.now())
|
.setCreateTime(LocalDateTime.now())
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
package com.nflg.mobilebroken.common.pojo.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PermissionRoleColumnMapDTO {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 列名称
|
||||||
|
*/
|
||||||
|
private String colName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 列描述
|
||||||
|
*/
|
||||||
|
private String colDesc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否选中
|
||||||
|
*/
|
||||||
|
private boolean selected = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表单id
|
||||||
|
*/
|
||||||
|
private Long tableId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表单名称
|
||||||
|
*/
|
||||||
|
private String tableName;
|
||||||
|
|
||||||
|
private String key;
|
||||||
|
|
||||||
|
public String getKey() {
|
||||||
|
return tableId + "-" + tableName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -18,7 +18,7 @@ public class FormApiSaveItemRequest {
|
||||||
/**
|
/**
|
||||||
* 功能名称
|
* 功能名称
|
||||||
*/
|
*/
|
||||||
private String apiName;
|
private String functionName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 表单列ID
|
* 表单列ID
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,21 @@ public class PermissionApiItemVO {
|
||||||
private Long apiId;
|
private Long apiId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 功能名称
|
* 服务名称
|
||||||
|
*/
|
||||||
|
private String moduleName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* 方法名称
|
||||||
*/
|
*/
|
||||||
private String apiName;
|
private String apiName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 功能名称
|
||||||
|
*/
|
||||||
|
private String functionName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 表单列ID
|
* 表单列ID
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
package com.nflg.mobilebroken.common.pojo.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class PermissionRoleColumnMapItemVO {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 列名称
|
||||||
|
*/
|
||||||
|
private String colName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 列描述
|
||||||
|
*/
|
||||||
|
private String colDesc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否选中
|
||||||
|
*/
|
||||||
|
private boolean selected = false;
|
||||||
|
}
|
||||||
|
|
@ -1,12 +1,14 @@
|
||||||
package com.nflg.mobilebroken.common.pojo.vo;
|
package com.nflg.mobilebroken.common.pojo.vo;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
public class PermissionRoleColumnMapVO {
|
public class PermissionRoleColumnMapVO {
|
||||||
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 表单id
|
* 表单id
|
||||||
*/
|
*/
|
||||||
|
|
@ -18,17 +20,7 @@ public class PermissionRoleColumnMapVO {
|
||||||
private String tableName;
|
private String tableName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 列名称
|
* 表单字段
|
||||||
*/
|
*/
|
||||||
private String colName;
|
private List<PermissionRoleColumnMapItemVO> items;
|
||||||
|
|
||||||
/**
|
|
||||||
* 列描述
|
|
||||||
*/
|
|
||||||
private String colDesc;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否选中
|
|
||||||
*/
|
|
||||||
private boolean selected = false;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.nflg.mobilebroken.repository.mapper;
|
package com.nflg.mobilebroken.repository.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.nflg.mobilebroken.common.pojo.dto.PermissionRoleColumnMapDTO;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.PermissionRoleColumnMapVO;
|
import com.nflg.mobilebroken.common.pojo.vo.PermissionRoleColumnMapVO;
|
||||||
import com.nflg.mobilebroken.repository.entity.AdminPermissionRoleColumnMap;
|
import com.nflg.mobilebroken.repository.entity.AdminPermissionRoleColumnMap;
|
||||||
|
|
||||||
|
|
@ -15,7 +16,7 @@ import java.util.List;
|
||||||
*/
|
*/
|
||||||
public interface AdminPermissionRoleColumnMapMapper extends BaseMapper<AdminPermissionRoleColumnMap> {
|
public interface AdminPermissionRoleColumnMapMapper extends BaseMapper<AdminPermissionRoleColumnMap> {
|
||||||
|
|
||||||
List<PermissionRoleColumnMapVO> getList(Long id);
|
List<PermissionRoleColumnMapDTO> getList(Long id);
|
||||||
|
|
||||||
List<PermissionRoleColumnMapVO> getColumns();
|
List<PermissionRoleColumnMapDTO> getColumns();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
package com.nflg.mobilebroken.repository.service.impl;
|
package com.nflg.mobilebroken.repository.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.nflg.mobilebroken.common.pojo.dto.PermissionRoleColumnMapDTO;
|
||||||
|
import com.nflg.mobilebroken.common.pojo.vo.PermissionRoleColumnMapItemVO;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.PermissionRoleColumnMapVO;
|
import com.nflg.mobilebroken.common.pojo.vo.PermissionRoleColumnMapVO;
|
||||||
import com.nflg.mobilebroken.repository.entity.AdminPermissionRoleColumnMap;
|
import com.nflg.mobilebroken.repository.entity.AdminPermissionRoleColumnMap;
|
||||||
import com.nflg.mobilebroken.repository.mapper.AdminPermissionRoleColumnMapMapper;
|
import com.nflg.mobilebroken.repository.mapper.AdminPermissionRoleColumnMapMapper;
|
||||||
|
|
@ -10,6 +13,7 @@ import com.nflg.mobilebroken.repository.service.IAdminPermissionRoleColumnMapSer
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
@ -25,13 +29,13 @@ public class AdminPermissionRoleColumnMapServiceImpl extends ServiceImpl<AdminPe
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PermissionRoleColumnMapVO> getList(Long id) {
|
public List<PermissionRoleColumnMapVO> getList(Long id) {
|
||||||
List<PermissionRoleColumnMapVO> all = baseMapper.getColumns();
|
List<PermissionRoleColumnMapDTO> all = baseMapper.getColumns();
|
||||||
List<PermissionRoleColumnMapVO> datas = baseMapper.getList(id);
|
List<PermissionRoleColumnMapDTO> datas = baseMapper.getList(id);
|
||||||
if (CollectionUtil.isEmpty(datas)) {
|
if (CollectionUtil.isEmpty(datas)) {
|
||||||
return all;
|
return convert(all);
|
||||||
}
|
}
|
||||||
datas.forEach(data -> {
|
datas.forEach(data -> {
|
||||||
List<PermissionRoleColumnMapVO> vos = all.stream()
|
List<PermissionRoleColumnMapDTO> vos = all.stream()
|
||||||
.filter(d -> Objects.equals(d.getTableId(), data.getTableId()))
|
.filter(d -> Objects.equals(d.getTableId(), data.getTableId()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
if (CollectionUtil.isNotEmpty(vos)) {
|
if (CollectionUtil.isNotEmpty(vos)) {
|
||||||
|
|
@ -44,6 +48,22 @@ public class AdminPermissionRoleColumnMapServiceImpl extends ServiceImpl<AdminPe
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return datas;
|
return convert(datas);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<PermissionRoleColumnMapVO> convert(List<PermissionRoleColumnMapDTO> datas) {
|
||||||
|
return datas.stream().collect(Collectors.groupingBy(PermissionRoleColumnMapDTO::getKey))
|
||||||
|
.entrySet()
|
||||||
|
.stream()
|
||||||
|
.map(it -> new PermissionRoleColumnMapVO()
|
||||||
|
.setTableId(Long.parseLong(StrUtil.split(it.getKey(), '-').get(0)))
|
||||||
|
.setTableName(StrUtil.split(it.getKey(), '-').get(1))
|
||||||
|
.setItems(it.getValue()
|
||||||
|
.stream()
|
||||||
|
.map(tt -> Convert.convert(PermissionRoleColumnMapItemVO.class, tt))
|
||||||
|
.collect(Collectors.toList())
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,12 @@
|
||||||
<mapper namespace="com.nflg.mobilebroken.repository.mapper.AdminPermissionApiMapper">
|
<mapper namespace="com.nflg.mobilebroken.repository.mapper.AdminPermissionApiMapper">
|
||||||
|
|
||||||
<select id="getListVO" resultType="com.nflg.mobilebroken.common.pojo.vo.PermissionApiItemVO">
|
<select id="getListVO" resultType="com.nflg.mobilebroken.common.pojo.vo.PermissionApiItemVO">
|
||||||
SELECT api.id as 'api_id', api.api_name, col.id as 'col_id', col.col_name, col.col_desc
|
SELECT api.id as 'api_id',aa.module_name, api.api_name as 'functionName',aa.name as 'apiName',col.id as 'col_id'
|
||||||
|
, col.col_name, col.col_desc
|
||||||
FROM admin_permission_api api
|
FROM admin_permission_api api
|
||||||
INNER JOIN admin_permission_api_item item ON api.id = item.api_id
|
INNER JOIN admin_permission_api_item item ON api.id = item.api_id
|
||||||
INNER JOIN admin_permission_column col ON item.col_id = col.id
|
INNER JOIN admin_permission_column col ON item.col_id = col.id
|
||||||
|
INNER JOIN admin_api aa ON aa.id=api.api_id
|
||||||
WHERE api.table_id = #{id}
|
WHERE api.table_id = #{id}
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -2,12 +2,12 @@
|
||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.nflg.mobilebroken.repository.mapper.AdminPermissionRoleColumnMapMapper">
|
<mapper namespace="com.nflg.mobilebroken.repository.mapper.AdminPermissionRoleColumnMapMapper">
|
||||||
|
|
||||||
<select id="getList" resultType="com.nflg.mobilebroken.common.pojo.vo.PermissionRoleColumnMapVO">
|
<select id="getList" resultType="com.nflg.mobilebroken.common.pojo.dto.PermissionRoleColumnMapDTO">
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM admin_permission_role_column_map
|
FROM admin_permission_role_column_map
|
||||||
where role_id = #{id}
|
where role_id = #{id}
|
||||||
</select>
|
</select>
|
||||||
<select id="getColumns" resultType="com.nflg.mobilebroken.common.pojo.vo.PermissionRoleColumnMapVO">
|
<select id="getColumns" resultType="com.nflg.mobilebroken.common.pojo.dto.PermissionRoleColumnMapDTO">
|
||||||
SELECT c.table_id, t.table_desc as 'table_name', c.col_name, c.col_desc
|
SELECT c.table_id, t.table_desc as 'table_name', c.col_name, c.col_desc
|
||||||
FROM admin_permission_table t
|
FROM admin_permission_table t
|
||||||
INNER JOIN admin_permission_column c ON t.id = c.table_id
|
INNER JOIN admin_permission_column c ON t.id = c.table_id
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue