楼层WAP\APP端支持开发文档
1 需求说明
1.1菜单调整
后台的页面菜单子菜单调整为:
| PC装修 | |
|---|---|
| 楼层模板 | 原功能不变 | 
| 楼层管理 | 原功能不变 | 
| 焦点图 | 原功能不变 | 
| 移动端装修 | |
| 楼层模板 | 管理移动端的楼层模板 | 
| 楼层管理 | 设计移动端的楼层 | 
| 焦点图 | 移动端的焦点图管理 | 
1.2移动端楼层模板管理
同PC端:
但是,从数据上,PC端和移动端的数据分开显示管理
1.1移动端楼层设计
点击移动端的“楼层设计”直接进入以下页面

1.3.1 区域介绍

模块选择区的模块列表就是“移动端楼层模板”的列表,图标使用同一的图标,文字是楼层模板的名称:

1.3.2 操作说明
1.3.2.1 模块选择
当鼠标悬停在某个模块时的效果:

1.3.2.2 模块新增
点击某模块时会在“页面编译预览区”的最下新增一个楼层

如上图所示,还可以对此模块进行排序和删除的操作。
1.3.2.3 内容编辑
对于模块内的区域鼠标移上去时,像PC一样有一个遮罩,点击这个遮罩也弹出和PC一样的选择器。
1.3.2.4 首页发布

点击“发布首页”按钮对数据进行保存,并生成首页的静态页。
2 开发说明
2.1.1数据库设计
2.1.1.1 es_cms_floor表
中文:楼层表
| Name | Code | Comment | DataType | Length | 
|---|---|---|---|---|
| 主键id | id | int(11) | 11 | |
| 模板id | tpl_id | int(11) | 11 | |
| 楼层名称 | name | varchar(255) | 255 | |
| 楼层排序 | sort | int(11) | 11 | |
| 是否显示 | is_display | 0:否,1:是 | int(1) | 1 | 
| 锚点文字 | anchor_word | 预留字段 | varchar(255) | 255 | 
| 锚点图标地址 | anchor_url | 预留字段 | varchar(255) | 255 | 
| 楼层颜色风格 | floor_color | 预留字段 | varchar(255) | 255 | 
| 客户端类型 | client_type | pc:pc楼层mobile:移动端楼层 | varchar(10) | 10 | 
2.1.1.2 es_cms_floor_panel表
中文:楼层面板表
原表:es_cms_floorcontent
| Name | Code | Comment | DataType | Length | 
|---|---|---|---|---|
| 主键id | id | int(11) | 11 | |
| 楼层id | floor_id | int(11) | 11 | |
| 楼层元数据 | panel_data | text | ||
| 模板id | panel_tpl_id | int(10) | 10 | |
| 排序 | sort | int(11) | 11 | |
| 面板名称 | panel_name | varchar(255) | 255 | |
2.1.1.3 es_cms_focuspic表
| Name | Code | Comment | DataType | Length | 
|---|---|---|---|---|
| 主键id | id | int(11) | 11 | |
| 图片地址 | pic_url | varchar(255) | 255 | |
| 操作类型 | operation_type | int(11) | 11 | |
| 操作参数 | operation_param | varchar(255) | 255 | |
| 操作地址 | operation_url | varchar(255) | 255 | |
| 客户端类型 | client_type | pc:pc楼层mobile:移动端楼层 | varchar(10) | 10 | 
2.1.1.4 es_cms_panel_tpl表
| Name | Code | Comment | DataType | Length | 
|---|---|---|---|---|
| 主键id | tpl_id | int(10) | 10 | |
| 模板类型 | tpl_type | int(10) | 10 | |
| 模板内容 | tpl_content | text | ||
| 模板名称 | tpl_name | varchar(255) | 255 | |
| 客户端类型 | client_type | pc:pc楼层mobile:移动端楼层 | varchar(10) | 10 | 
2.1.2包规划
主包名为:com.enation.app.cms,下面的包皆以此为父包:
一、楼层业务包
| floor | |
|---|---|
| model | 模型 | 
| enums | 存放枚举 | 
| floor | 楼层本身相关模型 | 
| po | po模型 | 
| vo | 装修所所需相应模型 | 
| controller | 控制器 | 
| service | 业务类接口 | 
| builder | 楼层构建器 | 
| impl | 业务类实现 | 
| tag | 标签 | 
二、焦点图业务包
| focuspic | |
|---|---|
| model | 模型 | 
| controller | 控制器 | 
| service | 业务类接口 | 
| impl | 业务类实现 | 
| tag | 
三、数据管理业务包
| data | |
|---|---|
| model | 模型 | 
| controller | 控制器 | 
| service | 业务类接口 | 
| impl | 业务类实现 | 
| event | 事件定义 | 
| component | 组件包 | 
| tag | 
2.2 包结构预览

2.3 全部类明细
2.4 移动端楼层模板的维护

其中标红色的是变化的,就是为读取列表加入了client_type,增和改也加了client_type。
要将Pc端口的楼层维护改为client_type用于传pc。
2.5 移动端楼层模板读取API
需求即列成下图中的效果:

要读取出这些移动端的楼层模板。
移动端的楼层模板不分主模板和普通模板,这是一个重要的概念。
2.5.1 读取时序图:
2.6 楼层新增API(已经存在,需要重构)
主要在FloorPo中新增了一个Client_type:

新增的时序图:

此api用于移动端的楼层新增。
2.7 后台装修数据构建
2.7.1 vo类图
楼层由floor,panel,layout,block构成,block分为品牌区块,手动选择商品区块,多图片区块,单图片区块,区块的类型在BlockType中。
2.7.2 构建器类图
2.7.3 时序图
上述逻辑在现有代码中,大部分已经实现,总体思路是通过建造者模式,一层层的构建元素(Block,Panel,Layout,Floor),最后形成Floor输出给前端,这个Floor是在如下大的体系中的一个模型:
此逻辑同时完成了pc和移动端的装修数据构建。
2.8 楼层装修数据保存

此逻辑比较简单,前端直接传递一个FloorDesign的Json对象至服务器端,服务器直接入库即可。
2.9 楼层数据页面展示
此逻辑需要重构FloorManager的getAllCmsFrontFloor方法,加入client_type参数来区分要展示PC端的楼层数据还是要展示移动端的楼层数据。

FloorManager总体类图:

2.10 业务类类图明细
2.11消息发送的重构
在楼层装修保存时发送AMQP消息
即在这个方法中:
com.enation.app.cms.floor.service.impl.FloorContentManager#design
要发送的消息在这里:
com.enation.app.base.AmqpExchange
里面有两个,一个是Pc的首页生成消息,一个是移动的首页生成消息。
根据floor的client_type判断来发相应的消息