feat(form): 完善表单管理功能

- 在AdminPermissionTable实体中新增remark字段用于备注信息
- 在FormAddRequest和FormUpdateRequest请求对象中添加remark字段
- 新增FormColumnVO数据传输对象用于返回表单列信息
- 添加AdminPermissionColumn实体及相关数据库操作组件
- 实现删除表单及关联列数据的功能
- 实现获取表单列信息的功能,支持动态列信息展示
- 修改代码生成器配置以包含admin_permission_column表的生成
- 更新表单创建和修改逻辑以处理备注字段的存储
This commit is contained in:
曹鹏飞 2026-01-09 18:07:58 +08:00
parent 57aadf6161
commit 01753966ac
11 changed files with 230 additions and 2 deletions

View File

@ -1,26 +1,34 @@
package com.nflg.mobilebroken.admin.controller;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import com.nflg.mobilebroken.admin.annotation.ApiMark;
import com.nflg.mobilebroken.admin.service.TableInfoService;
import com.nflg.mobilebroken.common.pojo.ApiResult;
import com.nflg.mobilebroken.common.pojo.request.FormAddRequest;
import com.nflg.mobilebroken.common.pojo.request.FormUpdateRequest;
import com.nflg.mobilebroken.common.pojo.vo.DescVO;
import com.nflg.mobilebroken.common.pojo.vo.FormColumnVO;
import com.nflg.mobilebroken.common.util.AdminUserUtil;
import com.nflg.mobilebroken.common.util.VUtils;
import com.nflg.mobilebroken.repository.entity.AdminPermissionColumn;
import com.nflg.mobilebroken.repository.entity.AdminPermissionTable;
import com.nflg.mobilebroken.repository.service.IAdminPermissionColumnService;
import com.nflg.mobilebroken.repository.service.IAdminPermissionTableService;
import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* 数据权限表单相关接口
*
* @author 曹鹏飞
**/
@RestController
@ -33,6 +41,9 @@ public class FormController extends ControllerBase {
@Resource
private IAdminPermissionTableService permissionTableService;
@Resource
private IAdminPermissionColumnService permissionColumnService;
/**
* 获取表列表
*/
@ -65,6 +76,7 @@ public class FormController extends ControllerBase {
permissionTableService.save(new AdminPermissionTable()
.setTableName(request.getTableName())
.setTableDesc(request.getTableDesc())
.setRemark(request.getRemark())
.setCreateBy(AdminUserUtil.getUserName())
.setCreateTime(LocalDateTime.now())
);
@ -77,9 +89,46 @@ public class FormController extends ControllerBase {
public void update(@Valid @RequestBody FormUpdateRequest request) {
permissionTableService.lambdaUpdate()
.set(AdminPermissionTable::getTableDesc, request.getTableDesc())
.set(AdminPermissionTable::getRemark, request.getRemark())
.set(AdminPermissionTable::getUpdateBy, AdminUserUtil.getUserName())
.set(AdminPermissionTable::getUpdateTime, LocalDateTime.now())
.eq(AdminPermissionTable::getId, request.getId())
.update();
}
/**
* 删除表单
*/
@PostMapping("delete")
@Transactional
public void delete(@RequestBody @NotNull Long id) {
permissionTableService.removeById(id);
permissionColumnService.lambdaUpdate()
.eq(AdminPermissionColumn::getTableId, id)
.remove();
}
/**
* 获取表单列
*/
@GetMapping("getFormColumns")
public ApiResult<List<FormColumnVO>> getFormColumns(@RequestParam Long id) {
AdminPermissionTable table = permissionTableService.getById(id);
VUtils.trueThrowBusinessError(Objects.isNull(table)).throwMessage("表不存在");
List<DescVO> columns = tableInfoService.getTableColumnInfos(table.getTableName());
List<AdminPermissionColumn> cols = permissionColumnService.lambdaQuery()
.eq(AdminPermissionColumn::getTableId, id)
.list();
return ApiResult.success(
columns.stream().map(col -> {
AdminPermissionColumn dc = cols.stream()
.filter(c -> StrUtil.equals(c.getColName(), col.getName()))
.findFirst()
.orElse(null);
return Objects.nonNull(dc) ? Convert.convert(FormColumnVO.class, dc) : new FormColumnVO()
.setColName(col.getName())
.setColDesc(col.getDesc());
}).collect(Collectors.toList())
);
}
}

View File

@ -18,4 +18,9 @@ public class FormAddRequest {
*/
@NotBlank
private String tableDesc;
/**
* 备注
*/
private String remark;
}

View File

@ -11,4 +11,9 @@ public class FormUpdateRequest {
* 表描述
*/
private String tableDesc;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,43 @@
package com.nflg.mobilebroken.common.pojo.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
@Data
@Accessors(chain = true)
public class FormColumnVO {
private Long id;
/**
* 列名
*/
private String colName;
/**
* 列描述
*/
private String colDesc;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 最后更新人
*/
private String updateBy;
/**
* 最后更新时间
*/
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,67 @@
package com.nflg.mobilebroken.repository.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
*
* </p>
* @author 代码生成器生成
* @since 2026
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("admin_permission_column")
public class AdminPermissionColumn implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
/**
* 表id
*/
private Long tableId;
/**
* 列名
*/
private String colName;
/**
* 列描述
*/
private String colDesc;
/**
* 返回给前端的字段名称
*/
private String colCode;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 最后更新人
*/
private String updateBy;
/**
* 最后更新时间
*/
private LocalDateTime updateTime;
}

View File

@ -36,6 +36,11 @@ public class AdminPermissionTable implements Serializable {
*/
private String tableDesc;
/**
* 备注
*/
private String remark;
/**
* 创建人
*/

View File

@ -0,0 +1,15 @@
package com.nflg.mobilebroken.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nflg.mobilebroken.repository.entity.AdminPermissionColumn;
/**
* <p>
* Mapper 接口
* </p>
* @author 代码生成器生成
* @since 2026
*/
public interface AdminPermissionColumnMapper extends BaseMapper<AdminPermissionColumn> {
}

View File

@ -0,0 +1,15 @@
package com.nflg.mobilebroken.repository.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.mobilebroken.repository.entity.AdminPermissionColumn;
/**
* <p>
* 服务类
* </p>
* @author 代码生成器生成
* @since 2026
*/
public interface IAdminPermissionColumnService extends IService<AdminPermissionColumn> {
}

View File

@ -0,0 +1,19 @@
package com.nflg.mobilebroken.repository.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.mobilebroken.repository.entity.AdminPermissionColumn;
import com.nflg.mobilebroken.repository.mapper.AdminPermissionColumnMapper;
import com.nflg.mobilebroken.repository.service.IAdminPermissionColumnService;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
* @author 代码生成器生成
* @since 2026
*/
@Service
public class AdminPermissionColumnServiceImpl extends ServiceImpl<AdminPermissionColumnMapper, AdminPermissionColumn> implements IAdminPermissionColumnService {
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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.AdminPermissionColumnMapper">
</mapper>

View File

@ -33,7 +33,7 @@ public class CodeGeneratorTest {
, Paths.get(System.getProperty("user.dir")) + "/src/main/resources/mapper"))
)
.strategyConfig(builder -> {
builder.addInclude("admin_permission_table") //只生成指定表
builder.addInclude("admin_permission_column") //只生成指定表
.entityBuilder()
.enableLombok()
.enableChainModel()