如何优雅的拓展用户部门字段 - xinwu-yang/cube-java GitHub Wiki
Since 2.5.x
- 从魔方代码库中,拉取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都必须和魔方版本要求一样
- 把模块加到 根 的 pom.xml 的 modules 中:
<modules>
<module>system-quick-start</module>
<module>cube-system-model</module>
<module>week-plan</module>
</modules>
到这一步,就以代码的方式替换了魔方默认的entity、model两个模块实现了。
-
在模块中修改SysUser、SysDepart,添加需要的表的扩展字段(注意与实际表对应一致),即可以在程序中使用添加的扩展字段了,包括增加、修改、删除、查询等操作,原魔方的API都可以正常使用,而无须再额外关联这些字段。
-
其它关联修改
在经过以上步骤后,已经可以实现基本的字段扩展了,但是因为某些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模块来源于魔方,但是这样集成后不再属于魔方,只属于本项目(或产品),由本工程自行维护,可以根据本项目(或产品)做完全自定义的修改。
理论上来说,除了用户与部门外,其它的表也可以通过以上方式进行字段扩展,但是,需要魔方保证核心代码没有硬写死的字段名的情况,所以一旦这样扩展后,并不能达到字段扩展的效果,请联系魔方开发小组。