From 10e94a47848df898c5b8fd7d32a31200159e187c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Sat, 28 Feb 2026 17:39:10 +0800 Subject: [PATCH] =?UTF-8?q?feat(permission):=20=E4=BC=98=E5=8C=96=E6=9D=83?= =?UTF-8?q?=E9=99=90=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=BB=93=E6=9E=84=E5=92=8C=E6=9F=A5=E8=AF=A2=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在AdminPermissionApiMapper.xml中添加admin_api表关联查询,增加module_name和functionName字段 - 将PermissionRoleColumnMapVO相关查询方法返回类型改为PermissionRoleColumnMapDTO - 创建新的PermissionRoleColumnMapDTO数据传输对象用于权限角色列映射 - 创建PermissionRoleColumnMapItemVO视图对象用于表单字段展示 - 修改FormController中的事务处理和表单新增逻辑 - 更新PermissionApiItemVO实体类,区分moduleName、functionName和apiName字段 - 重构AdminPermissionRoleColumnMapServiceImpl中的数据转换逻辑 - 添加数据库查询结果到VO对象的转换方法和分组处理机制 --- .../admin/controller/FormController.java | 22 ++++++++-- .../pojo/dto/PermissionRoleColumnMapDTO.java | 40 +++++++++++++++++++ .../pojo/request/FormApiSaveItemRequest.java | 2 +- .../common/pojo/vo/PermissionApiItemVO.java | 13 +++++- .../vo/PermissionRoleColumnMapItemVO.java | 26 ++++++++++++ .../pojo/vo/PermissionRoleColumnMapVO.java | 20 +++------- .../AdminPermissionRoleColumnMapMapper.java | 5 ++- ...minPermissionRoleColumnMapServiceImpl.java | 30 +++++++++++--- .../mapper/AdminPermissionApiMapper.xml | 4 +- .../AdminPermissionRoleColumnMapMapper.xml | 4 +- 10 files changed, 136 insertions(+), 30 deletions(-) create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/PermissionRoleColumnMapDTO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/PermissionRoleColumnMapItemVO.java diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/FormController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/FormController.java index 2b0103a8..d181fdd2 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/FormController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/FormController.java @@ -107,18 +107,32 @@ public class FormController extends ControllerBase { /** * 新增表单 */ + @Transactional @PostMapping("add") public void add(@Valid @RequestBody FormAddRequest request) { VUtils.trueThrowBusinessError(permissionTableService.lambdaQuery() .eq(AdminPermissionTable::getTableName, request.getTableName()) .exists() ).throwMessage("表单已存在"); - permissionTableService.save(new AdminPermissionTable() + AdminPermissionTable table=new AdminPermissionTable() .setTableName(request.getTableName()) .setTableDesc(request.getTableDesc()) .setRemark(request.getRemark()) .setCreateBy(AdminUserUtil.getUserName()) - .setCreateTime(LocalDateTime.now()) + .setCreateTime(LocalDateTime.now()); + permissionTableService.save(table); + List 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( items.stream().map(item -> new AdminPermissionApi() .setId(item.getId()) - .setApiName(item.getApiName()) + .setApiName(item.getFunctionName()) .setUpdateBy(AdminUserUtil.getUserName()) .setUpdateTime(LocalDateTime.now()) ).collect(Collectors.toList()) @@ -264,7 +278,7 @@ public class FormController extends ControllerBase { items1.stream().map(item -> new AdminPermissionApi() .setId(item.getId()) .setApiId(item.getApiId()) - .setApiName(item.getApiName()) + .setApiName(item.getFunctionName()) .setTableId(request.getTableId()) .setCreateBy(AdminUserUtil.getUserName()) .setCreateTime(LocalDateTime.now()) diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/PermissionRoleColumnMapDTO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/PermissionRoleColumnMapDTO.java new file mode 100644 index 00000000..3ed065f8 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/PermissionRoleColumnMapDTO.java @@ -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; + } +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/FormApiSaveItemRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/FormApiSaveItemRequest.java index e7333257..9a7317fb 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/FormApiSaveItemRequest.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/FormApiSaveItemRequest.java @@ -18,7 +18,7 @@ public class FormApiSaveItemRequest { /** * 功能名称 */ - private String apiName; + private String functionName; /** * 表单列ID diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/PermissionApiItemVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/PermissionApiItemVO.java index 796508ee..97b7605c 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/PermissionApiItemVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/PermissionApiItemVO.java @@ -8,10 +8,21 @@ public class PermissionApiItemVO { private Long apiId; /** - * 功能名称 + * 服务名称 + */ + private String moduleName; + + /** + * + * 方法名称 */ private String apiName; + /** + * 功能名称 + */ + private String functionName; + /** * 表单列ID */ diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/PermissionRoleColumnMapItemVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/PermissionRoleColumnMapItemVO.java new file mode 100644 index 00000000..7fd127ab --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/PermissionRoleColumnMapItemVO.java @@ -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; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/PermissionRoleColumnMapVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/PermissionRoleColumnMapVO.java index 225b37be..194c60b5 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/PermissionRoleColumnMapVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/PermissionRoleColumnMapVO.java @@ -1,12 +1,14 @@ package com.nflg.mobilebroken.common.pojo.vo; import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; @Data +@Accessors(chain = true) public class PermissionRoleColumnMapVO { - private Long id; - /** * 表单id */ @@ -18,17 +20,7 @@ public class PermissionRoleColumnMapVO { private String tableName; /** - * 列名称 + * 表单字段 */ - private String colName; - - /** - * 列描述 - */ - private String colDesc; - - /** - * 是否选中 - */ - private boolean selected = false; + private List items; } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/AdminPermissionRoleColumnMapMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/AdminPermissionRoleColumnMapMapper.java index a93651b1..067a7846 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/AdminPermissionRoleColumnMapMapper.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/AdminPermissionRoleColumnMapMapper.java @@ -1,6 +1,7 @@ package com.nflg.mobilebroken.repository.mapper; 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.repository.entity.AdminPermissionRoleColumnMap; @@ -15,7 +16,7 @@ import java.util.List; */ public interface AdminPermissionRoleColumnMapMapper extends BaseMapper { - List getList(Long id); + List getList(Long id); - List getColumns(); + List getColumns(); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminPermissionRoleColumnMapServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminPermissionRoleColumnMapServiceImpl.java index 431b3c02..7116faa9 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminPermissionRoleColumnMapServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminPermissionRoleColumnMapServiceImpl.java @@ -1,8 +1,11 @@ package com.nflg.mobilebroken.repository.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.StrUtil; 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.repository.entity.AdminPermissionRoleColumnMap; import com.nflg.mobilebroken.repository.mapper.AdminPermissionRoleColumnMapMapper; @@ -10,6 +13,7 @@ import com.nflg.mobilebroken.repository.service.IAdminPermissionRoleColumnMapSer import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; @@ -25,13 +29,13 @@ public class AdminPermissionRoleColumnMapServiceImpl extends ServiceImpl getList(Long id) { - List all = baseMapper.getColumns(); - List datas = baseMapper.getList(id); + List all = baseMapper.getColumns(); + List datas = baseMapper.getList(id); if (CollectionUtil.isEmpty(datas)) { - return all; + return convert(all); } datas.forEach(data -> { - List vos = all.stream() + List vos = all.stream() .filter(d -> Objects.equals(d.getTableId(), data.getTableId())) .collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(vos)) { @@ -44,6 +48,22 @@ public class AdminPermissionRoleColumnMapServiceImpl extends ServiceImpl convert(List 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()); } } diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/AdminPermissionApiMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminPermissionApiMapper.xml index b04d3f58..1866a86c 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/AdminPermissionApiMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminPermissionApiMapper.xml @@ -3,10 +3,12 @@ \ No newline at end of file diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/AdminPermissionRoleColumnMapMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminPermissionRoleColumnMapMapper.xml index 1482ca07..d0d3a3f9 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/AdminPermissionRoleColumnMapMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminPermissionRoleColumnMapMapper.xml @@ -2,12 +2,12 @@ - SELECT * FROM admin_permission_role_column_map where role_id = #{id} - SELECT c.table_id, t.table_desc as 'table_name', c.col_name, c.col_desc FROM admin_permission_table t INNER JOIN admin_permission_column c ON t.id = c.table_id