mirror of
https://github.com/bufanyun/hotgo.git
synced 2025-11-21 16:36:48 +08:00
Compare commits
20 Commits
bf5bcd3eeb
...
v2.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b58643cc2f | ||
|
|
a7234bc330 | ||
|
|
3989996448 | ||
|
|
c94184a385 | ||
|
|
7313d22cdb | ||
|
|
5ebc33f28b | ||
|
|
70076c90fd | ||
|
|
e8c94f1c98 | ||
|
|
5fa7b471f5 | ||
|
|
4b0f5066b7 | ||
|
|
36ddd091c8 | ||
|
|
f85d21a124 | ||
|
|
0f6f74214a | ||
|
|
334f9a7888 | ||
|
|
58213e83db | ||
|
|
f2454ce09b | ||
|
|
31f8102cc1 | ||
|
|
776307e65b | ||
|
|
a98a25ea12 | ||
|
|
e3eb4bd728 |
@@ -6,13 +6,13 @@
|
|||||||
</p>
|
</p>
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://goframe.org/pages/viewpage.action?pageId=1114119" target="_blank">
|
<a href="https://goframe.org/pages/viewpage.action?pageId=1114119" target="_blank">
|
||||||
<img src="https://img.shields.io/badge/goframe-2.9.0-green" alt="goframe">
|
<img src="https://img.shields.io/badge/goframe-2.9.4-green" alt="goframe">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://v3.vuejs.org/" target="_blank">
|
<a href="https://v3.vuejs.org/" target="_blank">
|
||||||
<img src="https://img.shields.io/badge/vue.js-vue3.4-green" alt="vue">
|
<img src="https://img.shields.io/badge/vue.js-vue3.4-green" alt="vue">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://www.naiveui.com" target="_blank">
|
<a href="https://www.naiveui.com" target="_blank">
|
||||||
<img src="https://img.shields.io/badge/naiveui-%3E2.42.0-blue" alt="naiveui">
|
<img src="https://img.shields.io/badge/naiveui-%3E2.43.1-blue" alt="naiveui">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://www.tslang.cn/" target="_blank">
|
<a href="https://www.tslang.cn/" target="_blank">
|
||||||
<img src="https://img.shields.io/badge/typescript-%3E4.0.0-blue" alt="typescript">
|
<img src="https://img.shields.io/badge/typescript-%3E4.0.0-blue" alt="typescript">
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
|
|
||||||
* 本项目包含的第三方源码和二进制文件之版权信息另行标注。
|
* 本项目包含的第三方源码和二进制文件之版权信息另行标注。
|
||||||
|
|
||||||
* 版权所有Copyright © 2020-2025 by Ms (https://github.com/bufanyun/hotgo)
|
* 版权所有Copyright © 2020-2026 by Ms (https://github.com/bufanyun/hotgo)
|
||||||
|
|
||||||
* All rights reserved。
|
* All rights reserved。
|
||||||
|
|
||||||
@@ -158,7 +158,7 @@
|
|||||||
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
[MIT © HotGo-2025](./LICENSE)
|
[MIT © HotGo-2026](./LICENSE)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
- [WebSocket服务器](sys-websocket-server.md)
|
- [WebSocket服务器](sys-websocket-server.md)
|
||||||
- [TCP服务器](sys-tcp-server.md)
|
- [TCP服务器](sys-tcp-server.md)
|
||||||
- [SaaS多租户](sys-tenant.md)
|
- [SaaS多租户](sys-tenant.md)
|
||||||
|
- [国际化](sys-i18n.md)
|
||||||
- [单元测试](sys-test.md)
|
- [单元测试](sys-test.md)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ gfcli:
|
|||||||
gen:
|
gen:
|
||||||
dao:
|
dao:
|
||||||
- link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true"
|
- link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true"
|
||||||
|
# - link: "pgsql:postgres:hg123456@tcp(127.0.0.1:5432)/hotgo"
|
||||||
group: "default" # 分组 使用hotgo代码生成功能时必须填
|
group: "default" # 分组 使用hotgo代码生成功能时必须填
|
||||||
# tables: "" # 指定当前数据库中需要执行代码生成的数据表。如果为空,表示数据库的所有表都会生成。
|
# tables: "" # 指定当前数据库中需要执行代码生成的数据表。如果为空,表示数据库的所有表都会生成。
|
||||||
tablesEx: "hg_sys_addons_install" # 指定当前数据库中需要排除代码生成的数据表。
|
tablesEx: "hg_sys_addons_install" # 指定当前数据库中需要排除代码生成的数据表。
|
||||||
@@ -147,6 +148,7 @@ database:
|
|||||||
stdout: true
|
stdout: true
|
||||||
default:
|
default:
|
||||||
link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true"
|
link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true"
|
||||||
|
# link: "pgsql:postgres:hg123456@tcp(127.0.0.1:5432)/hotgo"
|
||||||
debug: true
|
debug: true
|
||||||
Prefix: "hg_"
|
Prefix: "hg_"
|
||||||
default2:
|
default2:
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
### 指定数据库驱动
|
### 指定数据库驱动
|
||||||
|
|
||||||
> HotGo默认使用mysql驱动,如果你想用其他数据库驱动打开下方文件中注释即可
|
> HotGo默认使用mysql驱动,如果你想用其他数据库驱动打开下方文件中注释即可,目前已支持mysql、pgsql
|
||||||
|
|
||||||
- 修改文件路径:[server/internal/library/hggen/internal/cmd/cmd_gen_dao.go](../../server/internal/library/hggen/internal/cmd/cmd_gen_dao.go)
|
- 修改文件路径:[server/internal/library/hggen/internal/cmd/cmd_gen_dao.go](../../server/internal/library/hggen/internal/cmd/cmd_gen_dao.go)
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ import (
|
|||||||
//_ "github.com/gogf/gf/contrib/drivers/mssql/v2"
|
//_ "github.com/gogf/gf/contrib/drivers/mssql/v2"
|
||||||
_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
|
_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
|
||||||
//_ "github.com/gogf/gf/contrib/drivers/oracle/v2"
|
//_ "github.com/gogf/gf/contrib/drivers/oracle/v2"
|
||||||
//_ "github.com/gogf/gf/contrib/drivers/pgsql/v2"
|
_ "github.com/gogf/gf/contrib/drivers/pgsql/v2"
|
||||||
//_ "github.com/gogf/gf/contrib/drivers/sqlite/v2"
|
//_ "github.com/gogf/gf/contrib/drivers/sqlite/v2"
|
||||||
|
|
||||||
"hotgo/internal/library/hggen/internal/cmd/gendao"
|
"hotgo/internal/library/hggen/internal/cmd/gendao"
|
||||||
|
|||||||
@@ -27,5 +27,5 @@
|
|||||||
|
|
||||||
- node版本 >= 20.0.0
|
- node版本 >= 20.0.0
|
||||||
- golang版本 >= 1.23
|
- golang版本 >= 1.23
|
||||||
- mysql版本 >= 5.7,引擎需要是 innoDB
|
- mysql版本 >= 5.7,引擎需要是 innoDB 或 postgresql版本 >=14
|
||||||
- IDE推荐:Goland
|
- IDE推荐:Goland
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
|
|
||||||
- node版本 >= v20.0.0
|
- node版本 >= v20.0.0
|
||||||
- golang版本 >= v1.23
|
- golang版本 >= v1.23
|
||||||
- goframe版本 >=v2.7.0
|
- goframe版本 >=v2.9.4
|
||||||
- mysql版本 >=5.7
|
- mysql版本 >=5.7 或 postgresql版本 >=14
|
||||||
|
|
||||||
> 必须先看[环境搭建文档](start-environment.md),如果安装遇到问题务必先查看[常见问题文档](start-issue.md)
|
> 必须先看[环境搭建文档](start-environment.md),如果安装遇到问题务必先查看[常见问题文档](start-issue.md)
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,19 @@
|
|||||||
> 如果升级(覆盖)代码后打开会出现 sql 报错, 请检查更新的数据库格式或自行调整
|
> 如果升级(覆盖)代码后打开会出现 sql 报错, 请检查更新的数据库格式或自行调整
|
||||||
|
|
||||||
|
|
||||||
|
### v2.18.6
|
||||||
|
updated 2025.10.25
|
||||||
|
|
||||||
|
- 新增:国际化(i18n)支持,内置简体中文、繁体中文、英文三种语言包
|
||||||
|
- 新增:附件管理支持外链图片转存至系统存储驱动
|
||||||
|
- 优化:全局微信公众号实例初始化逻辑,`AccessToken` 获取方式调整为稳定版接口
|
||||||
|
- 优化:菜单权限搜索功能,支持按菜单名称或路由地址进行检索
|
||||||
|
- 优化:角色权限管理中的菜单权限分配交互体验
|
||||||
|
- 优化:naive-ui版本升级到2.43.1
|
||||||
|
- 优化:gf版本升级到v2.9.4
|
||||||
|
- 修复:删除角色导致关联用户无法登录的问题,新增角色删除前置校验(检查是否存在关联用户)
|
||||||
|
|
||||||
|
|
||||||
### v2.17.8
|
### v2.17.8
|
||||||
updated 2025.7.13
|
updated 2025.7.13
|
||||||
|
|
||||||
|
|||||||
@@ -108,6 +108,7 @@ gfcli:
|
|||||||
gen:
|
gen:
|
||||||
dao:
|
dao:
|
||||||
- link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true"
|
- link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true"
|
||||||
|
# - link: "pgsql:postgres:hg123456@tcp(127.0.0.1:5432)/hotgo"
|
||||||
group: "default" # 分组 使用hotgo代码生成功能时必须填
|
group: "default" # 分组 使用hotgo代码生成功能时必须填
|
||||||
# tables: "" # 指定当前数据库中需要执行代码生成的数据表。如果为空,表示数据库的所有表都会生成。
|
# tables: "" # 指定当前数据库中需要执行代码生成的数据表。如果为空,表示数据库的所有表都会生成。
|
||||||
tablesEx: "hg_sys_addons_install" # 指定当前数据库中需要排除代码生成的数据表。
|
tablesEx: "hg_sys_addons_install" # 指定当前数据库中需要排除代码生成的数据表。
|
||||||
@@ -267,6 +268,7 @@ INSERT INTO `hg_test_table` (`id`, `category_id`, `title`, `description`, `conte
|
|||||||
gen:
|
gen:
|
||||||
dao:
|
dao:
|
||||||
- link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true"
|
- link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true"
|
||||||
|
# - link: "pgsql:postgres:hg123456@tcp(127.0.0.1:5432)/hotgo"
|
||||||
group: "default" # 分组 使用hotgo代码生成功能时必须填
|
group: "default" # 分组 使用hotgo代码生成功能时必须填
|
||||||
tablesEx: "hg_sys_addons_install" # 指定当前数据库中需要排除代码生成的数据表。
|
tablesEx: "hg_sys_addons_install" # 指定当前数据库中需要排除代码生成的数据表。
|
||||||
removePrefix: "hg_"
|
removePrefix: "hg_"
|
||||||
@@ -296,6 +298,7 @@ database:
|
|||||||
stdout: true
|
stdout: true
|
||||||
default:
|
default:
|
||||||
link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true"
|
link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true"
|
||||||
|
# - link: "pgsql:postgres:hg123456@tcp(127.0.0.1:5432)/hotgo"
|
||||||
debug: true
|
debug: true
|
||||||
Prefix: "hg_"
|
Prefix: "hg_"
|
||||||
default2:
|
default2:
|
||||||
@@ -350,7 +353,7 @@ hggen:
|
|||||||
|
|
||||||
### 指定数据库驱动
|
### 指定数据库驱动
|
||||||
|
|
||||||
> HotGo默认使用mysql驱动,如果你想用其他数据库驱动打开下方文件中注释即可
|
> HotGo默认使用mysql驱动,如果你想用其他数据库驱动打开下方文件中注释即可,目前已支持mysql、pgsql
|
||||||
|
|
||||||
修改文件路径:server/internal/library/hggen/internal/cmd/cmd_gen_dao.go
|
修改文件路径:server/internal/library/hggen/internal/cmd/cmd_gen_dao.go
|
||||||
```go
|
```go
|
||||||
@@ -361,7 +364,7 @@ import (
|
|||||||
//_ "github.com/gogf/gf/contrib/drivers/mssql/v2"
|
//_ "github.com/gogf/gf/contrib/drivers/mssql/v2"
|
||||||
_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
|
_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
|
||||||
//_ "github.com/gogf/gf/contrib/drivers/oracle/v2"
|
//_ "github.com/gogf/gf/contrib/drivers/oracle/v2"
|
||||||
//_ "github.com/gogf/gf/contrib/drivers/pgsql/v2"
|
_ "github.com/gogf/gf/contrib/drivers/pgsql/v2"
|
||||||
//_ "github.com/gogf/gf/contrib/drivers/sqlite/v2"
|
//_ "github.com/gogf/gf/contrib/drivers/sqlite/v2"
|
||||||
|
|
||||||
"hotgo/internal/library/hggen/internal/cmd/gendao"
|
"hotgo/internal/library/hggen/internal/cmd/gendao"
|
||||||
|
|||||||
73
docs/guide-zh-CN/sys-i18n.md
Normal file
73
docs/guide-zh-CN/sys-i18n.md
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
## 国际化
|
||||||
|
|
||||||
|
|
||||||
|
目录
|
||||||
|
|
||||||
|
- 介绍
|
||||||
|
- 配置文件
|
||||||
|
- 服务端使用
|
||||||
|
- Web端使用
|
||||||
|
- 更多文档
|
||||||
|
|
||||||
|
### 介绍
|
||||||
|
|
||||||
|
从`v2.18.6`版本开始,HotGo 提供了完善的国际化(i18n)支持,内置简体中文、繁体中文和英文三种语言包,默认语言为简体中文。目前已对后台管理首页进行了多语言适配,开发者可基于该机制扩展实现业务模块的多语言功能。
|
||||||
|
|
||||||
|
### 配置文件
|
||||||
|
|
||||||
|
国际化配置位于 `server/manifest/config/config.yaml` 文件中:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# hotgo系统配置
|
||||||
|
system:
|
||||||
|
# ...
|
||||||
|
# 国际化
|
||||||
|
i18n:
|
||||||
|
switch: true # 国际化功能开关,可选值:false|true,默认:true
|
||||||
|
defaultLanguage: "zh-CN" # 默认语言,可选值:zh-CN|zh-TW|en,默认:zh-CN
|
||||||
|
```
|
||||||
|
|
||||||
|
### 服务端使用
|
||||||
|
|
||||||
|
多语言配置文件存放目录:`server/manifest/i18n`,您可以在该目录下添加自定义的语言映射文件。
|
||||||
|
|
||||||
|
**使用示例:**
|
||||||
|
|
||||||
|
```go
|
||||||
|
// 设置当前上下文的语言为英文
|
||||||
|
ctx := gctx.New()
|
||||||
|
gi18n.WithLanguage(ctx, "en")
|
||||||
|
|
||||||
|
// 基础翻译
|
||||||
|
gi18n.T(ctx, "你好,美丽世界")
|
||||||
|
// 输出:Hello, Beautiful World
|
||||||
|
|
||||||
|
// 格式化翻译(支持参数替换)
|
||||||
|
gi18n.Tf(ctx, "剩余%v余额", 100)
|
||||||
|
// 输出:Remaining 100 Balance
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Web端使用
|
||||||
|
|
||||||
|
多语言配置文件存放目录:`web/src/locale`,您可以在该目录下添加自定义的语言映射文件。
|
||||||
|
|
||||||
|
> 提示:启用国际化功能后,后台管理界面右上角将显示语言切换选项。
|
||||||
|
|
||||||
|
**使用示例(假设当前语言为英文):**
|
||||||
|
|
||||||
|
```vue
|
||||||
|
<!-- 基础翻译 -->
|
||||||
|
<div>{{ t('你好,美丽世界') }}</div>
|
||||||
|
<!-- 输出:Hello, Beautiful World -->
|
||||||
|
|
||||||
|
<!-- 格式化翻译(支持参数替换) -->
|
||||||
|
<div>{{ t('剩余{num}余额', {num:100}) }}</div>
|
||||||
|
<!-- 输出:Remaining 100 Balance -->
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### 更多文档
|
||||||
|
|
||||||
|
- [gi18n](https://goframe.org/docs/core/gi18n)
|
||||||
|
- [vie-i18n](https://vue-i18n.intlify.dev)
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
## 轮播图管理
|
|
||||||
|
|
||||||
### 简介
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 使用说明
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 迁移或安装
|
|
||||||
|
|
||||||
1、安装 HotGo (2.17.8及以上)
|
|
||||||
|
|
||||||
项目介绍:https://github.com/bufanyun/hotgo
|
|
||||||
|
|
||||||
2、将当前插件项目拷贝进 HotGo 根目录的 server/addons 目录下
|
|
||||||
|
|
||||||
3、在 HotGo 根目录的 server/addons/modules 目录下创建go文件:flashbanner.go,内容如下:
|
|
||||||
```go
|
|
||||||
package modules
|
|
||||||
|
|
||||||
import _ "hotgo/addons/flashbanner"
|
|
||||||
```
|
|
||||||
|
|
||||||
4、HotGo 后台进入 开发工具->插件管理->找到 轮播图管理 (flashbanner) 进行安装
|
|
||||||
|
|
||||||
5、重启服务即可生效
|
|
||||||
|
|
||||||
|
|
||||||
### 常用命令行
|
|
||||||
|
|
||||||
```shell
|
|
||||||
# 接口维护-gen service
|
|
||||||
gf gen service -s=addons/flashbanner/logic -d=addons/flashbanner/service
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
### `gf gen dao` 之后迁移model文件
|
|
||||||
```
|
|
||||||
cp .\internal\dao\internal\banner* .\addons\flashbanner\dao\internal\
|
|
||||||
cp .\internal\model\entity\banner* .\addons\flashbanner\model\entity\
|
|
||||||
```
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
// Package banner
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package banner
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
|
||||||
"hotgo/addons/flashbanner/model/input/sysin"
|
|
||||||
"hotgo/internal/model/input/form"
|
|
||||||
)
|
|
||||||
|
|
||||||
// CreateReq 创建轮播图
|
|
||||||
type CreateReq struct {
|
|
||||||
g.Meta `path:"/banner/create" method:"post" tags:"轮播图" summary:"创建轮播图"`
|
|
||||||
sysin.BannerCreateInp
|
|
||||||
}
|
|
||||||
|
|
||||||
type CreateRes struct{}
|
|
||||||
|
|
||||||
// ListReq 查询列表
|
|
||||||
type ListReq struct {
|
|
||||||
g.Meta `path:"/banner/list" method:"get" tags:"轮播图" summary:"获取轮播图列表"`
|
|
||||||
sysin.BannerListInp
|
|
||||||
}
|
|
||||||
|
|
||||||
type ListRes struct {
|
|
||||||
List []*sysin.BannerListModel `json:"list" dc:"数据列表"`
|
|
||||||
form.PageRes
|
|
||||||
}
|
|
||||||
|
|
||||||
// ViewReq 获取指定信息
|
|
||||||
type ViewReq struct {
|
|
||||||
g.Meta `path:"/banner/view" method:"get" tags:"轮播图" summary:"获取指定轮播图信息"`
|
|
||||||
sysin.BannerViewInp
|
|
||||||
}
|
|
||||||
|
|
||||||
type ViewRes struct {
|
|
||||||
*sysin.BannerViewModel
|
|
||||||
}
|
|
||||||
|
|
||||||
// EditReq 修改/新增轮播图
|
|
||||||
type EditReq struct {
|
|
||||||
g.Meta `path:"/banner/edit" method:"post" tags:"轮播图" summary:"修改/新增轮播图"`
|
|
||||||
sysin.BannerEditInp
|
|
||||||
}
|
|
||||||
|
|
||||||
type EditRes struct{}
|
|
||||||
|
|
||||||
// DeleteReq 删除轮播图
|
|
||||||
type DeleteReq struct {
|
|
||||||
g.Meta `path:"/banner/delete" method:"post" tags:"轮播图" summary:"删除轮播图"`
|
|
||||||
sysin.BannerDeleteInp
|
|
||||||
}
|
|
||||||
|
|
||||||
type DeleteRes struct{}
|
|
||||||
|
|
||||||
// StatusReq 更新轮播图状态
|
|
||||||
type StatusReq struct {
|
|
||||||
g.Meta `path:"/banner/status" method:"post" tags:"轮播图" summary:"更新轮播图状态"`
|
|
||||||
sysin.BannerStatusInp
|
|
||||||
}
|
|
||||||
|
|
||||||
type StatusRes struct{}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
// Package config
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package config
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
|
||||||
"hotgo/addons/flashbanner/model/input/sysin"
|
|
||||||
)
|
|
||||||
|
|
||||||
// GetReq 获取指定分组的配置
|
|
||||||
type GetReq struct {
|
|
||||||
g.Meta `path:"/config/get" method:"get" tags:"轮播图管理" summary:"获取指定分组的配置"`
|
|
||||||
sysin.GetConfigInp
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetRes struct {
|
|
||||||
*sysin.GetConfigModel
|
|
||||||
}
|
|
||||||
|
|
||||||
// UpdateReq 获取指定分组的配置
|
|
||||||
type UpdateReq struct {
|
|
||||||
g.Meta `path:"/config/update" method:"post" tags:"轮播图管理" summary:"获取指定分组的配置"`
|
|
||||||
sysin.UpdateConfigInp
|
|
||||||
}
|
|
||||||
|
|
||||||
type UpdateRes struct {
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
// Package banner
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package banner
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
|
||||||
"hotgo/addons/flashbanner/model/input/sysin"
|
|
||||||
"hotgo/internal/model/input/form"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ListReq 查询列表
|
|
||||||
type ListReq struct {
|
|
||||||
g.Meta `path:"/banner/list" method:"get" tags:"轮播图" summary:"获取轮播图列表"`
|
|
||||||
sysin.BannerListInp
|
|
||||||
}
|
|
||||||
|
|
||||||
type ListRes struct {
|
|
||||||
List []*sysin.BannerListModel `json:"list" dc:"数据列表"`
|
|
||||||
form.PageRes
|
|
||||||
}
|
|
||||||
|
|
||||||
// ViewReq 获取指定信息
|
|
||||||
type ViewReq struct {
|
|
||||||
g.Meta `path:"/banner/view" method:"get" tags:"轮播图" summary:"获取指定轮播图信息"`
|
|
||||||
sysin.BannerViewInp
|
|
||||||
}
|
|
||||||
|
|
||||||
type ViewRes struct {
|
|
||||||
*sysin.BannerViewModel
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
// Package index
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package index
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
|
||||||
"hotgo/addons/flashbanner/model/input/sysin"
|
|
||||||
)
|
|
||||||
|
|
||||||
// TestReq 测试
|
|
||||||
type TestReq struct {
|
|
||||||
g.Meta `path:"/index/test" method:"get" tags:"轮播图管理" summary:"测试后台API"`
|
|
||||||
sysin.IndexTestInp
|
|
||||||
}
|
|
||||||
|
|
||||||
type TestRes struct {
|
|
||||||
*sysin.IndexTestModel
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
// Package index
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package index
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
|
||||||
"hotgo/addons/flashbanner/model/input/sysin"
|
|
||||||
)
|
|
||||||
|
|
||||||
// TestReq 测试
|
|
||||||
type TestReq struct {
|
|
||||||
g.Meta `path:"/index/test" method:"get" tags:"轮播图管理" summary:"测试前台API"`
|
|
||||||
sysin.IndexTestInp
|
|
||||||
}
|
|
||||||
|
|
||||||
type TestRes struct {
|
|
||||||
*sysin.IndexTestModel
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
// Package index
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package index
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
|
||||||
"hotgo/addons/flashbanner/model/input/sysin"
|
|
||||||
)
|
|
||||||
|
|
||||||
// TestReq 测试
|
|
||||||
type TestReq struct {
|
|
||||||
g.Meta `path:"/index/test" method:"get" summary:"轮播图管理" tags:"测试首页"`
|
|
||||||
sysin.IndexTestInp
|
|
||||||
}
|
|
||||||
|
|
||||||
type TestRes struct {
|
|
||||||
g.Meta `mime:"text/html" type:"string" example:"<html/>"`
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
// Package index
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package index
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
|
||||||
"hotgo/addons/flashbanner/model/input/sysin"
|
|
||||||
)
|
|
||||||
|
|
||||||
// TestReq 测试
|
|
||||||
type TestReq struct {
|
|
||||||
g.Meta `path:"/index/test" method:"get" tags:"轮播图管理" summary:"测试websocket"`
|
|
||||||
sysin.IndexTestInp
|
|
||||||
}
|
|
||||||
|
|
||||||
type TestRes struct {
|
|
||||||
*sysin.IndexTestModel
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
// Package consts
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package consts
|
|
||||||
|
|
||||||
// 常量枚举.
|
|
||||||
// 插件中的常量枚举可以统一在这目录下
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
// Package banner
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package banner
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"hotgo/addons/flashbanner/api/admin/banner"
|
|
||||||
"hotgo/addons/flashbanner/service"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
Banner = cBanner{}
|
|
||||||
)
|
|
||||||
|
|
||||||
type cBanner struct{}
|
|
||||||
|
|
||||||
// Create 创建轮播图
|
|
||||||
func (c *cBanner) Create(ctx context.Context, req *banner.CreateReq) (res *banner.CreateRes, err error) {
|
|
||||||
err = service.SysBanner().Create(ctx, &req.BannerCreateInp)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
res = &banner.CreateRes{}
|
|
||||||
return res, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// List 获取轮播图列表
|
|
||||||
func (c *cBanner) List(ctx context.Context, req *banner.ListReq) (res *banner.ListRes, err error) {
|
|
||||||
list, totalCount, err := service.SysBanner().List(ctx, &req.BannerListInp)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
res = &banner.ListRes{
|
|
||||||
List: list,
|
|
||||||
}
|
|
||||||
res.PageRes.Pack(&req.BannerListInp, totalCount)
|
|
||||||
return res, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// View 获取指定轮播图信息
|
|
||||||
func (c *cBanner) View(ctx context.Context, req *banner.ViewReq) (res *banner.ViewRes, err error) {
|
|
||||||
model, err := service.SysBanner().View(ctx, &req.BannerViewInp)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
res = &banner.ViewRes{model}
|
|
||||||
return res, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Edit 修改/新增轮播图
|
|
||||||
func (c *cBanner) Edit(ctx context.Context, req *banner.EditReq) (res *banner.EditRes, err error) {
|
|
||||||
err = service.SysBanner().Edit(ctx, &req.BannerEditInp)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
res = &banner.EditRes{}
|
|
||||||
return res, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete 删除轮播图
|
|
||||||
func (c *cBanner) Delete(ctx context.Context, req *banner.DeleteReq) (res *banner.DeleteRes, err error) {
|
|
||||||
err = service.SysBanner().Delete(ctx, &req.BannerDeleteInp)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
res = &banner.DeleteRes{}
|
|
||||||
return res, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Status 更新轮播图状态
|
|
||||||
func (c *cBanner) Status(ctx context.Context, req *banner.StatusReq) (res *banner.StatusRes, err error) {
|
|
||||||
err = service.SysBanner().Status(ctx, &req.BannerStatusInp)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
res = &banner.StatusRes{}
|
|
||||||
return res, nil
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
// Package sys
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package sys
|
|
||||||
|
|
||||||
import (
|
|
||||||
"hotgo/addons/flashbanner/controller/admin/banner"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
Banner = banner.Banner
|
|
||||||
)
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
// Package sys
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package sys
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"hotgo/addons/flashbanner/api/admin/config"
|
|
||||||
"hotgo/addons/flashbanner/service"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
Config = cConfig{}
|
|
||||||
)
|
|
||||||
|
|
||||||
type cConfig struct{}
|
|
||||||
|
|
||||||
// GetConfig 获取指定分组的配置
|
|
||||||
func (c *cConfig) GetConfig(ctx context.Context, req *config.GetReq) (res *config.GetRes, err error) {
|
|
||||||
data, err := service.SysConfig().GetConfigByGroup(ctx, &req.GetConfigInp)
|
|
||||||
|
|
||||||
res = new(config.GetRes)
|
|
||||||
res.GetConfigModel = data
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// UpdateConfig 更新指定分组的配置
|
|
||||||
func (c *cConfig) UpdateConfig(ctx context.Context, req *config.UpdateReq) (res *config.UpdateRes, err error) {
|
|
||||||
err = service.SysConfig().UpdateConfigByGroup(ctx, &req.UpdateConfigInp)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
// Package sys
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package sys
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"hotgo/addons/flashbanner/api/admin/index"
|
|
||||||
"hotgo/addons/flashbanner/service"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
Index = cIndex{}
|
|
||||||
)
|
|
||||||
|
|
||||||
type cIndex struct{}
|
|
||||||
|
|
||||||
// Test 测试
|
|
||||||
func (c *cIndex) Test(ctx context.Context, req *index.TestReq) (res *index.TestRes, err error) {
|
|
||||||
data, err := service.SysIndex().Test(ctx, &req.IndexTestInp)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
res = new(index.TestRes)
|
|
||||||
res.IndexTestModel = data
|
|
||||||
return
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
// Package banner
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package banner
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"hotgo/addons/flashbanner/api/admin/banner"
|
|
||||||
"hotgo/addons/flashbanner/service"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
BannerIndex = cBanner{}
|
|
||||||
)
|
|
||||||
|
|
||||||
type cBanner struct{}
|
|
||||||
|
|
||||||
// List 获取轮播图列表
|
|
||||||
func (c *cBanner) List(ctx context.Context, req *banner.ListReq) (res *banner.ListRes, err error) {
|
|
||||||
list, totalCount, err := service.SysBanner().List(ctx, &req.BannerListInp)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
res = &banner.ListRes{
|
|
||||||
List: list,
|
|
||||||
}
|
|
||||||
res.PageRes.Pack(&req.BannerListInp, totalCount)
|
|
||||||
return res, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// View 获取指定轮播图信息
|
|
||||||
func (c *cBanner) View(ctx context.Context, req *banner.ViewReq) (res *banner.ViewRes, err error) {
|
|
||||||
model, err := service.SysBanner().View(ctx, &req.BannerViewInp)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
res = &banner.ViewRes{model}
|
|
||||||
return res, nil
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
// Package api
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package api
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"hotgo/addons/flashbanner/api/api/index"
|
|
||||||
"hotgo/addons/flashbanner/service"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
Index = cIndex{}
|
|
||||||
)
|
|
||||||
|
|
||||||
type cIndex struct{}
|
|
||||||
|
|
||||||
// Test 测试
|
|
||||||
func (c *cIndex) Test(ctx context.Context, req *index.TestReq) (res *index.TestRes, err error) {
|
|
||||||
data, err := service.SysIndex().Test(ctx, &req.IndexTestInp)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
res = new(index.TestRes)
|
|
||||||
res.IndexTestModel = data
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
// Package home
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package home
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
|
||||||
"hotgo/addons/flashbanner/api/home/index"
|
|
||||||
"hotgo/addons/flashbanner/service"
|
|
||||||
"hotgo/internal/model"
|
|
||||||
isc "hotgo/internal/service"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Index 基础
|
|
||||||
var Index = cIndex{}
|
|
||||||
|
|
||||||
type cIndex struct{}
|
|
||||||
|
|
||||||
func (a *cIndex) Index(ctx context.Context, req *index.TestReq) (res *index.TestRes, err error) {
|
|
||||||
data, err := service.SysIndex().Test(ctx, &req.IndexTestInp)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
isc.View().RenderTpl(ctx, "home/index.html", model.View{Data: g.Map{
|
|
||||||
"name": data.Name,
|
|
||||||
"module": data.Module,
|
|
||||||
"time": data.Time,
|
|
||||||
}})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
// Package websocket
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package websocket
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"hotgo/addons/flashbanner/api/websocket/index"
|
|
||||||
"hotgo/addons/flashbanner/service"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
Index = cIndex{}
|
|
||||||
)
|
|
||||||
|
|
||||||
type cIndex struct{}
|
|
||||||
|
|
||||||
// Test 测试
|
|
||||||
func (c *cIndex) Test(ctx context.Context, req *index.TestReq) (res *index.TestRes, err error) {
|
|
||||||
data, err := service.SysIndex().Test(ctx, &req.IndexTestInp)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
res = new(index.TestRes)
|
|
||||||
res.IndexTestModel = data
|
|
||||||
return
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
// Package crons
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package crons
|
|
||||||
|
|
||||||
// 定时任务.
|
|
||||||
// 插件中的定时任务可以统一在这里注册和处理
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
// Package dao
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package dao
|
|
||||||
|
|
||||||
import "hotgo/addons/flashbanner/dao/internal"
|
|
||||||
|
|
||||||
var (
|
|
||||||
Banner = internal.NewBannerDao()
|
|
||||||
)
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
// ==========================================================================
|
|
||||||
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
|
|
||||||
// ==========================================================================
|
|
||||||
|
|
||||||
package internal
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
|
|
||||||
"github.com/gogf/gf/v2/database/gdb"
|
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
|
||||||
)
|
|
||||||
|
|
||||||
// BannerDao is the data access object for table hg_banner.
|
|
||||||
type BannerDao struct {
|
|
||||||
table string // table is the underlying table name of the DAO.
|
|
||||||
group string // group is the database configuration group name of current DAO.
|
|
||||||
columns BannerColumns // columns contains all the column names of Table for convenient usage.
|
|
||||||
}
|
|
||||||
|
|
||||||
// BannerColumns defines and stores column names for table hg_banner.
|
|
||||||
type BannerColumns struct {
|
|
||||||
Id string //
|
|
||||||
Name string // 轮播图名称
|
|
||||||
Cover string // 图片URL
|
|
||||||
Link string // 跳转链接,小程序内用相对地址
|
|
||||||
Type string // 类型默认不传
|
|
||||||
Status string // 1可用
|
|
||||||
Sort string // 排序,数字越大越靠前
|
|
||||||
CreatedAt string //
|
|
||||||
UpdatedAt string //
|
|
||||||
}
|
|
||||||
|
|
||||||
// bannerColumns holds the columns for table hg_banner.
|
|
||||||
var bannerColumns = BannerColumns{
|
|
||||||
Id: "id",
|
|
||||||
Name: "name",
|
|
||||||
Cover: "cover",
|
|
||||||
Link: "link",
|
|
||||||
Type: "type",
|
|
||||||
Status: "status",
|
|
||||||
Sort: "sort",
|
|
||||||
CreatedAt: "created_at",
|
|
||||||
UpdatedAt: "updated_at",
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewBannerDao creates and returns a new DAO object for table data access.
|
|
||||||
func NewBannerDao() *BannerDao {
|
|
||||||
return &BannerDao{
|
|
||||||
group: "default",
|
|
||||||
table: "hg_banner",
|
|
||||||
columns: bannerColumns,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// DB retrieves and returns the underlying raw database management object of current DAO.
|
|
||||||
func (dao *BannerDao) DB() gdb.DB {
|
|
||||||
return g.DB(dao.group)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Table returns the table name of current dao.
|
|
||||||
func (dao *BannerDao) Table() string {
|
|
||||||
return dao.table
|
|
||||||
}
|
|
||||||
|
|
||||||
// Columns returns all column names of current dao.
|
|
||||||
func (dao *BannerDao) Columns() BannerColumns {
|
|
||||||
return dao.columns
|
|
||||||
}
|
|
||||||
|
|
||||||
// Group returns the configuration group name of database of current dao.
|
|
||||||
func (dao *BannerDao) Group() string {
|
|
||||||
return dao.group
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ctx creates and returns the Model for current DAO, It automatically sets the context for current operation.
|
|
||||||
func (dao *BannerDao) Ctx(ctx context.Context) *gdb.Model {
|
|
||||||
return dao.DB().Model(dao.table).Safe().Ctx(ctx)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Transaction wraps the transaction logic using function f.
|
|
||||||
// It rollbacks the transaction and returns the error from function f if it returns non-nil error.
|
|
||||||
// It commits the transaction and returns nil if function f returns nil.
|
|
||||||
//
|
|
||||||
// Note that, you should not Commit or Rollback the transaction in function f
|
|
||||||
// as it is automatically handled by this function.
|
|
||||||
func (dao *BannerDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) {
|
|
||||||
return dao.Ctx(ctx).Transaction(ctx, f)
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
// Package global
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package global
|
|
||||||
|
|
||||||
import "hotgo/internal/library/addons"
|
|
||||||
|
|
||||||
var (
|
|
||||||
skeleton *addons.Skeleton // 插件架子
|
|
||||||
)
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
// Package global
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package global
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"hotgo/internal/library/addons"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Init(ctx context.Context, sk *addons.Skeleton) {
|
|
||||||
skeleton = sk
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetSkeleton() *addons.Skeleton {
|
|
||||||
if skeleton == nil {
|
|
||||||
panic("addon skeleton not initialized.")
|
|
||||||
}
|
|
||||||
return skeleton
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
// ==========================================================================
|
|
||||||
// Code generated by GoFrame CLI tool. DO NOT EDIT.
|
|
||||||
// ==========================================================================
|
|
||||||
|
|
||||||
package logic
|
|
||||||
|
|
||||||
import (
|
|
||||||
_ "hotgo/addons/flashbanner/logic/sys"
|
|
||||||
)
|
|
||||||
@@ -1,173 +0,0 @@
|
|||||||
// Package sys
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package sys
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"hotgo/addons/flashbanner/dao"
|
|
||||||
"hotgo/addons/flashbanner/model/entity"
|
|
||||||
"hotgo/addons/flashbanner/model/input/sysin"
|
|
||||||
"hotgo/addons/flashbanner/service"
|
|
||||||
"github.com/gogf/gf/v2/errors/gerror"
|
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
|
||||||
"github.com/gogf/gf/v2/os/gtime"
|
|
||||||
)
|
|
||||||
|
|
||||||
type sSysBanner struct{}
|
|
||||||
|
|
||||||
func NewSysBanner() *sSysBanner {
|
|
||||||
return &sSysBanner{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
service.RegisterSysBanner(NewSysBanner())
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetMaxSort 获取最大排序值
|
|
||||||
func (s *sSysBanner) GetMaxSort(ctx context.Context) (maxSort int, err error) {
|
|
||||||
var result struct {
|
|
||||||
MaxSort int `json:"maxSort"`
|
|
||||||
}
|
|
||||||
err = dao.Banner.Ctx(ctx).Fields("MAX(sort) as maxSort").Scan(&result)
|
|
||||||
if err != nil {
|
|
||||||
return 0, gerror.Wrap(err, "获取最大排序值失败")
|
|
||||||
}
|
|
||||||
return result.MaxSort, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create 创建轮播图
|
|
||||||
func (s *sSysBanner) Create(ctx context.Context, in *sysin.BannerCreateInp) (err error) {
|
|
||||||
// 如果没有设置排序值,自动设置为最大值+1
|
|
||||||
if in.Sort == 0 {
|
|
||||||
maxSort, err := s.GetMaxSort(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
in.Sort = maxSort + 1
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = dao.Banner.Ctx(ctx).Data(g.Map{
|
|
||||||
dao.Banner.Columns().Name: in.Name,
|
|
||||||
dao.Banner.Columns().Cover: in.Cover,
|
|
||||||
dao.Banner.Columns().Link: in.Link,
|
|
||||||
dao.Banner.Columns().Type: in.Type,
|
|
||||||
dao.Banner.Columns().Status: 1, // 默认启用
|
|
||||||
dao.Banner.Columns().Sort: in.Sort,
|
|
||||||
dao.Banner.Columns().CreatedAt: gtime.Now(),
|
|
||||||
dao.Banner.Columns().UpdatedAt: gtime.Now(),
|
|
||||||
}).Insert()
|
|
||||||
if err != nil {
|
|
||||||
err = gerror.Wrap(err, "创建轮播图失败")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Edit 修改/新增轮播图
|
|
||||||
func (s *sSysBanner) Edit(ctx context.Context, in *sysin.BannerEditInp) (err error) {
|
|
||||||
if in.Id > 0 {
|
|
||||||
// 修改
|
|
||||||
_, err = dao.Banner.Ctx(ctx).Where(dao.Banner.Columns().Id, in.Id).Data(g.Map{
|
|
||||||
dao.Banner.Columns().Name: in.Name,
|
|
||||||
dao.Banner.Columns().Cover: in.Cover,
|
|
||||||
dao.Banner.Columns().Link: in.Link,
|
|
||||||
dao.Banner.Columns().Type: in.Type,
|
|
||||||
dao.Banner.Columns().Status: in.Status,
|
|
||||||
dao.Banner.Columns().Sort: in.Sort,
|
|
||||||
dao.Banner.Columns().UpdatedAt: gtime.Now(),
|
|
||||||
}).Update()
|
|
||||||
if err != nil {
|
|
||||||
err = gerror.Wrap(err, "修改轮播图失败")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// 新增
|
|
||||||
_, err = dao.Banner.Ctx(ctx).Data(g.Map{
|
|
||||||
dao.Banner.Columns().Name: in.Name,
|
|
||||||
dao.Banner.Columns().Cover: in.Cover,
|
|
||||||
dao.Banner.Columns().Link: in.Link,
|
|
||||||
dao.Banner.Columns().Type: in.Type,
|
|
||||||
dao.Banner.Columns().Status: in.Status,
|
|
||||||
dao.Banner.Columns().Sort: in.Sort,
|
|
||||||
dao.Banner.Columns().CreatedAt: gtime.Now(),
|
|
||||||
dao.Banner.Columns().UpdatedAt: gtime.Now(),
|
|
||||||
}).Insert()
|
|
||||||
if err != nil {
|
|
||||||
err = gerror.Wrap(err, "新增轮播图失败")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete 删除轮播图
|
|
||||||
func (s *sSysBanner) Delete(ctx context.Context, in *sysin.BannerDeleteInp) (err error) {
|
|
||||||
_, err = dao.Banner.Ctx(ctx).Where(dao.Banner.Columns().Id, in.Id).Delete()
|
|
||||||
if err != nil {
|
|
||||||
err = gerror.Wrap(err, "删除轮播图失败")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// View 获取指定轮播图信息
|
|
||||||
func (s *sSysBanner) View(ctx context.Context, in *sysin.BannerViewInp) (res *sysin.BannerViewModel, err error) {
|
|
||||||
var banner entity.Banner
|
|
||||||
err = dao.Banner.Ctx(ctx).Where(dao.Banner.Columns().Id, in.Id).Scan(&banner)
|
|
||||||
if err != nil {
|
|
||||||
err = gerror.Wrap(err, "获取轮播图信息失败")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if banner.Id == 0 {
|
|
||||||
err = gerror.New("轮播图不存在")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
res = &sysin.BannerViewModel{Banner: banner}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// List 获取轮播图列表
|
|
||||||
func (s *sSysBanner) List(ctx context.Context, in *sysin.BannerListInp) (list []*sysin.BannerListModel, totalCount int, err error) {
|
|
||||||
m := dao.Banner.Ctx(ctx)
|
|
||||||
|
|
||||||
// 条件查询
|
|
||||||
if in.Name != "" {
|
|
||||||
m = m.WhereLike(dao.Banner.Columns().Name, "%"+in.Name+"%")
|
|
||||||
}
|
|
||||||
if in.Type > 0 {
|
|
||||||
m = m.Where(dao.Banner.Columns().Type, in.Type)
|
|
||||||
}
|
|
||||||
|
|
||||||
var banners []*entity.Banner
|
|
||||||
if in.Page > 0 && in.PerPage > 0 {
|
|
||||||
err = m.Page(in.Page, in.PerPage).OrderDesc(dao.Banner.Columns().Sort).OrderDesc(dao.Banner.Columns().Id).ScanAndCount(&banners, &totalCount, false)
|
|
||||||
} else {
|
|
||||||
err = m.OrderDesc(dao.Banner.Columns().Sort).OrderDesc(dao.Banner.Columns().Id).ScanAndCount(&banners, &totalCount, false)
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
err = gerror.Wrap(err, "获取轮播图列表失败")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
list = make([]*sysin.BannerListModel, len(banners))
|
|
||||||
for i, banner := range banners {
|
|
||||||
list[i] = &sysin.BannerListModel{Banner: *banner}
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Status 更新轮播图状态
|
|
||||||
func (s *sSysBanner) Status(ctx context.Context, in *sysin.BannerStatusInp) (err error) {
|
|
||||||
_, err = dao.Banner.Ctx(ctx).Where(dao.Banner.Columns().Id, in.Id).Data(g.Map{
|
|
||||||
dao.Banner.Columns().Status: in.Status,
|
|
||||||
dao.Banner.Columns().UpdatedAt: gtime.Now(),
|
|
||||||
}).Update()
|
|
||||||
if err != nil {
|
|
||||||
err = gerror.Wrap(err, "更新轮播图状态失败")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
// Package sys
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package sys
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/gogf/gf/v2/util/gconv"
|
|
||||||
"hotgo/addons/flashbanner/global"
|
|
||||||
"hotgo/addons/flashbanner/model"
|
|
||||||
"hotgo/addons/flashbanner/model/input/sysin"
|
|
||||||
"hotgo/addons/flashbanner/service"
|
|
||||||
isc "hotgo/internal/service"
|
|
||||||
)
|
|
||||||
|
|
||||||
type sSysConfig struct{}
|
|
||||||
|
|
||||||
func NewSysConfig() *sSysConfig {
|
|
||||||
return &sSysConfig{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
service.RegisterSysConfig(NewSysConfig())
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetBasic 获取基础配置
|
|
||||||
func (s *sSysConfig) GetBasic(ctx context.Context) (conf *model.BasicConfig, err error) {
|
|
||||||
var in sysin.GetConfigInp
|
|
||||||
in.GetAddonsConfigInp.AddonName = global.GetSkeleton().Name
|
|
||||||
in.GetAddonsConfigInp.Group = "basic"
|
|
||||||
models, err := isc.SysAddonsConfig().GetConfigByGroup(ctx, &in.GetAddonsConfigInp)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
err = gconv.Struct(models.List, &conf)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetConfigByGroup 获取指定分组配置
|
|
||||||
func (s *sSysConfig) GetConfigByGroup(ctx context.Context, in *sysin.GetConfigInp) (res *sysin.GetConfigModel, err error) {
|
|
||||||
in.GetAddonsConfigInp.AddonName = global.GetSkeleton().Name
|
|
||||||
models, err := isc.SysAddonsConfig().GetConfigByGroup(ctx, &in.GetAddonsConfigInp)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
res = new(sysin.GetConfigModel)
|
|
||||||
res.List = models.List
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// UpdateConfigByGroup 更新指定分组的配置
|
|
||||||
func (s *sSysConfig) UpdateConfigByGroup(ctx context.Context, in *sysin.UpdateConfigInp) error {
|
|
||||||
in.UpdateAddonsConfigInp.AddonName = global.GetSkeleton().Name
|
|
||||||
return isc.SysAddonsConfig().UpdateConfigByGroup(ctx, &in.UpdateAddonsConfigInp)
|
|
||||||
}
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
// Package sys
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package sys
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"fmt"
|
|
||||||
"github.com/gogf/gf/v2/os/gtime"
|
|
||||||
"hotgo/addons/flashbanner/global"
|
|
||||||
"hotgo/addons/flashbanner/model/input/sysin"
|
|
||||||
"hotgo/addons/flashbanner/service"
|
|
||||||
"hotgo/internal/library/contexts"
|
|
||||||
)
|
|
||||||
|
|
||||||
type sSysIndex struct{}
|
|
||||||
|
|
||||||
func NewSysIndex() *sSysIndex {
|
|
||||||
return &sSysIndex{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
service.RegisterSysIndex(NewSysIndex())
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test 测试
|
|
||||||
func (s *sSysIndex) Test(ctx context.Context, in *sysin.IndexTestInp) (res *sysin.IndexTestModel, err error) {
|
|
||||||
res = new(sysin.IndexTestModel)
|
|
||||||
res.Name = in.Name
|
|
||||||
res.Module = fmt.Sprintf("当前插件模块是:%s,当前应用模块是:%s", global.GetSkeleton().Name, contexts.Get(ctx).Module)
|
|
||||||
res.Time = gtime.Now()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
@@ -1,176 +0,0 @@
|
|||||||
// Package flashbanner
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package flashbanner
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/gogf/gf/v2/net/ghttp"
|
|
||||||
"github.com/gogf/gf/v2/os/gctx"
|
|
||||||
_ "hotgo/addons/flashbanner/crons"
|
|
||||||
"hotgo/addons/flashbanner/global"
|
|
||||||
_ "hotgo/addons/flashbanner/logic"
|
|
||||||
_ "hotgo/addons/flashbanner/queues"
|
|
||||||
"hotgo/addons/flashbanner/router"
|
|
||||||
"hotgo/addons/migrations"
|
|
||||||
"hotgo/internal/library/addons"
|
|
||||||
"hotgo/internal/service"
|
|
||||||
"sync"
|
|
||||||
|
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
|
||||||
"github.com/gogf/gf/v2/os/gfile"
|
|
||||||
|
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
type module struct {
|
|
||||||
skeleton *addons.Skeleton
|
|
||||||
ctx context.Context
|
|
||||||
sync.Mutex
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
newModule()
|
|
||||||
}
|
|
||||||
|
|
||||||
func newModule() {
|
|
||||||
m := &module{
|
|
||||||
skeleton: &addons.Skeleton{
|
|
||||||
Label: `轮播图管理`,
|
|
||||||
Name: `flashbanner`,
|
|
||||||
Group: 6,
|
|
||||||
Logo: "",
|
|
||||||
Brief: ``,
|
|
||||||
Description: ``,
|
|
||||||
Author: ``,
|
|
||||||
Version: `v1.0.0`, // 当该版本号高于已安装的版本号时,会提示可以更新
|
|
||||||
},
|
|
||||||
ctx: gctx.New(),
|
|
||||||
}
|
|
||||||
addons.RegisterModule(m)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Start 启动模块
|
|
||||||
func (m *module) Start(option *addons.Option) (err error) {
|
|
||||||
// 初始化模块
|
|
||||||
global.Init(m.ctx, m.skeleton)
|
|
||||||
|
|
||||||
// 注册插件路由
|
|
||||||
option.Server.Group("/", func(group *ghttp.RouterGroup) {
|
|
||||||
group.Middleware(service.Middleware().Addon)
|
|
||||||
router.Admin(m.ctx, group)
|
|
||||||
router.Api(m.ctx, group)
|
|
||||||
router.Home(m.ctx, group)
|
|
||||||
router.WebSocket(m.ctx, group)
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stop 停止模块
|
|
||||||
func (m *module) Stop() (err error) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ctx 上下文
|
|
||||||
func (m *module) Ctx() context.Context {
|
|
||||||
return m.ctx
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSkeleton 获取模块
|
|
||||||
func (m *module) GetSkeleton() *addons.Skeleton {
|
|
||||||
return m.skeleton
|
|
||||||
}
|
|
||||||
|
|
||||||
// Install 安装模块
|
|
||||||
func (m *module) Install(ctx context.Context) (err error) {
|
|
||||||
// 执行数据库安装文件
|
|
||||||
// 获取当前目录
|
|
||||||
sqlPath := gfile.Pwd() + gfile.Separator + "addons/migrations/flashbanner/install.sql"
|
|
||||||
g.Log().Debug(ctx, "安装模块", m.skeleton.Label, "路径", sqlPath)
|
|
||||||
result, err := migrations.DoSqlContent(ctx, sqlPath)
|
|
||||||
if err != nil {
|
|
||||||
g.Log().Error(ctx, "安装模块", m.skeleton.Label, "失败", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
g.Log().Debug(ctx, "安装模块", m.skeleton.Label, "成功", result)
|
|
||||||
// 复制web目录下的文件到管理后台对应位置
|
|
||||||
// 插件的前端配置文件位于插件目录下的web子目录
|
|
||||||
sourceWebPath := gfile.Pwd() + gfile.Separator + "addons/" + m.skeleton.Name + "/web/src/views/addons/" + m.skeleton.Name
|
|
||||||
targetWebPath := "../web/src/views/addons/" + m.skeleton.Name
|
|
||||||
g.Log().Debug(ctx, "复制前端配置文件", "源路径:", sourceWebPath, "目标路径:", targetWebPath)
|
|
||||||
|
|
||||||
// 检查源路径是否存在
|
|
||||||
if gfile.Exists(sourceWebPath) {
|
|
||||||
err = gfile.CopyDir(sourceWebPath, targetWebPath)
|
|
||||||
if err != nil {
|
|
||||||
g.Log().Error(ctx, "复制前端配置文件失败:", err)
|
|
||||||
} else {
|
|
||||||
g.Log().Debug(ctx, "复制前端配置文件成功")
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
g.Log().Warning(ctx, "前端配置文件源路径不存在:", sourceWebPath)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 复制API文件
|
|
||||||
sourceApiPath := gfile.Pwd() + gfile.Separator + "addons/" + m.skeleton.Name + "/web/src/api/addons/" + m.skeleton.Name
|
|
||||||
targetApiPath := "../web/src/api/addons/" + m.skeleton.Name
|
|
||||||
g.Log().Debug(ctx, "复制API文件", "源路径:", sourceApiPath, "目标路径:", targetApiPath)
|
|
||||||
if gfile.Exists(sourceApiPath) {
|
|
||||||
err = gfile.CopyDir(sourceApiPath, targetApiPath)
|
|
||||||
if err != nil {
|
|
||||||
g.Log().Error(ctx, "复制API文件失败:", err)
|
|
||||||
} else {
|
|
||||||
g.Log().Debug(ctx, "复制API文件成功")
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
g.Log().Warning(ctx, "API文件源路径不存在:", sourceApiPath)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Upgrade 更新模块
|
|
||||||
func (m *module) Upgrade(ctx context.Context) (err error) {
|
|
||||||
// ...
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnInstall 卸载模块
|
|
||||||
func (m *module) UnInstall(ctx context.Context) (err error) {
|
|
||||||
// ...
|
|
||||||
// 移除数据库安装文件
|
|
||||||
sqlPath := gfile.Pwd() + gfile.Separator + "addons/migrations/flashbanner/uninstall.sql"
|
|
||||||
g.Log().Debug(ctx, "卸载模块", m.skeleton.Label, "路径", sqlPath)
|
|
||||||
result, err := migrations.DoSqlContent(ctx, sqlPath)
|
|
||||||
if err != nil {
|
|
||||||
g.Log().Error(ctx, "卸载模块", m.skeleton.Label, "失败", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
g.Log().Debug(ctx, "卸载模块", m.skeleton.Label, "成功", result)
|
|
||||||
// 删除前端文件
|
|
||||||
targetWebPath := "../web/src/views/addons/" + m.skeleton.Name
|
|
||||||
targetApiPath := "../web/src/api/addons/" + m.skeleton.Name
|
|
||||||
|
|
||||||
// 删除配置页面文件
|
|
||||||
if gfile.Exists(targetWebPath) {
|
|
||||||
err = gfile.Remove(targetWebPath)
|
|
||||||
if err != nil {
|
|
||||||
g.Log().Warning(ctx, "删除前端配置文件失败:", err)
|
|
||||||
} else {
|
|
||||||
g.Log().Debug(ctx, "删除前端配置文件成功")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除API文件
|
|
||||||
if gfile.Exists(targetApiPath) {
|
|
||||||
err = gfile.Remove(targetApiPath)
|
|
||||||
if err != nil {
|
|
||||||
g.Log().Warning(ctx, "删除API文件失败:", err)
|
|
||||||
} else {
|
|
||||||
g.Log().Debug(ctx, "删除API文件成功")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
// Package model
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package model
|
|
||||||
|
|
||||||
// BasicConfig 基础配置
|
|
||||||
type BasicConfig struct {
|
|
||||||
Test string `json:"basicTest"`
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
// =================================================================================
|
|
||||||
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
|
|
||||||
// =================================================================================
|
|
||||||
|
|
||||||
package entity
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/gogf/gf/v2/os/gtime"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Banner is the golang structure for table banner.
|
|
||||||
type Banner struct {
|
|
||||||
Id int `json:"id" orm:"id" description:""`
|
|
||||||
Name string `json:"name" orm:"name" description:"轮播图名称"`
|
|
||||||
Cover string `json:"cover" orm:"cover" description:"图片URL"`
|
|
||||||
Link string `json:"link" orm:"link" description:"跳转链接,小程序内用相对地址"`
|
|
||||||
Type int `json:"type" orm:"type" description:"类型默认不传"`
|
|
||||||
Status uint `json:"status" orm:"status" description:"1可用"`
|
|
||||||
Sort int `json:"sort" orm:"sort" description:"排序,数字越大越靠前"`
|
|
||||||
CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:""`
|
|
||||||
UpdatedAt *gtime.Time `json:"updatedAt" orm:"updated_at" description:""`
|
|
||||||
}
|
|
||||||
@@ -1,98 +0,0 @@
|
|||||||
// Package sysin
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package sysin
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"hotgo/addons/flashbanner/model/entity"
|
|
||||||
"hotgo/internal/model/input/form"
|
|
||||||
"github.com/gogf/gf/v2/errors/gerror"
|
|
||||||
)
|
|
||||||
|
|
||||||
// BannerCreateInp 创建轮播图
|
|
||||||
type BannerCreateInp struct {
|
|
||||||
Name string `json:"name" v:"required#轮播图名称不能为空" dc:"轮播图名称"`
|
|
||||||
Cover string `json:"cover" v:"required#轮播图封面不能为空" dc:"轮播图封面"`
|
|
||||||
Link string `json:"link" dc:"轮播图链接"`
|
|
||||||
Type int `json:"type" dc:"轮播图类型"`
|
|
||||||
Sort int `json:"sort" dc:"排序,数字越大越靠前"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (in *BannerCreateInp) Filter(ctx context.Context) (err error) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
type BannerCreateModel struct{}
|
|
||||||
|
|
||||||
// BannerEditInp 修改/新增轮播图
|
|
||||||
type BannerEditInp struct {
|
|
||||||
entity.Banner
|
|
||||||
}
|
|
||||||
|
|
||||||
func (in *BannerEditInp) Filter(ctx context.Context) (err error) {
|
|
||||||
if in.Name == "" {
|
|
||||||
err = gerror.New("轮播图名称不能为空")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if in.Cover == "" {
|
|
||||||
err = gerror.New("轮播图封面不能为空")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
type BannerEditModel struct{}
|
|
||||||
|
|
||||||
// BannerDeleteInp 删除轮播图
|
|
||||||
type BannerDeleteInp struct {
|
|
||||||
Id interface{} `json:"id" v:"required#轮播图ID不能为空" dc:"轮播图ID"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (in *BannerDeleteInp) Filter(ctx context.Context) (err error) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
type BannerDeleteModel struct{}
|
|
||||||
|
|
||||||
// BannerViewInp 获取指定轮播图信息
|
|
||||||
type BannerViewInp struct {
|
|
||||||
Id int64 `json:"id" v:"required#轮播图ID不能为空" dc:"轮播图ID"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (in *BannerViewInp) Filter(ctx context.Context) (err error) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
type BannerViewModel struct {
|
|
||||||
entity.Banner
|
|
||||||
}
|
|
||||||
|
|
||||||
// BannerListInp 获取轮播图列表
|
|
||||||
type BannerListInp struct {
|
|
||||||
form.PageReq
|
|
||||||
Name string `json:"name" dc:"轮播图名称"`
|
|
||||||
Type int `json:"type" dc:"轮播图类型"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (in *BannerListInp) Filter(ctx context.Context) (err error) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
type BannerListModel struct {
|
|
||||||
entity.Banner
|
|
||||||
}
|
|
||||||
|
|
||||||
// BannerStatusInp 更新轮播图状态
|
|
||||||
type BannerStatusInp struct {
|
|
||||||
Id int64 `json:"id" v:"required#轮播图ID不能为空" dc:"轮播图ID"`
|
|
||||||
Status int `json:"status" v:"required#状态不能为空" dc:"状态"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (in *BannerStatusInp) Filter(ctx context.Context) (err error) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
type BannerStatusModel struct{}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
// Package sysin
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package sysin
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
|
||||||
"hotgo/internal/model/input/sysin"
|
|
||||||
)
|
|
||||||
|
|
||||||
// UpdateConfigInp 更新指定配置
|
|
||||||
type UpdateConfigInp struct {
|
|
||||||
sysin.UpdateAddonsConfigInp
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetConfigInp struct {
|
|
||||||
sysin.GetAddonsConfigInp
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetConfigModel struct {
|
|
||||||
List g.Map `json:"list"`
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
// Package sysin
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
//
|
|
||||||
package sysin
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/gogf/gf/v2/os/gtime"
|
|
||||||
)
|
|
||||||
|
|
||||||
// IndexTestInp 测试
|
|
||||||
type IndexTestInp struct {
|
|
||||||
Name string `json:"name" d:"HotGo" dc:"名称"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (in *IndexTestInp) Filter(ctx context.Context) (err error) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
type IndexTestModel struct {
|
|
||||||
Name string `json:"name" dc:"名称"`
|
|
||||||
Module string `json:"module" dc:"当前插件模块"`
|
|
||||||
Time *gtime.Time `json:"time" dc:"当前时间"`
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
// Package queues
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package queues
|
|
||||||
|
|
||||||
// 消息队列.
|
|
||||||
// 插件中的消息队列消费者可以统一在这里注册和处理
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
Hello!这是创建插件 [轮播图管理] 时默认生成的一个静态目录文件,用于测试,当你看到这个提示时,说明已经联调成功啦!
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no">
|
|
||||||
<meta name="keywords" content="@{.Keywords}"/>
|
|
||||||
<meta name="description" content="@{.Description}"/>
|
|
||||||
<title>@{.Title}</title>
|
|
||||||
<script type="text/javascript" src="/resource/home/js/jquery-3.6.0.min.js"></script>
|
|
||||||
<style>
|
|
||||||
html, body {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
background-color: #f6f6f6;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div style="padding-top: 100px;text-align:center;">
|
|
||||||
<h1><p>Hello,@{.Data.name}!!</p></h1>
|
|
||||||
<h2><p>@{.Data.module}</p></h2>
|
|
||||||
<h2><p>服务器时间:@{.Data.time}</p></h2>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
<script>
|
|
||||||
</script>
|
|
||||||
</html>
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
// Package router
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package router
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/gogf/gf/v2/net/ghttp"
|
|
||||||
"hotgo/addons/flashbanner/controller/admin/sys"
|
|
||||||
"hotgo/addons/flashbanner/controller/admin/banner"
|
|
||||||
"hotgo/addons/flashbanner/global"
|
|
||||||
"hotgo/addons/flashbanner/router/genrouter"
|
|
||||||
"hotgo/internal/consts"
|
|
||||||
"hotgo/internal/library/addons"
|
|
||||||
"hotgo/internal/service"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Admin 后台路由
|
|
||||||
func Admin(ctx context.Context, group *ghttp.RouterGroup) {
|
|
||||||
prefix := addons.RouterPrefix(ctx, consts.AppAdmin, global.GetSkeleton().Name)
|
|
||||||
group.Group(prefix, func(group *ghttp.RouterGroup) {
|
|
||||||
group.Bind(
|
|
||||||
sys.Index,
|
|
||||||
)
|
|
||||||
group.Middleware(service.Middleware().AdminAuth)
|
|
||||||
group.Bind(
|
|
||||||
sys.Config,
|
|
||||||
banner.Banner,
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
// 注册生成路由
|
|
||||||
genrouter.Register(ctx, group)
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
// Package router
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package router
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/gogf/gf/v2/net/ghttp"
|
|
||||||
"hotgo/addons/flashbanner/controller/api/banner"
|
|
||||||
"hotgo/addons/flashbanner/global"
|
|
||||||
"hotgo/internal/consts"
|
|
||||||
"hotgo/internal/library/addons"
|
|
||||||
"hotgo/internal/service"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Api 前台路由
|
|
||||||
func Api(ctx context.Context, group *ghttp.RouterGroup) {
|
|
||||||
prefix := addons.RouterPrefix(ctx, consts.AppApi, global.GetSkeleton().Name)
|
|
||||||
group.Group(prefix, func(group *ghttp.RouterGroup) {
|
|
||||||
group.Bind(
|
|
||||||
// 无需验证的路由
|
|
||||||
banner.BannerIndex,
|
|
||||||
)
|
|
||||||
group.Middleware(service.Middleware().ApiAuth)
|
|
||||||
group.Bind(
|
|
||||||
// 需要验证的路由
|
|
||||||
// ...
|
|
||||||
)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
// Package genrouter
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package genrouter
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/gogf/gf/v2/net/ghttp"
|
|
||||||
"hotgo/addons/flashbanner/global"
|
|
||||||
"hotgo/internal/consts"
|
|
||||||
"hotgo/internal/library/addons"
|
|
||||||
"hotgo/internal/service"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
NoLoginRouter []interface{} // 无需登录
|
|
||||||
LoginRequiredRouter []interface{} // 需要登录
|
|
||||||
)
|
|
||||||
|
|
||||||
// Register 注册通过代码生成的后台路由
|
|
||||||
func Register(ctx context.Context, group *ghttp.RouterGroup) {
|
|
||||||
prefix := addons.RouterPrefix(ctx, consts.AppAdmin, global.GetSkeleton().Name)
|
|
||||||
group.Group(prefix, func(group *ghttp.RouterGroup) {
|
|
||||||
if len(NoLoginRouter) > 0 {
|
|
||||||
group.Bind(NoLoginRouter...)
|
|
||||||
}
|
|
||||||
group.Middleware(service.Middleware().AdminAuth)
|
|
||||||
if len(LoginRequiredRouter) > 0 {
|
|
||||||
group.Bind(LoginRequiredRouter...)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
// Package router
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package router
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/gogf/gf/v2/net/ghttp"
|
|
||||||
"hotgo/addons/flashbanner/controller/home"
|
|
||||||
"hotgo/addons/flashbanner/global"
|
|
||||||
"hotgo/internal/consts"
|
|
||||||
"hotgo/internal/library/addons"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Home 前台页面路由
|
|
||||||
func Home(ctx context.Context, group *ghttp.RouterGroup) {
|
|
||||||
prefix := addons.RouterPrefix(ctx, consts.AppHome, global.GetSkeleton().Name)
|
|
||||||
group.Group(prefix, func(group *ghttp.RouterGroup) {
|
|
||||||
group.Bind(
|
|
||||||
home.Index,
|
|
||||||
)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
// Package router
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package router
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"github.com/gogf/gf/v2/net/ghttp"
|
|
||||||
"hotgo/addons/flashbanner/controller/websocket"
|
|
||||||
"hotgo/addons/flashbanner/global"
|
|
||||||
"hotgo/internal/consts"
|
|
||||||
"hotgo/internal/library/addons"
|
|
||||||
"hotgo/internal/service"
|
|
||||||
ws "hotgo/internal/websocket"
|
|
||||||
)
|
|
||||||
|
|
||||||
// WebSocket ws路由配置
|
|
||||||
func WebSocket(ctx context.Context, group *ghttp.RouterGroup) {
|
|
||||||
prefix := addons.RouterPrefix(ctx, consts.AppWebSocket, global.GetSkeleton().Name)
|
|
||||||
group.Group(prefix, func(group *ghttp.RouterGroup) {
|
|
||||||
group.Bind(
|
|
||||||
// 无需验证的路由
|
|
||||||
websocket.Index,
|
|
||||||
)
|
|
||||||
// ws连接中间件
|
|
||||||
group.Middleware(service.Middleware().WebSocketAuth)
|
|
||||||
group.Bind(
|
|
||||||
// 需要验证的路由
|
|
||||||
// ..
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
// 注册消息路由
|
|
||||||
ws.RegisterMsg(ws.EventHandlers{
|
|
||||||
// ...
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
// ================================================================================
|
|
||||||
// Code generated by GoFrame CLI tool. DO NOT EDIT.
|
|
||||||
// You can delete these comments if you wish manually maintain this interface file.
|
|
||||||
// ================================================================================
|
|
||||||
|
|
||||||
package service
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"hotgo/addons/flashbanner/model"
|
|
||||||
"hotgo/addons/flashbanner/model/input/sysin"
|
|
||||||
)
|
|
||||||
|
|
||||||
type (
|
|
||||||
ISysConfig interface {
|
|
||||||
GetBasic(ctx context.Context) (conf *model.BasicConfig, err error)
|
|
||||||
GetConfigByGroup(ctx context.Context, in *sysin.GetConfigInp) (res *sysin.GetConfigModel, err error)
|
|
||||||
UpdateConfigByGroup(ctx context.Context, in *sysin.UpdateConfigInp) error
|
|
||||||
}
|
|
||||||
ISysIndex interface {
|
|
||||||
Test(ctx context.Context, in *sysin.IndexTestInp) (res *sysin.IndexTestModel, err error)
|
|
||||||
}
|
|
||||||
ISysBanner interface {
|
|
||||||
Create(ctx context.Context, in *sysin.BannerCreateInp) (err error)
|
|
||||||
Edit(ctx context.Context, in *sysin.BannerEditInp) (err error)
|
|
||||||
Delete(ctx context.Context, in *sysin.BannerDeleteInp) (err error)
|
|
||||||
View(ctx context.Context, in *sysin.BannerViewInp) (res *sysin.BannerViewModel, err error)
|
|
||||||
List(ctx context.Context, in *sysin.BannerListInp) (list []*sysin.BannerListModel, totalCount int, err error)
|
|
||||||
Status(ctx context.Context, in *sysin.BannerStatusInp) (err error)
|
|
||||||
GetMaxSort(ctx context.Context) (maxSort int, err error)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
localSysConfig ISysConfig
|
|
||||||
localSysIndex ISysIndex
|
|
||||||
localSysBanner ISysBanner
|
|
||||||
)
|
|
||||||
|
|
||||||
func SysConfig() ISysConfig {
|
|
||||||
if localSysConfig == nil {
|
|
||||||
panic("implement not found for interface ISysConfig, forgot register?")
|
|
||||||
}
|
|
||||||
return localSysConfig
|
|
||||||
}
|
|
||||||
|
|
||||||
func RegisterSysConfig(i ISysConfig) {
|
|
||||||
localSysConfig = i
|
|
||||||
}
|
|
||||||
|
|
||||||
func SysIndex() ISysIndex {
|
|
||||||
if localSysIndex == nil {
|
|
||||||
panic("implement not found for interface ISysIndex, forgot register?")
|
|
||||||
}
|
|
||||||
return localSysIndex
|
|
||||||
}
|
|
||||||
|
|
||||||
func RegisterSysIndex(i ISysIndex) {
|
|
||||||
localSysIndex = i
|
|
||||||
}
|
|
||||||
|
|
||||||
func SysBanner() ISysBanner {
|
|
||||||
if localSysBanner == nil {
|
|
||||||
panic("implement not found for interface ISysBanner, forgot register?")
|
|
||||||
}
|
|
||||||
return localSysBanner
|
|
||||||
}
|
|
||||||
|
|
||||||
func RegisterSysBanner(i ISysBanner) {
|
|
||||||
localSysBanner = i
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
import { http } from '@/utils/http/axios';
|
|
||||||
|
|
||||||
export function getConfig(params) {
|
|
||||||
return http.request({
|
|
||||||
url: '/flashbanner/config/get',
|
|
||||||
method: 'get',
|
|
||||||
params,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function updateConfig(params) {
|
|
||||||
return http.request({
|
|
||||||
url: '/flashbanner/config/update',
|
|
||||||
method: 'post',
|
|
||||||
params,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
import { http } from '@/utils/http/axios';
|
|
||||||
|
|
||||||
export function List(params) {
|
|
||||||
return http.request({
|
|
||||||
url: '/flashbanner/banner/list',
|
|
||||||
method: 'GET',
|
|
||||||
params,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function Add(params) {
|
|
||||||
return http.request({
|
|
||||||
url: '/flashbanner/banner/create',
|
|
||||||
method: 'POST',
|
|
||||||
params,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function Edit(params) {
|
|
||||||
return http.request({
|
|
||||||
url: '/flashbanner/banner/edit',
|
|
||||||
method: 'POST',
|
|
||||||
params,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function Delete(params) {
|
|
||||||
return http.request({
|
|
||||||
url: '/flashbanner/banner/delete',
|
|
||||||
method: 'POST',
|
|
||||||
params,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<n-modal
|
|
||||||
v-model:show="showModal"
|
|
||||||
:on-after-leave="cancelForm"
|
|
||||||
:mask-closable="false"
|
|
||||||
:show-icon="false"
|
|
||||||
preset="dialog"
|
|
||||||
:title="formParams?.id > 0 ? '编辑 #' + formParams?.id : '添加'"
|
|
||||||
:style="{
|
|
||||||
width: dialogWidth,
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
<n-form
|
|
||||||
:model="formParams"
|
|
||||||
:rules="rules"
|
|
||||||
ref="formRef"
|
|
||||||
label-placement="left"
|
|
||||||
:label-width="100"
|
|
||||||
class="py-8"
|
|
||||||
>
|
|
||||||
<n-grid x-gap="24" :cols="1">
|
|
||||||
<n-gi>
|
|
||||||
<n-form-item label="名称" path="name">
|
|
||||||
<n-input placeholder="请输入名称" v-model:value="formParams.name" />
|
|
||||||
</n-form-item>
|
|
||||||
</n-gi>
|
|
||||||
<n-gi>
|
|
||||||
<n-form-item label="上传图片" path="cover">
|
|
||||||
<UploadImage v-model:value="formParams.cover" />
|
|
||||||
</n-form-item>
|
|
||||||
</n-gi>
|
|
||||||
<n-gi>
|
|
||||||
<n-form-item label="链接地址" path="link">
|
|
||||||
<n-input placeholder="请输入链接地址" v-model:value="formParams.link" />
|
|
||||||
</n-form-item>
|
|
||||||
</n-gi>
|
|
||||||
</n-grid>
|
|
||||||
</n-form>
|
|
||||||
|
|
||||||
<template #action>
|
|
||||||
<n-space>
|
|
||||||
<n-button @click="cancelForm">取消</n-button>
|
|
||||||
<n-button type="info" :loading="formBtnLoading" @click="confirmForm">确定</n-button>
|
|
||||||
</n-space>
|
|
||||||
</template>
|
|
||||||
</n-modal>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts" setup>
|
|
||||||
import { h, reactive, ref, computed, defineExpose, defineEmits } from 'vue';
|
|
||||||
import { useDialog, useMessage } from 'naive-ui';
|
|
||||||
import UploadImage from '@/components/Upload/uploadImage.vue';
|
|
||||||
import { rules } from './model';
|
|
||||||
import { Edit, Add } from '@/api/addons/flashbanner/index';
|
|
||||||
import { adaModalWidth } from '@/utils/hotgo';
|
|
||||||
import { cloneDeep } from 'lodash-es';
|
|
||||||
|
|
||||||
const emit = defineEmits(['on-refresh']);
|
|
||||||
|
|
||||||
const defaultState = {
|
|
||||||
name: '',
|
|
||||||
cover: '',
|
|
||||||
link: '',
|
|
||||||
};
|
|
||||||
|
|
||||||
const message = useMessage();
|
|
||||||
const showModal = ref(false);
|
|
||||||
const formBtnLoading = ref(false);
|
|
||||||
const formRef = ref<any>();
|
|
||||||
const formParams = ref<any>(cloneDeep(defaultState));
|
|
||||||
|
|
||||||
const dialogWidth = computed(() => {
|
|
||||||
return adaModalWidth();
|
|
||||||
});
|
|
||||||
|
|
||||||
// 关闭表单
|
|
||||||
const cancelForm = () => {
|
|
||||||
showModal.value = false;
|
|
||||||
formParams.value = cloneDeep(defaultState);
|
|
||||||
};
|
|
||||||
|
|
||||||
// 新增或编辑
|
|
||||||
function confirmForm(e) {
|
|
||||||
e.preventDefault();
|
|
||||||
formBtnLoading.value = true;
|
|
||||||
const Request = formParams.value.id > 0 ? Edit : Add;
|
|
||||||
formRef.value.validate((errors) => {
|
|
||||||
if (!errors) {
|
|
||||||
Request(formParams.value).then((_res) => {
|
|
||||||
message.success('操作成功');
|
|
||||||
cancelForm();
|
|
||||||
emit('on-refresh');
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
message.error('请填写完整信息');
|
|
||||||
}
|
|
||||||
formBtnLoading.value = false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
defineExpose({ showModal, formParams });
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="less" scoped></style>
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
import { h, render } from 'vue';
|
|
||||||
import { FormSchema, useForm } from '@/components/Form';
|
|
||||||
import { NImage } from 'naive-ui';
|
|
||||||
import { fallbackSrc } from '@/utils/hotgo';
|
|
||||||
|
|
||||||
// **********查询表单********
|
|
||||||
const detailSchemas: FormSchema[] = [
|
|
||||||
{
|
|
||||||
field: 'name',
|
|
||||||
component: 'NInput',
|
|
||||||
label: '图片名称',
|
|
||||||
defaultValue: null,
|
|
||||||
componentProps: {
|
|
||||||
placeholder: '请输入图片名称',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
];
|
|
||||||
export const [register, {}] = useForm({
|
|
||||||
gridProps: { cols: '1 s:1 m:2 l:3 xl:4 2xl:4' },
|
|
||||||
labelWidth: 80,
|
|
||||||
schemas: detailSchemas,
|
|
||||||
});
|
|
||||||
|
|
||||||
// *********表格**********
|
|
||||||
export const defaultColumns = [
|
|
||||||
{
|
|
||||||
title: 'ID',
|
|
||||||
key: 'id',
|
|
||||||
width: 100,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '图片名称',
|
|
||||||
key: 'name',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '图片',
|
|
||||||
key: 'cover',
|
|
||||||
render(row) {
|
|
||||||
if (row.cover !== '') {
|
|
||||||
return h(NImage, {
|
|
||||||
width: 40,
|
|
||||||
height: 40,
|
|
||||||
src: row.cover,
|
|
||||||
fallbackSrc: fallbackSrc(),
|
|
||||||
style: {
|
|
||||||
width: '40px',
|
|
||||||
height: '40px',
|
|
||||||
'max-width': '100%',
|
|
||||||
'max-height': '100%',
|
|
||||||
},
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
return '暂无图片'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '链接地址',
|
|
||||||
key: 'link',
|
|
||||||
render(row) {
|
|
||||||
return h('a', { href: row.link, target: '_blank' }, row.link);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '创建时间',
|
|
||||||
key: 'createdAt',
|
|
||||||
width: 180,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
// *********编辑表单规则***********
|
|
||||||
export const rules = {
|
|
||||||
name: {
|
|
||||||
required: true,
|
|
||||||
trigger: ['blur', 'input'],
|
|
||||||
message: '请输入图片名称',
|
|
||||||
},
|
|
||||||
cover: {
|
|
||||||
required: true,
|
|
||||||
trigger: ['blur', 'input'],
|
|
||||||
message: '请上传图片',
|
|
||||||
},
|
|
||||||
};
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<n-spin :show="show" description="请稍候...">
|
|
||||||
<n-form :label-width="80" :model="formValue" :rules="rules" ref="formRef">
|
|
||||||
<n-form-item label="测试参数" path="basicTest">
|
|
||||||
<n-input v-model:value="formValue.basicTest" placeholder="请输入测试参数" />
|
|
||||||
<template #feedback>
|
|
||||||
这是一个测试参数,每个插件都可以有独立的配置项,可以按需添加</template
|
|
||||||
>
|
|
||||||
</n-form-item>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<n-space>
|
|
||||||
<n-button type="primary" @click="formSubmit">保存更新</n-button>
|
|
||||||
</n-space>
|
|
||||||
</div>
|
|
||||||
</n-form>
|
|
||||||
</n-spin>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts" setup>
|
|
||||||
import { ref, onMounted } from 'vue';
|
|
||||||
import { useMessage } from 'naive-ui';
|
|
||||||
import { getConfig, updateConfig } from '@/api/addons/flashbanner/config';
|
|
||||||
|
|
||||||
const group = ref('basic');
|
|
||||||
|
|
||||||
const show = ref(false);
|
|
||||||
const rules = {
|
|
||||||
basicTest: {
|
|
||||||
required: true,
|
|
||||||
message: '请输入测试参数',
|
|
||||||
trigger: 'blur',
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
const formRef: any = ref(null);
|
|
||||||
const message = useMessage();
|
|
||||||
|
|
||||||
const formValue = ref({
|
|
||||||
basicTest: 'HotGo',
|
|
||||||
});
|
|
||||||
|
|
||||||
function formSubmit() {
|
|
||||||
formRef.value.validate((errors) => {
|
|
||||||
if (!errors) {
|
|
||||||
updateConfig({ group: group.value, list: formValue.value }).then((_res) => {
|
|
||||||
message.success('更新成功');
|
|
||||||
load();
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
message.error('验证失败,请填写完整信息');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
load();
|
|
||||||
});
|
|
||||||
|
|
||||||
function load() {
|
|
||||||
show.value = true;
|
|
||||||
new Promise((_resolve, _reject) => {
|
|
||||||
getConfig({ group: group.value })
|
|
||||||
.then((res) => {
|
|
||||||
formValue.value = res.list;
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
show.value = false;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<n-grid cols="24 300:1 600:24" :x-gap="12">
|
|
||||||
<n-grid-item span="6">
|
|
||||||
<n-card :bordered="false" size="small" class="proCard">
|
|
||||||
<n-thing
|
|
||||||
class="thing-cell"
|
|
||||||
v-for="item in typeTabList"
|
|
||||||
:key="item.key"
|
|
||||||
:class="{ 'thing-cell-on': type === item.key }"
|
|
||||||
@click="switchType(item)"
|
|
||||||
>
|
|
||||||
<template #header>{{ item.name }}</template>
|
|
||||||
<template #description>{{ item.desc }}</template>
|
|
||||||
</n-thing>
|
|
||||||
</n-card>
|
|
||||||
</n-grid-item>
|
|
||||||
<n-grid-item span="18">
|
|
||||||
<n-card :bordered="false" size="small" :title="typeTitle" class="proCard">
|
|
||||||
<BasicSetting v-if="type === 1" />
|
|
||||||
</n-card>
|
|
||||||
</n-grid-item>
|
|
||||||
</n-grid>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script lang="ts">
|
|
||||||
import { defineComponent, reactive, toRefs } from 'vue';
|
|
||||||
import BasicSetting from './BasicSetting.vue';
|
|
||||||
const typeTabList = [
|
|
||||||
{
|
|
||||||
name: '基本设置',
|
|
||||||
desc: '系统常规设置',
|
|
||||||
key: 1,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
export default defineComponent({
|
|
||||||
components: {
|
|
||||||
BasicSetting,
|
|
||||||
},
|
|
||||||
setup() {
|
|
||||||
const state = reactive({
|
|
||||||
type: 1,
|
|
||||||
typeTitle: '基本设置',
|
|
||||||
});
|
|
||||||
|
|
||||||
function switchType(e) {
|
|
||||||
state.type = e.key;
|
|
||||||
state.typeTitle = e.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
...toRefs(state),
|
|
||||||
switchType,
|
|
||||||
typeTabList,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<style lang="less" scoped>
|
|
||||||
.thing-cell {
|
|
||||||
margin: 0 -16px 10px;
|
|
||||||
padding: 5px 16px;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background: #f3f3f3;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.thing-cell-on {
|
|
||||||
background: #f0faff;
|
|
||||||
color: #2d8cf0;
|
|
||||||
|
|
||||||
::v-deep(.n-thing-main .n-thing-header .n-thing-header__title) {
|
|
||||||
color: #2d8cf0;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background: #f0faff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,151 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<n-card :bordered="false" class="proCard" title="轮播图管理">
|
|
||||||
<BasicForm
|
|
||||||
@register="register"
|
|
||||||
@submit="handleQuery"
|
|
||||||
@reset="resetForm"
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
ref="searchFormRef"
|
|
||||||
>
|
|
||||||
<template #statusSlot="{ model, field }">
|
|
||||||
<n-input v-model:value="model[field]" />
|
|
||||||
</template>
|
|
||||||
</BasicForm>
|
|
||||||
<BasicTable
|
|
||||||
:openChecked="true"
|
|
||||||
:columns="columns"
|
|
||||||
:actionColumn="actionColumn"
|
|
||||||
:request="loadDataTable"
|
|
||||||
:row-key="(row) => row.id"
|
|
||||||
ref="tableRef"
|
|
||||||
:scroll-x="scrollX"
|
|
||||||
:resizeHeightOffset="-10000"
|
|
||||||
>
|
|
||||||
<template #tableTitle>
|
|
||||||
<n-button
|
|
||||||
type="primary"
|
|
||||||
@click="handleAdd"
|
|
||||||
class="min-left-space"
|
|
||||||
v-if="hasPermission(['/member/edit'])"
|
|
||||||
>
|
|
||||||
<template #icon>
|
|
||||||
<n-icon>
|
|
||||||
<PlusOutlined />
|
|
||||||
</n-icon>
|
|
||||||
</template>
|
|
||||||
添加
|
|
||||||
</n-button>
|
|
||||||
</template>
|
|
||||||
</BasicTable>
|
|
||||||
<BasicEdit ref="editRef" @on-refresh="onRefresh" />
|
|
||||||
</n-card>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts" setup>
|
|
||||||
import { h, onMounted, ref, computed, watch, reactive } from 'vue';
|
|
||||||
import { register, defaultColumns } from './components/model';
|
|
||||||
import BasicEdit from './components/Edit.vue';
|
|
||||||
import { BasicForm } from '@/components/Form/index';
|
|
||||||
import { BasicTable, TableAction } from '@/components/Table';
|
|
||||||
import { usePermission } from '@/hooks/web/usePermission';
|
|
||||||
import { List, Delete } from '@/api/addons/flashbanner/index';
|
|
||||||
import { PlusOutlined } from '@vicons/antd';
|
|
||||||
import { useDialog, useMessage } from 'naive-ui';
|
|
||||||
import { cloneDeep } from 'lodash-es';
|
|
||||||
import { adaTableScrollX } from '@/utils/hotgo';
|
|
||||||
|
|
||||||
interface TableActionState {
|
|
||||||
reload: () => void;
|
|
||||||
}
|
|
||||||
|
|
||||||
const { hasPermission } = usePermission();
|
|
||||||
const dialog = useDialog();
|
|
||||||
const message = useMessage();
|
|
||||||
const formParams = ref({});
|
|
||||||
const tableRef = ref<TableActionState>();
|
|
||||||
const editRef = ref();
|
|
||||||
const columns = ref(defaultColumns);
|
|
||||||
const actionColumn = reactive({
|
|
||||||
width: 200,
|
|
||||||
title: '操作',
|
|
||||||
key: 'action',
|
|
||||||
fixed: 'right',
|
|
||||||
render(record) {
|
|
||||||
return h(TableAction as any, {
|
|
||||||
style: 'button',
|
|
||||||
actions: [
|
|
||||||
{
|
|
||||||
label: '编辑',
|
|
||||||
onClick: handleEdit.bind(null, record),
|
|
||||||
auth: ['/member/delete'],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '删除',
|
|
||||||
onClick: handleDelete.bind(null, record),
|
|
||||||
auth: ['/member/delete'],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const scrollX = computed(() => {
|
|
||||||
return adaTableScrollX(defaultColumns, actionColumn.width);
|
|
||||||
});
|
|
||||||
|
|
||||||
const loadDataTable = async (res) => {
|
|
||||||
return await List({ ...formParams.value, ...res });
|
|
||||||
};
|
|
||||||
|
|
||||||
// 刷新table
|
|
||||||
const onRefresh = () => {
|
|
||||||
tableRef.value?.reload();
|
|
||||||
};
|
|
||||||
|
|
||||||
// 重置查询框
|
|
||||||
const resetForm = () => {
|
|
||||||
formParams.value = {};
|
|
||||||
onRefresh();
|
|
||||||
};
|
|
||||||
|
|
||||||
// 查询
|
|
||||||
const handleQuery = (e: any) => {
|
|
||||||
formParams.value = { ...e };
|
|
||||||
onRefresh();
|
|
||||||
};
|
|
||||||
|
|
||||||
// 添加
|
|
||||||
const handleAdd = () => {
|
|
||||||
if (editRef.value) {
|
|
||||||
editRef.value.showModal = true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// 编辑
|
|
||||||
const handleEdit = (record: Recordable) => {
|
|
||||||
if (editRef.value) {
|
|
||||||
editRef.value.showModal = true;
|
|
||||||
editRef.value.formParams = cloneDeep(record);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除
|
|
||||||
const handleDelete = (record: Recordable) => {
|
|
||||||
dialog.warning({
|
|
||||||
title: '警告',
|
|
||||||
content: '你确定要删除?',
|
|
||||||
positiveText: '确定',
|
|
||||||
negativeText: '取消',
|
|
||||||
onPositiveClick: () => {
|
|
||||||
Delete({ id: record.id }).then((_res) => {
|
|
||||||
message.success('操作成功');
|
|
||||||
onRefresh();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="less"></style>
|
|
||||||
@@ -87,7 +87,7 @@ func (s *sSysTable) List(ctx context.Context, in *sysin.TableListInp) (list []*s
|
|||||||
mod = mod.Where(fmt.Sprintf(`JSON_CONTAINS(%s,'%v')`, cols.Hobby, in.Hobby))
|
mod = mod.Where(fmt.Sprintf(`JSON_CONTAINS(%s,'%v')`, cols.Hobby, in.Hobby))
|
||||||
}
|
}
|
||||||
|
|
||||||
totalCount, err = mod.Clone().Count(1)
|
totalCount, err = mod.Clone().Count()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = gerror.Wrap(err, "获取表格数据行失败,请稍后重试!")
|
err = gerror.Wrap(err, "获取表格数据行失败,请稍后重试!")
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ func (s *sSysTreeTable) List(ctx context.Context, in *sysin.TreeTableListInp) (l
|
|||||||
mod = mod.Where(fmt.Sprintf(`JSON_CONTAINS(%s,'%v')`, cols.Hobby, in.Hobby))
|
mod = mod.Where(fmt.Sprintf(`JSON_CONTAINS(%s,'%v')`, cols.Hobby, in.Hobby))
|
||||||
}
|
}
|
||||||
|
|
||||||
totalCount, err = mod.Clone().Count(1)
|
totalCount, err = mod.Clone().Count()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = gerror.Wrap(err, "获取表格数据行失败,请稍后重试!")
|
err = gerror.Wrap(err, "获取表格数据行失败,请稍后重试!")
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -1,167 +0,0 @@
|
|||||||
-- 删除表(如果存在)
|
|
||||||
DROP TABLE IF EXISTS hg_banner;
|
|
||||||
|
|
||||||
-- 创建表
|
|
||||||
CREATE TABLE hg_banner (
|
|
||||||
id SERIAL PRIMARY KEY,
|
|
||||||
name VARCHAR(255) NOT NULL,
|
|
||||||
cover VARCHAR(255) DEFAULT NULL,
|
|
||||||
link VARCHAR(255) DEFAULT NULL,
|
|
||||||
type INTEGER DEFAULT 0,
|
|
||||||
status SMALLINT DEFAULT 1,
|
|
||||||
sort INTEGER DEFAULT 0,
|
|
||||||
created_at TIMESTAMP DEFAULT NULL,
|
|
||||||
updated_at TIMESTAMP DEFAULT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
-- 添加表注释
|
|
||||||
COMMENT ON TABLE hg_banner IS '轮播图表';
|
|
||||||
|
|
||||||
-- 添加列注释
|
|
||||||
COMMENT ON COLUMN hg_banner.name IS '轮播图名称';
|
|
||||||
COMMENT ON COLUMN hg_banner.cover IS '图片URL';
|
|
||||||
COMMENT ON COLUMN hg_banner.link IS '跳转链接,小程序内用相对地址';
|
|
||||||
COMMENT ON COLUMN hg_banner.type IS '类型默认不传';
|
|
||||||
COMMENT ON COLUMN hg_banner.status IS '1可用,2不可用';
|
|
||||||
COMMENT ON COLUMN hg_banner.sort IS '排序,数字越大越靠前';
|
|
||||||
|
|
||||||
-- 添加 updated_at 字段的更新触发器(模拟 MySQL 的 ON UPDATE CURRENT_TIMESTAMP)
|
|
||||||
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
|
||||||
RETURNS TRIGGER AS $$
|
|
||||||
BEGIN
|
|
||||||
NEW.updated_at = NOW();
|
|
||||||
RETURN NEW;
|
|
||||||
END;
|
|
||||||
$$ LANGUAGE plpgsql;
|
|
||||||
|
|
||||||
CREATE TRIGGER trigger_update_updated_at
|
|
||||||
BEFORE UPDATE ON hg_banner
|
|
||||||
FOR EACH ROW
|
|
||||||
EXECUTE FUNCTION update_updated_at_column();
|
|
||||||
|
|
||||||
-- 添加菜单项
|
|
||||||
-- 先查找或创建"内容管理"父菜单(如果不存在)
|
|
||||||
INSERT INTO hg_admin_menu (pid, level, tree, title, name, path, icon, type, redirect, permissions, permission_name, component, always_show, active_menu, is_root, is_frame, frame_src, keep_alive, hidden, affix, sort, remark, status, updated_at, created_at)
|
|
||||||
SELECT 0, 1, '', '内容管理', 'content', '/content', 'BookOutlined', 1, '/content', '', '', 'LAYOUT', 2, '', 1, 2, '', 2, 2, 2, 12, '内容管理模块', 1, NOW(), NOW()
|
|
||||||
WHERE NOT EXISTS (SELECT 1 FROM hg_admin_menu WHERE name = 'content');
|
|
||||||
|
|
||||||
-- 获取内容管理菜单ID并添加轮播图管理菜单
|
|
||||||
WITH content_parent AS (
|
|
||||||
SELECT id FROM hg_admin_menu WHERE name = 'content' LIMIT 1
|
|
||||||
),
|
|
||||||
inserted_menu AS (
|
|
||||||
INSERT INTO hg_admin_menu (pid, level, tree, title, name, path, icon, type, redirect, permissions, permission_name, component, always_show, active_menu, is_root, is_frame, frame_src, keep_alive, hidden, affix, sort, remark, status, updated_at, created_at)
|
|
||||||
SELECT
|
|
||||||
cp.id,
|
|
||||||
2,
|
|
||||||
'tr_' || cp.id::text || ' ',
|
|
||||||
'轮播图管理',
|
|
||||||
'flashbanner',
|
|
||||||
'/flashbanner',
|
|
||||||
'',
|
|
||||||
2,
|
|
||||||
'',
|
|
||||||
'/flashbanner/banner/list',
|
|
||||||
'',
|
|
||||||
'/addons/flashbanner/index',
|
|
||||||
2,
|
|
||||||
'',
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
'',
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
10,
|
|
||||||
'轮播图管理模块',
|
|
||||||
1,
|
|
||||||
NOW(),
|
|
||||||
NOW()
|
|
||||||
FROM content_parent cp
|
|
||||||
RETURNING id
|
|
||||||
)
|
|
||||||
-- 添加子菜单和按钮
|
|
||||||
INSERT INTO hg_admin_menu (pid, level, tree, title, name, path, icon, type, redirect, permissions, permission_name, component, always_show, active_menu, is_root, is_frame, frame_src, keep_alive, hidden, affix, sort, remark, status, updated_at, created_at)
|
|
||||||
SELECT
|
|
||||||
im.id,
|
|
||||||
3,
|
|
||||||
'tr_' || (SELECT id FROM content_parent)::text || ' tr_' || im.id::text || ' ',
|
|
||||||
'新增轮播',
|
|
||||||
'addbanner',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
3,
|
|
||||||
'',
|
|
||||||
'/flashbanner/banner/create',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
2,
|
|
||||||
'',
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
'',
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
10,
|
|
||||||
'新增轮播图权限',
|
|
||||||
1,
|
|
||||||
NOW(),
|
|
||||||
NOW()
|
|
||||||
FROM inserted_menu im
|
|
||||||
UNION ALL
|
|
||||||
SELECT
|
|
||||||
im.id,
|
|
||||||
3,
|
|
||||||
'tr_' || (SELECT id FROM content_parent)::text || ' tr_' || im.id::text || ' ',
|
|
||||||
'轮播编辑',
|
|
||||||
'editbanner',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
3,
|
|
||||||
'',
|
|
||||||
'/flashbanner/banner/update',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
2,
|
|
||||||
'',
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
'',
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
10,
|
|
||||||
'编辑轮播图权限',
|
|
||||||
1,
|
|
||||||
NOW(),
|
|
||||||
NOW()
|
|
||||||
FROM inserted_menu im
|
|
||||||
UNION ALL
|
|
||||||
SELECT
|
|
||||||
im.id,
|
|
||||||
3,
|
|
||||||
'tr_' || (SELECT id FROM content_parent)::text || ' tr_' || im.id::text || ' ',
|
|
||||||
'删除轮播',
|
|
||||||
'delbanner',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
3,
|
|
||||||
'',
|
|
||||||
'/flashbanner/banner/delete',
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
2,
|
|
||||||
'',
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
'',
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
10,
|
|
||||||
'删除轮播图权限',
|
|
||||||
1,
|
|
||||||
NOW(),
|
|
||||||
NOW()
|
|
||||||
FROM inserted_menu im;
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
DROP TABLE IF EXISTS `hg_banner`;
|
|
||||||
CREATE TABLE `hg_banner` (
|
|
||||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`name` varchar(255) NOT NULL COMMENT '轮播图名称',
|
|
||||||
`cover` varchar(255) DEFAULT NULL COMMENT '图片URL',
|
|
||||||
`link` varchar(255) DEFAULT NULL COMMENT '跳转链接,小程序内用相对地址',
|
|
||||||
`type` int(11) DEFAULT 0 COMMENT '类型默认不传',
|
|
||||||
`status` tinyint(1) DEFAULT 1 COMMENT '1可用,2不可用',
|
|
||||||
`sort` int(11) DEFAULT 0 COMMENT '排序,数字越大越靠前',
|
|
||||||
`created_at` datetime DEFAULT NULL,
|
|
||||||
`updated_at` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
|
|
||||||
PRIMARY KEY (`id`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='轮播图表';
|
|
||||||
|
|
||||||
|
|
||||||
-- 添加菜单项
|
|
||||||
-- 先查找或创建"内容管理"父菜单(如果不存在)
|
|
||||||
INSERT IGNORE INTO `hg_admin_menu`(`pid`, `level`, `tree`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `sort`, `remark`, `status`, `updated_at`, `created_at`) VALUES
|
|
||||||
(0, 1, '', '内容管理', 'content', '/content', 'BookOutlined', 1, '/content', '', '', 'LAYOUT', 2, '', 1, 2, '', 2, 2, 2, 12, '内容管理模块', 1, NOW(), NOW());
|
|
||||||
|
|
||||||
-- 获取内容管理菜单ID并添加轮播图管理菜单
|
|
||||||
SET @content_parent_id = (SELECT id FROM `hg_admin_menu` WHERE `name` = 'content' LIMIT 1);
|
|
||||||
|
|
||||||
INSERT INTO `hg_admin_menu`(`pid`, `level`, `tree`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `sort`, `remark`, `status`, `updated_at`, `created_at`) VALUES
|
|
||||||
(@content_parent_id, 2, CONCAT('tr_', @content_parent_id, ' '), '轮播图管理', 'flashbanner', '/flashbanner', '', 2, '', '/flashbanner/banner/list', '', '/addons/flashbanner/index', 2, '', 2, 2, '', 1, 2, 2, 10, '轮播图管理模块', 1, NOW(), NOW());
|
|
||||||
|
|
||||||
-- 添加子菜单和按钮
|
|
||||||
SET @flashbanner_menu_id = LAST_INSERT_ID();
|
|
||||||
|
|
||||||
INSERT INTO `hg_admin_menu`(`pid`, `level`, `tree`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `sort`, `remark`, `status`, `updated_at`, `created_at`) VALUES
|
|
||||||
(@flashbanner_menu_id, 3, CONCAT('tr_', @content_parent_id, ' tr_', @flashbanner_menu_id, ' '), '新增轮播', 'addbanner', '', '', 3, '', '/flashbanner/banner/create', '', '', 2, '', 2, 2, '', 2, 2, 2, 10, '新增轮播图权限', 1, NOW(), NOW()),
|
|
||||||
(@flashbanner_menu_id, 3, CONCAT('tr_', @content_parent_id, ' tr_', @flashbanner_menu_id, ' '), '轮播编辑', 'editbanner', '', '', 3, '', '/flashbanner/banner/update', '', '', 2, '', 2, 2, '', 2, 2, 2, 10, '编辑轮播图权限', 1, NOW(), NOW()),
|
|
||||||
(@flashbanner_menu_id, 3, CONCAT('tr_', @content_parent_id, ' tr_', @flashbanner_menu_id, ' '), '删除轮播', 'delbanner', '', '', 3, '', '/flashbanner/banner/delete', '', '', 2, '', 2, 2, '', 2, 2, 2, 10, '删除轮播图权限', 1, NOW(), NOW());
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
-- 删除表
|
|
||||||
DROP TABLE IF EXISTS hg_banner;
|
|
||||||
|
|
||||||
-- 删除 flashbanner 相关菜单
|
|
||||||
-- 先删除子菜单(权限按钮)
|
|
||||||
DELETE FROM hg_admin_menu WHERE name IN ('addbanner', 'editbanner', 'delbanner');
|
|
||||||
|
|
||||||
-- 删除主菜单
|
|
||||||
DELETE FROM hg_admin_menu WHERE name = 'flashbanner';
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
-- 删除表
|
|
||||||
DROP TABLE IF EXISTS `hg_banner`;
|
|
||||||
|
|
||||||
-- 删除 flashbanner 相关菜单
|
|
||||||
-- 先删除子菜单(权限按钮)
|
|
||||||
DELETE FROM `hg_admin_menu` WHERE `name` IN ('addbanner', 'editbanner', 'delbanner');
|
|
||||||
|
|
||||||
-- 删除主菜单
|
|
||||||
DELETE FROM `hg_admin_menu` WHERE `name` = 'flashbanner';
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
# 为了在容器映射sql所以需要独立出来
|
|
||||||
# 兼容数据库和前端文件的迁移
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
package migrations
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"io"
|
|
||||||
"os"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
|
||||||
"github.com/gogf/gf/v2/container/gvar"
|
|
||||||
)
|
|
||||||
func DoSqlContent(ctx context.Context, sqlPath string) (string, error) {
|
|
||||||
open, err := os.Open(sqlPath)
|
|
||||||
if err != nil {
|
|
||||||
return "fail", err
|
|
||||||
}
|
|
||||||
defer open.Close()
|
|
||||||
sqlContent, err := io.ReadAll(open)
|
|
||||||
if err != nil {
|
|
||||||
return "fail", err
|
|
||||||
}
|
|
||||||
|
|
||||||
// 首先尝试整个执行
|
|
||||||
_, err = g.DB().Exec(ctx, string(sqlContent))
|
|
||||||
if err != nil {
|
|
||||||
g.Log().Error(ctx, "整个执行SQL失败,尝试分句执行:", err)
|
|
||||||
|
|
||||||
// 整个执行失败,尝试按分号分割执行
|
|
||||||
sqls := strings.Split(string(sqlContent), ";")
|
|
||||||
for _, sql := range sqls {
|
|
||||||
sql = strings.TrimSpace(sql)
|
|
||||||
if sql != "" {
|
|
||||||
_, err := g.DB().Exec(ctx, sql)
|
|
||||||
if err != nil {
|
|
||||||
g.Log().Error(ctx, "执行SQL失败:", err, sql)
|
|
||||||
return "fail", err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return "success", nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetDbLink(ctx context.Context) *gvar.Var {
|
|
||||||
link := g.Cfg().MustGet(ctx, "database.default")
|
|
||||||
//读写分离
|
|
||||||
if !link.IsSlice() {
|
|
||||||
return g.Cfg().MustGet(ctx, "database.default.link")
|
|
||||||
}
|
|
||||||
for _, v := range link.Array() {
|
|
||||||
// 只获取主库
|
|
||||||
val := v.(map[string]interface{})
|
|
||||||
if val["role"] == "master" {
|
|
||||||
return gvar.New(val["link"])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return gvar.New("database.default.0.link")
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetDbType(ctx context.Context) string {
|
|
||||||
var (
|
|
||||||
link = GetDbLink(ctx)
|
|
||||||
)
|
|
||||||
config := strings.SplitN(link.String(), ":", 2)
|
|
||||||
return config[0]
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
// Package modules
|
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
|
||||||
// @Copyright Copyright (c) 2023 HotGo CLI
|
|
||||||
// @Author Ms <133814250@qq.com>
|
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
||||||
package modules
|
|
||||||
|
|
||||||
import _ "hotgo/addons/flashbanner"
|
|
||||||
@@ -77,6 +77,9 @@ type SiteLoginConfigReq struct {
|
|||||||
|
|
||||||
type SiteLoginConfigRes struct {
|
type SiteLoginConfigRes struct {
|
||||||
*model.LoginConfig
|
*model.LoginConfig
|
||||||
|
I18nSwitch bool `json:"i18nSwitch" dc:"国际化开关"`
|
||||||
|
DefaultLanguage string `json:"defaultLanguage" dc:"默认语言设置"`
|
||||||
|
ProjectName string `json:"projectName" dc:"项目名称"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// SitePingReq ping
|
// SitePingReq ping
|
||||||
|
|||||||
@@ -36,3 +36,13 @@ type UploadPartReq struct {
|
|||||||
type UploadPartRes struct {
|
type UploadPartRes struct {
|
||||||
*sysin.UploadPartModel
|
*sysin.UploadPartModel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ImageTransferStorageReq 图片链接转存
|
||||||
|
type ImageTransferStorageReq struct {
|
||||||
|
g.Meta `path:"/upload/imageTransferStorage" tags:"附件" method:"post" summary:"图片链接转存"`
|
||||||
|
sysin.ImageTransferStorageInp
|
||||||
|
}
|
||||||
|
|
||||||
|
type ImageTransferStorageRes struct {
|
||||||
|
*sysin.ImageTransferStorageModel
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
// Package curddemo
|
// Package curddemo
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
// @Link https://github.com/bufanyun/hotgo
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
// @Copyright Copyright (c) 2025 HotGo CLI
|
||||||
// @Author Ms <133814250@qq.com>
|
// @Author Ms <133814250@qq.com>
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||||
// @AutoGenerate Version 2.15.7
|
// @AutoGenerate Version 2.18.6
|
||||||
package curddemo
|
package curddemo
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -82,4 +82,4 @@ type SwitchReq struct {
|
|||||||
sysin.CurdDemoSwitchInp
|
sysin.CurdDemoSwitchInp
|
||||||
}
|
}
|
||||||
|
|
||||||
type SwitchRes struct{}
|
type SwitchRes struct{}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
// Package optiontreedemo
|
// Package optiontreedemo
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
// @Link https://github.com/bufanyun/hotgo
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
// @Copyright Copyright (c) 2025 HotGo CLI
|
||||||
// @Author Ms <133814250@qq.com>
|
// @Author Ms <133814250@qq.com>
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||||
// @AutoGenerate Version 2.15.7
|
// @AutoGenerate Version 2.17.8
|
||||||
package optiontreedemo
|
package optiontreedemo
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -66,4 +66,4 @@ type TreeOptionReq struct {
|
|||||||
g.Meta `path:"/optionTreeDemo/treeOption" method:"get" tags:"选项树表" summary:"获取选项树表关系树选项"`
|
g.Meta `path:"/optionTreeDemo/treeOption" method:"get" tags:"选项树表" summary:"获取选项树表关系树选项"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type TreeOptionRes []tree.Node
|
type TreeOptionRes []tree.Node
|
||||||
@@ -14,17 +14,19 @@ require (
|
|||||||
github.com/forgoer/openssl v1.6.1
|
github.com/forgoer/openssl v1.6.1
|
||||||
github.com/go-pay/crypto v0.0.1
|
github.com/go-pay/crypto v0.0.1
|
||||||
github.com/go-pay/gopay v1.5.114
|
github.com/go-pay/gopay v1.5.114
|
||||||
github.com/gogf/gf/contrib/drivers/mysql/v2 v2.9.0
|
github.com/go-pay/smap v0.0.2
|
||||||
github.com/gogf/gf/contrib/nosql/redis/v2 v2.9.0
|
github.com/gogf/gf/contrib/drivers/mysql/v2 v2.9.4
|
||||||
|
github.com/gogf/gf/contrib/drivers/pgsql/v2 v2.9.5-0.20251017101031-c02148cd6b8b
|
||||||
|
github.com/gogf/gf/contrib/nosql/redis/v2 v2.9.4
|
||||||
github.com/gogf/gf/contrib/trace/jaeger/v2 v2.7.4
|
github.com/gogf/gf/contrib/trace/jaeger/v2 v2.7.4
|
||||||
github.com/gogf/gf/v2 v2.9.1-0.20250624075347-5fa656d1cc92
|
github.com/gogf/gf/v2 v2.9.4
|
||||||
github.com/gogf/selfupdate v0.0.0-20231215043001-5c48c528462f
|
github.com/gogf/selfupdate v0.0.0-20231215043001-5c48c528462f
|
||||||
github.com/golang-jwt/jwt/v5 v5.2.2
|
github.com/golang-jwt/jwt/v5 v5.2.2
|
||||||
github.com/gorilla/websocket v1.5.3
|
github.com/gorilla/websocket v1.5.3
|
||||||
github.com/kayon/iploc v0.0.0-20200312105652-bda3e968a794
|
github.com/kayon/iploc v0.0.0-20200312105652-bda3e968a794
|
||||||
github.com/minio/minio-go/v7 v7.0.94
|
github.com/minio/minio-go/v7 v7.0.94
|
||||||
github.com/mojocn/base64Captcha v1.3.8
|
github.com/mojocn/base64Captcha v1.3.8
|
||||||
github.com/olekukonko/tablewriter v0.0.5
|
github.com/olekukonko/tablewriter v1.1.0
|
||||||
github.com/qiniu/go-sdk/v7 v7.25.4
|
github.com/qiniu/go-sdk/v7 v7.25.4
|
||||||
github.com/schollz/progressbar/v3 v3.18.0
|
github.com/schollz/progressbar/v3 v3.18.0
|
||||||
github.com/shirou/gopsutil/v3 v3.24.5
|
github.com/shirou/gopsutil/v3 v3.24.5
|
||||||
@@ -34,16 +36,16 @@ require (
|
|||||||
github.com/tencentyun/cos-go-sdk-v5 v0.7.66
|
github.com/tencentyun/cos-go-sdk-v5 v0.7.66
|
||||||
github.com/ufilesdk-dev/ufile-gosdk v1.0.6
|
github.com/ufilesdk-dev/ufile-gosdk v1.0.6
|
||||||
github.com/xuri/excelize/v2 v2.9.1
|
github.com/xuri/excelize/v2 v2.9.1
|
||||||
go.opentelemetry.io/otel v1.37.0
|
go.opentelemetry.io/otel v1.38.0
|
||||||
golang.org/x/mod v0.25.0
|
golang.org/x/mod v0.26.0
|
||||||
golang.org/x/net v0.41.0
|
golang.org/x/net v0.43.0
|
||||||
golang.org/x/tools v0.34.0
|
golang.org/x/tools v0.35.0
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
gopkg.in/yaml.v3 v3.0.1
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
aead.dev/minisign v0.2.0 // indirect
|
aead.dev/minisign v0.2.0 // indirect
|
||||||
github.com/BurntSushi/toml v1.4.0 // indirect
|
github.com/BurntSushi/toml v1.5.0 // indirect
|
||||||
github.com/alex-ant/gomath v0.0.0-20160516115720-89013a210a82 // indirect
|
github.com/alex-ant/gomath v0.0.0-20160516115720-89013a210a82 // indirect
|
||||||
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5 // indirect
|
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5 // indirect
|
||||||
github.com/alibabacloud-go/debug v1.0.1 // indirect
|
github.com/alibabacloud-go/debug v1.0.1 // indirect
|
||||||
@@ -66,14 +68,13 @@ require (
|
|||||||
github.com/emirpasic/gods v1.18.1 // indirect
|
github.com/emirpasic/gods v1.18.1 // indirect
|
||||||
github.com/fatih/color v1.18.0 // indirect
|
github.com/fatih/color v1.18.0 // indirect
|
||||||
github.com/fatih/structs v1.1.0 // indirect
|
github.com/fatih/structs v1.1.0 // indirect
|
||||||
github.com/fsnotify/fsnotify v1.7.0 // indirect
|
github.com/fsnotify/fsnotify v1.9.0 // indirect
|
||||||
github.com/gammazero/toposort v0.1.1 // indirect
|
github.com/gammazero/toposort v0.1.1 // indirect
|
||||||
github.com/go-ini/ini v1.67.0 // indirect
|
github.com/go-ini/ini v1.67.0 // indirect
|
||||||
github.com/go-logr/logr v1.4.3 // indirect
|
github.com/go-logr/logr v1.4.3 // indirect
|
||||||
github.com/go-logr/stdr v1.2.2 // indirect
|
github.com/go-logr/stdr v1.2.2 // indirect
|
||||||
github.com/go-ole/go-ole v1.2.6 // indirect
|
github.com/go-ole/go-ole v1.2.6 // indirect
|
||||||
github.com/go-pay/errgroup v0.0.3 // indirect
|
github.com/go-pay/errgroup v0.0.3 // indirect
|
||||||
github.com/go-pay/smap v0.0.2 // indirect
|
|
||||||
github.com/go-pay/util v0.0.4 // indirect
|
github.com/go-pay/util v0.0.4 // indirect
|
||||||
github.com/go-pay/xlog v0.0.3 // indirect
|
github.com/go-pay/xlog v0.0.3 // indirect
|
||||||
github.com/go-pay/xtime v0.0.2 // indirect
|
github.com/go-pay/xtime v0.0.2 // indirect
|
||||||
@@ -99,9 +100,10 @@ require (
|
|||||||
github.com/json-iterator/go v1.1.12 // indirect
|
github.com/json-iterator/go v1.1.12 // indirect
|
||||||
github.com/klauspost/compress v1.18.0 // indirect
|
github.com/klauspost/compress v1.18.0 // indirect
|
||||||
github.com/klauspost/cpuid/v2 v2.2.10 // indirect
|
github.com/klauspost/cpuid/v2 v2.2.10 // indirect
|
||||||
|
github.com/lib/pq v1.10.9 // indirect
|
||||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
|
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
|
||||||
github.com/magiconair/properties v1.8.9 // indirect
|
github.com/magiconair/properties v1.8.10 // indirect
|
||||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
github.com/mattn/go-colorable v0.1.14 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||||
github.com/mattn/go-runewidth v0.0.16 // indirect
|
github.com/mattn/go-runewidth v0.0.16 // indirect
|
||||||
github.com/minio/crc64nvme v1.0.1 // indirect
|
github.com/minio/crc64nvme v1.0.1 // indirect
|
||||||
@@ -111,15 +113,15 @@ require (
|
|||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
github.com/mozillazg/go-httpheader v0.2.1 // indirect
|
github.com/mozillazg/go-httpheader v0.2.1 // indirect
|
||||||
github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect
|
github.com/olekukonko/errors v1.1.0 // indirect
|
||||||
github.com/olekukonko/ll v0.0.8 // indirect
|
github.com/olekukonko/ll v0.0.9 // indirect
|
||||||
github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
|
github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
|
||||||
github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c // indirect
|
github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c // indirect
|
||||||
github.com/pierrec/lz4/v4 v4.1.22 // indirect
|
github.com/pierrec/lz4/v4 v4.1.22 // indirect
|
||||||
github.com/pkg/errors v0.8.1 // indirect
|
github.com/pkg/errors v0.8.1 // indirect
|
||||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
|
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
|
||||||
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
|
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
|
||||||
github.com/redis/go-redis/v9 v9.7.0 // indirect
|
github.com/redis/go-redis/v9 v9.12.1 // indirect
|
||||||
github.com/richardlehane/mscfb v1.0.4 // indirect
|
github.com/richardlehane/mscfb v1.0.4 // indirect
|
||||||
github.com/richardlehane/msoleps v1.0.4 // indirect
|
github.com/richardlehane/msoleps v1.0.4 // indirect
|
||||||
github.com/rivo/uniseg v0.4.7 // indirect
|
github.com/rivo/uniseg v0.4.7 // indirect
|
||||||
@@ -140,17 +142,17 @@ require (
|
|||||||
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
||||||
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
|
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
|
||||||
go.opentelemetry.io/otel/exporters/jaeger v1.14.0 // indirect
|
go.opentelemetry.io/otel/exporters/jaeger v1.14.0 // indirect
|
||||||
go.opentelemetry.io/otel/metric v1.37.0 // indirect
|
go.opentelemetry.io/otel/metric v1.38.0 // indirect
|
||||||
go.opentelemetry.io/otel/sdk v1.32.0 // indirect
|
go.opentelemetry.io/otel/sdk v1.38.0 // indirect
|
||||||
go.opentelemetry.io/otel/trace v1.37.0 // indirect
|
go.opentelemetry.io/otel/trace v1.38.0 // indirect
|
||||||
go.uber.org/atomic v1.5.1 // indirect
|
go.uber.org/atomic v1.5.1 // indirect
|
||||||
golang.org/x/crypto v0.39.0 // indirect
|
golang.org/x/crypto v0.41.0 // indirect
|
||||||
golang.org/x/image v0.25.0 // indirect
|
golang.org/x/image v0.25.0 // indirect
|
||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de // indirect
|
golang.org/x/lint v0.0.0-20190930215403-16217165b5de // indirect
|
||||||
golang.org/x/sync v0.15.0 // indirect
|
golang.org/x/sync v0.16.0 // indirect
|
||||||
golang.org/x/sys v0.33.0 // indirect
|
golang.org/x/sys v0.35.0 // indirect
|
||||||
golang.org/x/term v0.32.0 // indirect
|
golang.org/x/term v0.34.0 // indirect
|
||||||
golang.org/x/text v0.26.0 // indirect
|
golang.org/x/text v0.28.0 // indirect
|
||||||
golang.org/x/time v0.12.0 // indirect
|
golang.org/x/time v0.12.0 // indirect
|
||||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
|
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
|
||||||
|
|||||||
111
server/go.sum
111
server/go.sum
@@ -4,8 +4,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT
|
|||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||||
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||||
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
|
github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg=
|
||||||
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
||||||
github.com/IBM/sarama v1.45.2 h1:8m8LcMCu3REcwpa7fCP6v2fuPuzVwXDAM2DOv3CBrKw=
|
github.com/IBM/sarama v1.45.2 h1:8m8LcMCu3REcwpa7fCP6v2fuPuzVwXDAM2DOv3CBrKw=
|
||||||
github.com/IBM/sarama v1.45.2/go.mod h1:ppaoTcVdGv186/z6MEKsMm70A5fwJfRTpstI37kVn3Y=
|
github.com/IBM/sarama v1.45.2/go.mod h1:ppaoTcVdGv186/z6MEKsMm70A5fwJfRTpstI37kVn3Y=
|
||||||
github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM=
|
github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM=
|
||||||
@@ -131,8 +131,8 @@ github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8
|
|||||||
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
|
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
|
||||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||||
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
|
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
|
||||||
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
|
github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
|
||||||
github.com/gammazero/toposort v0.1.1 h1:OivGxsWxF3U3+U80VoLJ+f50HcPU1MIqE1JlKzoJ2Eg=
|
github.com/gammazero/toposort v0.1.1 h1:OivGxsWxF3U3+U80VoLJ+f50HcPU1MIqE1JlKzoJ2Eg=
|
||||||
github.com/gammazero/toposort v0.1.1/go.mod h1:H2cozTnNpMw0hg2VHAYsAxmkHXBYroNangj2NTBQDvw=
|
github.com/gammazero/toposort v0.1.1/go.mod h1:H2cozTnNpMw0hg2VHAYsAxmkHXBYroNangj2NTBQDvw=
|
||||||
github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A=
|
github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A=
|
||||||
@@ -173,16 +173,16 @@ github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
|
|||||||
github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
|
github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
|
||||||
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
|
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
|
||||||
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
|
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
|
||||||
github.com/gogf/gf/contrib/drivers/mysql/v2 v2.9.0 h1:1f7EeD0lfPHoXfaJDSL7cxRcSRelbsAKgF3MGXY+Uyo=
|
github.com/gogf/gf/contrib/drivers/mysql/v2 v2.9.4 h1:ntAPahCjQwQ79CC6tI67QDgj17NTWp+lMd1SaL2jJhs=
|
||||||
github.com/gogf/gf/contrib/drivers/mysql/v2 v2.9.0/go.mod h1:tToO1PjGkLIR+9DbJ0wrKicYma0H/EUHXOpwel6Dw+0=
|
github.com/gogf/gf/contrib/drivers/mysql/v2 v2.9.4/go.mod h1:/350+9clTW5ktUvF+hePMN9yDknB2ipslqcx3Y2rLDQ=
|
||||||
github.com/gogf/gf/contrib/nosql/redis/v2 v2.9.0 h1:EEZqu1PNRSmm+7Cqm9A/8+ObgfbMzhE1ps9Z3LD7HgM=
|
github.com/gogf/gf/contrib/drivers/pgsql/v2 v2.9.5-0.20251017101031-c02148cd6b8b h1:f866FHfg85dSbO3A8w1PLOyZm0IERqD4q0nutIubDHU=
|
||||||
github.com/gogf/gf/contrib/nosql/redis/v2 v2.9.0/go.mod h1:LHrxY+2IzNTHVTPG/s5yaz1VmXbj+CQ7Hr5SeVkHiTw=
|
github.com/gogf/gf/contrib/drivers/pgsql/v2 v2.9.5-0.20251017101031-c02148cd6b8b/go.mod h1:FCGqaKJdbpqLdGkOPb/u2sfJxqQbJecqU5F9D9hCRC4=
|
||||||
|
github.com/gogf/gf/contrib/nosql/redis/v2 v2.9.4 h1:iKXUQ+8TklSriAqOQjfwioI36zlByqrDqz4ISaRFvm8=
|
||||||
|
github.com/gogf/gf/contrib/nosql/redis/v2 v2.9.4/go.mod h1:PYVwyQ0gN+w3wL7zKAoeUpy2WFs4/V8+Ls+eNsy7Uo0=
|
||||||
github.com/gogf/gf/contrib/trace/jaeger/v2 v2.7.4 h1:JnUjXb7C9vmwcZFwXqnxi9H4/I0rir9LmRryIX7xNds=
|
github.com/gogf/gf/contrib/trace/jaeger/v2 v2.7.4 h1:JnUjXb7C9vmwcZFwXqnxi9H4/I0rir9LmRryIX7xNds=
|
||||||
github.com/gogf/gf/contrib/trace/jaeger/v2 v2.7.4/go.mod h1:A3NhV8u45twLq5VdqObhYNhT4szLFLCROw4LzHM+lYg=
|
github.com/gogf/gf/contrib/trace/jaeger/v2 v2.7.4/go.mod h1:A3NhV8u45twLq5VdqObhYNhT4szLFLCROw4LzHM+lYg=
|
||||||
github.com/gogf/gf/v2 v2.9.0 h1:semN5Q5qGjDQEv4620VzxcJzJlSD07gmyJ9Sy9zfbHk=
|
github.com/gogf/gf/v2 v2.9.4 h1:6vleEWypot9WBPncP2GjbpgAUeG6Mzb1YESb9nPMkjY=
|
||||||
github.com/gogf/gf/v2 v2.9.0/go.mod h1:sWGQw+pLILtuHmbOxoe0D+0DdaXxbleT57axOLH2vKI=
|
github.com/gogf/gf/v2 v2.9.4/go.mod h1:Ukl+5HUH9S7puBmNLR4L1zUqeRwi0nrW4OigOknEztU=
|
||||||
github.com/gogf/gf/v2 v2.9.1-0.20250624075347-5fa656d1cc92 h1:ydiVI+0OGCH8eeuAq+P6XzyIX7CCbYose+AFvJdMD7k=
|
|
||||||
github.com/gogf/gf/v2 v2.9.1-0.20250624075347-5fa656d1cc92/go.mod h1:sWGQw+pLILtuHmbOxoe0D+0DdaXxbleT57axOLH2vKI=
|
|
||||||
github.com/gogf/selfupdate v0.0.0-20231215043001-5c48c528462f h1:7xfXR/BhG3JDqO1s45n65Oyx9t4E/UqDOXep6jXdLCM=
|
github.com/gogf/selfupdate v0.0.0-20231215043001-5c48c528462f h1:7xfXR/BhG3JDqO1s45n65Oyx9t4E/UqDOXep6jXdLCM=
|
||||||
github.com/gogf/selfupdate v0.0.0-20231215043001-5c48c528462f/go.mod h1:HnYoio6S7VaFJdryKcD/r9HgX+4QzYfr00XiXUo/xz0=
|
github.com/gogf/selfupdate v0.0.0-20231215043001-5c48c528462f/go.mod h1:HnYoio6S7VaFJdryKcD/r9HgX+4QzYfr00XiXUo/xz0=
|
||||||
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
|
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
|
||||||
@@ -287,16 +287,16 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
|||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||||
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
|
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
|
||||||
github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
|
github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
|
||||||
|
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
|
||||||
|
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
||||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
|
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
|
||||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
|
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
|
||||||
github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM=
|
github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE=
|
||||||
github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
|
github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
|
||||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
|
||||||
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
|
||||||
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
|
||||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
|
||||||
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
|
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
|
||||||
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||||
github.com/minio/crc64nvme v1.0.1 h1:DHQPrYPdqK7jQG/Ls5CTBZWeex/2FMS3G5XGkycuFrY=
|
github.com/minio/crc64nvme v1.0.1 h1:DHQPrYPdqK7jQG/Ls5CTBZWeex/2FMS3G5XGkycuFrY=
|
||||||
@@ -325,14 +325,12 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLA
|
|||||||
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
||||||
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
|
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
|
||||||
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
|
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
|
||||||
github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo=
|
github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM=
|
||||||
github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y=
|
github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y=
|
||||||
github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc=
|
github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI=
|
||||||
github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g=
|
github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g=
|
||||||
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
|
github.com/olekukonko/tablewriter v1.1.0 h1:N0LHrshF4T39KvI96fn6GT8HEjXRXYNDrDjKFDB7RIY=
|
||||||
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
|
github.com/olekukonko/tablewriter v1.1.0/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo=
|
||||||
github.com/olekukonko/tablewriter v1.0.8 h1:f6wJzHg4QUtJdvrVPKco4QTrAylgaU0+b9br/lJxEiQ=
|
|
||||||
github.com/olekukonko/tablewriter v1.0.8/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs=
|
|
||||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||||
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
||||||
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
|
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
|
||||||
@@ -364,8 +362,8 @@ github.com/qiniu/go-sdk/v7 v7.25.4/go.mod h1:dmKtJ2ahhPWFVi9o1D5GemmWoh/ctuB9peq
|
|||||||
github.com/qiniu/x v1.10.5/go.mod h1:03Ni9tj+N2h2aKnAz+6N0Xfl8FwMEDRC2PAlxekASDs=
|
github.com/qiniu/x v1.10.5/go.mod h1:03Ni9tj+N2h2aKnAz+6N0Xfl8FwMEDRC2PAlxekASDs=
|
||||||
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
|
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
|
||||||
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
||||||
github.com/redis/go-redis/v9 v9.7.0 h1:HhLSs+B6O021gwzl+locl0zEDnyNkxMtf/Z3NNBMa9E=
|
github.com/redis/go-redis/v9 v9.12.1 h1:k5iquqv27aBtnTm2tIkROUDp8JBXhXZIVu1InSgvovg=
|
||||||
github.com/redis/go-redis/v9 v9.7.0/go.mod h1:f6zhXITC7JUJIlPEiBOTXxJgPLdZcA93GewI7inzyWw=
|
github.com/redis/go-redis/v9 v9.12.1/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw=
|
||||||
github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM=
|
github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM=
|
||||||
github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk=
|
github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk=
|
||||||
github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
|
github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
|
||||||
@@ -415,8 +413,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
|
|||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
||||||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
||||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.563/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
|
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.563/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
|
||||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1200/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
|
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1200/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
|
||||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1202 h1:3QTQZXLLGLALyHNHs6WAsFCWvElMEXfOdaFM01/3Zjo=
|
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1202 h1:3QTQZXLLGLALyHNHs6WAsFCWvElMEXfOdaFM01/3Zjo=
|
||||||
@@ -462,18 +460,22 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo
|
|||||||
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
||||||
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
|
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
|
||||||
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
|
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
|
||||||
go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ=
|
go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8=
|
||||||
go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I=
|
go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM=
|
||||||
go.opentelemetry.io/otel/exporters/jaeger v1.14.0 h1:CjbUNd4iN2hHmWekmOqZ+zSCU+dzZppG8XsV+A3oc8Q=
|
go.opentelemetry.io/otel/exporters/jaeger v1.14.0 h1:CjbUNd4iN2hHmWekmOqZ+zSCU+dzZppG8XsV+A3oc8Q=
|
||||||
go.opentelemetry.io/otel/exporters/jaeger v1.14.0/go.mod h1:4Ay9kk5vELRrbg5z4cpP9EtmQRFap2Wb0woPG4lujZA=
|
go.opentelemetry.io/otel/exporters/jaeger v1.14.0/go.mod h1:4Ay9kk5vELRrbg5z4cpP9EtmQRFap2Wb0woPG4lujZA=
|
||||||
go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE=
|
go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA=
|
||||||
go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E=
|
go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI=
|
||||||
go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4=
|
go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E=
|
||||||
go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU=
|
go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg=
|
||||||
go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4=
|
go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM=
|
||||||
go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0=
|
go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA=
|
||||||
|
go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE=
|
||||||
|
go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs=
|
||||||
go.uber.org/atomic v1.5.1 h1:rsqfU5vBkVknbhUGbAUwQKR2H4ItV8tjJ+6kJX4cxHM=
|
go.uber.org/atomic v1.5.1 h1:rsqfU5vBkVknbhUGbAUwQKR2H4ItV8tjJ+6kJX4cxHM=
|
||||||
go.uber.org/atomic v1.5.1/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
|
go.uber.org/atomic v1.5.1/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
|
||||||
|
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
||||||
|
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
|
||||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
@@ -492,8 +494,8 @@ golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDf
|
|||||||
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
|
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
|
||||||
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
|
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
|
||||||
golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
|
golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
|
||||||
golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM=
|
golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
|
||||||
golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U=
|
golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/image v0.23.0/go.mod h1:wJJBTdLfCCf3tiHa1fNxpZmUI4mmoZvwMCPP0ddoNKY=
|
golang.org/x/image v0.23.0/go.mod h1:wJJBTdLfCCf3tiHa1fNxpZmUI4mmoZvwMCPP0ddoNKY=
|
||||||
golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ=
|
golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ=
|
||||||
@@ -510,8 +512,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
|||||||
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||||
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||||
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||||
golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w=
|
golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg=
|
||||||
golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
|
golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ=
|
||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
@@ -539,8 +541,8 @@ golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
|
|||||||
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
|
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
|
||||||
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
|
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
|
||||||
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
|
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
|
||||||
golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
|
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
|
||||||
golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA=
|
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
@@ -554,8 +556,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
|||||||
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8=
|
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
|
||||||
golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
@@ -581,7 +583,6 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
@@ -593,8 +594,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
|||||||
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
|
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
|
||||||
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||||
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
|
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
|
||||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
@@ -608,8 +609,8 @@ golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
|
|||||||
golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
|
golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
|
||||||
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
|
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
|
||||||
golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
|
golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
|
||||||
golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg=
|
golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4=
|
||||||
golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ=
|
golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
@@ -622,8 +623,8 @@ golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
|||||||
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||||
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
|
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
|
||||||
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
||||||
golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M=
|
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
|
||||||
golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA=
|
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
|
||||||
golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE=
|
golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE=
|
||||||
golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
|
golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
@@ -641,8 +642,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc
|
|||||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||||
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
|
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
|
||||||
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
|
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
|
||||||
golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo=
|
golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0=
|
||||||
golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg=
|
golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ gfcli:
|
|||||||
gen:
|
gen:
|
||||||
dao:
|
dao:
|
||||||
- link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true&charset=utf8mb4"
|
- link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true&charset=utf8mb4"
|
||||||
|
# - link: "pgsql:postgres:hg123456@tcp(127.0.0.1:5432)/hotgo"
|
||||||
group: "default" # 分组 使用hotgo代码生成功能时必须填
|
group: "default" # 分组 使用hotgo代码生成功能时必须填
|
||||||
# tables: "" # 指定当前数据库中需要执行代码生成的数据表。如果为空,表示数据库的所有表都会生成。
|
# tables: "" # 指定当前数据库中需要执行代码生成的数据表。如果为空,表示数据库的所有表都会生成。
|
||||||
tablesEx: "hg_sys_addons_install" # 指定当前数据库中需要排除代码生成的数据表。
|
tablesEx: "hg_sys_addons_install" # 指定当前数据库中需要排除代码生成的数据表。
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// Package consts
|
// Package consts
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
// @Link https://github.com/bufanyun/hotgo
|
||||||
// @Copyright Copyright (c) 2023 HotGo CLI
|
// @Copyright Copyright (c) 2025 HotGo CLI
|
||||||
// @Author Ms <133814250@qq.com>
|
// @Author Ms <133814250@qq.com>
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||||
package consts
|
package consts
|
||||||
@@ -14,6 +14,7 @@ const (
|
|||||||
Unknown = "Unknown" // Unknown
|
Unknown = "Unknown" // Unknown
|
||||||
SuperRoleKey = "super" // 超管角色唯一标识符,通过角色验证超管
|
SuperRoleKey = "super" // 超管角色唯一标识符,通过角色验证超管
|
||||||
MaxServeLogContentLen = 2048 // 最大保留服务日志内容大小
|
MaxServeLogContentLen = 2048 // 最大保留服务日志内容大小
|
||||||
|
SysDefaultLanguage = "zh_CN" // 系统默认语言,当配置文件没有国际化配置时生效
|
||||||
)
|
)
|
||||||
|
|
||||||
// curd.
|
// curd.
|
||||||
@@ -29,3 +30,8 @@ const (
|
|||||||
MerchantId = "merchant_id" // 商户ID
|
MerchantId = "merchant_id" // 商户ID
|
||||||
UserId = "user_id" // 用户ID
|
UserId = "user_id" // 用户ID
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
DBMysql = "mysql"
|
||||||
|
DBPgsql = "pgsql"
|
||||||
|
)
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
// Package consts
|
// Package consts
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
// @Link https://github.com/bufanyun/hotgo
|
||||||
// @Copyright Copyright (c) 2023 HotGo CLI
|
// @Copyright Copyright (c) 2025 HotGo CLI
|
||||||
// @Author Ms <133814250@qq.com>
|
// @Author Ms <133814250@qq.com>
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||||
package consts
|
package consts
|
||||||
|
|
||||||
// VersionApp HotGo版本
|
// VersionApp HotGo版本
|
||||||
const (
|
const (
|
||||||
VersionApp = "2.17.8"
|
VersionApp = "2.18.6"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ package common
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/gogf/gf/v2/i18n/gi18n"
|
||||||
"hotgo/api/admin/common"
|
"hotgo/api/admin/common"
|
||||||
"hotgo/internal/consts"
|
"hotgo/internal/consts"
|
||||||
"hotgo/internal/library/captcha"
|
"hotgo/internal/library/captcha"
|
||||||
@@ -90,6 +91,9 @@ func (c *cSite) LoginConfig(ctx context.Context, _ *common.SiteLoginConfigReq) (
|
|||||||
}
|
}
|
||||||
|
|
||||||
res.LoginConfig = login
|
res.LoginConfig = login
|
||||||
|
res.I18nSwitch = g.Cfg().MustGet(ctx, "system.i18n.switch", true).Bool()
|
||||||
|
res.DefaultLanguage = g.Cfg().MustGet(ctx, "system.i18n.defaultLanguage", consts.SysDefaultLanguage).String()
|
||||||
|
res.ProjectName = gi18n.T(ctx, "HotGo管理系统")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -57,3 +57,10 @@ func (c *cUpload) UploadPart(ctx context.Context, req *common.UploadPartReq) (re
|
|||||||
res.UploadPartModel = data
|
res.UploadPartModel = data
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ImageTransferStorage 图片链接转存
|
||||||
|
func (c *cUpload) ImageTransferStorage(ctx context.Context, req *common.ImageTransferStorageReq) (res *common.ImageTransferStorageRes, err error) {
|
||||||
|
res = new(common.ImageTransferStorageRes)
|
||||||
|
res.ImageTransferStorageModel, err = service.CommonUpload().ImageTransferStorage(ctx, &req.ImageTransferStorageInp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
// Package sys
|
// Package sys
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
// @Link https://github.com/bufanyun/hotgo
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
// @Copyright Copyright (c) 2025 HotGo CLI
|
||||||
// @Author Ms <133814250@qq.com>
|
// @Author Ms <133814250@qq.com>
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||||
// @AutoGenerate Version 2.15.7
|
// @AutoGenerate Version 2.18.6
|
||||||
package sys
|
package sys
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -88,4 +88,4 @@ func (c *cCurdDemo) Status(ctx context.Context, req *curddemo.StatusReq) (res *c
|
|||||||
func (c *cCurdDemo) Switch(ctx context.Context, req *curddemo.SwitchReq) (res *curddemo.SwitchRes, err error) {
|
func (c *cCurdDemo) Switch(ctx context.Context, req *curddemo.SwitchReq) (res *curddemo.SwitchRes, err error) {
|
||||||
err = service.SysCurdDemo().Switch(ctx, &req.CurdDemoSwitchInp)
|
err = service.SysCurdDemo().Switch(ctx, &req.CurdDemoSwitchInp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
// Package sys
|
// Package sys
|
||||||
// @Link https://github.com/bufanyun/hotgo
|
// @Link https://github.com/bufanyun/hotgo
|
||||||
// @Copyright Copyright (c) 2024 HotGo CLI
|
// @Copyright Copyright (c) 2025 HotGo CLI
|
||||||
// @Author Ms <133814250@qq.com>
|
// @Author Ms <133814250@qq.com>
|
||||||
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
||||||
// @AutoGenerate Version 2.15.7
|
// @AutoGenerate Version 2.17.8
|
||||||
package sys
|
package sys
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -86,4 +86,4 @@ func (c *cOptionTreeDemo) TreeOption(ctx context.Context, req *optiontreedemo.Tr
|
|||||||
res = &temp
|
res = &temp
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAddonHgexampleTableDao is internal type for wrapping internal DAO implements.
|
// addonHgexampleTableDao is the data access object for the table hg_addon_hgexample_table.
|
||||||
type internalAddonHgexampleTableDao = *internal.AddonHgexampleTableDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// addonHgexampleTableDao is the data access object for table hg_addon_hgexample_table.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type addonHgexampleTableDao struct {
|
type addonHgexampleTableDao struct {
|
||||||
internalAddonHgexampleTableDao
|
*internal.AddonHgexampleTableDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AddonHgexampleTable is globally public accessible object for table hg_addon_hgexample_table operations.
|
// AddonHgexampleTable is a globally accessible object for table hg_addon_hgexample_table operations.
|
||||||
AddonHgexampleTable = addonHgexampleTableDao{
|
AddonHgexampleTable = addonHgexampleTableDao{internal.NewAddonHgexampleTableDao()}
|
||||||
internal.NewAddonHgexampleTableDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAddonHgexampleTenantOrderDao is internal type for wrapping internal DAO implements.
|
// addonHgexampleTenantOrderDao is the data access object for the table hg_addon_hgexample_tenant_order.
|
||||||
type internalAddonHgexampleTenantOrderDao = *internal.AddonHgexampleTenantOrderDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// addonHgexampleTenantOrderDao is the data access object for table hg_addon_hgexample_tenant_order.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type addonHgexampleTenantOrderDao struct {
|
type addonHgexampleTenantOrderDao struct {
|
||||||
internalAddonHgexampleTenantOrderDao
|
*internal.AddonHgexampleTenantOrderDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AddonHgexampleTenantOrder is globally public accessible object for table hg_addon_hgexample_tenant_order operations.
|
// AddonHgexampleTenantOrder is a globally accessible object for table hg_addon_hgexample_tenant_order operations.
|
||||||
AddonHgexampleTenantOrder = addonHgexampleTenantOrderDao{
|
AddonHgexampleTenantOrder = addonHgexampleTenantOrderDao{internal.NewAddonHgexampleTenantOrderDao()}
|
||||||
internal.NewAddonHgexampleTenantOrderDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAdminCashDao is internal type for wrapping internal DAO implements.
|
// adminCashDao is the data access object for the table hg_admin_cash.
|
||||||
type internalAdminCashDao = *internal.AdminCashDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// adminCashDao is the data access object for table hg_admin_cash.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type adminCashDao struct {
|
type adminCashDao struct {
|
||||||
internalAdminCashDao
|
*internal.AdminCashDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AdminCash is globally public accessible object for table hg_admin_cash operations.
|
// AdminCash is a globally accessible object for table hg_admin_cash operations.
|
||||||
AdminCash = adminCashDao{
|
AdminCash = adminCashDao{internal.NewAdminCashDao()}
|
||||||
internal.NewAdminCashDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAdminCreditsLogDao is internal type for wrapping internal DAO implements.
|
// adminCreditsLogDao is the data access object for the table hg_admin_credits_log.
|
||||||
type internalAdminCreditsLogDao = *internal.AdminCreditsLogDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// adminCreditsLogDao is the data access object for table hg_admin_credits_log.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type adminCreditsLogDao struct {
|
type adminCreditsLogDao struct {
|
||||||
internalAdminCreditsLogDao
|
*internal.AdminCreditsLogDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AdminCreditsLog is globally public accessible object for table hg_admin_credits_log operations.
|
// AdminCreditsLog is a globally accessible object for table hg_admin_credits_log operations.
|
||||||
AdminCreditsLog = adminCreditsLogDao{
|
AdminCreditsLog = adminCreditsLogDao{internal.NewAdminCreditsLogDao()}
|
||||||
internal.NewAdminCreditsLogDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAdminDeptDao is internal type for wrapping internal DAO implements.
|
// adminDeptDao is the data access object for the table hg_admin_dept.
|
||||||
type internalAdminDeptDao = *internal.AdminDeptDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// adminDeptDao is the data access object for table hg_admin_dept.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type adminDeptDao struct {
|
type adminDeptDao struct {
|
||||||
internalAdminDeptDao
|
*internal.AdminDeptDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AdminDept is globally public accessible object for table hg_admin_dept operations.
|
// AdminDept is a globally accessible object for table hg_admin_dept operations.
|
||||||
AdminDept = adminDeptDao{
|
AdminDept = adminDeptDao{internal.NewAdminDeptDao()}
|
||||||
internal.NewAdminDeptDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAdminMemberDao is internal type for wrapping internal DAO implements.
|
// adminMemberDao is the data access object for the table hg_admin_member.
|
||||||
type internalAdminMemberDao = *internal.AdminMemberDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// adminMemberDao is the data access object for table hg_admin_member.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type adminMemberDao struct {
|
type adminMemberDao struct {
|
||||||
internalAdminMemberDao
|
*internal.AdminMemberDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AdminMember is globally public accessible object for table hg_admin_member operations.
|
// AdminMember is a globally accessible object for table hg_admin_member operations.
|
||||||
AdminMember = adminMemberDao{
|
AdminMember = adminMemberDao{internal.NewAdminMemberDao()}
|
||||||
internal.NewAdminMemberDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAdminMemberPostDao is internal type for wrapping internal DAO implements.
|
// adminMemberPostDao is the data access object for the table hg_admin_member_post.
|
||||||
type internalAdminMemberPostDao = *internal.AdminMemberPostDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// adminMemberPostDao is the data access object for table hg_admin_member_post.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type adminMemberPostDao struct {
|
type adminMemberPostDao struct {
|
||||||
internalAdminMemberPostDao
|
*internal.AdminMemberPostDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AdminMemberPost is globally public accessible object for table hg_admin_member_post operations.
|
// AdminMemberPost is a globally accessible object for table hg_admin_member_post operations.
|
||||||
AdminMemberPost = adminMemberPostDao{
|
AdminMemberPost = adminMemberPostDao{internal.NewAdminMemberPostDao()}
|
||||||
internal.NewAdminMemberPostDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAdminMemberRoleDao is internal type for wrapping internal DAO implements.
|
// adminMemberRoleDao is the data access object for the table hg_admin_member_role.
|
||||||
type internalAdminMemberRoleDao = *internal.AdminMemberRoleDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// adminMemberRoleDao is the data access object for table hg_admin_member_role.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type adminMemberRoleDao struct {
|
type adminMemberRoleDao struct {
|
||||||
internalAdminMemberRoleDao
|
*internal.AdminMemberRoleDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AdminMemberRole is globally public accessible object for table hg_admin_member_role operations.
|
// AdminMemberRole is a globally accessible object for table hg_admin_member_role operations.
|
||||||
AdminMemberRole = adminMemberRoleDao{
|
AdminMemberRole = adminMemberRoleDao{internal.NewAdminMemberRoleDao()}
|
||||||
internal.NewAdminMemberRoleDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAdminMenuDao is internal type for wrapping internal DAO implements.
|
// adminMenuDao is the data access object for the table hg_admin_menu.
|
||||||
type internalAdminMenuDao = *internal.AdminMenuDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// adminMenuDao is the data access object for table hg_admin_menu.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type adminMenuDao struct {
|
type adminMenuDao struct {
|
||||||
internalAdminMenuDao
|
*internal.AdminMenuDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AdminMenu is globally public accessible object for table hg_admin_menu operations.
|
// AdminMenu is a globally accessible object for table hg_admin_menu operations.
|
||||||
AdminMenu = adminMenuDao{
|
AdminMenu = adminMenuDao{internal.NewAdminMenuDao()}
|
||||||
internal.NewAdminMenuDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAdminNoticeDao is internal type for wrapping internal DAO implements.
|
// adminNoticeDao is the data access object for the table hg_admin_notice.
|
||||||
type internalAdminNoticeDao = *internal.AdminNoticeDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// adminNoticeDao is the data access object for table hg_admin_notice.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type adminNoticeDao struct {
|
type adminNoticeDao struct {
|
||||||
internalAdminNoticeDao
|
*internal.AdminNoticeDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AdminNotice is globally public accessible object for table hg_admin_notice operations.
|
// AdminNotice is a globally accessible object for table hg_admin_notice operations.
|
||||||
AdminNotice = adminNoticeDao{
|
AdminNotice = adminNoticeDao{internal.NewAdminNoticeDao()}
|
||||||
internal.NewAdminNoticeDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAdminNoticeReadDao is internal type for wrapping internal DAO implements.
|
// adminNoticeReadDao is the data access object for the table hg_admin_notice_read.
|
||||||
type internalAdminNoticeReadDao = *internal.AdminNoticeReadDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// adminNoticeReadDao is the data access object for table hg_admin_notice_read.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type adminNoticeReadDao struct {
|
type adminNoticeReadDao struct {
|
||||||
internalAdminNoticeReadDao
|
*internal.AdminNoticeReadDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AdminNoticeRead is globally public accessible object for table hg_admin_notice_read operations.
|
// AdminNoticeRead is a globally accessible object for table hg_admin_notice_read operations.
|
||||||
AdminNoticeRead = adminNoticeReadDao{
|
AdminNoticeRead = adminNoticeReadDao{internal.NewAdminNoticeReadDao()}
|
||||||
internal.NewAdminNoticeReadDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAdminOauthDao is internal type for wrapping internal DAO implements.
|
// adminOauthDao is the data access object for the table hg_admin_oauth.
|
||||||
type internalAdminOauthDao = *internal.AdminOauthDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// adminOauthDao is the data access object for table hg_admin_oauth.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type adminOauthDao struct {
|
type adminOauthDao struct {
|
||||||
internalAdminOauthDao
|
*internal.AdminOauthDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AdminOauth is globally public accessible object for table hg_admin_oauth operations.
|
// AdminOauth is a globally accessible object for table hg_admin_oauth operations.
|
||||||
AdminOauth = adminOauthDao{
|
AdminOauth = adminOauthDao{internal.NewAdminOauthDao()}
|
||||||
internal.NewAdminOauthDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAdminOrderDao is internal type for wrapping internal DAO implements.
|
// adminOrderDao is the data access object for the table hg_admin_order.
|
||||||
type internalAdminOrderDao = *internal.AdminOrderDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// adminOrderDao is the data access object for table hg_admin_order.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type adminOrderDao struct {
|
type adminOrderDao struct {
|
||||||
internalAdminOrderDao
|
*internal.AdminOrderDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AdminOrder is globally public accessible object for table hg_admin_order operations.
|
// AdminOrder is a globally accessible object for table hg_admin_order operations.
|
||||||
AdminOrder = adminOrderDao{
|
AdminOrder = adminOrderDao{internal.NewAdminOrderDao()}
|
||||||
internal.NewAdminOrderDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAdminPostDao is internal type for wrapping internal DAO implements.
|
// adminPostDao is the data access object for the table hg_admin_post.
|
||||||
type internalAdminPostDao = *internal.AdminPostDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// adminPostDao is the data access object for table hg_admin_post.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type adminPostDao struct {
|
type adminPostDao struct {
|
||||||
internalAdminPostDao
|
*internal.AdminPostDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AdminPost is globally public accessible object for table hg_admin_post operations.
|
// AdminPost is a globally accessible object for table hg_admin_post operations.
|
||||||
AdminPost = adminPostDao{
|
AdminPost = adminPostDao{internal.NewAdminPostDao()}
|
||||||
internal.NewAdminPostDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAdminRoleDao is internal type for wrapping internal DAO implements.
|
// adminRoleDao is the data access object for the table hg_admin_role.
|
||||||
type internalAdminRoleDao = *internal.AdminRoleDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// adminRoleDao is the data access object for table hg_admin_role.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type adminRoleDao struct {
|
type adminRoleDao struct {
|
||||||
internalAdminRoleDao
|
*internal.AdminRoleDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AdminRole is globally public accessible object for table hg_admin_role operations.
|
// AdminRole is a globally accessible object for table hg_admin_role operations.
|
||||||
AdminRole = adminRoleDao{
|
AdminRole = adminRoleDao{internal.NewAdminRoleDao()}
|
||||||
internal.NewAdminRoleDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAdminRoleCasbinDao is internal type for wrapping internal DAO implements.
|
// adminRoleCasbinDao is the data access object for the table hg_admin_role_casbin.
|
||||||
type internalAdminRoleCasbinDao = *internal.AdminRoleCasbinDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// adminRoleCasbinDao is the data access object for table hg_admin_role_casbin.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type adminRoleCasbinDao struct {
|
type adminRoleCasbinDao struct {
|
||||||
internalAdminRoleCasbinDao
|
*internal.AdminRoleCasbinDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AdminRoleCasbin is globally public accessible object for table hg_admin_role_casbin operations.
|
// AdminRoleCasbin is a globally accessible object for table hg_admin_role_casbin operations.
|
||||||
AdminRoleCasbin = adminRoleCasbinDao{
|
AdminRoleCasbin = adminRoleCasbinDao{internal.NewAdminRoleCasbinDao()}
|
||||||
internal.NewAdminRoleCasbinDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// =================================================================================
|
// =================================================================================
|
||||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed.
|
||||||
// =================================================================================
|
// =================================================================================
|
||||||
|
|
||||||
package dao
|
package dao
|
||||||
@@ -8,20 +8,15 @@ import (
|
|||||||
"hotgo/internal/dao/internal"
|
"hotgo/internal/dao/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// internalAdminRoleMenuDao is internal type for wrapping internal DAO implements.
|
// adminRoleMenuDao is the data access object for the table hg_admin_role_menu.
|
||||||
type internalAdminRoleMenuDao = *internal.AdminRoleMenuDao
|
// You can define custom methods on it to extend its functionality as needed.
|
||||||
|
|
||||||
// adminRoleMenuDao is the data access object for table hg_admin_role_menu.
|
|
||||||
// You can define custom methods on it to extend its functionality as you wish.
|
|
||||||
type adminRoleMenuDao struct {
|
type adminRoleMenuDao struct {
|
||||||
internalAdminRoleMenuDao
|
*internal.AdminRoleMenuDao
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// AdminRoleMenu is globally public accessible object for table hg_admin_role_menu operations.
|
// AdminRoleMenu is a globally accessible object for table hg_admin_role_menu operations.
|
||||||
AdminRoleMenu = adminRoleMenuDao{
|
AdminRoleMenu = adminRoleMenuDao{internal.NewAdminRoleMenuDao()}
|
||||||
internal.NewAdminRoleMenuDao(),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Fill with you ideas below.
|
// Add your custom methods and functionality below.
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ type SysAddonsConfigColumns struct {
|
|||||||
AddonName string // 插件名称
|
AddonName string // 插件名称
|
||||||
Group string // 分组
|
Group string // 分组
|
||||||
Name string // 参数名称
|
Name string // 参数名称
|
||||||
Type string // 键值类型:string,int,uint,bool,datetime,date
|
Type string // 键值类型:string,int,uint,bool,TIMESTAMP,date
|
||||||
Key string // 参数键名
|
Key string // 参数键名
|
||||||
Value string // 参数键值
|
Value string // 参数键值
|
||||||
DefaultValue string // 默认值
|
DefaultValue string // 默认值
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user