如何优雅的拓展用户部门字段 - xinwu-yang/cube-java GitHub Wiki

Since 2.5.x

操作步骤

  1. 从魔方代码库中,拉取cube-system-model模块的代码,模块原样放入工程中,修改模块的 pom.xml 文件,如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>base-model</artifactId>
    <!-- ------改动开始------ -->
    <groupId>com.tievd.cube.base</groupId>
    <version>2.5.0</version>

    <parent>
        <artifactId>cube-quick-start</artifactId>
        <groupId>com.tievd.cube</groupId>
        <version>1.0.0</version>
    </parent>
    <!-- ------改动结束------ -->
    <!-- ------其余省略------ -->
</project>

这里需要注意:artifactId、groupId和version都必须和魔方版本要求一样

  1. 把模块加到 pom.xmlmodules 中:
<modules>
    <module>system-quick-start</module>
    <module>cube-system-model</module>
    <module>week-plan</module>
</modules>

到这一步,就以代码的方式替换了魔方默认的entity、model两个模块实现了。

  1. 在模块中修改SysUser、SysDepart,添加需要的表的扩展字段(注意与实际表对应一致),即可以在程序中使用添加的扩展字段了,包括增加、修改、删除、查询等操作,原魔方的API都可以正常使用,而无须再额外关联这些字段。

  2. 其它关联修改

在经过以上步骤后,已经可以实现基本的字段扩展了,但是因为某些API接口的输出并不直接是SysUser和SysDepart,而是由其复制后形成的DTO对象,所以要保证接口返回的对象中包含扩展字段,还需要做一些必要修改,这些修改取决于具体的API接口,可能并不是必须的。

下表显示了相关的可能需要修改的对象结构:

对象类型 entity类 DTO类
用户 SysUser LoginUser
用户,部门 SysUser,SysDepart SysUserSysDepartModel
用户,部门 SysUser,SysDepart SysUserDepVo
部门 SysDepart SysDepartModel
部门 SysDepart SysDepartTreeModel

注意:因为DTO对象是经过copyProperties函数处理的,所要DTO对象中添加的字段应该与SysUser或SysDepart中添加的字段一致,否则可能不能复制。另外,如果API请求结果中没有预期的扩展字段,也可以看下是否有关联的对象需要添加扩展字段。

工作原理

因为魔方采用MyBatis-Plus实现,对象到数据表的映射通过Entity实现,而我们以代码方式集成cube-system-model模块后,maven保证编译时,采用我们自定义的代码模块替换魔方默认的这两个模块,且魔方核心代码保证没有硬写死的字段名,从而实现扩展字段的目的。这样,可以在不修改魔方核心代码的情况下,实现字段扩展。cube-system-model模块来源于魔方,但是这样集成后不再属于魔方,只属于本项目(或产品),由本工程自行维护,可以根据本项目(或产品)做完全自定义的修改。

更多表的拓展

理论上来说,除了用户与部门外,其它的表也可以通过以上方式进行字段扩展,但是,需要魔方保证核心代码没有硬写死的字段名的情况,所以一旦这样扩展后,并不能达到字段扩展的效果,请联系魔方开发小组。

⚠️ **GitHub.com Fallback** ⚠️