[关闭]
@chenpbh 2018-06-13T05:34:10.000000Z 字数 3900 阅读 1082

车联网1.x+2.x模块化使用文档 V1.2

公共文档


变更历史

版本 日期 人员 变更内容
1.0 2018-03-06 陈鹏 版本初定义
1.1 2018-03-06 陈鹏 1、【2.1.2 资源菜单配置】去掉模块名模块,改为统一在application-xx.ymlserver.context-path配置,配置值/+模块名2、废除application-xx.yml的里的ucenter.serverPortucenter.clientPort,改为统一通过nginx分发避免跨域
1.2 2018-06-07 陈鹏 补充附录

1 概述

1.1 背景及现状

随着公司的车联网系统不断迭代开发,当前公司车联网的框架已不能快速应对客户提出的各种需求开发。当前主要存在如下几个问题:

1.2 模块化框架

该模块化设计是在基于车联网系统进行改造的,并没有采用CAS之类的现成单点登录方案,而是根据项目的实际情况,对原先项目进行改造,使其支持单点登录和模块化。为了支持上述特性,分别进行了如下几项工作:

image_1c7t98pi31us0mgl1e1mijaa1pm.png-46.5kB

2 基础业务模块

2.1 模块配置

2.1.1 用户中心配置

用户中心配置在application-xxx.yml文件中,配置项参见:

  1. ucenter:
  2. #serverPort: 8080 #用户中心对外开放端口,这里即车联网系统对外开放端口,因为原车网系统兼用户认证中心
  3. #clientPort: 88 #基础模块对外开放端口
  4. context-path: /module-demo
  5. cdn: http://127.0.0.1:8080 # 公共资源服务器,一般设为车联网外网地址即可。

2.1.2 资源菜单配置

资源菜单是通过xml文件进行配置,避免手工在系统中管理来的混乱。配置文件为 module-resource.xml,详细配置格式参见:

  1. <!-- name即为模块名,必须保证唯一性 -->
  2. <resource version="1.0" >
  3. <!-- 这里的parent-name指的是模块的上级菜单, icon即图标,order为顺序 -->
  4. <menu name="模块测试" parent-name="/" icon="" order="10">
  5. <menu name="列表页面" url="/demo/list" icon="" order="1">
  6. <button name="新增" url="/demo/add">
  7. </button>
  8. </menu>
  9. <menu name="图表页面" url="/demo/list1" icon="" order="2">
  10. </menu>
  11. </menu>
  12. </resource>

2.1.3 车联网配置

车联网系统需要将tomcat里的conf/context.xml配置更新一下,即配置sessionCookieName:

  1. <?xml version='1.0' encoding='utf-8'?>
  2. <Context sessionCookieName="UCENTER_SESSION_ID">
  3. .........
  4. </Context>

image_1c8cgvn2n1lctc0h120j1dr2vp9.png-73.5kB

2.2 模块常用操作

2.2.1 模块运行

模块采用的是Spring boot搭建,启动方式比较简单,直接右击运行Application即可。运行效果图如下:
image_1c7trohd3jbt17tluc51g8l7729.png-76.1kB
image_1c7ts2hev1m1qh308pb1sa91srnm.png-71.3kB

2.2.2 模块安装卸载

基础业务模块提供了简易的模块安装和卸载的接口,通过浏览器调用,可能实现模块的安装卸载。(模块信息在module-resource.xml配置)

2.2.2.1 查看模块信息

调用http://xxxx:xx/module/view即可以查看菜单资源的定义
image_1c7ttldt8nsqmvkl951j9h1rn72d.png-64.8kB

2.2.2.2 安装

调用http://xxxx:xx/module/install即可以对模块进行安装,每一次调用,都会先把模块的菜单资源清理再重新注册。

注意,安装只是将模块信息增加到车联网的模块管理中,用户如果想看到对应模块,需要给角色分配权限。

image_1c7ttjq1619851a78c8lifbm791j.png-19.8kB
image_1c7ttkcprdftss1f5m1ufq74d20.png-19.6kB

2.2.2.3 卸载

调用http://xxxx:xx/module/uninstall即可以对模块进行卸载,操作会将车网系统中的有关当前模块的菜单都清理完毕。

附录

A 常用实体介绍

A.1 用户个人信息

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
  1. public class WebUser implements Serializable{
  2. //用户ID
  3. private String id;
  4. //用户名
  5. private String username;
  6. //密码
  7. private String password;
  8. //姓名
  9. private String realName;
  10. //用户状态,1:可用
  11. private Integer state;
  12. //角色列表
  13. private Set<String> roles = new HashSet<>();
  14. //权限列表
  15. private Set<String> authorities = new HashSet<>();
  16. //附加信息
  17. private Map<String,Object> extData = new HashMap<>();
  18. }

B 常用工具类

B.1 Servlet工具类

com.bitnei.cloud.common.util.ServletUtil

参见模块化JavaDoc

C 导出文件

C.1 流程描述

Created with Raphaël 2.1.2开始1、编写MyBatis SQL语句2、业务层采集数据3、配置excel模板结束

在这里,以导出系统日志为示例:

1、编写mysql语句: 正常情况下,我们可以直接使用数据列表的sql语句,如下

  1. <!-- 分页查询 -->
  2. <select id="pagerModel" resultMap="tailResults" parameterType="java.util.HashMap">
  3. select
  4. <include refid="moreColumns"/>
  5. from
  6. base_log log
  7. where
  8. 1=1
  9. <if test="username != null">
  10. and log.username like "%"#{username}"%"
  11. </if>
  12. <if test="moudle != null">
  13. and log.moudle like "%"#{moudle}"%"
  14. </if>
  15. <if test="action != null">
  16. and log.action like "%"#{action}"%"
  17. </if>
  18. ORDER BY log.TIME DESC
  19. </select>

2、业务层采集数据: 如果模块代码是通过代码生成工具生成的,正常业务层代码是不需要改动的

  1. @Override
  2. public void export() {
  3. List list = findBySqlId("pagerModel",ServletUtil.getQueryParams());
  4. String srcBase = RequestContext.class.getResource("/templates/").getFile();
  5. String srcFile = srcBase +"module/base/log/export.xls";
  6. ExcelData ed = new ExcelData();
  7. ed.setTitle("日志管理");
  8. ed.setExportTime(DateUtil.getNow());
  9. ed.setData(list);
  10. String outName = String.format("%s-导出-%s.xls", "日志管理", DateUtil.getShortDate());
  11. EasyExcel.renderResponse(srcFile,outName,ed);
  12. }

3、配置excel模板: 框架的excel模板为export.xls,excel文件中共有两个sheet,一个为列定义,一个参数配置。详细的excel配置,将在下面章节进行描述。
image_1cfc4ife7cpglm5d5r1oho1m7u9.png-93.8kB
image_1cfc4k2rv1a5pgldq9f7ka1u1sm.png-49.3kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注