From d516105f14041ce38ff2921a76a1e5940aad744a Mon Sep 17 00:00:00 2001
From: xh <11675084@qq.com>
Date: Mon, 1 Dec 2025 01:57:39 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
admin/src/router/index.ts | 18 +++++--
admin/src/views/IframeComponent.vue | 23 +++++++++
admin/vite.config.ts | 4 +-
docs/.vitepress/config.mts | 2 +
docs/admin/嵌入iframe.md | 7 +++
docs/server/swaggo.md | 15 +-----
docs/server/数据库null值.md | 71 ++++++++++++----------------
docs/server/权限验证.md | 9 ++--
docs/server/环境变量.md | 6 +--
docs/server/结构说明.md | 1 +
docs/server/部署Go.md | 17 ++++---
server/.env.example | 2 +-
server/.gitignore | 1 +
server/pack.bat | 6 +--
server/upx.exe | Bin 0 -> 406528 bytes
15 files changed, 106 insertions(+), 76 deletions(-)
create mode 100644 admin/src/views/IframeComponent.vue
create mode 100644 docs/admin/嵌入iframe.md
create mode 100644 server/upx.exe
diff --git a/admin/src/router/index.ts b/admin/src/router/index.ts
index 19ec7ea..8f1bcc4 100644
--- a/admin/src/router/index.ts
+++ b/admin/src/router/index.ts
@@ -3,7 +3,7 @@ import { MenuEnum } from '@/enums/appEnums'
import { isExternal } from '@/utils/validate'
import { constantRoutes, INDEX_ROUTE_NAME, LAYOUT, Empty } from './routes'
import useUserStore from '@/stores/modules/user'
-
+import qs from 'query-string'
// 匹配views里面所有的.vue文件,动态引入
const modules = import.meta.glob('/src/views/**/*.vue')
@@ -27,6 +27,18 @@ export function filterAsyncRoutes(routes: any[], firstRoute = true) {
// 创建一条路由记录
export function createRouteRecord(route: any, firstRoute: boolean): RouteRecordRaw {
+ let query = route.params
+
+ try {
+ if (route.params) {
+ // console.log(route.params)
+ // query =
+ query = qs.stringify(JSON.parse(route.params))
+ // console.log(query)
+ }
+ } catch (error) {
+ // console.error(error)
+ }
//@ts-ignore
const routeRecord: RouteRecordRaw = {
path: isExternal(route.paths) ? route.paths : firstRoute ? `/${route.paths}` : route.paths,
@@ -35,8 +47,8 @@ export function createRouteRecord(route: any, firstRoute: boolean): RouteRecordR
hidden: !route.isShow,
keepAlive: !!route.isCache,
title: route.menuName,
- perms: route.perms, //逗号分隔的字符串
- query: route.params,
+ perms: route.perms, //
+ query: query,
icon: route.menuIcon,
type: route.menuType,
activeMenu: route.selected
diff --git a/admin/src/views/IframeComponent.vue b/admin/src/views/IframeComponent.vue
new file mode 100644
index 0000000..7389799
--- /dev/null
+++ b/admin/src/views/IframeComponent.vue
@@ -0,0 +1,23 @@
+vue
+
+
+
+
+
+
+
+
diff --git a/admin/vite.config.ts b/admin/vite.config.ts
index 3e546a4..8bf6ccc 100644
--- a/admin/vite.config.ts
+++ b/admin/vite.config.ts
@@ -108,8 +108,8 @@ export default ({ mode }) => {
host: '0.0.0.0',
port: 5180,
proxy: {
- '/api': {
- target: env.VITE_APP_BASE_URL,
+ '/api/': {
+ target: env.VITE_APP_BASE_URL + '/',
changeOrigin: true,
ws: true
}
diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts
index 5f03281..60d4a7c 100644
--- a/docs/.vitepress/config.mts
+++ b/docs/.vitepress/config.mts
@@ -45,6 +45,8 @@ export default defineConfig({
{ text: 'nginx配置', link: '/admin/nginx配置.md' },
{ text: '路由', link: '/admin/路由.md' },
+ { text: '嵌入iframe', link: '/admin/嵌入iframe.md' },
+
{ text: '自定义hooks', link: '/admin/自定义hooks.md' },
]
}
diff --git a/docs/admin/嵌入iframe.md b/docs/admin/嵌入iframe.md
new file mode 100644
index 0000000..315a481
--- /dev/null
+++ b/docs/admin/嵌入iframe.md
@@ -0,0 +1,7 @@
+## 嵌入iframe
+1. 添加菜单
+2. 选择组件路径:IframeComponent
+3. 路由参数:
+```
+{"url": "/api/static/api/index.html"}或者 url=/api/static/api/index.html
+```
\ No newline at end of file
diff --git a/docs/server/swaggo.md b/docs/server/swaggo.md
index 9f38c94..41bee19 100644
--- a/docs/server/swaggo.md
+++ b/docs/server/swaggo.md
@@ -479,7 +479,7 @@ type Foo struct {
| minLength | `integer` | 参看 https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.2. |
| enums | [\*] | 参看 https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.5.1. |
| format | `string` | 上面提到的[类型](#parameterType)的扩展格式。有关更多详细信息,请参见[数据类型格式](https://swagger.io/specification/v2/#dataTypeFormat)。 |
-| collectionFormat | `string` | 指定query数组参数的格式。 可能的值为:
- `csv` - 逗号分隔值 `foo,bar`.
- `ssv` - 空格分隔值 `foo bar`.
- `tsv` - 制表符分隔值 `foo\tbar`.
- `pipes` - 管道符分隔值
foo|bar. - `multi` - 对应于多个参数实例,而不是单个实例 `foo=bar&foo=baz` 的多个值。这仅对“`query`”或“`formData`”中的参数有效。
默认值是 `csv`。 |
+| collectionFormat | `string` | 指定query数组参数的格式。 可能的值为: - `csv` - 逗号分隔值 `foo,bar`.
- `ssv` - 空格分隔值 `foo bar`.
- `tsv` - 制表符分隔值 `foo\tbar`.
- `pipes` - 管道符分隔值
foo|bar. - `multi` - 对应于多个参数实例,而不是单个实例 `foo=bar&foo=baz` 的多个值。这仅对“`query`”或“`formData`”中的参数有效。
默认值是 `csv`。 |
### 进一步的
@@ -714,15 +714,4 @@ type Resp struct {
// @scope.write Grants write access
// @scope.admin Grants read and write access to administrative information
```
-
-每个API操作。
-
-```go
-// @Security ApiKeyAuth
-```
-
-使用AND条件。
-
-```go
-// @Security ApiKeyAuth && OAuth2Application[write, admin]
-```
+
\ No newline at end of file
diff --git a/docs/server/数据库null值.md b/docs/server/数据库null值.md
index db080e0..3e22eec 100644
--- a/docs/server/数据库null值.md
+++ b/docs/server/数据库null值.md
@@ -1,51 +1,38 @@
-# 数据库null值
+## 数据库null值
-问题点:数据库在int,string等类型时,同时可能允许null值,但是go中int不允许null值,读取等操作可能报错。
+问题点:数据库在int,string等类型时,同时可能允许null值,但是go中int,string等类型不允许null值,数据类型不一致就会报错。
-注:数据库应尽量避免允许null值,避免不了时使用:https://github.com/guregu/null
-
-相关解读:https://blog.csdn.net/qq_15437667/article/details/78780945
-
-第三方库:https://pkg.go.dev/database/sql#NullInt64
-```go
-// 示例
-type NullInt64 struct {
- Int64 int64
- Valid bool // Valid is true if Int64 is not NULL
-}
-func (n *NullInt64) Scan(value any) error
-func (n NullInt64) Value() (driver.Value, error)
+## 解决方法,自定义结构体实现以下接口
+用于Gorm等数据库插件的扫描和写入数据库。
+```
+func (i *NullString) Scan(value any) error
+func (i NullString) Value() (driver.Value, error)
+```
+可以实现JSON序列化和反序列化。
+```
+func (i NullString) MarshalJSON() ([]byte, error)
+func (i *NullString) UnmarshalJSON(data []byte) error
+```
+用于gin框架的地址栏param参数绑定接口
+```
+func (i *NullString) UnmarshalParam(param string) error
+```
+用于fmt等格式化输出(可选)
+```
+func (i NullString) String() string
```
-第三方库(继承database/sql并补充json等):https://github.com/guregu/null
-```go
-// 示例
-type Int struct {
- sql.NullInt64
-}
-func (i *Int) UnmarshalJSON(data []byte) error {
- err := internal.UnmarshalIntJSON(data, &i.Int64, &i.Valid, 64, strconv.ParseInt)
- if err != nil {
- return err
- }
- i.Valid = i.Int64 != 0
- return nil
-}
-func (i Int) MarshalJSON() ([]byte, error) {
- n := i.Int64
- if !i.Valid {
- n = 0
- }
- return []byte(strconv.FormatInt(n, 10)), nil
-}
-```
-
-### 自带了三个可为null类型:
-1. 相对于guregu/null的优点
-2. NullFloat、NullInt:支持前端传递null、字符串数字、数字
+### 扩展了四个可为null类型:
+1. NullFloat、NullInt:支持前端传递null、字符串数字、数字
```go
core.NullFloat
core.NullInt
+core.NullString
core.NullTime
-```
\ No newline at end of file
+```
+
+### 参考:
+1. https://blog.csdn.net/qq_15437667/article/details/78780945
+2. https://pkg.go.dev/database/sql#NullInt64
+3. https://github.com/guregu/null
\ No newline at end of file
diff --git a/docs/server/权限验证.md b/docs/server/权限验证.md
index 8a896fc..9db9906 100644
--- a/docs/server/权限验证.md
+++ b/docs/server/权限验证.md
@@ -1,9 +1,12 @@
# 权限验证
+路由添加`LoginAuth`中间件,可实现登录验证,
-路由添加`TokenAuth`中间件,可实现登录验证,
+路由添加`TokenAuth`中间件,可实现登录、菜单授权验证, `权限标识`由`接口路径`确定,例如:`/api/admin/user`,标识位为`admin:user`
+```go
+// 表示该路由下的所有接口都需要登录
+r := rg.Group("/", middleware.LoginAuth())
-接口路径就是权限标识,例如:`/api/admin/user`,标识位为`admin:user`
-```
+// 表示该路由下的所有接口都需要登录、菜单授权
r := rg.Group("/", middleware.TokenAuth())
```
diff --git a/docs/server/环境变量.md b/docs/server/环境变量.md
index 9d979e9..b1334d7 100644
--- a/docs/server/环境变量.md
+++ b/docs/server/环境变量.md
@@ -1,6 +1,6 @@
# 环境变量.env
-文件`/server/config/config.go`读取.env文件然后合并
+文件`/server/config/init.go`读取.env文件然后合并
-有`mapstructure`tag的,名称以`mapstructure`为准
+有`mapstructure`tag的,名称以`mapstructure`为准,尽量以大驼峰命名
-<<< @/../server/config/config.go#envConfig
\ No newline at end of file
+<<< @/../server/config/init.go#envConfig
\ No newline at end of file
diff --git a/docs/server/结构说明.md b/docs/server/结构说明.md
index 2373439..9225957 100644
--- a/docs/server/结构说明.md
+++ b/docs/server/结构说明.md
@@ -16,6 +16,7 @@ static目录:映射为`api/static/*`,通过`go:embed`嵌入到了二进制
│ │ ├──────controller //控制器
│ │ ├──────service // 服务
│ │ ├──────schema // 结构体
+│ │ ├──────cron // 定时任务
│ ├── config // 配置
│ ├── core // core
│ ├── middleware // 中间件
diff --git a/docs/server/部署Go.md b/docs/server/部署Go.md
index 7498f5c..8c444a2 100644
--- a/docs/server/部署Go.md
+++ b/docs/server/部署Go.md
@@ -1,9 +1,9 @@
# 打包
## 方式一:直接打包
```bash
-# linux
+# 在linux打包
go build -o x_admin .
-# window
+# 在window打包
go build -o x_admin.exe .
```
@@ -15,20 +15,25 @@ go install github.com/goreleaser/goreleaser@latest
goreleaser release --snapshot --clean
```
-
+## 方式三:运行pack.bat文件打包
+```
+在window运行pack.bat文件, 可以夸平台打包,压缩打包后产物;请按需取消注释
+```
# 部署
## 上传所有需要的文件
- 打包后的二进制文件.exe
-- resources/*
+- public/*
- .env
## 管理进程
-我是前端er,所以我推荐使用pm2管理进程
-https://pm2.io/
+1. 推荐使用pm2管理进程,因为我是前端
+
```bash
+# https://pm2.io/
+
# 需要node环境
npm install pm2 -g
# 之前有一种不依赖node直接安装,好像不能用了,没找见
diff --git a/server/.env.example b/server/.env.example
index dfe1ab7..97d7e02 100644
--- a/server/.env.example
+++ b/server/.env.example
@@ -1,7 +1,7 @@
# 属性大驼峰命名,不使用全大写
# 具体配置项参考:config\config.go的config结构体
-# APP.GIN_MODE='debug'
+# APP.GinMode='debug'
# 项目端口
APP.Port=8001
diff --git a/server/.gitignore b/server/.gitignore
index f6c68a6..0c93270 100644
--- a/server/.gitignore
+++ b/server/.gitignore
@@ -1,6 +1,7 @@
### Go ###
# Binaries for programs and plugins
*.exe
+!upx.exe
*.exe~
*.dll
*.so
diff --git a/server/pack.bat b/server/pack.bat
index fd5848b..06ff328 100644
--- a/server/pack.bat
+++ b/server/pack.bat
@@ -13,9 +13,9 @@ xcopy ".env" ".\dist\bin\windows\" /Y /I
@REM # 1 目标平台的体系架构(386、amd64、arm)
set GOARCH=amd64
@REM #2 目标平台的操作系统(darwin、freebsd、linux、windows)
-@REM set GOOS=linux
-@REM go build -ldflags "-s -w" -o ./dist/bin/linux/x-admin
-@REM .\upx.exe ./dist/bin/linux/x-admin
+set GOOS=linux
+go build -ldflags "-s -w" -o ./dist/bin/linux/x-admin
+.\upx.exe ./dist/bin/linux/x-admin
@REM 打包window
set GOOS=windows
diff --git a/server/upx.exe b/server/upx.exe
new file mode 100644
index 0000000000000000000000000000000000000000..7f89f50a400825411e44cfa1e2972ccec4a0502e
GIT binary patch
literal 406528
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