@chenpbh
2018-06-13T05:34:10.000000Z
字数 3900
阅读 1415
公共文档
| 版本 | 日期 | 人员 | 变更内容 |
|---|---|---|---|
| 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-democdn: 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{//用户IDprivate 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"/>frombase_log logwhere1=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、业务层采集数据: 如果模块代码是通过代码生成工具生成的,正常业务层代码是不需要改动的
@Overridepublic 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配置,将在下面章节进行描述。
