@chenpbh
2018-06-13T05:34:10.000000Z
字数 3900
阅读 1082
公共文档
版本 | 日期 | 人员 | 变更内容 |
---|---|---|---|
1.0 | 2018-03-06 | 陈鹏 | 版本初定义 |
1.1 | 2018-03-06 | 陈鹏 | 1、【2.1.2 资源菜单配置】去掉模块名模块,改为统一在application-xx.yml 的server.context-path 配置,配置值/+模块名 2、废除application-xx.yml 的里的ucenter.serverPort 和ucenter.clientPort ,改为统一通过nginx分发避免跨域 |
1.2 | 2018-06-07 | 陈鹏 | 补充附录 |
随着公司的车联网系统不断迭代开发,当前公司车联网的框架已不能快速应对客户提出的各种需求开发。当前主要存在如下几个问题:
该模块化设计是在基于车联网系统进行改造的,并没有采用CAS之类的现成单点登录方案,而是根据项目的实际情况,对原先项目进行改造,使其支持单点登录和模块化。为了支持上述特性,分别进行了如下几项工作:
用户中心配置在application-xxx.yml文件中,配置项参见:
ucenter:
#serverPort: 8080 #用户中心对外开放端口,这里即车联网系统对外开放端口,因为原车网系统兼用户认证中心
#clientPort: 88 #基础模块对外开放端口
context-path: /module-demo
cdn: http://127.0.0.1:8080 # 公共资源服务器,一般设为车联网外网地址即可。
资源菜单是通过xml文件进行配置,避免手工在系统中管理来的混乱。配置文件为 module-resource.xml
,详细配置格式参见:
<!-- name即为模块名,必须保证唯一性 -->
<resource version="1.0" >
<!-- 这里的parent-name指的是模块的上级菜单, icon即图标,order为顺序 -->
<menu name="模块测试" parent-name="/" icon="" order="10">
<menu name="列表页面" url="/demo/list" icon="" order="1">
<button name="新增" url="/demo/add">
</button>
</menu>
<menu name="图表页面" url="/demo/list1" icon="" order="2">
</menu>
</menu>
</resource>
车联网系统需要将tomcat里的conf/context.xml配置更新一下,即配置sessionCookieName:
<?xml version='1.0' encoding='utf-8'?>
<Context sessionCookieName="UCENTER_SESSION_ID">
.........
</Context>
模块采用的是Spring boot搭建,启动方式比较简单,直接右击运行Application即可。运行效果图如下:
基础业务模块提供了简易的模块安装和卸载的接口,通过浏览器调用,可能实现模块的安装卸载。(模块信息在module-resource.xml配置)
调用http://xxxx:xx/module/view
即可以查看菜单资源的定义
调用http://xxxx:xx/module/install
即可以对模块进行安装,每一次调用,都会先把模块的菜单资源清理再重新注册。
注意,安装只是将模块信息增加到车联网的模块管理中,用户如果想看到对应模块,需要给角色分配权限。
调用http://xxxx:xx/module/uninstall
即可以对模块进行卸载,操作会将车网系统中的有关当前模块的菜单都清理完毕。
com.bitnei.commons.bean.WebUser
序号 | 名称 | 属性名 | 数据类型 | 示例 |
1 | 用户ID | id | String | 1111111 |
2 | 用户名 | username | String | admin |
3 | 密码 | password | String | AES加密字符串 |
4 | 姓名 | realName | String | 张三 |
5 | 状态 | state | Integer | 1,1:可用 0:禁用 |
6 | 角色集合 | roles | `Set` | |
7 | 权限集合 | authorities | `Set` | |
8 | 当前角色ID | extData.curRoleId | String | |
9 | 区域ID | extData.areaId | String | |
10 | 角色级别 | extData.roleType | Integer | 0: 普通用户, 1:单位管理员,2:区域管理员 |
11 | 单位ID | extData.unitId | Integer |
public class WebUser implements Serializable{
//用户ID
private String id;
//用户名
private String username;
//密码
private String password;
//姓名
private String realName;
//用户状态,1:可用
private Integer state;
//角色列表
private Set<String> roles = new HashSet<>();
//权限列表
private Set<String> authorities = new HashSet<>();
//附加信息
private Map<String,Object> extData = new HashMap<>();
}
com.bitnei.cloud.common.util.ServletUtil
在这里,以导出系统日志为示例:
1、编写mysql语句: 正常情况下,我们可以直接使用数据列表的sql语句,如下
<!-- 分页查询 -->
<select id="pagerModel" resultMap="tailResults" parameterType="java.util.HashMap">
select
<include refid="moreColumns"/>
from
base_log log
where
1=1
<if test="username != null">
and log.username like "%"#{username}"%"
</if>
<if test="moudle != null">
and log.moudle like "%"#{moudle}"%"
</if>
<if test="action != null">
and log.action like "%"#{action}"%"
</if>
ORDER BY log.TIME DESC
</select>
2、业务层采集数据: 如果模块代码是通过代码生成工具生成的,正常业务层代码是不需要改动的
@Override
public void export() {
List list = findBySqlId("pagerModel",ServletUtil.getQueryParams());
String srcBase = RequestContext.class.getResource("/templates/").getFile();
String srcFile = srcBase +"module/base/log/export.xls";
ExcelData ed = new ExcelData();
ed.setTitle("日志管理");
ed.setExportTime(DateUtil.getNow());
ed.setData(list);
String outName = String.format("%s-导出-%s.xls", "日志管理", DateUtil.getShortDate());
EasyExcel.renderResponse(srcFile,outName,ed);
}
3、配置excel模板: 框架的excel模板为export.xls
,excel文件中共有两个sheet,一个为列定义,一个参数配置。详细的excel配置,将在下面章节进行描述。