feat(form): 添加表单管理功能

- 在AdminApi实体中新增code字段用于标识
- 为ApiMark注解添加code属性
- 修改代码生成器测试配置,更新表名过滤规则
- 创建DescVO数据传输对象用于名称描述信息
- 新增FormAddRequest和FormUpdateRequest请求对象
- 实现FormController控制器提供表单管理接口
- 添加TableInfoService服务用于获取表和列信息
- 创建AdminPermissionTable实体及相关数据库操作组件
- 在接口保存时添加code字段的设置逻辑
This commit is contained in:
曹鹏飞 2026-01-08 14:36:54 +08:00
parent 0c792869ba
commit 57aadf6161
15 changed files with 278 additions and 7 deletions

View File

@ -13,5 +13,7 @@ public @interface ApiMark {
String moduleName() default "";
String code() default "";
boolean isPublic() default false;
}

View File

@ -0,0 +1,85 @@
package com.nflg.mobilebroken.admin.controller;
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.util.AdminUserUtil;
import com.nflg.mobilebroken.common.util.VUtils;
import com.nflg.mobilebroken.repository.entity.AdminPermissionTable;
import com.nflg.mobilebroken.repository.service.IAdminPermissionTableService;
import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.time.LocalDateTime;
import java.util.List;
/**
* 数据权限表单相关接口
*
* @author 曹鹏飞
**/
@RestController
@RequestMapping("/form")
public class FormController extends ControllerBase {
@Resource
private TableInfoService tableInfoService;
@Resource
private IAdminPermissionTableService permissionTableService;
/**
* 获取表列表
*/
@GetMapping("getTables")
@MethodInfoMark(value = "获取表列表", menuName = "表单管理")
@ApiMark(moduleName = "表单管理", apiName = "获取表列表")
public ApiResult<List<DescVO>> getTables() {
return ApiResult.success(tableInfoService.getTableInfos());
}
/**
* 获取列列表
*/
@GetMapping("getTableColumns")
@MethodInfoMark(value = "获取列列表", menuName = "表单管理")
@ApiMark(moduleName = "表单管理", apiName = "获取列列表")
public ApiResult<List<DescVO>> getTableColumnInfos(@RequestParam String tableName) {
return ApiResult.success(tableInfoService.getTableColumnInfos(tableName));
}
/**
* 新增表单
*/
@PostMapping("add")
public void add(@Valid @RequestBody FormAddRequest request) {
VUtils.trueThrowBusinessError(permissionTableService.lambdaQuery()
.eq(AdminPermissionTable::getTableName, request.getTableName())
.exists()
).throwMessage("表单已存在");
permissionTableService.save(new AdminPermissionTable()
.setTableName(request.getTableName())
.setTableDesc(request.getTableDesc())
.setCreateBy(AdminUserUtil.getUserName())
.setCreateTime(LocalDateTime.now())
);
}
/**
* 修改表单
*/
@PostMapping("update")
public void update(@Valid @RequestBody FormUpdateRequest request) {
permissionTableService.lambdaUpdate()
.set(AdminPermissionTable::getTableDesc, request.getTableDesc())
.set(AdminPermissionTable::getUpdateBy, AdminUserUtil.getUserName())
.set(AdminPermissionTable::getUpdateTime, LocalDateTime.now())
.eq(AdminPermissionTable::getId, request.getId())
.update();
}
}

View File

@ -1,11 +1,11 @@
package com.nflg.mobilebroken.admin.service;
import com.nflg.mobilebroken.common.pojo.vo.DescVO;
import com.nflg.mobilebroken.repository.mapper.TableMetaMapper;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@Component
public class TableInfoService {
@ -13,7 +13,11 @@ public class TableInfoService {
@Resource
private TableMetaMapper tableMetaMapper;
public List<Map<String, Object>> getTableColumnInfos(String tableName) {
public List<DescVO> getTableInfos() {
return tableMetaMapper.getTableMeta();
}
public List<DescVO> getTableColumnInfos(String tableName) {
return tableMetaMapper.getTableColumnMeta(tableName);
}
}

View File

@ -83,6 +83,7 @@ public class ControllerTest {
api = new AdminApi()
.setName(mark.apiName())
.setModuleName(mark.moduleName())
.setCode(mark.code())
.setIsPublic(mark.isPublic())
.setUrl(url);
adminApiService.save(api);

View File

@ -0,0 +1,21 @@
package com.nflg.mobilebroken.common.pojo.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class FormAddRequest {
/**
* 表名
*/
@NotBlank
private String tableName;
/**
* 表描述
*/
@NotBlank
private String tableDesc;
}

View File

@ -0,0 +1,14 @@
package com.nflg.mobilebroken.common.pojo.request;
import lombok.Data;
@Data
public class FormUpdateRequest {
private Long id;
/**
* 表描述
*/
private String tableDesc;
}

View File

@ -0,0 +1,17 @@
package com.nflg.mobilebroken.common.pojo.vo;
import lombok.Data;
@Data
public class DescVO {
/**
* 名称
*/
private String name;
/**
* 描述
*/
private String desc;
}

View File

@ -38,6 +38,11 @@ public class AdminApi implements Serializable {
*/
private String name;
/**
* 标识
*/
private String code;
/**
* 接口地址
*/

View File

@ -0,0 +1,58 @@
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_table")
public class AdminPermissionTable implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
/**
* 表名
*/
private String tableName;
/**
* 表描述
*/
private String tableDesc;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 最后更新人
*/
private String updateBy;
/**
* 最后更新时间
*/
private LocalDateTime updateTime;
}

View File

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

View File

@ -1,15 +1,22 @@
package com.nflg.mobilebroken.repository.mapper;
import com.nflg.mobilebroken.common.pojo.vo.DescVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
public interface TableMetaMapper {
@Select("SELECT COLUMN_NAME as name, COLUMN_COMMENT as comment " +
@Select("SELECT TABLE_NAME as `name`, IF(CHAR_LENGTH(TABLE_COMMENT)=0,TABLE_NAME,TABLE_COMMENT) as `desc` " +
"FROM information_schema.TABLES " +
"WHERE TABLE_SCHEMA = DATABASE()"
)
List<DescVO> getTableMeta();
@Select("SELECT COLUMN_NAME as `name`,IF(CHAR_LENGTH(COLUMN_COMMENT)=0,COLUMN_NAME,COLUMN_COMMENT) as `desc` " +
"FROM information_schema.COLUMNS " +
"WHERE TABLE_NAME = #{tableName}")
List<Map<String, Object>> getTableColumnMeta(@Param("tableName") String tableName);
"WHERE TABLE_NAME = #{tableName}"
)
List<DescVO> getTableColumnMeta(@Param("tableName") String tableName);
}

View File

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

View File

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

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.AdminPermissionTableMapper">
</mapper>

View File

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