楼层装修架构设计
7.0楼层架构思路变化:
一、前端负责解析模板,后端只负责提供数据
二、模板内容不存储在服务器端
三、模板不再提供维护功能,如果客户需要要新增模板修改前端vue源码(定义模板、样式及渲染规则),并重新编译、部署
四、前端负责所有的交互体验(拖拽、添加、删除、排序),最后由统一保存(此时才和后端进行交互)
表设计
es_page表
Name | Code | Comment | DataType |
---|---|---|---|
主键id | page_id | int(11) | |
页面名称 | page_name | varchar(255) | |
页面数据 | page_data | longtext | |
页面类型 | page_type | INDEX/SPECIAL | varchar(50) |
客户端类型 | client_type | APP/WAP/PC | varchar(50) |
- 页面类型用来标识是首页还是专题页或其它类型
- 客户端类型用来标识是哪个端的
API规划
页面数据保存
路径
URL: | {managerdomain}/page/{page_id} |
---|---|
METHOD | PUT |
参数
参数 | 类型 | 说明 |
---|---|---|
page | json | 页面数据 |
参数示例
{
page_id:1,
page_name:"首页",
page_data:{ ... } //前端传啥,就保存啥
}
楼层数据模型
整个楼层数据格式为json,最外层为数组,数组内每个元素为一个楼层。
tlp_id:模板id,
blockList:这个楼层的区块
block_type:区块类型
block_value:区块的值
区块类型 | 区块备注 |
---|---|
GOODS | 商品 |
BRAND | 品牌 |
IMAGE | 图片类型 |
SWIPER | 轮播图 |
TEXT | 文本 |
[
{
"tpl_id":23,
"blockList":[
{
"block_type":"IMAGE",
"block_value":"http://javashop-statics.oss-cn-beijing.aliyuncs.com/demo/56256727.jpg"
}
]
},
{
"tpl_id":24,
"blockList":[
{
"block_type":"GOODS",
"block_value": {
"goods_id":322,
"goods_name":"促销商品K",
"sn":"0074",
"goods_image":"http://javashop-statics.oss-cn-beijing.aliyuncs.com/demo/E1EE42BA506F4A2895B449F661D1644B.jpg_300x300",
"enable_quantity":100,
"quantity":100,
"price":100.0,
"create_time":1517815032,
"market_enable":1,
"brand_name":"蜜饯",
"category_name":"蜜饯"
}
}
]
},
{
"tpl_id":27,
"blockList":[
{
"block_type":"IMAGE",
"block_value":"http://javashop-statics.oss-cn-beijing.aliyuncs.com/test/null/4D928A6DABE74EF5A78C2A2E2F5764F7.GIF",
"block_opt":{
"opt_type":"keyword",
"opt_value":"关键字",
"opt_detail":"这是个关键字类型"
}
},
{
"block_type":"IMAGE",
"block_value":""
}
]
}
]
返回值
正确
同入参数
错误
相应错误信息
页面数据获取
路径
URL: | {managerdomain}/page/{page_id} |
---|---|
METHOD | GET |
返回值
{
page_id:1,
page_name:"首页",
page_data:{ ... }
}
逻辑说明
品牌和商品类型的区块数据,要进行数据读取后,将数据刷新再输出给客户端(这最终是静态生成器,页面最终展示给实际用户是通过nginx+lua由redis中获取的页面)