8 Star 9 Fork 4

gpress / gpress

Create your Gitee Account
Explore and code with more than 8 million developers,Free private repositories !:)
Sign up
Clone or Download
README.md 10.83 KB
Copy Edit Web IDE Raw Blame History
springrain authored 2023-03-25 15:00 . 修改默认模型

gpress

介绍

云原生高性能内容平台,基于Hertz + Go template + Bleve全文检索实现,100M内存即可完美运行
默认端口660 开发时需要先解压gpressdatadir/dict.zip

功能说明:

  • 后台就一种用户,登录就是管理员,菜单路由写死,不需要权限分配
  • 记录登录失败的次数,密码连续错误5次屏蔽账号10分钟,防止暴力登录
  • 全文检索产生的文件,用户上传的文件,站点的模板文件放到外部目录
  • 后台提供网站导航菜单管理,广告位管理,底部footer条管理,新闻资讯管理和表单提交管理. 模板暂不提供在线编辑功能,开发人员编辑好上传到指定目录.
  • 因为使用nosql(全文检索),所以文章的属性字段可以随意添加,code用于检索,中文name用于显示.

软件架构

使用 Hertz + Go template + Bleve全文检索,不使用数据库

不使用struct对象,全部使用map保存数据,可以随时增加属性字段.记录所有字段的名称,类型,中文名,code

模型的字段属性也是map,应用的文章回把模型的map属性全部取出,和自己的map覆盖合并.

数据结构

所有的数据结构都使用Map实现,不再使用struct.因使用Bleve做NoSQL数据库,所以map可以任意添加字段.
所有不需要分词的字符串,Mapping.Analyzer = keyword.Name 指定为keyword分词器.这样就可以类似数据库 name=value 作为精确的查询条件了.
值使用逗号(,)隔开,使用 commaAnalyzerName 分词器,实现类似sql in 的效果.

在IndexInfo表里设置indexType='module',记录所有的Module.只是记录,并不创建index,全部保存到context里,用于全局检索

ID默认使用时间戳(23位)+随机数(9位),全局唯一

索引信息(索引名:indexInfo)

codeName 类型 中文名称 是否分词 备注
id string 主键 -
code string 索引Code -
name string 索引名称 -
indexType string 索引类型 index:索引. module:模型
createTime time.Time 创建时间 - 2006-01-02 15:04:05
ipdateTime time.Time 更新时间 - 2006-01-02 15:04:05
createUser string 创建人 - 初始化 system
sortNo int 排序 - 正序
active int 是否有效 - 无效(0),正常显示(1),界面不显示(3)

索引字段(索引名:indexField)

记录所有索引字段code和中文说明.
理论上所有的索引字段都可以放到这个表里,因为都是Map,就不需要再单独指定索引的字段了,可以动态创建Index(目前建议这样做)

codeName 类型 中文名称 是否分词 备注
ID string 主键 -
IndexCode string 索引代码 类似表名 user,site,pageTemplate,navMenu,module,content
IndexName string 索引名称 类似表名中文说明
BusinessID string 业务ID 处理业务记录临时增加的字段,意外情况
FieldCode string 字段代码 -
FieldName string 字段中文名称 -
FieldType int 字段类型 - 数字(1),日期(2),文本框(3),文本域(4),富文本(5),下拉框(6),单选(7),多选(8),上传图片(9),上传附件(10),轮播图(11),音频(12),视频(13)
FieldFormat string 数据格式,用于日期或者数字 -
DefaultValue string 默认值 -
AnalyzerName string 分词器名称 - 为 '' 不设置
CreateTime time.Time 创建时间 - 2006-01-02 15:04:05
UpdateTime time.Time 更新时间 - 2006-01-02 15:04:05
CreateUser string 创建人 - 初始化 system
SortNo int 排序 - 正序
Active int 是否有效 - 无效(0),正常显示(1),界面不显示(3)

用户(索引名:user)

后台只有一个用户,账号admin 密码默认admin 可以自己修改.

codeName 类型 中文名称 是否分词 备注
id string 主键 -
account string 登录名称 默认admin
passWord string 密码 -
userName string 中文名称 -

站点信息(site)

站点的信息,例如 title,logo,keywords,description等

codeName 类型 中文名称 是否分词 备注
id string 主键 -
title string 站点名称 -
keyword string 关键字 -
description string 站点描述 -
theme string 默认主题 默认使用default
themePC string PC主题 先从cookie获取,如果没有从Header头取值,写入cookie,默认使用default
themeWAP string 手机主题 先从cookie获取,如果没有从Header头取值,写入cookie,默认使用default
themeWEIXIN string 微信主题 先从cookie获取,如果没有从Header头取值,写入cookie,默认使用default
logo string logo -
favicon string Favicon -

页面模板(索引名:pageTemplate)

后台只有一个用户,账号admin 密码默认admin 可以自己修改.

codeName 类型 中文名称 是否分词 备注
id string 主键 -
templateName string 模板名称 -
templatePath string 模板路径 -
sortNo int 排序 - 正序
active int 是否有效 - 无效(0),正常显示(1),界面不显示(3)

导航菜单(索引名:navMenu)

codeName 类型 中文名称 是否分词 备注
id string 主键 -
menuName string 菜单名称 -
menuName string 菜单名称 -
hrefURL string 跳转路径 -
hrefTarget string 跳转方式 _self,_blank,_parent,_top
pid string 父菜单ID 父菜单ID
moduleID string module索引ID 导航菜单下的文章默认使用的模型字段
comCode string 逗号隔开的全路径 逗号隔开的全路径
templateID string 模板Id 当前导航页的模板
childTemplateID string 子页面模板Id 子页面默认使用的模板,子页面如果不设置,默认使用这个模板
sortNo int 排序 - 正序
active int 是否有效 - 无效(0),正常显示(1),界面不显示(3)

模型数据(索引名:module_default)

在indexInfo表里设置indexType='module',记录所有的Module.只是记录,并不创建index,全部保存到context里,用于全局检索

codeName 类型 中文名称 是否分词 备注
id string 主键 -
title string 文章标题 -
keyword string 关键字 使用 commaAnalyzerName 分词器,实现类似sql in 的效果.
description string 站点描述 -
pageURL string 自身页面路径 -
subtitle string 副标题 -
content string 文章内容
createTime time.Time 创建时间 - 2006-01-02 15:04:05
updateTime time.Time 更新时间 - 2006-01-02 15:04:05
createUser string 创建人 - 初始化 system
sortNo int 排序 - 正序
active int 是否有效 - 无效(0),正常显示(1),界面不显示(3)

文章内容(索引名:content)

文章内容表,默认使用 module_default 的模型字段

codeName 类型 中文名称 是否分词 备注
id string 主键 -
moduleID string 模型ID 文章使用的模型字段
title string 文章标题 -
keyword string 关键字 使用 commaAnalyzerName 分词器,实现类似sql in 的效果.
description string 站点描述 -
pageURL string 自身页面路径 -
subtitle string 副标题 -
navMenuID string 导航ID -
navMenuNames string 导航名称,逗号(,)隔开 使用 gseAnalyzerMapping 分词器.
templateID string 模板Id 模板
content string 文章内容
createTime time.Time 创建时间 - 2006-01-02 15:04:05
updateTime time.Time 更新时间 - 2006-01-02 15:04:05
createUser string 创建人 - 初始化 system
sortNo int 排序 - 正序
active int 是否有效 - 无效(0),正常显示(1),界面不显示(3)
Go
1
https://gitee.com/gpress/gpress.git
git@gitee.com:gpress/gpress.git
gpress
gpress
gpress
master

Search