Documentation ¶
Overview ¶
@Author: reel
@Date: 2023-05-21 20:49:21
@LastEditors: reel
@LastEditTime: 2024-03-27 04:47:04
@Description: 用于管理在core上的各个模块, 如cache, db, handle等
@Author: reel
@Date: 2023-06-15 07:35:00
@LastEditors: reel
@LastEditTime: 2024-03-27 04:47:12
@Description: 基于gin的上下文进行封装
@Author: reel
@Date: 2023-05-11 23:25:29
@LastEditors: reel
@LastEditTime: 2024-03-27 04:41:41
@Description: 管理核心组件的启动和运行
- @Author: reel - @Date: 2023-05-16 20:17:56 - @LastEditors: reel - @LastEditTime: 2024-03-19 06:44:10 - @Description: 系统配置相关操作
@Author: reel
@Date: 2023-05-11 23:32:22
@LastEditors: reel
@LastEditTime: 2023-06-14 21:27:34
@Description: 管理接口
@Author: reel
@Date: 2023-07-19 00:08:08
@LastEditors: reel
@LastEditTime: 2024-03-27 05:54:30
@Description: 常用的中间件
@Author: reel
@Date: 2023-06-16 05:57:22
* @LastEditors: reel * @LastEditTime: 2024-03-27 04:44:07
- @Description: 系统资源model, 用于管理API及菜单
Index ¶
- Constants
- Variables
- func AddAllowSource(resoures ...string)
- func CorsMiddleware(c Core) gin.HandlerFunc
- func GetAllowSource(ctx *gin.Context) bool
- func LimiterMiddleware(c Core) gin.HandlerFunc
- func LogMiddleware(c Core) gin.HandlerFunc
- func ParamsMiddleware(c Core) gin.HandlerFunc
- func SetStaticPathPrefix(prefix string)
- func SignatureMiddleware(c Core, sop ...SignatureOptFunc) gin.HandlerFunc
- type Context
- type Core
- type FuncCores
- type HandlerFunc
- type IRoutes
- type RouterGroup
- type RouterSource
- type SignatureOptFunc
- type Sources
- func (s *Sources) BeforeCreate(tx *gorm.DB) error
- func (s *Sources) GenRequestKey() string
- func (s *Sources) SetDescription(des string) *Sources
- func (s *Sources) TableName() string
- func (s *Sources) WithAllowSignature() *Sources
- func (s *Sources) WithHidden() *Sources
- func (s *Sources) WithMenuNotPrefix(prefix string) *Sources
- func (s *Sources) WithMeta(key string, value interface{}) *Sources
- func (s *Sources) WithPermission(t int8) *Sources
- func (s *Sources) WithRouter(t int8) *Sources
- type SourcesBase
- type TxOptsFunc
Constants ¶
const ( CTX_TX = "ctx_tx" // 上下文的数据库信息 CTX_PARAMS = "ctx_params" // 上下文的参数 CTX_AUTH = consts.CTX_AUTH // 上下文的操作用户 CTX_REFLECT_VALUE = "reflect_value" // 上下文中的反射值,用于自动校验并生成参数 CTX_SHARDING_KEY = consts.CTX_SHARDING_KEY // 上下文的数据分区 CTX_DATA_PERMISSION_KEY = consts.CTX_DATA_PERMISSION_KEY // 上下文的数据权限 // 通过ctx生成查询tx的方式 // 适用于表中有id的查询, 通过子查询优化分页性能 TX_QRY_MODE_SUBID = "subid" TX_QRY_DELETE = true )
const ( COOKIE_SID = "ASID" SINGULAR_TYPE_COOKIE = "cookie" SINGULAR_TYPE_SID = "sid" SINGULAR_TYPE_TOKEN = "token" SINGULAR_TYPE_CSRF_TOKEN = "CSRF-TOKEN" )
const ( SOURCE_TYPE_LIMITED int8 = iota // 受限, 前端不可访问 SOURCE_TYPE_UNLIMITED // 不受限菜单或按钮/接口 SOURCE_TYPE_MENU // 菜单权限 SOURCE_TYPE_UNMENU // 不受限菜单 SOURCE_TYPE_PERMISSION // 按钮/接口权限 SOURCE_TYPE_UNPERMISSION // 不受限按钮/接口 CONST_MENU = "menu" CONST_BUTTON = "button" // 判断是否时路由 SOURCE_ROUTER_NAN int8 = 0 // 不返回路由 SOURCE_ROUTER_IS int8 = 1 // 返回路由, 默认菜单返回路由, 也可以单独设置按钮作为路由返回 )
Variables ¶
var (
STATIC_PATH_PREFIX = "/static/"
)
Functions ¶
func AddAllowSource ¶
func AddAllowSource(resoures ...string)
请使用 method:path 的方式定义资源 比如 POST:/ajax/login
func GetAllowSource ¶
func ParamsMiddleware ¶
func ParamsMiddleware(c Core) gin.HandlerFunc
参数自动生成中间件
会生成参数结构体以及gorm.DB
同时根据约束, 自动完成参数校验
func SetStaticPathPrefix ¶
func SetStaticPathPrefix(prefix string)
func SignatureMiddleware ¶
func SignatureMiddleware(c Core, sop ...SignatureOptFunc) gin.HandlerFunc
校验签名中间件 如果没有登陆, 则会给一个默认的签名 Singular: 默认 token 模式, 同时可以选择cookie,sid, csrftoken方式
Types ¶
type Context ¶
type Context interface { // ShouldBindQuery 反序列化 querystring // tag: `form:"xxx"` (注:不要写成 query) ShouldBindQuery(obj interface{}) error // ShouldBindPostForm 反序列化 postform (querystring会被忽略) // tag: `form:"xxx"` ShouldBindPostForm(obj interface{}) error // ShouldBindForm 同时反序列化 querystring 和 postform; // 当 querystring 和 postform 存在相同字段时,postform 优先使用。 // tag: `form:"xxx"` ShouldBindForm(obj interface{}) error // ShouldBindJSON 反序列化 postjson // tag: `json:"xxx"` ShouldBindJSON(obj interface{}) error // ShouldBindURI 反序列化 path 参数(如路由路径为 /user/:name) // tag: `uri:"xxx"` ShouldBindURI(obj interface{}) error // Redirect 重定向 Redirect(code int, location string) // HTML 返回界面 HTML(name string, obj interface{}) // 返回 Json JSON(data interface{}) // Header 获取 Header 对象 Header() http.Header // GetHeader 获取 Header GetHeader(key string) string // SetHeader 设置 Header SetHeader(key, value string) // SetCookie 设置cookie SetCookie(key, value string) // Cookie 根据cookie的key获取值 Cookie(key string) (value string, err error) // RequestInputParams 获取所有参数 RequestInputParams() url.Values // RequestPostFormParams 获取 PostForm 参数 RequestPostFormParams() url.Values // Request 获取 Request 对象 Request() *http.Request // Method 获取 Request.Method Method() string // Host 获取 Request.Host Host() string // Path 获取 请求的路径 Request.URL.Path (不附带 querystring) Path() string // URI 获取 unescape 后的 Request.URL.RequestURI() URI() string // resource 获取 请求方式和全路径拼接好的字符串 // 如GET:/api/v1/userlist Resource() string // 终止并返回信息 AbortWithError(interface{}) // CtxGet 获取上下文自定义的一些参数 CtxGet(key string) interface{} // 设置自定义参数在上下文中 CtxSet(key string, v interface{}) // 获取二次封装的参数 CtxGetParams() any Next() Ctx() *gin.Context // 返回通过参数构建好查询参数参数的gorm.DB TX(optFunc ...TxOptsFunc) *gorm.DB Core() Core // 获取用户 Auth() string // 生成新的db查询 NewTX(optFunc ...TxOptsFunc) *gorm.DB }
type Core ¶
type Core interface { // 封装了服务启动和关闭 // 方便快速启动 Run() // 关闭整个服务 Shutdown() // gin的engine, 用于原生gin方法 // 可以更灵活的实现开发 Engine() *gin.Engine Group(elativePath string, handlers ...HandlerFunc) RouterGroup // 缓存 Cache() cache.Store // 关系数据库 RDB() rdb.Store // session Session() session.Session // 限流器 Limiter() *rate.Limiter // 配置 Config() *config.Config // 添加启动时的一些作业 AddStartJobList(...mux.StartJobFunc) // contains filtered or unexported methods }
type HandlerFunc ¶
type HandlerFunc func(Context)
type IRoutes ¶
type IRoutes interface { // Any(string, ...HandlerFunc) //需要填写相对路由路径, 名称, 参数, 及中间件, 用于在 api 文档和菜单中注册 //参数为如果为空, 该方法不会在 api 文档中进行注册 GET(relativePath, pathName string, params interface{}, handlers ...HandlerFunc) (source *Sources) //需要填写相对路由路径, 名称, 参数, 及中间件, 用于在 api 文档和菜单中注册 //参数为如果为空, 该方法不会在 api 文档中进行注册 PUT(relativePath, pathName string, params interface{}, handlers ...HandlerFunc) (source *Sources) //需要填写相对路由路径, 名称, 参数, 及中间件, 用于在 api 文档和菜单中注册 //参数为如果为空, 该方法不会在 api 文档中进行注册 POST(relativePath, pathName string, params interface{}, handlers ...HandlerFunc) (source *Sources) //需要填写相对路由路径, 名称, 参数, 及中间件, 用于在 api 文档和菜单中注册 //参数为如果为空, 该方法不会在 api 文档中进行注册 DELETE(relativePath, pathName string, params interface{}, handlers ...HandlerFunc) (source *Sources) }
IRoutes 包装gin的IRoutes
type RouterGroup ¶
type RouterGroup interface { Group(api, apiName string, handlers ...HandlerFunc) RouterGroup IRoutes RouterSource Core() Core }
RouterGroup 包装gin的RouterGroup
传入相对路由路径和名称, 用于在菜单中进行注册
type RouterSource ¶
type RouterSource interface { // 用于设置某些路由不必写入资源库 NotWithSource() RouterGroup // 用于设置设置模块/api权限 // // 默认所有菜单,api都需要权限设置 // // 对于通用模块如用户个人设置等信息, 可以设置为权限例外, 可以灵活的在初始化阶段完成权限配置 WithPermission(t int8) RouterGroup // 设置为前端路由或非路由 // // 模块部分默认为前端路由(菜单), 默认值 SOURCE_ROUTER_IS = 1, api默认非路由, 为按钮权限, 默认值 SOURCE_ROUTER_NAN=0 // // 通过该方法可以灵活的配置接口/模块的显示规则 WithRouter(t int8) RouterGroup // 去除前端菜单路由前缀, // // 例如api接口转为前端路由: /ajax/user/list => /user/list WithMenuNotPrefix(prefix string) RouterGroup // 设置路由隐藏 WithHidden() RouterGroup // 设置前端Meta信息 WithMeta(key string, value interface{}) RouterGroup }
用于设置路由和资源的关系
type SignatureOptFunc ¶ added in v1.1.0
type SignatureOptFunc func(*signatureOption)
func SetSeesionType ¶ added in v1.1.0
func SetSeesionType(sessionType string) SignatureOptFunc
type Sources ¶
type Sources struct { SourcesBase rdb.Model Children []*Sources `json:"children" gorm:"-"` }
数据库字段
对SourcesBase进行的封装
func (*Sources) WithPermission ¶
用于外部设置souces, 请通过 core.SOURCE_TYPE_* 进行设置
0: 受限资源, 无法访问, 该资源下在子集, 自动去除菜单和组件的前缀; 1:不受限, api和菜单都可访问
2: 受限菜单, 可通过权限设置访问; 3: 不受限菜单, 登陆用户均可访问
4: 受限api, 可通过权限设置访问; 5: 不受限api, 登陆用户均可访问
type SourcesBase ¶
type SourcesBase struct { Code string `json:"code" gorm:"comment:资源代码;uniqueIndex"` // 资源code Name string `json:"name" gorm:"comment:资源名称;index"` // 资源名称, Desc string `json:"desc" gorm:"comment:资源说明"` // 资源描述,可用作title PCode string `json:"pcode" gorm:"comment:上层资源code;index"` // 父级code Level int8 `json:"level" gorm:"comment:资源层级;index"` // 层级, 方便定位数据 Api string `json:"api" gorm:"comment:资源路径;index"` // 资源访问api Type int8 `json:"type" gorm:"comment:资源类型,0表示都可以显示, 1表示受限;index"` // 用于区分资源类型, 可以设置那些是用做权限配置的 Sort string `json:"sort" gorm:"comment:资源排序"` // 前端菜单顺序 // API文档用, 请求方法 Method string `json:"method" gorm:"comment:后台接口方法"` // api接口路径 Params string `json:"params" gorm:"comment:前端请求参数"` // db中存储的参数字符串 AcceptType string `json:"accept_type" gorm:"comment:前端请求参数类型"` // 约束接口传参方式 // 前端路由菜单用 IsRouter int8 `json:"is_router" gorm:"comment:前端用路由判断;index"` // 主要用于某些button需要展示路由上 Path string `json:"path" gorm:"comment:前端用路径;index"` // 前端用组件方法 Component string `json:"component" gorm:"comment:组件名称"` // 前端组件名称 Meta rdb.ModeMapJson `json:"meta" gorm:"type:varchar(1000);comment:前端用路由参数元信息"` // 前端组件原信息 }
系统资源表
用于API文档, 菜单, 权限控制等
当使用core中的路由接口生成路由时, 系统资源会自动注册到这张表中
type TxOptsFunc ¶
type TxOptsFunc func(*txOpts)
func QryDelete ¶
func QryDelete() TxOptsFunc
func SetTxMode ¶
func SetTxMode(mode string) TxOptsFunc
设置查询方式
TX_QRY_MODE_SUBID 表示带id的子查询, 注意: 使用TX_QRY_MODE_SUBID, 必须配合使用 SetTxSubTable 设置表名
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
* @Author: reel * @Date: 2023-06-18 10:32:27 * @LastEditors: reel * @LastEditTime: 2023-09-09 19:36:56 * @Description: 入口函数, 用于测试和示例, 不作为项目使用
|
* @Author: reel * @Date: 2023-06-18 10:32:27 * @LastEditors: reel * @LastEditTime: 2023-09-09 19:36:56 * @Description: 入口函数, 用于测试和示例, 不作为项目使用 |
* @Author: reel * @Date: 2023-05-16 20:44:40 * @LastEditors: reel * @LastEditTime: 2023-09-12 06:04:50 * @Description: 配置定时任务
|
* @Author: reel * @Date: 2023-05-16 20:44:40 * @LastEditors: reel * @LastEditTime: 2023-09-12 06:04:50 * @Description: 配置定时任务 |
internal
|
|
config
* @Author: reel * @Date: 2023-05-16 20:17:56 * @LastEditors: reel * @LastEditTime: 2023-09-09 11:33:23 * @Description: 系统配置相关操作
|
* @Author: reel * @Date: 2023-05-16 20:17:56 * @LastEditors: reel * @LastEditTime: 2023-09-09 11:33:23 * @Description: 系统配置相关操作 |
pem
* @Author: reel * @Date: 2023-05-16 21:37:52 * @LastEditors: reel * @LastEditTime: 2023-09-10 07:04:41 * @Description: 设置项目唯一标识, 用于记录项目是否启动
|
* @Author: reel * @Date: 2023-05-16 21:37:52 * @LastEditors: reel * @LastEditTime: 2023-09-10 07:04:41 * @Description: 设置项目唯一标识, 用于记录项目是否启动 |
pkg
|
|
consts
* @Author: reel * @Date: 2023-06-04 22:29:07 * @LastEditors: reel * @LastEditTime: 2023-12-30 11:21:29 * @Description: 请填写简介
|
* @Author: reel * @Date: 2023-06-04 22:29:07 * @LastEditors: reel * @LastEditTime: 2023-12-30 11:21:29 * @Description: 请填写简介 |
encrypt
* @Author: reel * @Date: 2023-05-16 21:19:26 * @LastEditors: reel * @LastEditTime: 2023-06-04 22:35:53 * @Description: base62加密解密封装
|
* @Author: reel * @Date: 2023-05-16 21:19:26 * @LastEditors: reel * @LastEditTime: 2023-06-04 22:35:53 * @Description: base62加密解密封装 |
env
* @Author: reel * @Date: 2023-05-11 19:52:08 * @LastEditors: reel * @LastEditTime: 2023-06-24 06:45:53 * @Description: 用于配置app环境变量
|
* @Author: reel * @Date: 2023-05-11 19:52:08 * @LastEditors: reel * @LastEditTime: 2023-06-24 06:45:53 * @Description: 用于配置app环境变量 |
errno
* @Author: reel * @Date: 2023-05-11 22:19:24 * @LastEditors: reel * @LastEditTime: 2024-03-27 04:45:36 * @Description: 定义常用的错误代码
|
* @Author: reel * @Date: 2023-05-11 22:19:24 * @LastEditors: reel * @LastEditTime: 2024-03-27 04:45:36 * @Description: 定义常用的错误代码 |
errorx
* @Author: reel * @Date: 2023-06-04 22:09:34 * @LastEditors: reel * @LastEditTime: 2023-06-04 22:09:36 * @Description: 请填写简介
|
* @Author: reel * @Date: 2023-06-04 22:09:34 * @LastEditors: reel * @LastEditTime: 2023-06-04 22:09:36 * @Description: 请填写简介 |
filex
* @Author: reel * @Date: 2023-05-11 22:28:37 * @LastEditors: reel * @LastEditTime: 2023-05-16 21:42:36 * @Description: 请填写简介
|
* @Author: reel * @Date: 2023-05-11 22:28:37 * @LastEditors: reel * @LastEditTime: 2023-05-16 21:42:36 * @Description: 请填写简介 |
mux
* @Description: 用于开启一个 http 服务 * @Params: 可变参数, 可以指定端口号, 服务名称, * @Author: LenLee * @Date: 2022-06-24 21:59:45 * @LastEditTime: 2024-03-27 04:46:10 * @LastEditors: reel * @FilePath:
|
* @Description: 用于开启一个 http 服务 * @Params: 可变参数, 可以指定端口号, 服务名称, * @Author: LenLee * @Date: 2022-06-24 21:59:45 * @LastEditTime: 2024-03-27 04:46:10 * @LastEditors: reel * @FilePath: |
* @Author: reel * @Date: 2023-05-16 21:09:14 * @LastEditors: reel * @LastEditTime: 2023-09-09 20:55:19 * @Description: 请填写简介
|
* @Author: reel * @Date: 2023-05-16 21:09:14 * @LastEditors: reel * @LastEditTime: 2023-09-09 20:55:19 * @Description: 请填写简介 |
* @Author: reel * @Date: 2023-06-06 22:40:43 * @LastEditors: reel * @LastEditTime: 2024-03-26 07:01:09 * @Description: session初始化相关设置
|
* @Author: reel * @Date: 2023-06-06 22:40:43 * @LastEditors: reel * @LastEditTime: 2024-03-26 07:01:09 * @Description: session初始化相关设置 |
store
|
|
cache
* @Author: reel * @Date: 2023-05-16 07:50:35 * @LastEditors: reel * @LastEditTime: 2024-03-27 04:48:15 * @Description: 请填写简介
|
* @Author: reel * @Date: 2023-05-16 07:50:35 * @LastEditors: reel * @LastEditTime: 2024-03-27 04:48:15 * @Description: 请填写简介 |
dsn
* @Author: reel * @Date: 2023-05-16 20:02:15 * @LastEditors: reel * @LastEditTime: 2024-01-13 23:26:46 * @Description: 配置数据库,缓存的链接, 支持本地缓存和本地数据库
|
* @Author: reel * @Date: 2023-05-16 20:02:15 * @LastEditors: reel * @LastEditTime: 2024-01-13 23:26:46 * @Description: 配置数据库,缓存的链接, 支持本地缓存和本地数据库 |
rdb
* @Author: reel * @Date: 2023-10-15 07:48:02 * @LastEditors: reel * @LastEditTime: 2024-01-20 14:13:22 * @Description: 回掉函数
|
* @Author: reel * @Date: 2023-10-15 07:48:02 * @LastEditors: reel * @LastEditTime: 2024-01-20 14:13:22 * @Description: 回掉函数 |