在上一文中,我们将原系统的部门管理改为了公司组织架构管理,并且为油站做了标识,但没有一个专门的模块来做油站信息维护和管理,本文将创建油站扩展表来管理油站的扩展信息。
站点配置功能分析
对于一个油站来说,我们通常需要记录油站号、油站名称、联系人、联系电话、油站状态(停用/启用)、经纬度(微信定位使用)、地址、油枪数量这些基本信息,在组织架构中已有组织ID、组织名称、联系人、联系电话、邮箱、状态,这几个字段可以直接复用,那么另外我们需要创建一张扩展表来保存剩余的信息。
对于站点配置这个功能来说,我们需要一个独立的菜单入口,同时也只有该操作权限的用户可以看到站点配置菜单,同时也只能查看和修改已授权的油站信息。
站点配置功能实现
1.添加代码模块
为了油站系统添加独立模块,将代码放在这个模块中,具体添加模块步骤请参考若依官网文档->后台手册->新增子模块章节,添加后的项目结构如图:
2.创建扩展表
根据上面的功能分析,需在数据库中创建扩展表,创建表语句整理如下:
CREATETABLE`biz_dept_ext`(
`dept_id`BIGINTNOTNULLCOMMENT'油站id',
`lng`DECIMAL(12,3)DEFAULTNULLCOMMENT'经度',
`lat`DECIMAL(12,3)DEFAULTNULLCOMMENT'纬度',
`address`VARCHAR(200)DEFAULT''COMMENT'油站地址',
`noz_cnt`INTDEFAULT'0'COMMENT'油枪数量',
`update_time`DATETIMEDEFAULTNULLCOMMENT'更新时间',
PRIMARYKEY(`dept_id`)
)ENGINE=INNODBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_general_ciCOMMENT='站点扩展信息'
3.生成业务代码
将数据表创建完成后,打开若依界面,选择系统工具->代码生成,点击“导入”按钮,在弹出框中选择刚创建的扩展表,如下图:
4.添加系统菜单
修改deptextMenu.sql文件,删除新增、删除、导出功能权限并执行,修改后结果如下:
-- 菜单 SQL
INSERTINTOsys_menu(menu_name,parent_id,order_num,path,component,is_frame,is_cache,menu_type,visible,STATUS,perms,icon,create_by,create_time,update_by,update_time,remark)
VALUES('站点设置','2000','1','deptext','nxx/deptext/index',1,0,'C','0','0','nxx:deptext:list','#','admin',SYSDATE(),'',NULL,'站点设置菜单');
-- 按钮父菜单ID
SELECT@parentId:=LAST_INSERT_ID();
-- 按钮 SQL
INSERTINTOsys_menu(menu_name,parent_id,order_num,path,component,is_frame,is_cache,menu_type,visible,STATUS,perms,icon,create_by,create_time,update_by,update_time,remark)
VALUES('站点设置查询',@parentId,'1','#','',1,0,'F','0','0','nxx:deptext:query','#','admin',SYSDATE(),'',NULL,'');
INSERTINTOsys_menu(menu_name,parent_id,order_num,path,component,is_frame,is_cache,menu_type,visible,STATUS,perms,icon,create_by,create_time,update_by,update_time,remark)
VALUES('站点设置修改',@parentId,'3','#','',1,0,'F','0','0','nxx:deptext:edit','#','admin',SYSDATE(),'',NULL,'');
5.添加业务代码
为了提高代码的复用度,将domain和mapper目录下的文件复制到ruoyi-nxx-dao项目中,将service和controller代码复制到ruoyi-nxx-mgr项目中,如图:
6.修改实体类和查询语句
修改BizDeptExt.java,添加已存在的站点字段,并修改BizDeotExtMapper.xml中的查询语句,结果如下:
@TableField(exist=false)
privateStringdeptName;
@TableField(exist=false)
privateStringleader;
@TableField(exist=false)
privateStringphone;
@TableField(exist=false)
privateStringemail;
@TableField(exist=false)
privateIntegerstatus;
SELECTd.dept_id,d.dept_name,d.`leader`,d.`phone`,d.`email`,d.`status`,de.*
FROMsys_dept d
LEFTJOINbiz_dept_ext deONd.dept_id=de.dept_id
d.`del_flag`='0'ANDd.`is_station`=1
andlocate(#{deptName},d.dept_name) >0
andlocate(#{address},de.address) >0 ${params.dataScope}
7.添加数据权限注解
修改BizDeptExtServiceImpl.java中selectBizDeptExtList方法,添加数据权限注解,结果如下:
/**
* 查询站点设置列表
* @param bizDeptExt 站点设置
* @return 站点设置
*/
@Override
@DataScope(deptAlias="d")
publicList
selectBizDeptExtList(BizDeptExtbizDeptExt) { returnbizDeptExtMapper.selectBizDeptExtList(bizDeptExt);
}
将生成代码中vue目录下的api和views目录复制到ruoyi-ui下src目录,修改nxx/deptext/index.vue页面,列表上方的批量操作按钮,并修改列表字段,效果如下:
至此,站点信息配置已完成,并且保留了数据权限控制。