以下是 goweb 模块的重点介绍---goweb 模块全景goweb 是 leijmdas Go 全家桶中对标 Spring Boot Web / Spring MVC 的核心 Web 框架模块基于 Gin 进行企业级封装提供路由、中间件、权限控制、DB/ES 操作、分页查询等完整能力。---一、模块结构总览goweb/├── base/ # 常量定义├── dto/ # 查询与排序对象├── generaldb/ # 通用 DB 操作泛型实现│ ├── generaldao/ # DAO 操作│ └── generaliface/ # 接口定义├── iface/ # goweb 接口├── meta/ # 元数据操作DB表、ES索引├── model/ # 模型示例├── page/ # 分页查询请求与响应├── pagedb/ # 表分页相关操作├── pagees/ # ES 分页相关操作├── pagemodel/ # 分页泛型定义├── pagereq/ # 统一 ES 服务请求/响应├── pagesimple/ # 简单分页对象封装├── pageui/ # 返回前端分页显示格式├── pageuimodel/ # 返回前端分页显示格式-泛型├── ruleengine/ # 规则引擎数据结构├── webclient/ # WEB 客户端│ ├── eswebclient/ # ES 客户端│ ├── webclient/ # 通用 Web 客户端│ └── rulewebclient/ # 规则引擎客户端├── webright/ # 权限控制│ ├── webcheck/ # 权限检查主控入口│ ├── webcustome/ # 权限自定义实现│ └── webconsts/ # WEB 常量与配置├── webdto/ # 权限 DTO 对象├── webiface/ # 权限接口定义├── webserver/ # WEB 路由、服务端└── wso2agent/ # 对接 WSO2 接口---二、核心能力详解1. WebServer — 路由与服务端webserver 是 Web 服务的核心入口基于 Gin 封装提供类似 Spring Boot 的启动方式。启动流程示例func StartWeb() {InjectMiddleware() // 注入中间件service.Init() // 初始化服务var config ichubconfig.FindBeanIchubConfig()serverDto : config.ReadWebServer() // 读取 Web 配置var server webserver.New(serverDto) // 创建服务端server.StartWebSwagger(router.Swagger, router.Register) // 启动 Swagger}中间件链对标 Spring HandlerInterceptorfunc (this *WebRouters) InstallMiddleWare(router *gin.Engine) *gin.Engine {// 鉴权中间件preHandlerouter.Use(webmiddlewares.CheckSessionToken(), webmiddlewares.CheckAllowed())// 业务中间件router.Use(webmiddlewares.WebMiddleware()...)// 基础中间件router.Use(middleware.RequestID(), middleware.Context(), gin.Recovery(), middleware.Cors())// Gzip 压缩router.Use(gzip.Gzip(gzip.DefaultCompression))this.AddRouter(router)return router}权限注入对标 Spring Securityfunc InjectMiddleware() {// 注册鉴权 RPC 代理webcheck.FindBeanWebCheckRight().RegisterIrpc(authproxy.FindBeanAuthProxy())// 注册业务中间件webcheck.FindBeanWebCheckRight().RegisterMiddlewares(handlerfunc.WebExampleMiddleware())}---2. GeneralDB — 泛型 DAO 层generaldb 是 goweb 的核心亮点基于 Go 泛型实现了通用的 CRUD 操作对标 Spring Data JPA。查询接口方法 说明FindById(pkey P) (entity E, found bool, err error) 根据主键查询FindByIds(pks string) (*[]E, error) 批量主键查询Query() *page.PageResult 分页查询QueryModel() *pagemodel.PageResult[E] 泛型分页查询QueryPageui() *pageui.PageuiResult UI 格式分页Count() (int, error) 计数更新接口方法 说明Insert(entity E) (P, error) 插入DeleteById(pkey P) error 按主键删除Save(entity E) (P, error) 保存插入或更新Update(entity E) (P, error) 更新UpdateNotNull(pkey P, maps map[string]any) (P, error) 非空字段更新UpdateMap(pkey P, maps map[string]interface{}) (P, error) Map 更新泛型定义type GeneralDaoQueryIface[P GoPkey, E IBaseModel[P]]---3. DbWebReq — 基于泛型的通用 DB 客户端dbwebreq 是对 generaldb 的进一步封装提供链式调用风格的 DB 操作客户端。使用示例// 创建请求对象泛型指定实体类型var req dbwebreq.Default[*model.ServiceApiList]()req.SetPageSize(2)req.Eq(id, 1014952995308011523)// 通用查询var result req.GeneralQuery()// 分页查询var result req.Query()// 按主键查找var result req.Find(1012572619744575491)// 插入var record model.ServiceApiList{Name: song}var result req.Save(record)// 更新按主键var result req.Update(model.ServiceApiList{Name: leijmdas}, 1014848431407104003)// 非空更新var result req.UpdateNotNull(model.ServiceApiList{Name: leijmdas11111}, 1014848431407104003)// Map 更新var result req.UpdateMap(map[string]any{name: leijmdas, http_method: get}, 1014854303687802883)// 删除var result req.Delete(1014847422142676995)// 条件删除req.Eq(id, 1014854303687802883)var result req.DeleteWhere()// 自动迁移表结构var result req.Automigrate()// 元数据查询var result req.MetaQuery()// 分组统计var result req.GroupStat(id, id)// 统计var result req.Stat(id)核心结构type DbWebReq[T schema.Tabler] struct {basedto.BaseEntity*pagedb.PageDbWebRequestDbWebClient *dbwebclient.DbWebClient}---4. WebClient — 远程调用客户端webclient 提供对远程 Web 服务的调用能力支持- 通用 Web 客户端调用- ES 专用客户端 (eswebclient)- 规则引擎客户端 (rulewebclient)---5. 分页体系goweb 提供了多层分页封装适配不同场景包 用途page 基础分页请求/响应pagedb DB 表分页操作pagees ES 分页操作pagemodel 泛型分页对象pagesimple 简单分页封装pageui 前端 UI 显示格式pageuimodel 前端 UI 泛型格式pagereq 统一 ES 服务请求/响应---6. 权限控制 (webright)组件 功能webcheck 权限检查主控入口webcustome 自定义权限实现webconsts WEB 常量与配置webdto 权限 DTOWebCheckRequest, WebCheckResult, WebUserId 等webiface 权限接口IrpcCheckAllowed 生产端, IwebCheckAllowed 消费端---三、与 Spring 生态对标goweb 组件 Spring 对应 说明webserver Spring Boot Web / Spring MVC Web 服务端generaldb Spring Data JPA 泛型 DAOwebright Spring Security 权限控制webclient RestTemplate / WebClient 远程调用middleware HandlerInterceptor 中间件链pagereq Spring Data Elasticsearch ES 统一查询---四、快速使用import gitee.com/gowebframe3/webframe/goweb// 1. 启动 Web 服务server : webserver.New(serverDto)server.StartWebSwagger(router.Swagger, router.Register)// 2. 泛型 DB 操作req : dbwebreq.Default[*MyModel]()req.SetPageSize(10).Eq(status, 1)result : req.Query()// 3. 权限检查webcheck.FindBeanWebCheckRight().CheckAllowed(ctx, request)---如果你需要深入了解某个具体子模块比如 generaldb 的泛型实现原理、webserver 的路由注册细节、或者 dbwebreq 的链式 API 设计可以继续问我。
Goweb精讲
以下是 goweb 模块的重点介绍---goweb 模块全景goweb 是 leijmdas Go 全家桶中对标 Spring Boot Web / Spring MVC 的核心 Web 框架模块基于 Gin 进行企业级封装提供路由、中间件、权限控制、DB/ES 操作、分页查询等完整能力。---一、模块结构总览goweb/├── base/ # 常量定义├── dto/ # 查询与排序对象├── generaldb/ # 通用 DB 操作泛型实现│ ├── generaldao/ # DAO 操作│ └── generaliface/ # 接口定义├── iface/ # goweb 接口├── meta/ # 元数据操作DB表、ES索引├── model/ # 模型示例├── page/ # 分页查询请求与响应├── pagedb/ # 表分页相关操作├── pagees/ # ES 分页相关操作├── pagemodel/ # 分页泛型定义├── pagereq/ # 统一 ES 服务请求/响应├── pagesimple/ # 简单分页对象封装├── pageui/ # 返回前端分页显示格式├── pageuimodel/ # 返回前端分页显示格式-泛型├── ruleengine/ # 规则引擎数据结构├── webclient/ # WEB 客户端│ ├── eswebclient/ # ES 客户端│ ├── webclient/ # 通用 Web 客户端│ └── rulewebclient/ # 规则引擎客户端├── webright/ # 权限控制│ ├── webcheck/ # 权限检查主控入口│ ├── webcustome/ # 权限自定义实现│ └── webconsts/ # WEB 常量与配置├── webdto/ # 权限 DTO 对象├── webiface/ # 权限接口定义├── webserver/ # WEB 路由、服务端└── wso2agent/ # 对接 WSO2 接口---二、核心能力详解1. WebServer — 路由与服务端webserver 是 Web 服务的核心入口基于 Gin 封装提供类似 Spring Boot 的启动方式。启动流程示例func StartWeb() {InjectMiddleware() // 注入中间件service.Init() // 初始化服务var config ichubconfig.FindBeanIchubConfig()serverDto : config.ReadWebServer() // 读取 Web 配置var server webserver.New(serverDto) // 创建服务端server.StartWebSwagger(router.Swagger, router.Register) // 启动 Swagger}中间件链对标 Spring HandlerInterceptorfunc (this *WebRouters) InstallMiddleWare(router *gin.Engine) *gin.Engine {// 鉴权中间件preHandlerouter.Use(webmiddlewares.CheckSessionToken(), webmiddlewares.CheckAllowed())// 业务中间件router.Use(webmiddlewares.WebMiddleware()...)// 基础中间件router.Use(middleware.RequestID(), middleware.Context(), gin.Recovery(), middleware.Cors())// Gzip 压缩router.Use(gzip.Gzip(gzip.DefaultCompression))this.AddRouter(router)return router}权限注入对标 Spring Securityfunc InjectMiddleware() {// 注册鉴权 RPC 代理webcheck.FindBeanWebCheckRight().RegisterIrpc(authproxy.FindBeanAuthProxy())// 注册业务中间件webcheck.FindBeanWebCheckRight().RegisterMiddlewares(handlerfunc.WebExampleMiddleware())}---2. GeneralDB — 泛型 DAO 层generaldb 是 goweb 的核心亮点基于 Go 泛型实现了通用的 CRUD 操作对标 Spring Data JPA。查询接口方法 说明FindById(pkey P) (entity E, found bool, err error) 根据主键查询FindByIds(pks string) (*[]E, error) 批量主键查询Query() *page.PageResult 分页查询QueryModel() *pagemodel.PageResult[E] 泛型分页查询QueryPageui() *pageui.PageuiResult UI 格式分页Count() (int, error) 计数更新接口方法 说明Insert(entity E) (P, error) 插入DeleteById(pkey P) error 按主键删除Save(entity E) (P, error) 保存插入或更新Update(entity E) (P, error) 更新UpdateNotNull(pkey P, maps map[string]any) (P, error) 非空字段更新UpdateMap(pkey P, maps map[string]interface{}) (P, error) Map 更新泛型定义type GeneralDaoQueryIface[P GoPkey, E IBaseModel[P]]---3. DbWebReq — 基于泛型的通用 DB 客户端dbwebreq 是对 generaldb 的进一步封装提供链式调用风格的 DB 操作客户端。使用示例// 创建请求对象泛型指定实体类型var req dbwebreq.Default[*model.ServiceApiList]()req.SetPageSize(2)req.Eq(id, 1014952995308011523)// 通用查询var result req.GeneralQuery()// 分页查询var result req.Query()// 按主键查找var result req.Find(1012572619744575491)// 插入var record model.ServiceApiList{Name: song}var result req.Save(record)// 更新按主键var result req.Update(model.ServiceApiList{Name: leijmdas}, 1014848431407104003)// 非空更新var result req.UpdateNotNull(model.ServiceApiList{Name: leijmdas11111}, 1014848431407104003)// Map 更新var result req.UpdateMap(map[string]any{name: leijmdas, http_method: get}, 1014854303687802883)// 删除var result req.Delete(1014847422142676995)// 条件删除req.Eq(id, 1014854303687802883)var result req.DeleteWhere()// 自动迁移表结构var result req.Automigrate()// 元数据查询var result req.MetaQuery()// 分组统计var result req.GroupStat(id, id)// 统计var result req.Stat(id)核心结构type DbWebReq[T schema.Tabler] struct {basedto.BaseEntity*pagedb.PageDbWebRequestDbWebClient *dbwebclient.DbWebClient}---4. WebClient — 远程调用客户端webclient 提供对远程 Web 服务的调用能力支持- 通用 Web 客户端调用- ES 专用客户端 (eswebclient)- 规则引擎客户端 (rulewebclient)---5. 分页体系goweb 提供了多层分页封装适配不同场景包 用途page 基础分页请求/响应pagedb DB 表分页操作pagees ES 分页操作pagemodel 泛型分页对象pagesimple 简单分页封装pageui 前端 UI 显示格式pageuimodel 前端 UI 泛型格式pagereq 统一 ES 服务请求/响应---6. 权限控制 (webright)组件 功能webcheck 权限检查主控入口webcustome 自定义权限实现webconsts WEB 常量与配置webdto 权限 DTOWebCheckRequest, WebCheckResult, WebUserId 等webiface 权限接口IrpcCheckAllowed 生产端, IwebCheckAllowed 消费端---三、与 Spring 生态对标goweb 组件 Spring 对应 说明webserver Spring Boot Web / Spring MVC Web 服务端generaldb Spring Data JPA 泛型 DAOwebright Spring Security 权限控制webclient RestTemplate / WebClient 远程调用middleware HandlerInterceptor 中间件链pagereq Spring Data Elasticsearch ES 统一查询---四、快速使用import gitee.com/gowebframe3/webframe/goweb// 1. 启动 Web 服务server : webserver.New(serverDto)server.StartWebSwagger(router.Swagger, router.Register)// 2. 泛型 DB 操作req : dbwebreq.Default[*MyModel]()req.SetPageSize(10).Eq(status, 1)result : req.Query()// 3. 权限检查webcheck.FindBeanWebCheckRight().CheckAllowed(ctx, request)---如果你需要深入了解某个具体子模块比如 generaldb 的泛型实现原理、webserver 的路由注册细节、或者 dbwebreq 的链式 API 设计可以继续问我。