Compare commits

...
159 Commits
Author SHA1 Message Date
lwnmengjing 265cc9350d Merge pull request #374 from go-admin-team/dev
优化生成的swagger
2021-03-24 22:49:33 +08:00
linwenxiang 4182bac3a2 修改模版,优化生成的swagger 2021-03-24 22:20:23 +08:00
linwenxiang 12893fc09d 修复swagger无法生成文档 2021-03-24 18:52:59 +08:00
linwenxiang 6fb7da87a3 优化logger设置获取流程 2021-03-24 16:49:04 +08:00
wenjianzhang 0ecf56cd8c docs📝 :更新 2021-03-17 19:21:28 +08:00
wenjianzhang 0c802ad366 feat✨ :菜单配置迁移脚本功能 2021-03-17 19:15:49 +08:00
wenjianzhang 0be7735855 publish🚀 v1.3.0 2021-03-17 16:42:47 +08:00
wenjianzhang 9c73558382 feat✨ :更新 2021-03-17 16:29:45 +08:00
wenjianzhang 4e370665dd feat✨ :去除系统配置表数据的sql 2021-03-17 16:26:28 +08:00
wenjianzhang 0194561056 Merge branch 'dev' of https://github.com/go-admin-team/go-admin into dev 2021-03-17 14:30:20 +08:00
wenjianzhang 5b69883a9f fix🐛 :系统配置初始化sql 2021-03-17 14:30:16 +08:00
linwenxiang b1789e5785 优化api返回方法 2021-03-17 12:43:52 +08:00
wenjianzhang 5756286641 fix🐛 :去掉迁移脚本中的数据库名称 2021-03-17 11:23:17 +08:00
wenjianzhang 6746dbd9cf feat✨ :参数配置中添加是否前台控制 2021-03-17 11:16:53 +08:00
wenjianzhang 2134d9fa58 fix🐛 :修复日志状态显示问题 2021-03-17 11:16:02 +08:00
wenjianzhang a8c00c5be1 fix🐛 :修复请求日志数据获取为空问题 2021-03-17 11:15:35 +08:00
wenjianzhang 51bc4423f7 feat✨ :系统配置统一使用参数设置功能
注意:系统配置表将设置为过时功能
2021-03-17 10:18:47 +08:00
linwenxiang 55a85babf8 升级go-admin-core依赖 2021-03-16 17:21:17 +08:00
linwenxiang c9f705e4f5 Merge remote-tracking branch 'origin/dev' into dev 2021-03-12 16:03:12 +08:00
linwenxiang 9bf9330410 api层写法统一 2021-03-12 16:02:29 +08:00
wenjianzhang f53ee3008a Update index.go 2021-03-12 12:14:54 +08:00
wenjianzhang 31ec3880da fix🐛 :修改接口默认页面地址 2021-03-12 12:14:15 +08:00
lwnmengjing ed492d5411 Merge pull request #372 from go-admin-team/dev
修复日志插件报错问题
2021-03-11 23:58:14 +08:00
linwenxiang fa30b8db95 修复日志插件报错问题 2021-03-11 23:36:56 +08:00
linwenxiang 8a471e1db7 修复模版不兼容actions模式生成
迁移重复问题
2021-03-11 22:19:12 +08:00
linwenxiang dbf4b36687 修复requestId不一致问题 2021-03-11 21:06:14 +08:00
wenjianzhang 263355de1e Merge pull request #371 from go-admin-team/dev
1.3.0rc.0
2021-03-11 16:43:29 +08:00
wenjianzhang 3a570e50a1 合并 2021-03-11 15:48:00 +08:00
wenjianzhang e0767255f4 Merge branch 'dev' of https://github.com/go-admin-team/go-admin into dev 2021-03-11 15:47:51 +08:00
wenjianzhang 75b529d7b0 ormat🥚 :优化生成模版 2021-03-11 14:56:15 +08:00
wenjianzhang a43413d1ff ormat🥚 :优化代码 2021-03-11 14:54:34 +08:00
lwnmengjing 7599a22470 Merge pull request #370 from go-admin-team/dev
gorm日志支持显示requestId
2021-03-11 13:43:25 +08:00
linwenxiang b79747e551 gorm日志支持显示requestId 2021-03-11 13:39:43 +08:00
lwnmengjing 4666025819 Merge pull request #369 from go-admin-team/dev
修复sql问题
2021-03-10 22:25:24 +08:00
linwenxiang 5353527e6c 更新gitignore 2021-03-10 22:21:44 +08:00
linwenxiang 2bfd8c51b1 修复sql问题
修改gorm log
2021-03-10 22:19:10 +08:00
lwnmengjing 95b3b97597 Merge pull request #368 from go-admin-team/dev
Dev
2021-03-10 15:39:00 +08:00
linwenxiang 31b36bc413 修复部门名称不显示问题
close #367
2021-03-10 15:33:51 +08:00
linwenxiang db7abdda33 更新sdk依赖 2021-03-10 11:35:19 +08:00
linwenxiang 25d8364bf4 修改,兼容go-admin sdk方案 2021-03-09 19:12:49 +08:00
lwnmengjing c541d09076 升级版本号 2021-03-08 22:53:02 +08:00
linwenxiang c2ceaec3ea Merge branch 'dev' 2021-03-08 22:34:36 +08:00
linwenxiang 3e26bf136d 修复初始化数据问题 2021-03-08 20:31:33 +08:00
linwenxiang 21a81a534c 部分bug修复 2021-03-07 15:37:14 +08:00
wenjianzhang 00b46b79df Delete .DS_Store 2021-03-07 10:34:32 +08:00
linwenxiang 9c7099db1f 修复初始化数据时问题 2021-03-05 19:01:05 +08:00
linwenxiang 86700cfd52 修复初始化数据时问题 2021-03-05 17:03:56 +08:00
linwenxiang a1b74e3f6a Merge remote-tracking branch 'origin/dev' into dev 2021-03-05 15:13:59 +08:00
linwenxiang 75711922b4 调整log代码,兼容zap扩展支持fields 2021-03-05 15:13:36 +08:00
lwnmengjing f02c178473 Delete .DS_Store
删除无用文件
2021-03-05 13:49:53 +08:00
linwenxiang 39dd1ee6f8 兼容casbin2.24.0版本log
迁移脚本编译时不打包
2021-03-05 13:23:21 +08:00
linwenxiang 48f0cb46ec 修复新代码报错 2021-03-05 00:06:21 +08:00
linwenxiang 1105d98f27 修改新代码兼容 2021-03-04 23:52:00 +08:00
linwenxiang c294bb1585 Merge remote-tracking branch 'origin/dev' into dev
# Conflicts:
#	template/v4/dto.go.template
2021-03-04 23:47:14 +08:00
linwenxiang e2952fa393 调整整体架构写法
调整db用法
调整日志用法
调整模版
2021-03-04 23:45:16 +08:00
zhangwenjian 12be09b4d5 feat✨ :工作流分类 2021-02-26 16:15:35 +08:00
wenjianzhang d8ebaf540b feat✨ :文件名称调整 2021-02-26 01:25:36 +08:00
wenjianzhang b8ec705e0a feat✨ :添加行政区域基础数据 2021-02-26 01:05:20 +08:00
zhangwenjian 19e96a01de feat✨ :模版优化 2021-02-25 23:40:55 +08:00
linwenxiang 734a48dbb8 兼容代码生成 2021-02-25 14:24:09 +08:00
linwenxiang 78671ae99e 升级核心依赖库 2021-02-25 11:28:37 +08:00
linwenxiang 7e7065a579 升级流水线编译go版本 2021-02-25 10:39:17 +08:00
linwenxiang 5ff282c23d feat✨ :添加资源管理中的需要开放的必开接口 2021-02-25 01:32:06 +08:00
zhangwenjian 117392bfe8 format🥚 :优化文件名 2021-02-24 14:23:13 +08:00
zhangwenjian f22f654c91 format🥚 :调整主键key和自增长tag 2021-02-24 14:22:33 +08:00
zhangwenjian 561566f172 fix🐛 :修改内容分页地址 2021-02-23 17:50:53 +08:00
zhangwenjian c3bb36c969 fix🐛 :部门path创建初始化 2021-02-23 17:44:20 +08:00
linwenxiang da347e095f 权限相关问题修复 2021-02-22 22:00:34 +08:00
zhangwenjian e9617ec677 fix🐛 :格式化内容和job的文件名 2021-02-22 16:18:24 +08:00
zhangwenjian 017d669a04 fix🐛 :修复通过字典类型获取字段数据的路有变更 2021-02-22 15:44:04 +08:00
zhangwenjian e184ad84cd docs📝 :更新readme 2021-02-22 14:54:54 +08:00
linwenxiang deeb82048b 数据库连接初始化优化
权限部分修改
2021-02-21 14:06:13 +08:00
linwenxiang 4979fd659f 完成字典模块改造 2021-02-20 11:06:59 +08:00
linwenxiang e04b5559bd 前后端一致修复 2021-02-19 16:50:57 +08:00
zhangwenjian a4f8b11925 Merge branch 'dev' of https://github.com/go-admin-team/go-admin into go-admin-team-dev 2021-02-19 10:48:33 +08:00
zhangwenjian 9186c6ce04 fix:优化代码 2021-02-19 10:48:27 +08:00
linwenxiang a24c31c6b9 修复菜单列表、角色列表接口报错问题 2021-02-19 10:01:45 +08:00
linwenxiang 981e992f28 不全多删除的部分 2021-02-05 10:30:48 +08:00
linwenxiang 7ce090af38 删除多余打印 2021-02-05 10:24:11 +08:00
linwenxiang f67e653abe 整理requestId入口,兼容istio的header返回 2021-01-29 14:53:52 +08:00
linwenxiang 128739f097 优化response结构
优化日志writer
2021-01-20 00:31:52 +08:00
wenjianzhang 792c8874aa perf👌 : 岗位、角色功能改造 2021-01-16 21:46:57 +08:00
zhangwenjian ad42b6489a Merge branch 'dev' of https://github.com/go-admin-team/go-admin into go-admin-team-dev 2021-01-16 15:05:16 +08:00
zhangwenjian 8a3659d949 perf👌 : 部门和菜单功能改造 2021-01-16 15:05:12 +08:00
wenjianzhang a10bacc1f5 Merge branch 'dev' of https://github.com/go-admin-team/go-admin into dev 2021-01-14 22:41:57 +08:00
wenjianzhang 677e54631a perf👌 : 模版升级 2021-01-14 22:41:49 +08:00
zhangwenjian c0f6fb6b41 feat✨ : 添加请求无权限log 2021-01-14 16:03:13 +08:00
zhangwenjian 24ab2d9cbe Merge branch 'dev' of https://github.com/go-admin-team/go-admin into go-admin-team-dev 2021-01-12 13:22:08 +08:00
zhangwenjian f768d69def feat✨ : 没有权限的接口使用log输出 2021-01-12 13:22:03 +08:00
zhangwenjian 305326d9ea feat✨ : 登陆日志数据的调整 2021-01-12 13:21:38 +08:00
zhangwenjian 249567d61d feat✨ : 初始化数据的调整 2021-01-12 13:21:07 +08:00
wenjianzhang 390f4ddfdd Merge branch 'dev' of https://github.com/go-admin-team/go-admin into dev 2021-01-11 21:39:02 +08:00
wenjianzhang 72d92b5232 Update 1606582844753_migrate.go 2021-01-11 21:38:55 +08:00
zhangwenjian 82a09c4abd perf👌 : 系统配置功能优化 2021-01-11 21:31:03 +08:00
zhangwenjian a7dafceb5b perf👌 : 系统配置功能优化 2021-01-11 21:29:57 +08:00
zhangwenjian 98d30f64f6 perf👌 : logger 添加传入传出项 2021-01-11 16:27:36 +08:00
zhangwenjian abe9c42aff perf👌 : 登陆日志和操作日志功能优化 2021-01-11 16:27:07 +08:00
zhangwenjian 0db58170ee perf👌 : 配置文件功能代码优化 2021-01-11 16:26:12 +08:00
zhangwenjian e1f15bcff1 添加返回log输出 2021-01-11 09:34:53 +08:00
linwenxiang 17032f29a0 支持drone流水线,发布到k8s 2020-12-23 20:27:18 +08:00
zhangwenjian 0db2e8ef13 Merge branch 'dev' of https://github.com/go-admin-team/go-admin into go-admin-team-dev 2020-12-21 23:01:37 +08:00
zhangwenjian 2c3dda58b4 Update .gitignore 2020-12-21 22:28:40 +08:00
zhangwenjian eaa135e2ad refactor🎨 : 修正模版 2020-12-21 22:04:46 +08:00
zhangwenjian 46ea5f18aa refactor🎨 : uint 调整为 int 2020-12-21 22:04:20 +08:00
zhangwenjian ab7c34f817 refactor🎨 : 管理员id 类型修改 2020-12-21 22:03:12 +08:00
zhangwenjian 746123c888 refactor🎨 : 修改文件操作函数 2020-12-21 22:02:40 +08:00
zhangwenjian 37a2c585e1 refactor🎨 : 删除过时的文件管理函数 2020-12-21 22:01:03 +08:00
zhangwenjian d5a94b8dc0 fix🐛 :系统配置编辑无效(#293) 2020-12-21 16:45:53 +08:00
linwenxiang da96902ca4 修改日志输出模式:
单文件,在内容中区分,方便对接各种日志系统
2020-12-20 19:45:04 +08:00
linwenxiang d9347de392 修改工具库目录
更新gorm到最新版
2020-12-10 17:55:33 +08:00
linwenxiang 9731b7baaf 整合三方依赖 2020-12-10 10:45:14 +08:00
linwenxiang 0c170fe1c6 config setup配置提到外面 2020-12-10 10:24:06 +08:00
linwenxiang 5f873914e0 config重构 2020-12-08 20:28:26 +08:00
linwenxiang 0810383afc Merge branch 'dev' of github.com:go-admin-team/go-admin into dev 2020-12-02 21:12:18 +08:00
linwenxiang 2790abf1ad 修复cache包问题 2020-12-02 21:11:53 +08:00
wenjianzhang ddb3a45e1a fix:🐛 修复字典状态的过滤问题(#251) 2020-11-29 01:37:32 +08:00
wenjianzhang 83529dd6f5 fix:🐛 修复部门创建时间显示问题和状态显示问题(#225) 2020-11-29 01:05:43 +08:00
wenjianzhang b9e9d7178b fix:🐛 重新生成文档,并修复之前引用结构体错误问题 2020-11-29 00:27:52 +08:00
wenjianzhang ab547cc49b refactor:🎨 资源管理模块代码升级,移除旧代码 2020-11-29 00:26:17 +08:00
wenjianzhang 6b0b1bb836 fix:🐛 修复用户停用状态还能登陆问题(#287) 2020-11-29 00:19:11 +08:00
wenjianzhang 9d6e3598c0 Merge pull request #309 from go-admin-team/dev
feat✨ 增加条件编译,修复windows下gcc依赖问题
2020-11-25 23:51:50 +08:00
linwenxiang 93c5511b55 增加条件编译,修复windows下gcc依赖问题 2020-11-24 13:16:19 +08:00
wenjianzhang 3e7b3f5176 Merge pull request #307 from go-admin-team/dev
fix🐛 : 日志目录bug
2020-11-22 02:53:17 +08:00
wenjianzhang a958c879a1 feat✨ 注释Sort字段 2020-11-22 02:51:15 +08:00
wenjianzhang a06da857f3 fix🐛 资源管理去掉排序字段 2020-11-14 22:12:15 +08:00
wenjianzhang 5714ffde7b fix🐛 修复非管理员角色无法配置权限问题(#292) 2020-11-14 01:02:02 +08:00
wenjianzhang f1e521522a perf👌 优化资源选择组件目录结构问题 2020-11-14 00:16:50 +08:00
zhangwenjian 52be3f6153 feat✨ oss 文件上传 2020-11-12 20:18:53 +08:00
linwenxiang 2399824d35 fixme: 优化初次启动日志文件创建 2020-11-04 11:26:41 +08:00
zhangwenjian 17b850d0a8 Update go.sum 2020-11-03 15:13:54 +08:00
zhangwenjian 78db91785c Merge branch 'dev' of https://github.com/go-admin-team/go-admin into go-admin-team-dev 2020-11-03 15:13:18 +08:00
zhangwenjian 411b9d3380 config 🔧 修改go.mod版本信息 2020-11-03 15:07:20 +08:00
linwenxiang 7382a44162 go-admin-core依赖1.2.2版本 2020-11-03 11:35:14 +08:00
wenjianzhang 07cb061ea5 publish 🚀 1.2.2版本发布
1. admin 角色权限调整默认全部权限
1. 优化内容分类管理
1. 系统登录日志和操作日志代码优化
1. 性能指标、健康检查、default log配置生效
1. 日志全部改为go-admin-core库日志,去除对其他项目的依赖
1. 去除pkg/auth对tools依赖,减少循环引用可能性
1. 增加链路追踪,熟悉的朋友可以将go-admin作为微服务的网关使用😄
1. 代码优化
1. 部分已知bug修复
2020-11-03 10:58:29 +08:00
linwenxiang 5078403569 支持多链路 2020-10-30 17:16:47 +08:00
linwenxiang 5e3e16025c 去除pkg/auth对tools依赖,减少循环引用可能性 2020-10-30 15:40:51 +08:00
linwenxiang 4b5b0507e9 增加链路追踪,熟悉的朋友可以将go-admin作为微服务的网关使用😄 2020-10-30 14:52:49 +08:00
linwenxiang ccd76445f2 日志全部改为go-admin-core库日志,去除对其他项目的依赖 2020-10-29 19:22:23 +08:00
linwenxiang 706c72b973 增加注释 2020-10-29 14:48:25 +08:00
zhangwenjian 22fb2b5d0b fix🐛 : 修复log获取不到db 2020-10-28 17:13:16 +08:00
zhangwenjian 16775cee45 refactor🎨 : 修改日志相关功能,针对代码进行优化 2020-10-27 13:13:44 +08:00
zhangwenjian 2195c89099 Merge branch 'dev' of https://github.com/go-admin-team/go-admin into go-admin-team-dev 2020-10-27 11:39:49 +08:00
zhangwenjian 199fc180b7 refactor🎨 : 系统登录日志和操作日志代码优化 2020-10-27 11:38:49 +08:00
zhangwenjian 55112db749 refactor🎨 : 针对数据库名称部分添加符号包括 (#281) 2020-10-27 11:23:56 +08:00
linwenxiang da4637d285 logger模块移入go-admin-core仓库,修改log用法暂时折中
fixme:后期要尽快改成统一的log处理方式
2020-10-26 22:37:44 +08:00
linwenxiang a68e58f93b 删除无用目录,修改无用代码 2020-10-26 15:49:14 +08:00
zhangwenjian c814439f93 feat✨ admin角色编辑权限改为默认 2020-10-24 13:14:57 +08:00
wenjianzhang cc34268791 Merge pull request #271 from kikiyou/dev
v1.2.1支持sqlite3
2020-10-23 23:53:05 +08:00
zhangwenjian b94acb62ca Merge branch 'dev' of https://github.com/go-admin-team/go-admin into go-admin-team-dev 2020-10-23 23:35:43 +08:00
zhangwenjian c851e82762 docs:文档更新 2020-10-23 23:34:32 +08:00
zhangwenjian 870b144557 feat : admin 角色权限调整默认全部权限 2020-10-23 23:33:57 +08:00
zhangwenjian ac5b10e6c0 refactor: 优化内容分类管理 2020-10-23 23:32:44 +08:00
linwenxiang e1965be2ab 性能指标、健康检查、default log配置生效 2020-10-21 18:03:39 +08:00
wenjianzhang b931925f75 fix:初始化兼容问题 (#274)
fix:初始化兼容问题 (#274)
2020-10-21 15:52:32 +08:00
zhangwenjian e53cc4a9b5 version upgrade 2020-10-21 15:44:39 +08:00
zhangwenjian b40d376e25 Merge branch 'dev' of https://github.com/go-admin-team/go-admin into go-admin-team-dev 2020-10-21 14:13:17 +08:00
linwenxiang 52f42616a2 近期bug修复,迁移go-admin-core库, Fixed #272 Fixed #261 2020-10-21 10:09:47 +08:00
kikiyou 01c519e894 v1.2.1支持sqlite3 2020-10-19 18:10:35 +08:00
zhangwenjian 93feb4779e 修改验证码为4位数字 2020-10-17 18:54:40 +08:00
300 changed files with 15019 additions and 16315 deletions
+2 -2
View File
@@ -13,10 +13,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.13
- name: Set up Go 1.14
uses: actions/setup-go@v1
with:
go-version: 1.13
go-version: 1.14
id: go
- name: Check out code into the Go module directory
+7 -1
View File
@@ -1,5 +1,6 @@
.idea
.vscode
*/.DS_Store
static/uploadfile
main.exe
go-admin
@@ -14,4 +15,9 @@ config/settings.dev.*.yml.log
temp/logs
config/settings.dev.yml.log
config/settings.b.dev.yml
cmd/migrate/migration/version_local/*
cmd/migrate/migration/version-local/*
!cmd/migrate/migration/version-local/doc.go
*/.DS_Store
# go sum
go.sum
+2 -5
View File
@@ -1,7 +1,6 @@
FROM golang:alpine as builder
MAINTAINER xxx
MAINTAINER lwnmengjing
ENV GOPROXY https://goproxy.cn/
@@ -9,7 +8,7 @@ WORKDIR /go/release
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk update && apk add tzdata
COPY ./go.mod ./go.mod
COPY go.mod ./go.mod
RUN go mod download
COPY . .
RUN pwd && ls
@@ -19,11 +18,9 @@ RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -a -installsuffix cgo -o
FROM alpine
COPY --from=builder /go/release/go-admin /
COPY --from=builder /go/release/config/ /config/
COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
EXPOSE 8000
CMD ["/go-admin","server","-c", "/config/settings.yml"]
+30 -13
View File
@@ -213,7 +213,7 @@ npm run dev
## 🎬 在线体验
> admin / 123456
演示地址:[http://www.zhangwj.com](http://www.zhangwj.com/#/login)
演示地址:[http://www.go-admin.dev](http://www.go-admin.dev/#/login)
## 📨 互动
@@ -230,18 +230,33 @@ npm run dev
<td><a target="_blank" href="https://shang.qq.com/wpa/qunwpa?idkey=0f2bf59f5f2edec6a4550c364242c0641f870aa328e468c4ee4b7dbfb392627b"><img border="0" src="https://pub.idqqimg.com/wpa/images/group.png" alt="go-admin技术交流乙号" title="go-admin技术交流乙号"></a></td>
</tr>
</table>
## 💎 主要成员
<a href="https://github.com/wenjianzhang"> <img src="https://avatars.githubusercontent.com/u/3890175?s=460&u=20eac63daef81588fbac611da676b99859319251&v=4" width="80px"></a>
<a href="https://github.com/lwnmengjing"> <img src="https://avatars.githubusercontent.com/u/12806223?s=400&u=a89272dce50100b77b4c0d5c81c718bf78ebb580&v=4" width="80px"></a>
<a href="https://github.com/chengxiao"> <img src="https://avatars.githubusercontent.com/u/1379545?s=460&u=557da5503d0ac4a8628df6b4075b17853d5edcd9&v=4" width="80px"></a>
<a href="https://github.com/bing127"> <img src="https://avatars.githubusercontent.com/u/31166183?s=460&u=c085bff88df10bb7676c8c0351ba9dcd031d1fb3&v=4" width="80px"></a>
## JetBrains 开源证书支持
`go-admin` 项目一直以来都是在 JetBrains 公司旗下的 GoLand 集成开发环境中进行开发,基于 **free JetBrains Open Source license(s)** 正版免费授权,在此表达我的谢意。
<a href="https://www.jetbrains.com/?from=kubeadm-ha" target="_blank"><img src="https://raw.githubusercontent.com/panjf2000/illustrations/master/jetbrains/jetbrains-variant-4.png" width="250" align="middle"/></a>
## 🤝 特别感谢
[chengxiao](https://github.com/chengxiao)
[gin](https://github.com/gin-gonic/gin)
[casbin](https://github.com/casbin/casbin)
[spf13/viper](https://github.com/spf13/viper)
[gorm](https://github.com/jinzhu/gorm)
[gin-swagger](https://github.com/swaggo/gin-swagger)
[jwt-go](https://github.com/dgrijalva/jwt-go)
[vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)
[ruoyi-vue](https://gitee.com/y_project/RuoYi-Vue)
1. [chengxiao](https://github.com/chengxiao)
2. [gin](https://github.com/gin-gonic/gin)
2. [casbin](https://github.com/casbin/casbin)
2. [spf13/viper](https://github.com/spf13/viper)
2. [gorm](https://github.com/jinzhu/gorm)
2. [gin-swagger](https://github.com/swaggo/gin-swagger)
2. [jwt-go](https://github.com/dgrijalva/jwt-go)
2. [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)
2. [ruoyi-vue](https://gitee.com/y_project/RuoYi-Vue)
## 🤟 打赏
@@ -256,9 +271,11 @@ npm run dev
zhuqiyun LLL狐 星星之火 cjj770 Sam 唐*i 晓聪 aLong *渊 海马 魏镇坪 + 111 *哥 我的宇哥哥 *声 *节
## 🤝 链接
[Go开发者成长线路图](http://www.golangroadmap.com/)
## 🔑 License
[MIT](https://github.com/go-admin-team/go-admin/blob/master/LICENSE.md)
Copyright (c) 2020 wenjianzhang
Copyright (c) 2020 wenjianzhang
-134
View File
@@ -1,134 +0,0 @@
package log
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"go-admin/app/admin/models"
"go-admin/tools"
"go-admin/tools/app"
)
// @Summary 登录日志列表
// @Description 获取JSON
// @Tags 登录日志
// @Param status query string false "status"
// @Param dictCode query string false "dictCode"
// @Param dictType query string false "dictType"
// @Param pageSize query int false "页条数"
// @Param pageIndex query int false "页码"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/loginloglist [get]
// @Security Bearer
func GetLoginLogList(c *gin.Context) {
var data models.LoginLog
var err error
var pageSize = 10
var pageIndex = 1
size := c.Request.FormValue("pageSize")
if size != "" {
pageSize, err = tools.StringToInt(size)
}
index := c.Request.FormValue("pageIndex")
if index != "" {
pageIndex, err = tools.StringToInt(index)
}
data.Username = c.Request.FormValue("username")
data.Status = c.Request.FormValue("status")
data.Ipaddr = c.Request.FormValue("ipaddr")
result, count, err := data.GetPage(pageSize, pageIndex)
tools.HasError(err, "", -1)
var mp = make(map[string]interface{}, 3)
mp["list"] = result
mp["count"] = count
mp["pageIndex"] = pageIndex
mp["pageSize"] = pageSize
var res app.Response
res.Data = mp
c.JSON(http.StatusOK, res.ReturnOK())
}
// @Summary 通过编码获取登录日志
// @Description 获取JSON
// @Tags 登录日志
// @Param infoId path int true "infoId"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/loginlog/{infoId} [get]
// @Security Bearer
func GetLoginLog(c *gin.Context) {
var LoginLog models.LoginLog
LoginLog.InfoId, _ = tools.StringToInt(c.Param("infoId"))
result, err := LoginLog.Get()
tools.HasError(err, "抱歉未找到相关信息", -1)
var res app.Response
res.Data = result
c.JSON(http.StatusOK, res.ReturnOK())
}
// @Summary 添加登录日志
// @Description 获取JSON
// @Tags 登录日志
// @Accept application/json
// @Product application/json
// @Param data body models.LoginLog true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/loginlog [post]
// @Security Bearer
func InsertLoginLog(c *gin.Context) {
var data models.LoginLog
err := c.BindWith(&data, binding.JSON)
tools.HasError(err, "", 500)
result, err := data.Create()
tools.HasError(err, "", -1)
var res app.Response
res.Data = result
c.JSON(http.StatusOK, res.ReturnOK())
}
// @Summary 修改登录日志
// @Description 获取JSON
// @Tags 登录日志
// @Accept application/json
// @Product application/json
// @Param data body models.LoginLog true "body"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/loginlog [put]
// @Security Bearer
func UpdateLoginLog(c *gin.Context) {
var data models.LoginLog
err := c.BindWith(&data, binding.JSON)
tools.HasError(err, "", -1)
result, err := data.Update(data.InfoId)
tools.HasError(err, "", -1)
var res app.Response
res.Data = result
c.JSON(http.StatusOK, res.ReturnOK())
}
// @Summary 批量删除登录日志
// @Description 删除数据
// @Tags 登录日志
// @Param infoId path string true "以逗号(,)分割的infoId"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/loginlog/{infoId} [delete]
func DeleteLoginLog(c *gin.Context) {
var data models.LoginLog
data.UpdateBy = tools.GetUserIdStr(c)
IDS := tools.IdsStrToIdsIntGroup("infoId", c)
_, err := data.BatchDelete(IDS)
tools.HasError(err, "修改失败", 500)
var res app.Response
res.Msg = "删除成功"
c.JSON(http.StatusOK, res.ReturnOK())
}
-113
View File
@@ -1,113 +0,0 @@
package log
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"go-admin/app/admin/models"
"go-admin/tools"
"go-admin/tools/app"
)
// @Summary 登录日志列表
// @Description 获取JSON
// @Tags 登录日志
// @Param status query string false "status"
// @Param dictCode query string false "dictCode"
// @Param dictType query string false "dictType"
// @Param pageSize query int false "页条数"
// @Param pageIndex query int false "页码"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/operloglist [get]
// @Security Bearer
func GetOperLogList(c *gin.Context) {
var data models.SysOperLog
var err error
var pageSize = 10
var pageIndex = 1
size := c.Request.FormValue("pageSize")
if size != "" {
pageSize, err = tools.StringToInt(size)
}
index := c.Request.FormValue("pageIndex")
if index != "" {
pageIndex, err = tools.StringToInt(index)
}
data.OperName = c.Request.FormValue("operName")
data.Status = c.Request.FormValue("status")
data.OperIp = c.Request.FormValue("operIp")
result, count, err := data.GetPage(pageSize, pageIndex)
tools.HasError(err, "", -1)
var mp = make(map[string]interface{}, 3)
mp["list"] = result
mp["count"] = count
mp["pageIndex"] = pageIndex
mp["pageSize"] = pageSize
var res app.Response
res.Data = mp
c.JSON(http.StatusOK, res.ReturnOK())
}
// @Summary 通过编码获取登录日志
// @Description 获取JSON
// @Tags 登录日志
// @Param infoId path int true "infoId"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/operlog/{infoId} [get]
// @Security Bearer
func GetOperLog(c *gin.Context) {
var OperLog models.SysOperLog
OperLog.OperId, _ = tools.StringToInt(c.Param("operId"))
result, err := OperLog.Get()
tools.HasError(err, "抱歉未找到相关信息", -1)
var res app.Response
res.Data = result
c.JSON(http.StatusOK, res.ReturnOK())
}
// @Summary 添加操作日志
// @Description 获取JSON
// @Tags 操作日志
// @Accept application/json
// @Product application/json
// @Param data body models.SysOperLog true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/operlog [post]
// @Security Bearer
func InsertOperLog(c *gin.Context) {
var data models.SysOperLog
err := c.BindWith(&data, binding.JSON)
tools.HasError(err, "", 500)
result, err := data.Create()
tools.HasError(err, "", -1)
var res app.Response
res.Data = result
c.JSON(http.StatusOK, res.ReturnOK())
}
// @Summary 批量删除操作日志
// @Description 删除数据
// @Tags 操作日志
// @Param operId path string true "以逗号(,)分割的operId"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/operlog/{operId} [delete]
func DeleteOperLog(c *gin.Context) {
var data models.SysOperLog
data.UpdateBy = tools.GetUserIdStr(c)
IDS := tools.IdsStrToIdsIntGroup("operId", c)
_, err := data.BatchDelete(IDS)
tools.HasError(err, "删除失败", 500)
var res app.Response
res.Msg = "删除成功"
c.JSON(http.StatusOK, res.ReturnOK())
}
+13 -8
View File
@@ -4,12 +4,13 @@ import (
"runtime"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"github.com/shirou/gopsutil/cpu"
"github.com/shirou/gopsutil/disk"
"github.com/shirou/gopsutil/mem"
"go-admin/tools"
"go-admin/tools/app"
"go-admin/common/apis"
)
const (
@@ -19,12 +20,16 @@ const (
GB = 1024 * MB
)
type Monitor struct {
apis.Api
}
// @Summary 系统信息
// @Description 获取JSON
// @Tags 系统信息
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/settings/serverInfo [get]
func ServerInfo(c *gin.Context) {
func (e *Monitor) ServerInfo(c *gin.Context) {
osDic := make(map[string]interface{}, 0)
osDic["goOs"] = runtime.GOOS
@@ -33,8 +38,8 @@ func ServerInfo(c *gin.Context) {
osDic["compiler"] = runtime.Compiler
osDic["version"] = runtime.Version()
osDic["numGoroutine"] = runtime.NumGoroutine()
osDic["ip"] = tools.GetLocaHonst()
osDic["projectDir"] = tools.GetCurrentPath()
osDic["ip"] = pkg.GetLocaHonst()
osDic["projectDir"] = pkg.GetCurrentPath()
dis, _ := disk.Usage("/")
diskTotalGB := int(dis.Total) / GB
@@ -57,10 +62,10 @@ func ServerInfo(c *gin.Context) {
cpuDic := make(map[string]interface{}, 0)
cpuDic["cpuInfo"], _ = cpu.Info()
percent, _ := cpu.Percent(0, false)
cpuDic["Percent"] = tools.Round(percent[0], 2)
cpuDic["Percent"] = pkg.Round(percent[0], 2)
cpuDic["cpuNum"], _ = cpu.Counts(false)
app.Custum(c, gin.H{
e.Custom(c, gin.H{
"code": 200,
"os": osDic,
"mem": memDic,
+133 -56
View File
@@ -8,12 +8,12 @@ import (
"strings"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"github.com/go-admin-team/go-admin-core/sdk/pkg/utils"
"github.com/google/uuid"
imgType "github.com/shamsher31/goimgtype"
"go-admin/pkg/utils"
"go-admin/tools"
"go-admin/tools/app"
"go-admin/common/apis"
"go-admin/common/file_store"
)
type FileResponse struct {
@@ -24,6 +24,10 @@ type FileResponse struct {
Type string `json:"type"`
}
type File struct {
apis.Api
}
// @Summary 上传图片
// @Description 获取JSON
// @Tags 公共接口
@@ -33,72 +37,145 @@ type FileResponse struct {
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/public/uploadFile [post]
func UploadFile(c *gin.Context) {
func (e *File) UploadFile(c *gin.Context) {
tag, _ := c.GetPostForm("type")
urlPerfix := fmt.Sprintf("http://%s/", c.Request.Host)
var fileResponse FileResponse
if tag == "" {
app.Error(c, 200, errors.New(""), "缺少标识")
e.Error(c, 500, nil, "缺少标识")
//app.Error(c, 200, errors.New(""), "缺少标识")
return
} else {
switch tag {
case "1": // 单图
files, err := c.FormFile("file")
if err != nil {
app.Error(c, 200, errors.New(""), "图片不能为空")
var done bool
fileResponse, done = e.singleFile(c, fileResponse, urlPerfix)
if done {
return
}
// 上传文件至指定目录
guid := uuid.New().String()
singleFile := "static/uploadfile/" + guid + utils.GetExt(files.Filename)
_ = c.SaveUploadedFile(files, singleFile)
fileType, _ := imgType.Get(singleFile)
fileResponse = FileResponse{
Size: tools.GetFileSize(singleFile),
Path: singleFile,
FullPath: urlPerfix + singleFile,
Name: files.Filename,
Type: fileType,
}
app.OK(c, fileResponse, "上传成功")
e.OK(c, fileResponse, "上传成功")
return
case "2": // 多图
files := c.Request.MultipartForm.File["file"]
var multipartFile []FileResponse
for _, f := range files {
guid := uuid.New().String()
multipartFileName := "static/uploadfile/" + guid + utils.GetExt(f.Filename)
e := c.SaveUploadedFile(f, multipartFileName)
fileType, _ := imgType.Get(multipartFileName)
if e == nil {
multipartFile = append(multipartFile, FileResponse{
Size: tools.GetFileSize(multipartFileName),
Path: multipartFileName,
FullPath: urlPerfix + multipartFileName,
Name: f.Filename,
Type: fileType,
})
}
}
app.OK(c, multipartFile, "上传成功")
multipartFile := e.multipleFile(c, urlPerfix)
e.OK(c, multipartFile, "上传成功")
return
case "3": // base64
files, _ := c.GetPostForm("file")
file2list := strings.Split(files, ",")
ddd, _ := base64.StdEncoding.DecodeString(file2list[1])
guid := uuid.New().String()
base64File := "static/uploadfile/" + guid + ".jpg"
_ = ioutil.WriteFile(base64File, ddd, 0666)
typeStr := strings.Replace(strings.Replace(file2list[0], "data:", "", -1), ";base64", "", -1)
fileResponse = FileResponse{
Size: tools.GetFileSize(base64File),
Path: base64File,
FullPath: urlPerfix + base64File,
Name: "",
Type: typeStr,
}
app.OK(c, fileResponse, "上传成功")
fileResponse = e.baseImg(c, fileResponse, urlPerfix)
e.OK(c, fileResponse, "上传成功")
}
}
}
func (e *File) baseImg(c *gin.Context, fileResponse FileResponse, urlPerfix string) FileResponse {
files, _ := c.GetPostForm("file")
file2list := strings.Split(files, ",")
ddd, _ := base64.StdEncoding.DecodeString(file2list[1])
guid := uuid.New().String()
fileName := guid + ".jpg"
base64File := "static/uploadfile/" + fileName
_ = ioutil.WriteFile(base64File, ddd, 0666)
typeStr := strings.Replace(strings.Replace(file2list[0], "data:", "", -1), ";base64", "", -1)
fileResponse = FileResponse{
Size: pkg.GetFileSize(base64File),
Path: base64File,
FullPath: urlPerfix + base64File,
Name: "",
Type: typeStr,
}
source, _ := c.GetPostForm("source")
err := thirdUpload(source, fileName, base64File)
if err != nil {
e.Error(c, 200, errors.New(""), "上传第三方失败")
return fileResponse
}
if source != "1" {
fileResponse.Path = "https://youshikeji.oss-cn-shanghai.aliyuncs.com/img/" + fileName
fileResponse.FullPath = "https://youshikeji.oss-cn-shanghai.aliyuncs.com/img/" + fileName
}
return fileResponse
}
func (e *File) multipleFile(c *gin.Context, urlPerfix string) []FileResponse {
files := c.Request.MultipartForm.File["file"]
source, _ := c.GetPostForm("source")
var multipartFile []FileResponse
for _, f := range files {
guid := uuid.New().String()
fileName := guid + utils.GetExt(f.Filename)
multipartFileName := "static/uploadfile/" + fileName
err1 := c.SaveUploadedFile(f, multipartFileName)
fileType, _ := utils.GetType(multipartFileName)
if err1 == nil {
err := thirdUpload(source, fileName, multipartFileName)
if err != nil {
e.Error(c, 500, errors.New(""), "上传第三方失败")
} else {
fileResponse := FileResponse{
Size: pkg.GetFileSize(multipartFileName),
Path: multipartFileName,
FullPath: urlPerfix + multipartFileName,
Name: f.Filename,
Type: fileType,
}
if source != "1" {
fileResponse.Path = "https://youshikeji.oss-cn-shanghai.aliyuncs.com/img/" + fileName
fileResponse.FullPath = "https://youshikeji.oss-cn-shanghai.aliyuncs.com/img/" + fileName
}
multipartFile = append(multipartFile, fileResponse)
}
}
}
return multipartFile
}
func (e *File) singleFile(c *gin.Context, fileResponse FileResponse, urlPerfix string) (FileResponse, bool) {
files, err := c.FormFile("file")
if err != nil {
e.Error(c, 200, errors.New(""), "图片不能为空")
return FileResponse{}, true
}
// 上传文件至指定目录
guid := uuid.New().String()
fileName := guid + utils.GetExt(files.Filename)
singleFile := "static/uploadfile/" + fileName
_ = c.SaveUploadedFile(files, singleFile)
fileType, _ := utils.GetType(singleFile)
fileResponse = FileResponse{
Size: pkg.GetFileSize(singleFile),
Path: singleFile,
FullPath: urlPerfix + singleFile,
Name: files.Filename,
Type: fileType,
}
source, _ := c.GetPostForm("source")
err = thirdUpload(source, fileName, singleFile)
if err != nil {
e.Error(c, 200, errors.New(""), "上传第三方失败")
return FileResponse{}, true
}
fileResponse.Path = "https://youshikeji.oss-cn-shanghai.aliyuncs.com/img/" + fileName
fileResponse.FullPath = "https://youshikeji.oss-cn-shanghai.aliyuncs.com/img/" + fileName
return fileResponse, false
}
func thirdUpload(source string, name string, path string) error {
switch source {
case "2":
return ossUpload("img/"+name, path)
case "3":
return qiniuUpload("img/"+name, path)
}
return nil
}
func ossUpload(name string, path string) error {
oss := file_store.ALiYunOSS{}
return oss.UpLoad(name, path)
}
func qiniuUpload(name string, path string) error {
oss := file_store.ALiYunOSS{}
return oss.UpLoad(name, path)
}
@@ -0,0 +1,190 @@
package sys_china_area_data
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
"go-admin/app/admin/models"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"go-admin/common/actions"
"go-admin/common/apis"
)
type SysChinaAreaData struct {
apis.Api
}
func (e *SysChinaAreaData) GetSysChinaAreaDataList(c *gin.Context) {
log := e.GetLogger(c)
d := new(dto.SysChinaAreaDataSearch)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查询列表
err = d.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
//数据权限检查
p := actions.GetPermissionFromContext(c)
list := make([]models.SysChinaAreaData, 0)
var count int64
serviceStudent := service.SysChinaAreaData{}
serviceStudent.Log = log
serviceStudent.Orm = db
err = serviceStudent.GetSysChinaAreaDataPage(d, p, &list, &count)
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
e.PageOK(c, list, int(count), d.GetPageIndex(), d.GetPageSize(), "查询成功")
}
func (e *SysChinaAreaData) GetSysChinaAreaData(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysChinaAreaDataById)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查看详情
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object models.SysChinaAreaData
//数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysChinaAreaData := service.SysChinaAreaData{}
serviceSysChinaAreaData.Log = log
serviceSysChinaAreaData.Orm = db
err = serviceSysChinaAreaData.GetSysChinaAreaData(control, p, &object)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.OK(c, object, "查看成功")
}
func (e *SysChinaAreaData) InsertSysChinaAreaData(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysChinaAreaDataControl)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//新增操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
// 设置创建人
object.SetCreateBy(user.GetUserId(c))
serviceSysChinaAreaData := service.SysChinaAreaData{}
serviceSysChinaAreaData.Orm = db
serviceSysChinaAreaData.Log = log
err = serviceSysChinaAreaData.InsertSysChinaAreaData(object)
if err != nil {
log.Error(err)
e.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(c, object.GetId(), "创建成功")
}
func (e *SysChinaAreaData) UpdateSysChinaAreaData(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysChinaAreaDataControl)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//更新操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
object.SetUpdateBy(user.GetUserId(c))
//数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysChinaAreaData := service.SysChinaAreaData{}
serviceSysChinaAreaData.Orm = db
serviceSysChinaAreaData.Log = log
err = serviceSysChinaAreaData.UpdateSysChinaAreaData(object, p)
if err != nil {
log.Error(err)
return
}
e.OK(c, object.GetId(), "更新成功")
}
func (e *SysChinaAreaData) DeleteSysChinaAreaData(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysChinaAreaDataById)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//删除操作
err = control.Bind(c)
if err != nil {
log.Errorf("Bind error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
// 设置编辑人
control.SetUpdateBy(user.GetUserId(c))
// 数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysChinaAreaData := service.SysChinaAreaData{}
serviceSysChinaAreaData.Orm = db
serviceSysChinaAreaData.Log = log
err = serviceSysChinaAreaData.RemoveSysChinaAreaData(control, p)
if err != nil {
log.Errorf("RemoveSysChinaAreaData error, %s", err)
e.Error(c, http.StatusInternalServerError, err, "删除失败")
return
}
e.OK(c, control.GetId(), "删除成功")
}
+84
View File
@@ -0,0 +1,84 @@
package sys_content
//import (
// "github.com/gin-gonic/gin"
// "github.com/gin-gonic/gin/binding"
//
// "go-admin/app/admin/models"
// "go-admin/tools"
// "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
// "github.com/go-admin-team/go-admin-core/sdk/pkg/response/msg"
//)
//
//func GetSysContentList(c *gin.Context) {
// var data models.SysContent
// var err error
// var pageSize = 10
// var pageIndex = 1
//
// if size := c.Request.FormValue("pageSize"); size != "" {
// pageSize, err = tools.StringToInt(size)
// }
// if index := c.Request.FormValue("pageIndex"); index != "" {
// pageIndex, err = tools.StringToInt(index)
// }
//
// data.CateId = c.Request.FormValue("cateId")
// data.Name = c.Request.FormValue("name")
// data.Status = c.Request.FormValue("status")
//
// data.DataScope = tools.GetUserIdStr(c)
// result, count, err := data.GetPage(pageSize, pageIndex)
// tools.HasError(err, "", -1)
//
// app.PageOK(c, result, count, pageIndex, pageSize, "")
//}
//
//func GetSysContent(c *gin.Context) {
// var data models.SysContent
// data.Id, _ = tools.StringToInt(c.Param("id"))
// result, err := data.Get()
// tools.HasError(err, "抱歉未找到相关信息", -1)
//
// app.OK(c, result, "")
//}
//
//// @Summary 添加内容管理
//// @Description 获取JSON
//// @Tags 内容管理
//// @Accept application/json
//// @Product application/json
//// @Param data body models.SysContent true "data"
//// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
//// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
//// @Router /api/v1/syscontent [post]
//func InsertSysContent(c *gin.Context) {
// var data models.SysContent
// err := c.ShouldBindJSON(&data)
// data.CreateBy = tools.GetUserIdStr(c)
// tools.HasError(err, "", 500)
// result, err := data.Create()
// tools.HasError(err, "", -1)
// app.OK(c, result, "")
//}
//
//func UpdateSysContent(c *gin.Context) {
// var data models.SysContent
// err := c.BindWith(&data, binding.JSON)
// tools.HasError(err, "数据解析失败", -1)
// data.UpdateBy = tools.GetUserIdStr(c)
// result, err := data.Update(data.Id)
// tools.HasError(err, "", -1)
//
// app.OK(c, result, "")
//}
//
//func DeleteSysContent(c *gin.Context) {
// var data models.SysContent
// data.UpdateBy = tools.GetUserIdStr(c)
//
// IDS := tools.IdsStrToIdsIntGroup("id", c)
// _, err := data.BatchDelete(IDS)
// tools.HasError(err, msg.DeletedFail, 500)
// app.OK(c, nil, msg.DeletedSuccess)
//}
+193
View File
@@ -0,0 +1,193 @@
package sys_file
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
"go-admin/app/admin/models"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"go-admin/common/actions"
"go-admin/common/apis"
)
type SysFileDir struct {
apis.Api
}
func (e *SysFileDir) GetSysFileDirList(c *gin.Context) {
log := e.GetLogger(c)
search := new(dto.SysFileDirSearch)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
err = c.ShouldBind(search)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
var list *[]models.SysFileDirL
serviceStudent := service.SysFileDir{}
serviceStudent.Log = log
serviceStudent.Orm = db
list, err = serviceStudent.SetSysFileDir(search)
if err != nil {
log.Errorf("SetSysFileDir error, %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.OK(c, list, "查询成功")
}
func (e *SysFileDir) GetSysFileDir(c *gin.Context) {
control := new(dto.SysFileDirById)
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查看详情
err = c.ShouldBindUri(control)
if err != nil {
log.Warnf("ShouldBindUri error: %s", err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
}
var object models.SysFileDir
serviceSysFileDir := service.SysFileDir{}
serviceSysFileDir.Log = log
serviceSysFileDir.Orm = db
err = serviceSysFileDir.GetSysFileDir(control, &object)
if err != nil {
log.Errorf("GetSysFileDir error, %s", err)
e.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
e.OK(c, object, "查看成功")
}
func (e *SysFileDir) InsertSysFileDir(c *gin.Context) {
control := new(dto.SysFileDirControl)
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//新增操作
err = c.ShouldBindUri(control)
if err != nil {
log.Warnf("ShouldBindUri error: %s", err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
err = c.ShouldBind(control)
if err != nil {
log.Warnf("ShouldBind error: %s", err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
// 设置创建人
control.CreateBy = user.GetUserId(c)
serviceSysFileDir := service.SysFileDir{}
serviceSysFileDir.Orm = db
serviceSysFileDir.Log = log
err = serviceSysFileDir.InsertSysFileDir(control)
if err != nil {
log.Errorf("InsertSysFileDir error, %s", err)
e.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(c, control.ID, "创建成功")
}
func (e *SysFileDir) UpdateSysFileDir(c *gin.Context) {
control := new(dto.SysFileDirControl)
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
err = c.ShouldBindUri(control)
if err != nil {
log.Warnf("ShouldBindUri error: %s", err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
}
err = c.ShouldBind(control)
if err != nil {
log.Warnf("ShouldBind error: %#v", err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
}
// 设置创建人
control.UpdateBy = user.GetUserId(c)
//数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysFileDir := service.SysFileDir{}
serviceSysFileDir.Orm = db
serviceSysFileDir.Log = log
err = serviceSysFileDir.UpdateSysFileDir(control, p)
if err != nil {
log.Errorf("UpdateSysFileDir error, %s", err)
e.Error(c, http.StatusInternalServerError, err, "更新失败")
return
}
e.OK(c, control.ID, "更新成功")
}
func (e *SysFileDir) DeleteSysFileDir(c *gin.Context) {
control := new(dto.SysFileDirById)
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
msgID := pkg.GenerateMsgIDFromContext(c)
//删除操作
err = c.ShouldBindUri(control)
if err != nil {
log.Warnf("MsgID[%s] ShouldBindUri error: %s", msgID, err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
}
err = c.ShouldBind(control)
if err != nil {
log.Warnf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
}
// 设置编辑人
control.UpdateBy = user.GetUserId(c)
// 数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysFileDir := service.SysFileDir{}
serviceSysFileDir.Orm = db
serviceSysFileDir.MsgID = msgID
err = serviceSysFileDir.RemoveSysFileDir(control, p)
if err != nil {
log.Errorf("RemoveSysFileDir error, %s", err)
e.Error(c, http.StatusInternalServerError, err, "删除失败")
return
}
e.OK(c, control.Id, "删除成功")
}
+204
View File
@@ -0,0 +1,204 @@
package sys_file
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
"go-admin/app/admin/models"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"go-admin/common/actions"
"go-admin/common/apis"
)
type SysFileInfo struct {
apis.Api
}
func (e *SysFileInfo) GetSysFileInfoList(c *gin.Context) {
log := e.GetLogger(c)
search := new(dto.SysFileInfoSearch)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
err = c.ShouldBind(search)
if err != nil {
log.Warnf("参数验证错误, error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
//数据权限检查
p := actions.GetPermissionFromContext(c)
list := make([]models.SysFileInfo, 0)
var count int64
serviceStudent := service.SysFileInfo{}
serviceStudent.Log = log
serviceStudent.Orm = db
err = serviceStudent.GetSysFileInfoPage(search, p, &list, &count)
if err != nil {
log.Errorf("GetSysFileInfoPage error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
e.PageOK(c, list, int(count), search.PageIndex, search.PageSize, "查询成功")
}
func (e *SysFileInfo) GetSysFileInfo(c *gin.Context) {
control := new(dto.SysFileInfoById)
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查看详情
err = c.ShouldBindUri(control)
if err != nil {
log.Warnf("参数验证错误, error:%s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object models.SysFileInfo
//数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysFileInfo := service.SysFileInfo{}
serviceSysFileInfo.Log = log
serviceSysFileInfo.Orm = db
err = serviceSysFileInfo.GetSysFileInfo(control, p, &object)
if err != nil {
log.Errorf("GetSysFileInfo error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
e.OK(c, object, "查看成功")
}
func (e *SysFileInfo) InsertSysFileInfo(c *gin.Context) {
control := new(dto.SysFileInfoControl)
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//新增操作
err = c.ShouldBindUri(control)
if err != nil {
log.Warnf("参数验证错误, error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
err = c.ShouldBind(control)
if err != nil {
log.Warnf("参数验证错误, error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
// 设置创建人
control.CreateBy = user.GetUserId(c)
serviceSysFileInfo := service.SysFileInfo{}
serviceSysFileInfo.Orm = db
serviceSysFileInfo.Log = log
err = serviceSysFileInfo.InsertSysFileInfo(control)
if err != nil {
log.Errorf("InsertSysFileInfo error: %s", err)
e.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(c, control.ID, "创建成功")
}
func (e *SysFileInfo) UpdateSysFileInfo(c *gin.Context) {
control := new(dto.SysFileInfoControl)
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
err = c.ShouldBindUri(control)
if err != nil {
log.Warnf("参数验证错误, error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
err = c.ShouldBind(control)
if err != nil {
log.Warnf("参数验证错误, error:%s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
// 设置创建人
control.UpdateBy = user.GetUserId(c)
//数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysFileInfo := service.SysFileInfo{}
serviceSysFileInfo.Orm = db
serviceSysFileInfo.Log = log
err = serviceSysFileInfo.UpdateSysFileInfo(control, p)
if err != nil {
log.Errorf("UpdateSysFileInfo error: %s", err)
e.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(c, control.ID, "更新成功")
}
func (e *SysFileInfo) DeleteSysFileInfo(c *gin.Context) {
control := new(dto.SysFileInfoById)
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//删除操作
err = c.ShouldBindUri(control)
if err != nil {
log.Warnf("参数验证错误, error: %s", err)
e.Error(c, 422, err, "参数验证失败")
return
}
err = c.ShouldBind(control)
if err != nil {
log.Warnf("参数验证错误, error: %s", err)
e.Error(c, 422, err, "参数验证失败")
return
}
// 设置编辑人
control.UpdateBy = user.GetUserId(c)
// 数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysFileInfo := service.SysFileInfo{}
serviceSysFileInfo.Orm = db
serviceSysFileInfo.Log = log
err = serviceSysFileInfo.RemoveSysFileInfo(control, p)
if err != nil {
log.Errorf("RemoveSysFileInfo error: %s", err)
e.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(c, control.Id, "删除成功")
}
@@ -1,14 +1,13 @@
package sysjob
package sys_job
import (
"github.com/gin-gonic/gin"
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk"
"go-admin/app/admin/service"
"go-admin/common/apis"
"go-admin/common/dto"
"go-admin/common/log"
"go-admin/tools"
"go-admin/tools/app"
)
type SysJob struct {
@@ -17,54 +16,56 @@ type SysJob struct {
// RemoveJobForService 调用service实现
func (e *SysJob) RemoveJobForService(c *gin.Context) {
msgID := tools.GenerateMsgIDFromContext(c)
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Errorf("msgID[%s] error:%s", msgID, err)
app.Error(c, 500, err, "")
log.Error(err)
return
}
var v dto.GeneralDelDto
err = c.BindUri(&v)
if err != nil {
log.Errorf("msgID[%s] 参数验证错误, error:%s", msgID, err)
app.Error(c, 422, err, "参数验证失败")
log.Warnf("参数验证错误, error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
s := service.SysJob{}
s.MsgID = msgID
s.Log = log
s.Orm = db
s.Cron = sdk.Runtime.GetCrontabKey(c.Request.Host)
err = s.RemoveJob(&v)
if err != nil {
app.Error(c, 500, err, "")
log.Errorf("RemoveJob error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "")
return
}
app.OK(c, nil, s.Msg)
e.OK(c, nil, s.Msg)
}
// StartJobForService 启动job service实现
func (e *SysJob) StartJobForService(c *gin.Context) {
msgID := tools.GenerateMsgIDFromContext(c)
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Errorf("msgID[%s] error:%s", msgID, err)
app.Error(c, 500, err, "")
log.Error(err)
return
}
var v dto.GeneralGetDto
err = c.BindUri(&v)
if err != nil {
log.Errorf("msgID[%s] 参数验证错误, error:%s", msgID, err)
app.Error(c, 422, err, "参数验证失败")
log.Warnf("参数验证错误, error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
s := service.SysJob{}
s.Orm = db
s.MsgID = msgID
s.Log = log
s.Cron = sdk.Runtime.GetCrontabKey(c.Request.Host)
err = s.StartJob(&v)
if err != nil {
app.Error(c, 500, err, "")
log.Errorf("GetCrontabKey error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "")
return
}
app.OK(c, nil, s.Msg)
e.OK(c, nil, s.Msg)
}
+467
View File
@@ -0,0 +1,467 @@
package sys_user
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"github.com/google/uuid"
"go-admin/app/admin/models"
"go-admin/app/admin/models/system"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"go-admin/common/actions"
"go-admin/common/apis"
common "go-admin/common/models"
)
type SysUser struct {
apis.Api
}
// @Summary 列表用户信息数据
// @Description 获取JSON
// @Tags 用户
// @Param username query string false "username"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
// @Router /api/v1/sysUser [get]
// @Security Bearer
func (e *SysUser) GetSysUserList(c *gin.Context) {
log := e.GetLogger(c)
d := new(dto.SysUserSearch)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
req := d.Generate()
//查询列表
err = req.Bind(c)
if err != nil {
log.Warnf("Bind error: %s", err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
//数据权限检查
p := actions.GetPermissionFromContext(c)
list := make([]system.SysUser, 0)
var count int64
serviceStudent := service.SysUser{}
serviceStudent.Log = log
serviceStudent.Orm = db
err = serviceStudent.GetSysUserPage(req, p, &list, &count)
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
e.PageOK(c, list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
}
// @Summary 获取用户
// @Description 获取JSON
// @Tags 用户
// @Param userId path int true "用户编码"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/sysUser/{userId} [get]
// @Security Bearer
func (e *SysUser) GetSysUser(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysUserById)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查看详情
req := control.Generate()
err = req.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object system.SysUser
//数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysUser := service.SysUser{}
serviceSysUser.Log = log
serviceSysUser.Orm = db
err = serviceSysUser.GetSysUser(req, p, &object)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.OK(c, object, "查看成功")
}
// @Summary 创建用户
// @Description 获取JSON
// @Tags 用户
// @Accept application/json
// @Product application/json
// @Param data body dto.SysUserControl true "用户数据"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/sysUser [post]
func (e *SysUser) InsertSysUser(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysUserControl)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//新增操作
req := control.Generate()
err = req.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object common.ActiveRecord
object, err = req.GenerateM()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
// 设置创建人
object.SetCreateBy(user.GetUserId(c))
serviceSysUser := service.SysUser{}
serviceSysUser.Orm = db
serviceSysUser.Log = log
err = serviceSysUser.InsertSysUser(object)
if err != nil {
log.Error(err)
e.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(c, object.GetId(), "创建成功")
}
// @Summary 修改用户数据
// @Description 获取JSON
// @Tags 用户
// @Accept application/json
// @Product application/json
// @Param data body dto.SysUserControl true "body"
// @Success 200 {string} string "{"code": 200, "message": "修改成功"}"
// @Success 200 {string} string "{"code": -1, "message": "修改失败"}"
// @Router /api/v1/sysuser/{userId} [put]
func (e *SysUser) UpdateSysUser(c *gin.Context) {
control := new(dto.SysUserControl)
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
req := control.Generate()
//更新操作
err = req.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object common.ActiveRecord
object, err = req.GenerateM()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
object.SetUpdateBy(user.GetUserId(c))
//数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysUser := service.SysUser{}
serviceSysUser.Orm = db
serviceSysUser.Log = log
err = serviceSysUser.UpdateSysUser(object, p)
if err != nil {
log.Error(err)
return
}
e.OK(c, object.GetId(), "更新成功")
}
// @Summary 删除用户数据
// @Description 删除数据
// @Tags 用户
// @Param userId path int true "userId"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/sysuser/{userId} [delete]
func (e *SysUser) DeleteSysUser(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysUserById)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//删除操作
req := control.Generate()
err = req.Bind(c)
if err != nil {
log.Errorf("Bind error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object common.ActiveRecord
object, err = req.GenerateM()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
// 设置编辑人
object.SetUpdateBy(user.GetUserId(c))
// 数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysUser := service.SysUser{}
serviceSysUser.Orm = db
serviceSysUser.Log = log
err = serviceSysUser.RemoveSysUser(req, object, p)
if err != nil {
log.Error(err)
return
}
e.OK(c, object.GetId(), "删除成功")
}
// @Summary 修改头像
// @Description 获取JSON
// @Tags 用户
// @Accept multipart/form-data
// @Param file formData file true "file"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/user/avatar [post]
func (e *SysUser) InsetSysUserAvatar(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
// 数据权限检查
p := actions.GetPermissionFromContext(c)
form, _ := c.MultipartForm()
files := form.File["upload[]"]
guid := uuid.New().String()
filPath := "static/uploadfile/" + guid + ".jpg"
for _, file := range files {
log.Debugf("upload avatar file: %s", file.Filename)
// 上传文件至指定目录
err = c.SaveUploadedFile(file, filPath)
if err != nil {
log.Errorf("save file error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "")
return
}
}
object := &system.SysUser{
UserId: p.UserId,
Avatar: "/" + filPath,
}
serviceSysUser := service.SysUser{}
serviceSysUser.Orm = db
serviceSysUser.Log = log
err = serviceSysUser.UpdateSysUser(object, p)
if err != nil {
log.Error(err)
return
}
e.OK(c, filPath, "修改成功")
}
// @Summary 重置密码
// @Description 获取JSON
// @Tags 用户
// @Accept application/json
// @Product application/json
// @Param data body dto.PassWord true "body"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/user/pwd [post]
// @Security Bearer
func (e *SysUser) SysUserUpdatePwd(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
var pwd dto.PassWord
err = c.Bind(&pwd)
if err != nil {
log.Errorf("Bind error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
// 数据权限检查
p := actions.GetPermissionFromContext(c)
object := &system.SysUser{
UserId: p.UserId,
Password: pwd.Password,
}
serviceSysUser := service.SysUser{}
serviceSysUser.Orm = db
serviceSysUser.Log = log
err = serviceSysUser.UpdateSysUser(object, p)
if err != nil {
log.Error(err)
return
}
e.OK(c, nil, "密码修改成功")
}
// @Summary 获取个人中心用户
// @Description 获取JSON
// @Tags 个人中心
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/user/profile [get]
// @Security Bearer
func (e *SysUser) GetSysUserProfile(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
id := user.GetUserId(c)
serviceSysUser := service.SysUser{}
serviceSysUser.Log = log
serviceSysUser.Orm = db
user := new(system.SysUser)
roles := make([]system.SysRole, 0)
posts := make([]system.SysPost, 0)
err = serviceSysUser.GetSysUserProfile(id, user, &roles, &posts)
if err != nil {
log.Errorf("get user profile error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "获取用户信息失败")
return
}
e.OK(c, gin.H{
"user": user,
"roles": roles,
"posts": posts,
}, "查询成功")
//var SysUser models.SysUser
//userId := tools.GetUserIdStr(c)
//SysUser.UserId, _ = tools.StringToInt(userId)
//result, err := SysUser.Get()
//tools.HasError(err, "抱歉未找到相关信息", -1)
//var SysRole models.SysRole
//var Post models.Post
//var Dept models.SysDepts
////获取角色列表
//roles, err := SysRole.GetList()
////获取职位列表
//posts, err := Post.GetList()
////获取部门列表
//Dept.DeptId = result.DeptId
//dept, err := Dept.Get()
//
//postIds := make([]int, 0)
//postIds = append(postIds, result.PostId)
//
//roleIds := make([]int, 0)
//roleIds = append(roleIds, result.RoleId)
//
//app.Custum(c, gin.H{
// "code": 200,
// "data": result,
// "postIds": postIds,
// "roleIds": roleIds,
// "roles": roles,
// "posts": posts,
// "dept": dept,
//})
}
func (e *SysUser) GetInfo(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//数据权限检查
p := actions.GetPermissionFromContext(c)
var roles = make([]string, 1)
roles[0] = user.GetRoleName(c)
var permissions = make([]string, 1)
permissions[0] = "*:*:*"
var buttons = make([]string, 1)
buttons[0] = "*:*:*"
RoleMenu := models.RoleMenu{}
RoleMenu.RoleId = user.GetRoleId(c)
var mp = make(map[string]interface{})
mp["roles"] = roles
if user.GetRoleName(c) == "admin" || user.GetRoleName(c) == "系统管理员" {
mp["permissions"] = permissions
mp["buttons"] = buttons
} else {
list, _ := RoleMenu.GetPermis(db)
mp["permissions"] = list
mp["buttons"] = list
}
var sysUser system.SysUser
req := new(dto.SysUserById)
req.Id = user.GetUserId(c)
serviceSysUser := service.SysUser{}
serviceSysUser.Log = log
serviceSysUser.Orm = db
err = serviceSysUser.GetSysUser(req, p, &sysUser)
if err != nil {
e.Error(c, http.StatusUnauthorized, err, "登录失败")
return
}
mp["introduction"] = " am a super administrator"
mp["avatar"] = "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif"
if sysUser.Avatar != "" {
mp["avatar"] = sysUser.Avatar
}
mp["userName"] = sysUser.NickName
mp["userId"] = sysUser.UserId
mp["deptId"] = sysUser.DeptId
mp["name"] = sysUser.NickName
e.OK(c, mp, "")
}
-83
View File
@@ -1,83 +0,0 @@
package syscategory
import (
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"go-admin/app/admin/models"
"go-admin/tools"
"go-admin/tools/app"
"go-admin/tools/app/msg"
)
func GetSysCategoryList(c *gin.Context) {
var data models.SysCategory
var err error
var pageSize = 10
var pageIndex = 1
if size := c.Request.FormValue("pageSize"); size != "" {
pageSize, err = tools.StringToInt(size)
}
if index := c.Request.FormValue("pageIndex"); index != "" {
pageIndex, err = tools.StringToInt(index)
}
data.Name = c.Request.FormValue("name")
data.Status = c.Request.FormValue("status")
data.DataScope = tools.GetUserIdStr(c)
result, count, err := data.GetPage(pageSize, pageIndex)
tools.HasError(err, "", -1)
app.PageOK(c, result, count, pageIndex, pageSize, "")
}
func GetSysCategory(c *gin.Context) {
var data models.SysCategory
data.Id, _ = tools.StringToInt(c.Param("id"))
result, err := data.Get()
tools.HasError(err, "抱歉未找到相关信息", -1)
app.OK(c, result, "")
}
// @Summary 添加分类
// @Description 获取JSON
// @Tags 分类
// @Accept application/json
// @Product application/json
// @Param data body models.SysCategory true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/syscategory [post]
func InsertSysCategory(c *gin.Context) {
var data models.SysCategory
err := c.ShouldBindJSON(&data)
data.CreateBy = tools.GetUserIdStr(c)
tools.HasError(err, "", 500)
result, err := data.Create()
tools.HasError(err, "", -1)
app.OK(c, result, "")
}
func UpdateSysCategory(c *gin.Context) {
var data models.SysCategory
err := c.BindWith(&data, binding.JSON)
tools.HasError(err, "数据解析失败", -1)
data.UpdateBy = tools.GetUserIdStr(c)
result, err := data.Update(data.Id)
tools.HasError(err, "", -1)
app.OK(c, result, "")
}
func DeleteSysCategory(c *gin.Context) {
var data models.SysCategory
data.UpdateBy = tools.GetUserIdStr(c)
IDS := tools.IdsStrToIdsIntGroup("id", c)
_, err := data.BatchDelete(IDS)
tools.HasError(err, msg.DeletedFail, 500)
app.OK(c, nil, msg.DeletedSuccess)
}
-84
View File
@@ -1,84 +0,0 @@
package syscontent
import (
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"go-admin/app/admin/models"
"go-admin/tools"
"go-admin/tools/app"
"go-admin/tools/app/msg"
)
func GetSysContentList(c *gin.Context) {
var data models.SysContent
var err error
var pageSize = 10
var pageIndex = 1
if size := c.Request.FormValue("pageSize"); size != "" {
pageSize, err = tools.StringToInt(size)
}
if index := c.Request.FormValue("pageIndex"); index != "" {
pageIndex, err = tools.StringToInt(index)
}
data.CateId = c.Request.FormValue("cateId")
data.Name = c.Request.FormValue("name")
data.Status = c.Request.FormValue("status")
data.DataScope = tools.GetUserIdStr(c)
result, count, err := data.GetPage(pageSize, pageIndex)
tools.HasError(err, "", -1)
app.PageOK(c, result, count, pageIndex, pageSize, "")
}
func GetSysContent(c *gin.Context) {
var data models.SysContent
data.Id, _ = tools.StringToInt(c.Param("id"))
result, err := data.Get()
tools.HasError(err, "抱歉未找到相关信息", -1)
app.OK(c, result, "")
}
// @Summary 添加内容管理
// @Description 获取JSON
// @Tags 内容管理
// @Accept application/json
// @Product application/json
// @Param data body models.SysContent true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/syscontent [post]
func InsertSysContent(c *gin.Context) {
var data models.SysContent
err := c.ShouldBindJSON(&data)
data.CreateBy = tools.GetUserIdStr(c)
tools.HasError(err, "", 500)
result, err := data.Create()
tools.HasError(err, "", -1)
app.OK(c, result, "")
}
func UpdateSysContent(c *gin.Context) {
var data models.SysContent
err := c.BindWith(&data, binding.JSON)
tools.HasError(err, "数据解析失败", -1)
data.UpdateBy = tools.GetUserIdStr(c)
result, err := data.Update(data.Id)
tools.HasError(err, "", -1)
app.OK(c, result, "")
}
func DeleteSysContent(c *gin.Context) {
var data models.SysContent
data.UpdateBy = tools.GetUserIdStr(c)
IDS := tools.IdsStrToIdsIntGroup("id", c)
_, err := data.BatchDelete(IDS)
tools.HasError(err, msg.DeletedFail, 500)
app.OK(c, nil, msg.DeletedSuccess)
}
-71
View File
@@ -1,71 +0,0 @@
package sysfiledir
import (
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"go-admin/app/admin/models"
"go-admin/tools"
"go-admin/tools/app"
"go-admin/tools/app/msg"
)
func GetSysFileDirList(c *gin.Context) {
var SysFileDir models.SysFileDir
SysFileDir.Label = c.Request.FormValue("label")
SysFileDir.PId, _ = tools.StringToInt(c.Request.FormValue("pid"))
SysFileDir.Id, _ = tools.StringToInt(c.Request.FormValue("id"))
SysFileDir.DataScope = tools.GetUserIdStr(c)
result, err := SysFileDir.SetSysFileDir()
tools.HasError(err, "抱歉未找到相关信息", -1)
app.OK(c, result, "")
}
func GetSysFileDir(c *gin.Context) {
var data models.SysFileDir
data.Id, _ = tools.StringToInt(c.Param("id"))
result, err := data.Get()
tools.HasError(err, "抱歉未找到相关信息", -1)
app.OK(c, result, "")
}
// @Summary 添加SysFileDir
// @Description 获取JSON
// @Tags SysFileDir
// @Accept application/json
// @Product application/json
// @Param data body models.SysFileDir true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/sysfiledir [post]
func InsertSysFileDir(c *gin.Context) {
var data models.SysFileDir
err := c.ShouldBindJSON(&data)
data.CreateBy = tools.GetUserIdStr(c)
tools.HasError(err, "", 500)
result, err := data.Create()
tools.HasError(err, "", -1)
app.OK(c, result, "")
}
func UpdateSysFileDir(c *gin.Context) {
var data models.SysFileDir
err := c.BindWith(&data, binding.JSON)
tools.HasError(err, "数据解析失败", -1)
data.UpdateBy = tools.GetUserIdStr(c)
result, err := data.Update(data.Id)
tools.HasError(err, "", -1)
app.OK(c, result, "")
}
func DeleteSysFileDir(c *gin.Context) {
var data models.SysFileDir
data.UpdateBy = tools.GetUserIdStr(c)
IDS := tools.IdsStrToIdsIntGroup("id", c)
_, err := data.BatchDelete(IDS)
tools.HasError(err, msg.DeletedFail, 500)
app.OK(c, nil, msg.DeletedSuccess)
}
-77
View File
@@ -1,77 +0,0 @@
package sysfileinfo
import (
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"go-admin/app/admin/models"
"go-admin/tools"
"go-admin/tools/app"
"go-admin/tools/app/msg"
)
func GetSysFileInfoList(c *gin.Context) {
var data models.SysFileInfo
var err error
var pageSize = 10
var pageIndex = 1
if size := c.Request.FormValue("pageSize"); size != "" {
pageSize, err = tools.StringToInt(size)
}
tools.HasError(err, "", -1)
if index := c.Request.FormValue("pageIndex"); index != "" {
pageIndex, err = tools.StringToInt(index)
}
tools.HasError(err, "", -1)
if pid := c.Request.FormValue("pId"); pid != "" {
data.PId, err = tools.StringToInt(pid)
}
tools.HasError(err, "", -1)
data.DataScope = tools.GetUserIdStr(c)
result, count, err := data.GetPage(pageSize, pageIndex)
tools.HasError(err, "", -1)
app.PageOK(c, result, count, pageIndex, pageSize, "")
}
func GetSysFileInfo(c *gin.Context) {
var data models.SysFileInfo
data.Id, _ = tools.StringToInt(c.Param("id"))
result, err := data.Get()
tools.HasError(err, "抱歉未找到相关信息", -1)
app.OK(c, result, "")
}
func InsertSysFileInfo(c *gin.Context) {
var data models.SysFileInfo
err := c.ShouldBindJSON(&data)
data.CreateBy = tools.GetUserIdStr(c)
tools.HasError(err, "", 500)
result, err := data.Create()
tools.HasError(err, "", -1)
app.OK(c, result, "")
}
func UpdateSysFileInfo(c *gin.Context) {
var data models.SysFileInfo
err := c.BindWith(&data, binding.JSON)
tools.HasError(err, "数据解析失败", -1)
data.UpdateBy = tools.GetUserIdStr(c)
result, err := data.Update(data.Id)
tools.HasError(err, "", -1)
app.OK(c, result, "")
}
func DeleteSysFileInfo(c *gin.Context) {
var data models.SysFileInfo
data.UpdateBy = tools.GetUserIdStr(c)
IDS := tools.IdsStrToIdsIntGroup("id", c)
_, err := data.BatchDelete(IDS)
tools.HasError(err, msg.DeletedFail, 500)
app.OK(c, nil, msg.DeletedSuccess)
}
+14 -7
View File
@@ -2,16 +2,23 @@ package system
import (
"github.com/gin-gonic/gin"
"go-admin/tools"
"go-admin/tools/app"
"go-admin/tools/captcha"
"github.com/go-admin-team/go-admin-core/sdk/pkg/captcha"
"go-admin/common/apis"
)
func GenerateCaptchaHandler(c *gin.Context) {
type System struct {
apis.Api
}
func (e *System) GenerateCaptchaHandler(c *gin.Context) {
log := e.GetLogger(c)
id, b64s, err := captcha.DriverDigitFunc()
tools.HasError(err, "验证码获取失败", 500)
app.Custum(c, gin.H{
if err != nil {
log.Errorf("DriverDigitFunc error, %s", err.Error())
e.Error(c, 500, err, "验证码获取失败")
return
}
e.Custom(c, gin.H{
"code": 200,
"data": b64s,
"id": id,
-133
View File
@@ -1,133 +0,0 @@
package system
import (
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"go-admin/app/admin/models"
"go-admin/tools"
"go-admin/tools/app"
"go-admin/tools/app/msg"
)
// @Summary 分页部门列表数据
// @Description 分页列表
// @Tags 部门
// @Param name query string false "name"
// @Param id query string false "id"
// @Param position query string false "position"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/deptList [get]
// @Security Bearer
func GetDeptList(c *gin.Context) {
var Dept models.SysDept
Dept.DeptName = c.Request.FormValue("deptName")
Dept.Status = c.Request.FormValue("status")
Dept.DeptId, _ = tools.StringToInt(c.Request.FormValue("deptId"))
Dept.DataScope = tools.GetUserIdStr(c)
result, err := Dept.SetDept(true)
tools.HasError(err, "抱歉未找到相关信息", -1)
app.OK(c, result, "")
}
func GetDeptTree(c *gin.Context) {
var Dept models.SysDept
Dept.DeptName = c.Request.FormValue("deptName")
Dept.Status = c.Request.FormValue("status")
Dept.DeptId, _ = tools.StringToInt(c.Request.FormValue("deptId"))
result, err := Dept.SetDept(false)
tools.HasError(err, "抱歉未找到相关信息", -1)
app.OK(c, result, "")
}
// @Summary 部门列表数据
// @Description 获取JSON
// @Tags 部门
// @Param deptId path string false "deptId"
// @Param position query string false "position"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/dept/{deptId} [get]
// @Security Bearer
func GetDept(c *gin.Context) {
var Dept models.SysDept
Dept.DeptId, _ = tools.StringToInt(c.Param("deptId"))
Dept.DataScope = tools.GetUserIdStr(c)
result, err := Dept.Get()
tools.HasError(err, msg.NotFound, 404)
app.OK(c, result, msg.GetSuccess)
}
// @Summary 添加部门
// @Description 获取JSON
// @Tags 部门
// @Accept application/json
// @Product application/json
// @Param data body models.SysDept true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/dept [post]
// @Security Bearer
func InsertDept(c *gin.Context) {
var data models.SysDept
err := c.BindWith(&data, binding.JSON)
tools.HasError(err, "", 500)
data.CreateBy = tools.GetUserIdStr(c)
result, err := data.Create()
tools.HasError(err, "", -1)
app.OK(c, result, msg.CreatedSuccess)
}
// @Summary 修改部门
// @Description 获取JSON
// @Tags 部门
// @Accept application/json
// @Product application/json
// @Param id path int true "id"
// @Param data body models.SysDept true "body"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/dept [put]
// @Security Bearer
func UpdateDept(c *gin.Context) {
var data models.SysDept
err := c.BindJSON(&data)
tools.HasError(err, "", -1)
data.UpdateBy = tools.GetUserIdStr(c)
result, err := data.Update(data.DeptId)
tools.HasError(err, "", -1)
app.OK(c, result, msg.UpdatedSuccess)
}
// @Summary 删除部门
// @Description 删除数据
// @Tags 部门
// @Param id path int true "id"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/dept/{id} [delete]
func DeleteDept(c *gin.Context) {
var data models.SysDept
id, err := tools.StringToInt(c.Param("id"))
_, err = data.Delete(id)
tools.HasError(err, "删除失败", 500)
app.OK(c, "", msg.DeletedSuccess)
}
func GetDeptTreeRoleselect(c *gin.Context) {
var Dept models.SysDept
var SysRole models.SysRole
id, err := tools.StringToInt(c.Param("roleId"))
SysRole.RoleId = id
result, err := Dept.SetDeptLable()
tools.HasError(err, msg.NotFound, -1)
menuIds := make([]int, 0)
if id != 0 {
menuIds, err = SysRole.GetRoleDeptId()
tools.HasError(err, "抱歉未找到相关信息", -1)
}
app.Custum(c, gin.H{
"code": 200,
"depts": result,
"checkedKeys": menuIds,
})
}
-154
View File
@@ -1,154 +0,0 @@
package dict
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"go-admin/app/admin/models"
"go-admin/tools"
"go-admin/tools/app"
)
// @Summary 字典数据列表
// @Description 获取JSON
// @Tags 字典数据
// @Param status query string false "status"
// @Param dictCode query string false "dictCode"
// @Param dictType query string false "dictType"
// @Param pageSize query int false "页条数"
// @Param pageIndex query int false "页码"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/dict/data/list [get]
// @Security Bearer
func GetDictDataList(c *gin.Context) {
var data models.DictData
var err error
var pageSize = 10
var pageIndex = 1
if size := c.Request.FormValue("pageSize"); size != "" {
pageSize, err = tools.StringToInt(size)
}
if index := c.Request.FormValue("pageIndex"); index != "" {
pageIndex, err = tools.StringToInt(index)
}
data.DictLabel = c.Request.FormValue("dictLabel")
data.Status = c.Request.FormValue("status")
data.DictType = c.Request.FormValue("dictType")
id := c.Request.FormValue("dictCode")
data.DictCode, _ = tools.StringToInt(id)
data.DataScope = tools.GetUserIdStr(c)
result, count, err := data.GetPage(pageSize, pageIndex)
tools.HasError(err, "", -1)
var mp = make(map[string]interface{}, 3)
mp["list"] = result
mp["count"] = count
mp["pageIndex"] = pageIndex
mp["pageSize"] = pageSize
var res app.Response
res.Data = mp
c.JSON(http.StatusOK, res.ReturnOK())
}
// @Summary 通过编码获取字典数据
// @Description 获取JSON
// @Tags 字典数据
// @Param dictCode path int true "字典编码"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/dict/data/{dictCode} [get]
// @Security Bearer
func GetDictData(c *gin.Context) {
var DictData models.DictData
DictData.DictLabel = c.Request.FormValue("dictLabel")
DictData.DictCode, _ = tools.StringToInt(c.Param("dictCode"))
result, err := DictData.GetByCode()
tools.HasError(err, "抱歉未找到相关信息", -1)
var res app.Response
res.Data = result
c.JSON(http.StatusOK, res.ReturnOK())
}
// @Summary 通过字典类型获取字典数据
// @Description 获取JSON
// @Tags 字典数据
// @Param dictType path int true "dictType"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/dict/databyType/{dictType} [get]
// @Security Bearer
func GetDictDataByDictType(c *gin.Context) {
var DictData models.DictData
DictData.DictType = c.Param("dictType")
result, err := DictData.Get()
tools.HasError(err, "抱歉未找到相关信息", -1)
var res app.Response
res.Data = result
c.JSON(http.StatusOK, res.ReturnOK())
}
// @Summary 添加字典数据
// @Description 获取JSON
// @Tags 字典数据
// @Accept application/json
// @Product application/json
// @Param data body models.DictType true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/dict/data [post]
// @Security Bearer
func InsertDictData(c *gin.Context) {
var data models.DictData
err := c.ShouldBindJSON(&data)
data.CreateBy = tools.GetUserIdStr(c)
tools.HasError(err, "", 500)
result, err := data.Create()
tools.HasError(err, "", -1)
var res app.Response
res.Data = result
c.JSON(http.StatusOK, res.ReturnOK())
}
// @Summary 修改字典数据
// @Description 获取JSON
// @Tags 字典数据
// @Accept application/json
// @Product application/json
// @Param data body models.DictType true "body"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/dict/data [put]
// @Security Bearer
func UpdateDictData(c *gin.Context) {
var data models.DictData
err := c.BindWith(&data, binding.JSON)
data.UpdateBy = tools.GetUserIdStr(c)
tools.HasError(err, "", -1)
result, err := data.Update(data.DictCode)
tools.HasError(err, "", -1)
var res app.Response
res.Data = result
c.JSON(http.StatusOK, res.ReturnOK())
}
// @Summary 删除字典数据
// @Description 删除数据
// @Tags 字典数据
// @Param dictCode path int true "dictCode"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/dict/data/{dictCode} [delete]
func DeleteDictData(c *gin.Context) {
var data models.DictData
data.UpdateBy = tools.GetUserIdStr(c)
IDS := tools.IdsStrToIdsIntGroup("dictCode", c)
result, err := data.BatchDelete(IDS)
tools.HasError(err, "修改失败", 500)
app.OK(c, result, "删除成功")
}
-137
View File
@@ -1,137 +0,0 @@
package dict
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"go-admin/app/admin/models"
"go-admin/tools"
"go-admin/tools/app"
)
// @Summary 字典类型列表数据
// @Description 获取JSON
// @Tags 字典类型
// @Param dictName query string false "dictName"
// @Param dictId query string false "dictId"
// @Param dictType query string false "dictType"
// @Param pageSize query int false "页条数"
// @Param pageIndex query int false "页码"
// @Success 200 {object} app.PageResponse "{"code": 200, "data": [...]}"
// @Router /api/v1/dict/type/list [get]
// @Security Bearer
func GetDictTypeList(c *gin.Context) {
var data models.DictType
var err error
var pageSize = 10
var pageIndex = 1
if size := c.Request.FormValue("pageSize"); size != "" {
pageSize, err = tools.StringToInt(size)
}
if index := c.Request.FormValue("pageIndex"); index != "" {
pageIndex, err = tools.StringToInt(index)
}
data.DictName = c.Request.FormValue("dictName")
id := c.Request.FormValue("dictId")
data.DictId, _ = tools.StringToInt(id)
data.DictType = c.Request.FormValue("dictType")
data.DataScope = tools.GetUserIdStr(c)
result, count, err := data.GetPage(pageSize, pageIndex)
tools.HasError(err, "", -1)
app.PageOK(c, result, count, pageIndex, pageSize, "")
}
// @Summary 通过字典id获取字典类型
// @Description 获取JSON
// @Tags 字典类型
// @Param dictId path int true "字典类型编码"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/dict/type/{dictId} [get]
// @Security Bearer
func GetDictType(c *gin.Context) {
var DictType models.DictType
DictType.DictName = c.Request.FormValue("dictName")
DictType.DictId, _ = tools.StringToInt(c.Param("dictId"))
result, err := DictType.Get()
tools.HasError(err, "抱歉未找到相关信息", -1)
var res app.Response
res.Data = result
c.JSON(http.StatusOK, res.ReturnOK())
}
func GetDictTypeOptionSelect(c *gin.Context) {
var DictType models.DictType
DictType.DictName = c.Request.FormValue("dictName")
DictType.DictId, _ = tools.StringToInt(c.Param("dictId"))
result, err := DictType.GetList()
tools.HasError(err, "抱歉未找到相关信息", -1)
var res app.Response
res.Data = result
c.JSON(http.StatusOK, res.ReturnOK())
}
// @Summary 添加字典类型
// @Description 获取JSON
// @Tags 字典类型
// @Accept application/json
// @Product application/json
// @Param data body models.DictType true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/dict/type [post]
// @Security Bearer
func InsertDictType(c *gin.Context) {
var data models.DictType
err := c.BindWith(&data, binding.JSON)
data.CreateBy = tools.GetUserIdStr(c)
tools.HasError(err, "", 500)
result, err := data.Create()
tools.HasError(err, "", -1)
var res app.Response
res.Data = result
c.JSON(http.StatusOK, res.ReturnOK())
}
// @Summary 修改字典类型
// @Description 获取JSON
// @Tags 字典类型
// @Accept application/json
// @Product application/json
// @Param data body models.DictType true "body"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/dict/type [put]
// @Security Bearer
func UpdateDictType(c *gin.Context) {
var data models.DictType
err := c.BindWith(&data, binding.JSON)
data.UpdateBy = tools.GetUserIdStr(c)
tools.HasError(err, "", -1)
result, err := data.Update(data.DictId)
tools.HasError(err, "", -1)
var res app.Response
res.Data = result
c.JSON(http.StatusOK, res.ReturnOK())
}
// @Summary 删除字典类型
// @Description 删除数据
// @Tags 字典类型
// @Param dictId path int true "dictId"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/dict/type/{dictId} [delete]
func DeleteDictType(c *gin.Context) {
var data models.DictType
data.UpdateBy = tools.GetUserIdStr(c)
IDS := tools.IdsStrToIdsIntGroup("dictId", c)
result, err := data.BatchDelete(IDS)
tools.HasError(err, "修改失败", 500)
app.OK(c, result, "删除成功")
}
+263
View File
@@ -0,0 +1,263 @@
package dict
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"go-admin/app/admin/models/system"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"go-admin/common/apis"
common "go-admin/common/models"
)
type SysDictData struct {
apis.Api
}
// @Summary 字典数据列表
// @Description 获取JSON
// @Tags 字典数据
// @Param status query string false "status"
// @Param dictCode query string false "dictCode"
// @Param dictType query string false "dictType"
// @Param pageSize query int false "页条数"
// @Param pageIndex query int false "页码"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/dict/data [get]
// @Security Bearer
func (e *SysDictData) GetSysDictDataList(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
req := &dto.SysDictDataSearch{}
//查询列表
err = req.Bind(c)
if err != nil {
log.Warnf("Bind error: %s", err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
list := make([]system.SysDictData, 0)
var count int64
s := service.SysDictData{}
s.Log = log
s.Orm = db.Debug()
err = s.GetPage(req, &list, &count)
if err != nil {
log.Errorf("GetPage error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
e.PageOK(c, list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
}
// @Summary 通过编码获取字典数据
// @Description 获取JSON
// @Tags 字典数据
// @Param dictCode path int true "字典编码"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/dict/data/{dictCode} [get]
// @Security Bearer
func (e *SysDictData) GetSysDictData(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查看详情
req := &dto.SysDictDataById{}
err = req.Bind(c)
if err != nil {
log.Warnf("Bind error: %s", err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object system.SysDictData
s := service.SysDictData{}
s.Log = log
s.Orm = db
err = s.Get(req, &object)
if err != nil {
log.Warnf("Get error: %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
e.OK(c, object, "查看成功")
}
// @Summary 添加字典数据
// @Description 获取JSON
// @Tags 字典数据
// @Accept application/json
// @Product application/json
// @Param data body dto.SysDictDataControl true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/dict/data [post]
// @Security Bearer
func (e *SysDictData) InsertSysDictData(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//新增操作
req := &dto.SysDictDataControl{}
err = req.Bind(c)
if err != nil {
log.Warnf("Bind error: %s", err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, _ := req.GenerateM()
// 设置创建人
object.SetCreateBy(user.GetUserId(c))
s := service.SysDictData{}
s.Orm = db
s.Log = log
err = s.Insert(object.(*system.SysDictData))
if err != nil {
log.Errorf("Insert error, %s", err)
e.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(c, object.GetId(), "创建成功")
}
// @Summary 修改字典数据
// @Description 获取JSON
// @Tags 字典数据
// @Accept application/json
// @Product application/json
// @Param data body dto.SysDictDataControl true "body"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/dict/data/{dictCode} [put]
// @Security Bearer
func (e *SysDictData) UpdateSysDictData(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
req := &dto.SysDictDataControl{}
//更新操作
err = req.Bind(c)
if err != nil {
log.Warnf("request validate error, %s", err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, _ := req.GenerateM()
object.SetUpdateBy(user.GetUserId(c))
s := service.SysDictData{}
s.Orm = db
s.Log = log
err = s.Update(object.(*system.SysDictData))
if err != nil {
log.Errorf("Update error, %s", err)
e.Error(c, http.StatusInternalServerError, err, "更新失败")
return
}
e.OK(c, object.GetId(), "更新成功")
}
// @Summary 删除字典数据
// @Description 删除数据
// @Tags 字典数据
// @Param dictCode path int true "dictCode"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/dict/data/{dictCode} [delete]
func (e *SysDictData) DeleteSysDictData(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//删除操作
req := new(dto.SysDictDataById)
err = req.Bind(c)
if err != nil {
log.Warnf("Bind error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object common.ActiveRecord
object, err = req.GenerateM()
if err != nil {
log.Errorf("GenerateM error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
// 设置编辑人
object.SetUpdateBy(user.GetUserId(c))
s := service.SysDictData{}
s.Orm = db
s.Log = log
err = s.Remove(req, object.(*system.SysDictData))
if err != nil {
log.Errorf("Remove error, %s", err)
e.Error(c, http.StatusInternalServerError, err, "删除失败")
return
}
e.OK(c, object.GetId(), "删除成功")
}
func (e *SysDictData) GetSysDictDataAll(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
req := &dto.SysDictDataSearch{}
//查询列表
err = req.Bind(c)
if err != nil {
log.Warnf("Bind error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
list := make([]system.SysDictData, 0)
s := service.SysDictData{}
s.Log = log
s.Orm = db
err = s.GetAll(req, &list)
if err != nil {
log.Errorf("GetAll error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
e.OK(c, list, "查询成功")
}
+261
View File
@@ -0,0 +1,261 @@
package dict
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"go-admin/app/admin/models/system"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"go-admin/common/apis"
common "go-admin/common/models"
)
type SysDictType struct {
apis.Api
}
// @Summary 字典类型列表数据
// @Description 获取JSON
// @Tags 字典类型
// @Param dictName query string false "dictName"
// @Param dictId query string false "dictId"
// @Param dictType query string false "dictType"
// @Param pageSize query int false "页条数"
// @Param pageIndex query int false "页码"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/dict/type [get]
// @Security Bearer
func (e *SysDictType) GetSysDictTypeList(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
req := &dto.SysDictTypeSearch{}
//查询列表
err = req.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
list := make([]system.SysDictType, 0)
var count int64
s := service.SysDictType{}
s.Log = log
s.Orm = db.Debug()
err = s.GetPage(req, &list, &count)
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
e.PageOK(c, list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
}
// @Summary 通过字典id获取字典类型
// @Description 获取JSON
// @Tags 字典类型
// @Param dictId path int true "字典类型编码"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/dict/type/{dictId} [get]
// @Security Bearer
func (e *SysDictType) GetSysDictType(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查看详情
req := &dto.SysDictTypeById{}
err = req.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object system.SysDictType
s := service.SysDictType{}
s.Log = log
s.Orm = db
err = s.Get(req, &object)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.OK(c, object, "查看成功")
}
// @Summary 添加字典类型
// @Description 获取JSON
// @Tags 字典类型
// @Accept application/json
// @Product application/json
// @Param data body dto.SysDictTypeControl true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/dict/type [post]
// @Security Bearer
func (e *SysDictType) InsertSysDictType(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//新增操作
req := &dto.SysDictTypeControl{}
err = req.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, _ := req.GenerateM()
// 设置创建人
object.SetCreateBy(user.GetUserId(c))
s := service.SysDictType{}
s.Orm = db
s.Log = log
err = s.Insert(object.(*system.SysDictType))
if err != nil {
log.Error(err)
e.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(c, object.GetId(), "创建成功")
}
// @Summary 修改字典类型
// @Description 获取JSON
// @Tags 字典类型
// @Accept application/json
// @Product application/json
// @Param data body dto.SysDictTypeControl true "body"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/dict/type/{dictId} [put]
// @Security Bearer
func (e *SysDictType) UpdateSysDictType(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
req := &dto.SysDictTypeControl{}
//更新操作
err = req.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, _ := req.GenerateM()
object.SetUpdateBy(user.GetUserId(c))
s := service.SysDictType{}
s.Orm = db
s.Log = log
err = s.Update(object.(*system.SysDictType))
if err != nil {
log.Error(err)
return
}
e.OK(c, object.GetId(), "更新成功")
}
// @Summary 删除字典类型
// @Description 删除数据
// @Tags 字典类型
// @Param dictId path int true "dictId"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/dict/type/{dictId} [delete]
func (e *SysDictType) DeleteSysDictType(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//删除操作
req := new(dto.SysDictTypeById)
err = req.Bind(c)
if err != nil {
log.Errorf("Bind error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object common.ActiveRecord
object, err = req.GenerateM()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
// 设置编辑人
object.SetUpdateBy(user.GetUserId(c))
s := service.SysDictType{}
s.Orm = db
s.Log = log
err = s.Remove(req, object.(*system.SysDictType))
if err != nil {
log.Error(err)
return
}
e.OK(c, object.GetId(), "删除成功")
}
// @Summary 字典类型全部数据
// @Description 获取JSON
// @Tags 字典类型
// @Param dictName query string false "dictName"
// @Param dictId query string false "dictId"
// @Param dictType query string false "dictType"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/dict/type-option-select [get]
// @Security Bearer
func (e *SysDictType) GetSysDictTypeAll(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
req := &dto.SysDictTypeSearch{}
//查询列表
err = req.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
list := make([]system.SysDictType, 0)
s := service.SysDictType{}
s.Log = log
s.Orm = db
err = s.GetAll(req, &list)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.OK(c, list, "查询成功")
}
+1 -1
View File
@@ -28,7 +28,7 @@ $(function(){
</script>
</head>
<body>
<iframe id="iframe" frameborder="0" src="http://doc.zhangwj.com/go-admin-site/" style="width:100%;"></iframe>
<iframe id="iframe" frameborder="0" src="https://doc.go-admin.dev" style="width:100%;"></iframe>
</body>
</html>
`
-53
View File
@@ -1,53 +0,0 @@
package system
import (
"github.com/gin-gonic/gin"
"go-admin/app/admin/models"
"go-admin/tools"
"go-admin/tools/app"
)
func GetInfo(c *gin.Context) {
var roles = make([]string, 1)
roles[0] = tools.GetRoleName(c)
var permissions = make([]string, 1)
permissions[0] = "*:*:*"
var buttons = make([]string, 1)
buttons[0] = "*:*:*"
RoleMenu := models.RoleMenu{}
RoleMenu.RoleId = tools.GetRoleId(c)
var mp = make(map[string]interface{})
mp["roles"] = roles
if tools.GetRoleName(c) == "admin" || tools.GetRoleName(c) == "系统管理员" {
mp["permissions"] = permissions
mp["buttons"] = buttons
} else {
list, _ := RoleMenu.GetPermis()
mp["permissions"] = list
mp["buttons"] = list
}
sysuser := models.SysUser{}
sysuser.UserId = tools.GetUserId(c)
user, err := sysuser.Get()
tools.HasError(err, "", 500)
mp["introduction"] = " am a super administrator"
mp["avatar"] = "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif"
if user.Avatar != "" {
mp["avatar"] = user.Avatar
}
mp["userName"] = user.NickName
mp["userId"] = user.UserId
mp["deptId"] = user.DeptId
mp["name"] = user.NickName
app.OK(c, mp, "")
}
-177
View File
@@ -1,177 +0,0 @@
package system
import (
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"go-admin/app/admin/models"
"go-admin/tools"
"go-admin/tools/app"
)
// @Summary Menu列表数据
// @Description 获取JSON
// @Tags 菜单
// @Param menuName query string false "menuName"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
// @Router /api/v1/menulist [get]
// @Security Bearer
func GetMenuList(c *gin.Context) {
var Menu models.Menu
Menu.MenuName = c.Request.FormValue("menuName")
Menu.Visible = c.Request.FormValue("visible")
Menu.Title = c.Request.FormValue("title")
Menu.DataScope = tools.GetUserIdStr(c)
result, err := Menu.SetMenu()
tools.HasError(err, "抱歉未找到相关信息", -1)
app.OK(c, result, "")
}
// @Summary Menu列表数据
// @Description 获取JSON
// @Tags 菜单
// @Param menuName query string false "menuName"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
// @Router /api/v1/menu [get]
// @Security Bearer
func GetMenu(c *gin.Context) {
var data models.Menu
id, err := tools.StringToInt(c.Param("id"))
data.MenuId = id
result, err := data.GetByMenuId()
tools.HasError(err, "抱歉未找到相关信息", -1)
app.OK(c, result, "")
}
func GetMenuTreeRoleselect(c *gin.Context) {
var Menu models.Menu
var SysRole models.SysRole
id, err := tools.StringToInt(c.Param("roleId"))
SysRole.RoleId = id
result, err := Menu.SetMenuLable()
tools.HasError(err, "抱歉未找到相关信息", -1)
menuIds := make([]int, 0)
if id != 0 {
menuIds, err = SysRole.GetRoleMeunId()
tools.HasError(err, "抱歉未找到相关信息", -1)
}
app.Custum(c, gin.H{
"code": 200,
"menus": result,
"checkedKeys": menuIds,
})
}
// @Summary 获取菜单树
// @Description 获取JSON
// @Tags 菜单
// @Accept application/x-www-form-urlencoded
// @Product application/x-www-form-urlencoded
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/menuTreeselect [get]
// @Security Bearer
func GetMenuTreeelect(c *gin.Context) {
var data models.Menu
result, err := data.SetMenuLable()
tools.HasError(err, "抱歉未找到相关信息", -1)
app.OK(c, result, "")
}
// @Summary 创建菜单
// @Description 获取JSON
// @Tags 菜单
// @Accept application/x-www-form-urlencoded
// @Product application/x-www-form-urlencoded
// @Param menuName formData string true "menuName"
// @Param Path formData string false "Path"
// @Param Action formData string true "Action"
// @Param Permission formData string true "Permission"
// @Param ParentId formData string true "ParentId"
// @Param IsDel formData string true "IsDel"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/menu [post]
// @Security Bearer
func InsertMenu(c *gin.Context) {
var data models.Menu
err := c.BindWith(&data, binding.JSON)
tools.HasError(err, "抱歉未找到相关信息", -1)
data.CreateBy = tools.GetUserIdStr(c)
result, err := data.Create()
tools.HasError(err, "抱歉未找到相关信息", -1)
app.OK(c, result, "")
}
// @Summary 修改菜单
// @Description 获取JSON
// @Tags 菜单
// @Accept application/x-www-form-urlencoded
// @Product application/x-www-form-urlencoded
// @Param id path int true "id"
// @Param data body models.Menu true "body"
// @Success 200 {string} string "{"code": 200, "message": "修改成功"}"
// @Success 200 {string} string "{"code": -1, "message": "修改失败"}"
// @Router /api/v1/menu/{id} [put]
// @Security Bearer
func UpdateMenu(c *gin.Context) {
var data models.Menu
err2 := c.BindWith(&data, binding.JSON)
data.UpdateBy = tools.GetUserIdStr(c)
tools.HasError(err2, "修改失败", -1)
_, err := data.Update(data.MenuId)
tools.HasError(err, "", 501)
app.OK(c, "", "修改成功")
}
// @Summary 删除菜单
// @Description 删除数据
// @Tags 菜单
// @Param id path int true "id"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/menu/{id} [delete]
func DeleteMenu(c *gin.Context) {
var data models.Menu
id, err := tools.StringToInt(c.Param("id"))
data.UpdateBy = tools.GetUserIdStr(c)
_, err = data.Delete(id)
tools.HasError(err, "删除失败", 500)
app.OK(c, "", "删除成功")
}
// @Summary 根据角色名称获取菜单列表数据(左菜单使用)
// @Description 获取JSON
// @Tags 菜单
// @Param id path int true "id"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
// @Router /api/v1/menurole [get]
// @Security Bearer
func GetMenuRole(c *gin.Context) {
var Menu models.Menu
result, err := Menu.SetMenuRole(tools.GetRoleName(c))
tools.HasError(err, "获取失败", 500)
app.OK(c, result, "")
}
// @Summary 获取角色对应的菜单id数组
// @Description 获取JSON
// @Tags 菜单
// @Param id path int true "id"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
// @Router /api/v1/menuids/{id} [get]
// @Security Bearer
func GetMenuIDS(c *gin.Context) {
var data models.RoleMenu
data.RoleName = c.GetString("role")
data.UpdateBy = tools.GetUserIdStr(c)
result, err := data.GetIDS()
tools.HasError(err, "获取失败", 500)
app.OK(c, result, "")
}
-118
View File
@@ -1,118 +0,0 @@
package system
import (
"github.com/gin-gonic/gin"
"go-admin/app/admin/models"
"go-admin/tools"
"go-admin/tools/app"
)
// @Summary 岗位列表数据
// @Description 获取JSON
// @Tags 岗位
// @Param postName query string false "postName"
// @Param postCode query string false "postCode"
// @Param postId query string false "postId"
// @Param status query string false "status"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/post [get]
// @Security Bearer
func GetPostList(c *gin.Context) {
var data models.Post
var err error
var pageSize = 10
var pageIndex = 1
if size := c.Request.FormValue("pageSize"); size != "" {
pageSize, err = tools.StringToInt(size)
}
if index := c.Request.FormValue("pageIndex"); index != "" {
pageIndex, err = tools.StringToInt(index)
}
id := c.Request.FormValue("postId")
data.PostId, _ = tools.StringToInt(id)
data.PostCode = c.Request.FormValue("postCode")
data.PostName = c.Request.FormValue("postName")
data.Status = c.Request.FormValue("status")
data.DataScope = tools.GetUserIdStr(c)
result, count, err := data.GetPage(pageSize, pageIndex)
tools.HasError(err, "", -1)
app.PageOK(c, result, count, pageIndex, pageSize, "")
}
// @Summary 获取岗位信息
// @Description 获取JSON
// @Tags 岗位
// @Param postId path int true "postId"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/post/{postId} [get]
// @Security Bearer
func GetPost(c *gin.Context) {
var Post models.Post
Post.PostId, _ = tools.StringToInt(c.Param("postId"))
result, err := Post.Get()
tools.HasError(err, "抱歉未找到相关信息", -1)
app.OK(c, result, "")
}
// @Summary 添加岗位
// @Description 获取JSON
// @Tags 岗位
// @Accept application/json
// @Product application/json
// @Param data body models.Post true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/post [post]
// @Security Bearer
func InsertPost(c *gin.Context) {
var data models.Post
err := c.Bind(&data)
data.CreateBy = tools.GetUserIdStr(c)
tools.HasError(err, "", 500)
result, err := data.Create()
tools.HasError(err, "", -1)
app.OK(c, result, "")
}
// @Summary 修改岗位
// @Description 获取JSON
// @Tags 岗位
// @Accept application/json
// @Product application/json
// @Param data body models.Post true "body"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/post/ [put]
// @Security Bearer
func UpdatePost(c *gin.Context) {
var data models.Post
err := c.Bind(&data)
data.UpdateBy = tools.GetUserIdStr(c)
tools.HasError(err, "", -1)
result, err := data.Update(data.PostId)
tools.HasError(err, "", -1)
app.OK(c, result, "修改成功")
}
// @Summary 删除岗位
// @Description 删除数据
// @Tags 岗位
// @Param id path int true "id"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 500 {string} string "{"code": 500, "message": "删除失败"}"
// @Router /api/v1/post/{postId} [delete]
func DeletePost(c *gin.Context) {
var data models.Post
data.UpdateBy = tools.GetUserIdStr(c)
IDS := tools.IdsStrToIdsIntGroup("postId", c)
result, err := data.BatchDelete(IDS)
tools.HasError(err, "删除失败", 500)
app.OK(c, result, "删除成功")
}
-163
View File
@@ -1,163 +0,0 @@
package system
import (
"github.com/gin-gonic/gin"
mycasbin "go-admin/pkg/casbin"
"go-admin/app/admin/models"
"go-admin/tools"
"go-admin/tools/app"
)
// @Summary 角色列表数据
// @Description Get JSON
// @Tags 角色/Role
// @Param roleName query string false "roleName"
// @Param status query string false "status"
// @Param roleKey query string false "roleKey"
// @Param pageSize query int false "页条数"
// @Param pageIndex query int false "页码"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/rolelist [get]
// @Security Bearer
func GetRoleList(c *gin.Context) {
var data models.SysRole
var err error
var pageSize = 10
var pageIndex = 1
if size := c.Request.FormValue("pageSize"); size != "" {
pageSize, err = tools.StringToInt(size)
}
if index := c.Request.FormValue("pageIndex"); index != "" {
pageIndex, err = tools.StringToInt(index)
}
data.RoleKey = c.Request.FormValue("roleKey")
data.RoleName = c.Request.FormValue("roleName")
data.Status = c.Request.FormValue("status")
data.DataScope = tools.GetUserIdStr(c)
result, count, err := data.GetPage(pageSize, pageIndex)
tools.HasError(err, "", -1)
app.PageOK(c, result, count, pageIndex, pageSize, "")
}
// @Summary 获取Role数据
// @Description 获取JSON
// @Tags 角色/Role
// @Param roleId path string false "roleId"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
// @Router /api/v1/role [get]
// @Security Bearer
func GetRole(c *gin.Context) {
var Role models.SysRole
Role.RoleId, _ = tools.StringToInt(c.Param("roleId"))
result, err := Role.Get()
menuIds := make([]int, 0)
menuIds, err = Role.GetRoleMeunId()
tools.HasError(err, "抱歉未找到相关信息", -1)
result.MenuIds = menuIds
app.OK(c, result, "")
}
// @Summary 创建角色
// @Description 获取JSON
// @Tags 角色/Role
// @Accept application/json
// @Product application/json
// @Param data body models.SysRole true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/role [post]
func InsertRole(c *gin.Context) {
var data models.SysRole
data.CreateBy = tools.GetUserIdStr(c)
err := c.Bind(&data)
tools.HasError(err, "数据解析失败", 500)
id, err := data.Insert()
tools.HasError(err, "", -1)
data.RoleId = id
var t models.RoleMenu
if len(data.MenuIds) > 0 {
_, err = t.Insert(id, data.MenuIds)
tools.HasError(err, "", -1)
}
_, err = mycasbin.LoadPolicy()
tools.HasError(err, "", -1)
app.OK(c, data, "添加成功")
}
// @Summary 修改用户角色
// @Description 获取JSON
// @Tags 角色/Role
// @Accept application/json
// @Product application/json
// @Param data body models.SysRole true "body"
// @Success 200 {string} string "{"code": 200, "message": "修改成功"}"
// @Success 200 {string} string "{"code": -1, "message": "修改失败"}"
// @Router /api/v1/role [put]
func UpdateRole(c *gin.Context) {
var data models.SysRole
data.UpdateBy = tools.GetUserIdStr(c)
err := c.Bind(&data)
tools.HasError(err, "数据解析失败", -1)
result, err := data.Update(data.RoleId)
tools.HasError(err, "", -1)
var t models.RoleMenu
_, err = t.DeleteRoleMenu(data.RoleId)
tools.HasError(err, "修改失败(delete rm)", -1)
if len(data.MenuIds) > 0 {
_, err2 := t.Insert(data.RoleId, data.MenuIds)
tools.HasError(err2, "修改失败(insert)", -1)
}
_, err = mycasbin.LoadPolicy()
tools.HasError(err, "", -1)
app.OK(c, result, "修改成功")
}
func UpdateRoleDataScope(c *gin.Context) {
var data models.SysRole
data.UpdateBy = tools.GetUserIdStr(c)
err := c.Bind(&data)
tools.HasError(err, "数据解析失败", -1)
result, err := data.Update(data.RoleId)
var t models.SysRoleDept
_, err = t.DeleteRoleDept(data.RoleId)
tools.HasError(err, "添加失败1", -1)
if data.DataScope == "2" {
_, err2 := t.Insert(data.RoleId, data.DeptIds)
tools.HasError(err2, "添加失败2", -1)
}
app.OK(c, result, "修改成功")
}
// @Summary 删除用户角色
// @Description 删除数据
// @Tags 角色/Role
// @Param roleId path int true "roleId"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/role/{roleId} [delete]
func DeleteRole(c *gin.Context) {
var Role models.SysRole
Role.UpdateBy = tools.GetUserIdStr(c)
IDS := tools.IdsStrToIdsIntGroup("roleId", c)
_, err := Role.BatchDelete(IDS)
tools.HasError(err, "删除失败", -1)
_, err = mycasbin.LoadPolicy()
tools.HasError(err, "", -1)
app.OK(c, "", "删除成功")
}
+38 -44
View File
@@ -1,13 +1,7 @@
package system
import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
"go-admin/app/admin/models"
"go-admin/tools/app"
)
// @Summary RoleMenu列表数据
@@ -18,33 +12,33 @@ import (
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
// @Router /api/v1/rolemenu [get]
// @Security Bearer
func GetRoleMenu(c *gin.Context) {
var Rm models.RoleMenu
err := c.ShouldBind(&Rm)
result, err := Rm.Get()
var res app.Response
if err != nil {
res.Msg = "抱歉未找到相关信息"
c.JSON(http.StatusOK, res.ReturnError(200))
return
}
res.Data = result
c.JSON(http.StatusOK, res.ReturnOK())
}
//func GetRoleMenu(c *gin.Context) {
// var Rm models.RoleMenu
// err := c.ShouldBind(&Rm)
// result, err := Rm.Get()
// var res response.Response
// if err != nil {
// res.Msg = "抱歉未找到相关信息"
// c.JSON(http.StatusOK, res.ReturnError(200))
// return
// }
// res.Data = result
// c.JSON(http.StatusOK, res.ReturnOK())
//}
type RoleMenuPost struct {
RoleId string
RoleMenu []models.RoleMenu
}
func InsertRoleMenu(c *gin.Context) {
var res app.Response
res.Msg = "添加成功"
c.JSON(http.StatusOK, res.ReturnOK())
return
}
//func InsertRoleMenu(c *gin.Context) {
//
// var res response.Response
// res.Msg = "添加成功"
// c.JSON(http.StatusOK, res.ReturnOK())
// return
//
//}
// @Summary 删除用户菜单数据
// @Description 删除数据
@@ -54,20 +48,20 @@ func InsertRoleMenu(c *gin.Context) {
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/rolemenu/{id} [delete]
func DeleteRoleMenu(c *gin.Context) {
var t models.RoleMenu
id := c.Param("id")
menuId := c.Request.FormValue("menu_id")
fmt.Println(menuId)
_, err := t.Delete(id, menuId)
if err != nil {
var res app.Response
res.Msg = "删除失败"
c.JSON(http.StatusOK, res.ReturnError(200))
return
}
var res app.Response
res.Msg = "删除成功"
c.JSON(http.StatusOK, res.ReturnOK())
return
}
//func DeleteRoleMenu(c *gin.Context) {
// var t models.RoleMenu
// id := c.Param("id")
// menuId := c.Request.FormValue("menu_id")
// fmt.Println(menuId)
// _, err := t.Delete(id, menuId)
// if err != nil {
// var res response.Response
// res.Msg = "删除失败"
// c.JSON(http.StatusOK, res.ReturnError(200))
// return
// }
// var res response.Response
// res.Msg = "删除成功"
// c.JSON(http.StatusOK, res.ReturnOK())
// return
//}
+58 -29
View File
@@ -1,67 +1,96 @@
package system
import (
"errors"
"fmt"
"net/http"
"strings"
"github.com/gin-gonic/gin"
"go-admin/app/admin/models"
"go-admin/tools"
"go-admin/tools/app"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"go-admin/common/apis"
)
type SysSetting struct {
apis.Api
}
// @Summary 查询系统信息
// @Description 获取JSON
// @Tags 系统信息
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/setting [get]
func GetSetting(c *gin.Context) {
var s models.SysSetting
r, e := s.Get()
func (e *SysSetting) GetSetting(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
if r.Logo != "" {
if !strings.HasPrefix(r.Logo, "http") {
r.Logo = fmt.Sprintf("http://%s/%s", c.Request.Host, r.Logo)
sysSettingService := service.SysSetting{}
sysSettingService.Log = log
sysSettingService.Orm = db
var model = models.SysSetting{}
err = sysSettingService.GetSysSetting(&model)
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
if model.Logo != "" {
if !strings.HasPrefix(model.Logo, "http") {
model.Logo = fmt.Sprintf("http://%s/%s", c.Request.Host, model.Logo)
}
}
tools.HasError(e, "查询失败", 500)
app.OK(c, r, "查询成功")
e.OK(c, model, "查询成功")
}
// @Summary 更新或提交系统信息
// @Description 获取JSON
// @Tags 系统信息
// @Param data body models.SysUser true "body"
// @Param data body dto.SysSettingControl true "body"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/system/setting [post]
func CreateSetting(c *gin.Context) {
var s models.ResponseSystemConfig
if err := c.ShouldBind(&s); err != nil {
app.Error(c, 200, errors.New("缺少必要参数"), "")
func (e *SysSetting) CreateOrUpdateSetting(c *gin.Context) {
control := new(dto.SysSettingControl)
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
var sModel models.SysSetting
sModel.Logo = s.Logo
sModel.Name = s.Name
a, e := sModel.Update()
if e != nil {
app.Error(c, 200, e, "")
//更新操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
if a.Logo != "" {
if !strings.HasPrefix(a.Logo, "http") {
a.Logo = fmt.Sprintf("http://%s/%s", c.Request.Host, a.Logo)
sysSettingService := service.SysSetting{}
sysSettingService.Log = log
sysSettingService.Orm = db
err = sysSettingService.UpdateSysSetting(object)
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "更新失败")
return
}
if object.Logo != "" {
if !strings.HasPrefix(object.Logo, "http") {
object.Logo = fmt.Sprintf("http://%s/%s", c.Request.Host, object.Logo)
}
}
app.OK(c, a, "提交成功")
e.OK(c, object, "提交成功")
}
+242 -15
View File
@@ -1,43 +1,270 @@
package sys_config
import (
"github.com/gin-gonic/gin"
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
"go-admin/app/admin/models/system"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"go-admin/common/apis"
"go-admin/common/log"
"go-admin/tools"
"go-admin/tools/app"
)
type SysConfig struct {
apis.Api
}
// GetSysConfigByKEYForService 根据Key获取SysConfig的Service
func (e *SysConfig) GetSysConfigByKEYForService(c *gin.Context) {
msgID := tools.GenerateMsgIDFromContext(c)
func (e *SysConfig) GetSysConfigList(c *gin.Context) {
log := e.GetLogger(c)
d := new(dto.SysConfigSearch)
db, err := e.GetOrm(c)
if err != nil {
log.Errorf("msgID[%s] error:%s", msgID, err)
app.Error(c, 500, err, "")
log.Error(err)
return
}
//查询列表
err = d.Bind(c)
if err != nil {
log.Errorf("参数验证失败, error:%s", err)
e.Error(c, 500, err, "参数验证失败")
return
}
list := make([]system.SysConfig, 0)
var count int64
s := service.SysConfig{}
s.Log = log
s.Orm = db
err = s.GetSysConfigPage(d, &list, &count)
if err != nil {
log.Errorf("GetSysConfigPage 查询失败, error:%s", err)
e.Error(c, 500, err, "查询失败")
return
}
e.PageOK(c, list, int(count), d.GetPageIndex(), d.GetPageSize(), "查询成功")
}
// GetSysConfigBySysApp 获取系统配置信息,主要注意这里不在验证数据权限
func (e *SysConfig) GetSysConfigBySysApp(c *gin.Context) {
log := e.GetLogger(c)
d := new(dto.SysConfigSearch)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
err = d.Bind(c)
if err != nil {
log.Errorf("参数验证失败, error:%s", err)
e.Error(c, 500, err, "参数验证失败")
return
}
// 控制只读前台的数据
d.IsFrontend = 1
list := make([]system.SysConfig, 0)
s := service.SysConfig{}
s.Log = log
s.Orm = db
err = s.GetSysConfigByKey(d, &list)
if err != nil {
log.Errorf("GetSysConfigPage 查询失败, error:%s", err)
e.Error(c, 500, err, "查询失败")
return
}
mp := make(map[string]string)
for i := 0; i < len(list); i++ {
key := list[i].ConfigKey
if key != "" {
mp[key] = list[i].ConfigValue
}
}
e.OK(c, mp, "查询成功")
}
func (e *SysConfig) GetSysConfig(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysConfigById)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查看详情
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
log.Errorf("Orm获取失败, error:%s", err)
e.Error(c, 500, err, "Orm获取失败")
return
}
var object system.SysConfig
serviceSysLoginLog := service.SysConfig{}
serviceSysLoginLog.Log = log
serviceSysLoginLog.Orm = db
err = serviceSysLoginLog.GetSysConfig(control, &object)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
log.Errorf("Orm获取失败, error:%s", err)
e.Error(c, 500, err, "Orm获取失败")
return
}
e.OK(c, object, "查看成功")
}
func (e *SysConfig) InsertSysConfig(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysConfigControl)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//新增操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
log.Errorf("Orm获取失败, error:%s", err)
e.Error(c, 500, err, "Orm获取失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
log.Errorf("Orm获取失败, error:%s", err)
e.Error(c, 500, err, "Orm获取失败")
return
}
// 设置创建人
object.SetCreateBy(user.GetUserId(c))
serviceSysLoginLog := service.SysConfig{}
serviceSysLoginLog.Orm = db
serviceSysLoginLog.Log = log
err = serviceSysLoginLog.InsertSysConfig(object)
if err != nil {
log.Error(err)
e.Error(c, http.StatusInternalServerError, err, "创建失败")
log.Errorf("Orm获取失败, error:%s", err)
e.Error(c, 500, err, "Orm获取失败")
return
}
e.OK(c, object.GetId(), "创建成功")
}
func (e *SysConfig) UpdateSysConfig(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysConfigControl)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//更新操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
log.Errorf("Orm获取失败, error:%s", err)
e.Error(c, 500, err, "Orm获取失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
log.Errorf("Orm获取失败, error:%s", err)
e.Error(c, 500, err, "Orm获取失败")
return
}
object.SetUpdateBy(user.GetUserId(c))
serviceSysLoginLog := service.SysConfig{}
serviceSysLoginLog.Orm = db
serviceSysLoginLog.Log = log
err = serviceSysLoginLog.UpdateSysConfig(object)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "更新失败")
log.Errorf("Orm获取失败, error:%s", err)
e.Error(c, 500, err, "Orm获取失败")
return
}
e.OK(c, object.GetId(), "更新成功")
}
func (e *SysConfig) DeleteSysConfig(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysConfigById)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//删除操作
err = control.Bind(c)
if err != nil {
log.Errorf("Bind error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
log.Errorf("Orm获取失败, error:%s", err)
e.Error(c, 500, err, "Orm获取失败")
return
}
object, err := control.GenerateM()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
log.Errorf("Orm获取失败, error:%s", err)
e.Error(c, 500, err, "Orm获取失败")
return
}
// 设置编辑人
object.SetUpdateBy(user.GetUserId(c))
serviceSysLoginLog := service.SysConfig{}
serviceSysLoginLog.Orm = db
serviceSysLoginLog.Log = log
err = serviceSysLoginLog.RemoveSysConfig(control, object)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "删除失败")
log.Errorf("Orm获取失败, error:%s", err)
e.Error(c, 500, err, "Orm获取失败")
return
}
e.OK(c, object.GetId(), "删除成功")
}
// GetSysConfigByKEYForService 根据Key获取SysConfig的Service
func (e *SysConfig) GetSysConfigByKEYForService(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
var v dto.SysConfigControl
err = c.Bind(&v)
err = v.Bind(c)
if err != nil {
log.Errorf("msgID[%s] 参数验证错误, error:%s", msgID, err)
app.Error(c, 422, err, "参数验证失败")
log.Errorf("参数验证错误, error:%s", err)
e.Error(c, 422, err, "参数验证失败")
return
}
s := service.SysConfig{}
s.MsgID = msgID
s.Log = log
s.Orm = db
err = s.GetSysConfigByKEY(&v)
if err != nil {
app.Error(c, 500, err, "")
log.Errorf("通过Key获取配置失败, error:%s", err)
e.Error(c, 500, err, "")
return
}
app.OK(c, v, s.Msg)
e.OK(c, v, s.Msg)
}
+283
View File
@@ -0,0 +1,283 @@
package sys_dept
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"go-admin/app/admin/models/system"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"go-admin/common/apis"
)
type SysDept struct {
apis.Api
}
// @Summary 分页部门列表数据
// @Description 分页列表
// @Tags 部门
// @Param name query string false "name"
// @Param id query string false "id"
// @Param position query string false "position"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/dept [get]
// @Security Bearer
func (e *SysDept) GetSysDeptList(c *gin.Context) {
log := e.GetLogger(c)
d := new(dto.SysDeptSearch)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查询列表
err = d.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
list := make([]system.SysDept, 0)
serviceStudent := service.SysDept{}
serviceStudent.Log = log
serviceStudent.Orm = db
list, err = serviceStudent.SetDeptPage(d)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.OK(c, list, "查询成功")
}
// @Summary 部门列表数据
// @Description 获取JSON
// @Tags 部门
// @Param deptId path string false "deptId"
// @Param position query string false "position"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/dept/{deptId} [get]
// @Security Bearer
func (e *SysDept) GetSysDept(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysDeptById)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查看详情
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object system.SysDept
serviceSysOperlog := service.SysDept{}
serviceSysOperlog.Log = log
serviceSysOperlog.Orm = db
err = serviceSysOperlog.GetSysDept(control, &object)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.OK(c, object, "查看成功")
}
// @Summary 添加部门
// @Description 获取JSON
// @Tags 部门
// @Accept application/json
// @Product application/json
// @Param data body dto.SysDeptControl true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/dept [post]
// @Security Bearer
func (e *SysDept) InsertSysDept(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysDeptControl)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//新增操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
// 设置创建人
object.SetCreateBy(user.GetUserId(c))
serviceSysDept := service.SysDept{}
serviceSysDept.Orm = db
serviceSysDept.Log = log
err = serviceSysDept.InsertSysDept(object)
if err != nil {
log.Error(err)
e.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(c, object.GetId(), "创建成功")
}
// @Summary 修改部门
// @Description 获取JSON
// @Tags 部门
// @Accept application/json
// @Product application/json
// @Param id path int true "id"
// @Param data body dto.SysDeptControl true "body"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/dept/{deptId} [put]
// @Security Bearer
func (e *SysDept) UpdateSysDept(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysDeptControl)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//更新操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
object.SetUpdateBy(user.GetUserId(c))
serviceSysDept := service.SysDept{}
serviceSysDept.Orm = db
serviceSysDept.Log = log
err = serviceSysDept.UpdateSysDept(object)
if err != nil {
log.Error(err)
return
}
e.OK(c, object.GetId(), "更新成功")
}
// @Summary 删除部门
// @Description 删除数据
// @Tags 部门
// @Param data body dto.SysDeptById true "body"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/dept [delete]
func (e *SysDept) DeleteSysDept(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysDeptById)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//删除操作
err = control.Bind(c)
if err != nil {
log.Errorf("Bind error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
serviceSysDept := service.SysDept{}
serviceSysDept.Orm = db
serviceSysDept.Log = log
err = serviceSysDept.RemoveSysDept(control)
if err != nil {
log.Errorf("RemoveSysDept error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "删除失败")
return
}
e.OK(c, control.GetId(), "删除成功")
}
// GetDeptTree 用户管理 左侧部门树
func (e *SysDept) GetDeptTree(c *gin.Context) {
log := e.GetLogger(c)
d := new(dto.SysDeptSearch)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查询列表
err = d.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
list := make([]dto.DeptLabel, 0)
serviceStudent := service.SysDept{}
serviceStudent.Log = log
serviceStudent.Orm = db
list, err = serviceStudent.SetDeptTree(d)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
//var Dept models.SysDepts
//Dept.DeptName = c.Request.FormValue("deptName")
//Dept.Status = c.Request.FormValue("status")
//Dept.DeptId, _ = tools.StringToInt(c.Request.FormValue("deptId"))
//result, err := Dept.SetDept(false)
//tools.HasError(err, "抱歉未找到相关信息", -1)
e.OK(c, list, "")
}
//func (e *SysDept) GetDeptTreeRoleSelect(c *gin.Context) {
// log := e.GetLogger(c)
// db, err := tools.GetOrm(c)
// if err != nil {
// log.Error(err)
// return
// }
//
// s := service.SysDept{}
// s.Orm = db
// s.MsgID = msgID
// id, err := tools.StringToInt(c.Param("roleId"))
// result, err := s.SetDeptLabel()
// if err != nil {
// log.Errorf("SetDeptLabel error, %s", msgID, err.Error())
// e.Error(c, http.StatusInternalServerError, err, "")
// }
// menuIds := make([]int, 0)
// if id != 0 {
// menuIds, err = s.GetRoleDeptId(id)
// tools.HasError(err, "抱歉未找到相关信息", -1)
// }
// e.OK(c, gin.H{
// "depts": result,
// "checkedKeys": menuIds,
// }, "")
//}
@@ -0,0 +1,183 @@
package sys_login_log
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
"go-admin/app/admin/models/system"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"go-admin/common/apis"
)
type SysLoginLog struct {
apis.Api
}
func (e *SysLoginLog) GetSysLoginLogList(c *gin.Context) {
log := e.GetLogger(c)
d := new(dto.SysLoginLogSearch)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查询列表
err = d.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
list := make([]system.SysLoginLog, 0)
var count int64
serviceStudent := service.SysLoginLog{}
serviceStudent.Log = log
serviceStudent.Orm = db
err = serviceStudent.GetSysLoginLogPage(d, &list, &count)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.PageOK(c, list, int(count), d.GetPageIndex(), d.GetPageSize(), "查询成功")
}
func (e *SysLoginLog) GetSysLoginLog(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysLoginLogById)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查看详情
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object system.SysLoginLog
serviceSysLoginLog := service.SysLoginLog{}
serviceSysLoginLog.Log = log
serviceSysLoginLog.Orm = db
err = serviceSysLoginLog.GetSysLoginLog(control, &object)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.OK(c, object, "查看成功")
}
func (e *SysLoginLog) InsertSysLoginLog(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysLoginLogControl)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//新增操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
// 设置创建人
object.SetCreateBy(user.GetUserId(c))
serviceSysLoginLog := service.SysLoginLog{}
serviceSysLoginLog.Orm = db
serviceSysLoginLog.Log = log
err = serviceSysLoginLog.InsertSysLoginLog(object)
if err != nil {
log.Errorf("InsertSysLoginLog error, %s", err)
e.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(c, object.GetId(), "创建成功")
}
func (e *SysLoginLog) UpdateSysLoginLog(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysLoginLogControl)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//更新操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
object.SetUpdateBy(user.GetUserId(c))
serviceSysLoginLog := service.SysLoginLog{}
serviceSysLoginLog.Orm = db
serviceSysLoginLog.Log = log
err = serviceSysLoginLog.UpdateSysLoginLog(object)
if err != nil {
log.Errorf("UpdateSysLoginLog error, %s", err)
e.Error(c, http.StatusInternalServerError, err, "更新失败")
return
}
e.OK(c, object.GetId(), "更新成功")
}
func (e *SysLoginLog) DeleteSysLoginLog(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysLoginLogById)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//删除操作
err = control.Bind(c)
if err != nil {
log.Errorf("Bind error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.GenerateM()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
// 设置编辑人
object.SetUpdateBy(user.GetUserId(c))
serviceSysLoginLog := service.SysLoginLog{}
serviceSysLoginLog.Orm = db
serviceSysLoginLog.Log = log
err = serviceSysLoginLog.RemoveSysLoginLog(control, object)
if err != nil {
log.Errorf("RemoveSysLoginLog error, %s", err)
e.Error(c, http.StatusInternalServerError, err, "删除失败")
return
}
e.OK(c, object.GetId(), "删除成功")
}
+362
View File
@@ -0,0 +1,362 @@
package sys_menu
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
"go-admin/app/admin/models"
"go-admin/app/admin/models/system"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"go-admin/common/apis"
)
type SysMenu struct {
apis.Api
}
// @Summary Menu列表数据
// @Description 获取JSON
// @Tags 菜单
// @Param menuName query string false "menuName"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
// @Router /api/v1/menulist [get]
// @Security Bearer
func (e *SysMenu) GetSysMenuList(c *gin.Context) {
log := e.GetLogger(c)
d := new(dto.SysMenuSearch)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查询列表
err = d.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var list *[]system.SysMenu
serviceSysMenu := service.SysMenu{}
serviceSysMenu.Log = log
serviceSysMenu.Orm = db
list, err = serviceSysMenu.GetSysMenuPage(d)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.OK(c, list, "查询成功")
}
// @Summary Menu详情数据
// @Description 获取JSON
// @Tags 菜单
// @Param menuName query string false "menuName"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
// @Router /api/v1/menu/{id} [get]
// @Security Bearer
func (e *SysMenu) GetSysMenu(c *gin.Context) {
control := new(dto.SysMenuById)
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查看详情
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object system.SysMenu
serviceSysMenu := service.SysMenu{}
serviceSysMenu.Log = log
serviceSysMenu.Orm = db
err = serviceSysMenu.GetSysMenu(control, &object)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.OK(c, object, "查看成功")
}
// @Summary 创建菜单
// @Description 获取JSON
// @Tags 菜单
// @Accept application/x-www-form-urlencoded
// @Product application/x-www-form-urlencoded
// @Param menuName formData string true "menuName"
// @Param Path formData string false "Path"
// @Param Action formData string true "Action"
// @Param Permission formData string true "Permission"
// @Param ParentId formData string true "ParentId"
// @Param IsDel formData string true "IsDel"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/menu [post]
// @Security Bearer
func (e *SysMenu) InsertSysMenu(c *gin.Context) {
control := new(dto.SysMenuControl)
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//新增操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
// 设置创建人
object.SetCreateBy(user.GetUserId(c))
serviceSysMenu := service.SysMenu{}
serviceSysMenu.Orm = db
serviceSysMenu.Log = log
err = serviceSysMenu.InsertSysMenu(object)
if err != nil {
log.Error(err)
e.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(c, object.GetId(), "创建成功")
}
// @Summary 修改菜单
// @Description 获取JSON
// @Tags 菜单
// @Accept application/x-www-form-urlencoded
// @Product application/x-www-form-urlencoded
// @Param id path int true "id"
// @Param data body dto.SysMenuControl true "body"
// @Success 200 {string} string "{"code": 200, "message": "修改成功"}"
// @Success 200 {string} string "{"code": -1, "message": "修改失败"}"
// @Router /api/v1/menu/{id} [put]
// @Security Bearer
func (e *SysMenu) UpdateSysMenu(c *gin.Context) {
control := new(dto.SysMenuControl)
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//更新操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
object.SetUpdateBy(user.GetUserId(c))
serviceSysMenu := service.SysMenu{}
serviceSysMenu.Orm = db
serviceSysMenu.Log = log
err = serviceSysMenu.UpdateSysMenu(object)
if err != nil {
log.Error(err)
return
}
e.OK(c, object.GetId(), "更新成功")
}
// @Summary 删除菜单
// @Description 删除数据
// @Tags 菜单
// @Param data body dto.SysMenuById true "body"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/menu/ [delete]
func (e *SysMenu) DeleteSysMenu(c *gin.Context) {
control := new(dto.SysMenuById)
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//删除操作
err = control.Bind(c)
if err != nil {
log.Errorf("Bind error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
serviceSysMenu := service.SysMenu{}
serviceSysMenu.Orm = db
serviceSysMenu.Log = log
err = serviceSysMenu.RemoveSysMenu(control)
if err != nil {
log.Errorf("RemoveSysMenu error, %s", err)
e.Error(c, http.StatusInternalServerError, err, "删除失败")
return
}
e.OK(c, control.GetId(), "删除成功")
}
// @Summary 根据角色名称获取菜单列表数据(左菜单使用)
// @Description 获取JSON
// @Tags 菜单
// @Param id path int true "id"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
// @Router /api/v1/menurole [get]
// @Security Bearer
func (e *SysMenu) GetMenuRole(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
serviceSysMenu := service.SysMenu{}
serviceSysMenu.Log = log
serviceSysMenu.Orm = db
result, err := serviceSysMenu.SetMenuRole(user.GetRoleName(c))
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
e.OK(c, result, "")
}
// @Summary 获取角色对应的菜单id数组
// @Description 获取JSON
// @Tags 菜单
// @Param id path int true "id"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
// @Router /api/v1/menuids/{id} [get]
// @Security Bearer
func (e *SysMenu) GetMenuIDS(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
var data models.RoleMenu
data.RoleName = c.GetString("role")
data.UpdateBy = user.GetUserIdStr(c)
result, err := data.GetIDS(db)
if err != nil {
log.Errorf("GetIDS error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "获取失败")
return
}
e.OK(c, result, "")
}
//// GetMenuTreeRoleselect 角色修改中的菜单列表
//func (e *SysMenu) GetMenuTreeRoleselect(c *gin.Context) {
// var Menu models.Menu
// var SysRole models.SysRole
//
// id, err := tools.StringToInt(c.Param("roleId"))
// SysRole.RoleId = id
// //var r *models.SysRole
// r, err := SysRole.Get()
//
// var result *[]models.MenuLable
// menuIds := make([]int, 0)
// if r.RoleKey != "admin" {
// result, err = Menu.SetMenuLabel()
// tools.HasError(err, "抱歉未找到相关信息", -1)
// if id != 0 {
// menuIds, err = SysRole.GetRoleMeunId()
// tools.HasError(err, "抱歉未找到相关信息", -1)
// }
// }
// app.Custum(c, gin.H{
// "code": 200,
// "menus": result,
// "checkedKeys": menuIds,
// })
//}
// @Summary 获取菜单树
// @Description 获取JSON
// @Tags 菜单
// @Accept application/x-www-form-urlencoded
// @Product application/x-www-form-urlencoded
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/menuTreeselect [get]
// @Security Bearer
func (e *SysMenu) GetMenuTreeSelect(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
d := new(dto.SelectRole)
err = c.BindUri(d)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
serviceSysMenu := service.SysMenu{}
serviceSysMenu.Log = log
serviceSysMenu.Orm = db
result, err := serviceSysMenu.SetSysMenuLabel()
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
s := service.SysRole{}
s.Log = log
s.Orm = db
menuIds, err := s.GetRoleMenuId(db, d.RoleId)
if err != nil {
log.Errorf("GetIDS error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "")
return
}
e.OK(c, gin.H{
"menus": result,
"checkedKeys": menuIds,
}, "获取成功")
}
@@ -0,0 +1,173 @@
package sys_opera_log
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
"go-admin/app/admin/models/system"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"go-admin/common/apis"
)
type SysOperaLog struct {
apis.Api
}
func (e *SysOperaLog) GetSysOperaLogList(c *gin.Context) {
log := e.GetLogger(c)
d := new(dto.SysOperaLogSearch)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查询列表
err = d.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
list := make([]system.SysOperaLog, 0)
var count int64
serviceStudent := service.SysOperaLog{}
serviceStudent.Log = log
serviceStudent.Orm = db
err = serviceStudent.GetSysOperaLogPage(d, &list, &count)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.PageOK(c, list, int(count), d.GetPageIndex(), d.GetPageSize(), "查询成功")
}
func (e *SysOperaLog) GetSysOperaLog(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysOperaLogById)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查看详情
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object system.SysOperaLog
serviceSysOperlog := service.SysOperaLog{}
serviceSysOperlog.Log = log
serviceSysOperlog.Orm = db
err = serviceSysOperlog.GetSysOperaLog(control, &object)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.OK(c, object, "查看成功")
}
func (e *SysOperaLog) InsertSysOperaLog(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysOperaLogControl)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//新增操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
// 设置创建人
object.SetCreateBy(user.GetUserId(c))
serviceSysOperaLog := service.SysOperaLog{}
serviceSysOperaLog.Orm = db
serviceSysOperaLog.Log = log
err = serviceSysOperaLog.InsertSysOperaLog(object)
if err != nil {
log.Error(err)
e.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(c, object.GetId(), "创建成功")
}
func (e *SysOperaLog) UpdateSysOperaLog(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysOperaLogControl)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//更新操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
object.SetUpdateBy(user.GetUserId(c))
serviceSysOperaLog := service.SysOperaLog{}
serviceSysOperaLog.Orm = db
serviceSysOperaLog.Log = log
err = serviceSysOperaLog.UpdateSysOperaLog(object)
if err != nil {
log.Error(err)
return
}
e.OK(c, object.GetId(), "更新成功")
}
func (e *SysOperaLog) DeleteSysOperaLog(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysOperaLogById)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//删除操作
err = control.Bind(c)
if err != nil {
log.Errorf("Bind error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
serviceSysOperaLog := service.SysOperaLog{}
serviceSysOperaLog.Orm = db
serviceSysOperaLog.Log = log
err = serviceSysOperaLog.RemoveSysOperaLog(control)
if err != nil {
log.Error(err)
return
}
e.OK(c, control.GetId(), "删除成功")
}
+218
View File
@@ -0,0 +1,218 @@
package sys_post
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"go-admin/app/admin/models/system"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"go-admin/common/apis"
)
type SysPost struct {
apis.Api
}
// @Summary 岗位列表数据
// @Description 获取JSON
// @Tags 岗位
// @Param postName query string false "postName"
// @Param postCode query string false "postCode"
// @Param postId query string false "postId"
// @Param status query string false "status"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/post [get]
// @Security Bearer
func (e *SysPost) GetSysPostList(c *gin.Context) {
log := e.GetLogger(c)
d := new(dto.SysPostSearch)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查询列表
err = d.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
list := make([]system.SysPost, 0)
var count int64
serviceStudent := service.SysPost{}
serviceStudent.Log = log
serviceStudent.Orm = db
err = serviceStudent.GetSysPostPage(d, &list, &count)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.PageOK(c, list, int(count), d.GetPageIndex(), d.GetPageSize(), "查询成功")
}
// @Summary 获取岗位信息
// @Description 获取JSON
// @Tags 岗位
// @Param postId path int true "postId"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/post/{postId} [get]
// @Security Bearer
func (e *SysPost) GetSysPost(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysPostById)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查看详情
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object system.SysPost
serviceSysOperlog := service.SysPost{}
serviceSysOperlog.Log = log
serviceSysOperlog.Orm = db
err = serviceSysOperlog.GetSysPost(control, &object)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.OK(c, object, "查看成功")
}
// @Summary 添加岗位
// @Description 获取JSON
// @Tags 岗位
// @Accept application/json
// @Product application/json
// @Param data body dto.SysPostControl true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/post [post]
// @Security Bearer
func (e *SysPost) InsertSysPost(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysPostControl)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//新增操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
// 设置创建人
object.SetCreateBy(user.GetUserId(c))
serviceSysPost := service.SysPost{}
serviceSysPost.Orm = db
serviceSysPost.Log = log
err = serviceSysPost.InsertSysPost(object)
if err != nil {
log.Error(err)
e.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(c, object.GetId(), "创建成功")
}
// @Summary 修改岗位
// @Description 获取JSON
// @Tags 岗位
// @Accept application/json
// @Product application/json
// @Param data body dto.SysPostControl true "body"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/post/ [put]
// @Security Bearer
func (e *SysPost) UpdateSysPost(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysPostControl)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//更新操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
object.SetUpdateBy(user.GetUserId(c))
serviceSysPost := service.SysPost{}
serviceSysPost.Orm = db
serviceSysPost.Log = log
err = serviceSysPost.UpdateSysPost(object)
if err != nil {
log.Error(err)
return
}
e.OK(c, object.GetId(), "更新成功")
}
// @Summary 删除岗位
// @Description 删除数据
// @Tags 岗位
// @Param id path int true "id"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 500 {string} string "{"code": 500, "message": "删除失败"}"
// @Router /api/v1/post/{postId} [delete]
func (e *SysPost) DeleteSysPost(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysPostById)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//删除操作
err = control.Bind(c)
if err != nil {
log.Errorf("Bind error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
serviceSysPost := service.SysPost{}
serviceSysPost.Orm = db
serviceSysPost.Log = log
err = serviceSysPost.RemoveSysPost(control)
if err != nil {
log.Error(err)
return
}
e.OK(c, control.GetId(), "删除成功")
}
+273
View File
@@ -0,0 +1,273 @@
package sys_role
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"go-admin/app/admin/models/system"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"go-admin/common/apis"
"go-admin/common/global"
)
type SysRole struct {
apis.Api
}
// @Summary 角色列表数据
// @Description Get JSON
// @Tags 角色/Role
// @Param roleName query string false "roleName"
// @Param status query string false "status"
// @Param roleKey query string false "roleKey"
// @Param pageSize query int false "页条数"
// @Param pageIndex query int false "页码"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/role [get]
// @Security Bearer
func (e *SysRole) GetSysRoleList(c *gin.Context) {
log := e.GetLogger(c)
d := new(dto.SysRoleSearch)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查询列表
err = d.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
list := make([]system.SysRole, 0)
var count int64
s := service.SysRole{}
s.Log = log
s.Orm = db
err = s.GetSysRolePage(d, &list, &count)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.PageOK(c, list, int(count), d.GetPageIndex(), d.GetPageSize(), "查询成功")
}
// @Summary 获取Role数据
// @Description 获取JSON
// @Tags 角色/Role
// @Param roleId path string false "roleId"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
// @Router /api/v1/role/{id} [get]
// @Security Bearer
func (e *SysRole) GetSysRole(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysRoleById)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//查看详情
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object system.SysRole
s := service.SysRole{}
s.Log = log
s.Orm = db
err = s.GetSysRole(control, &object)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.OK(c, object, "查看成功")
}
// @Summary 创建角色
// @Description 获取JSON
// @Tags 角色/Role
// @Accept application/json
// @Product application/json
// @Param data body dto.SysRoleControl true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/role [post]
// @Security Bearer
func (e *SysRole) InsertSysRole(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysRoleControl)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//新增操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
// 设置创建人
object.CreateBy = user.GetUserId(c)
if object.Status == "" {
object.Status = "2"
}
s := service.SysRole{}
s.Orm = db
s.Log = log
err = s.InsertSysRole(object)
if err != nil {
log.Error(err)
e.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
_, err = global.LoadPolicy(c)
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "")
return
}
e.OK(c, object.GetId(), "创建成功")
}
// @Summary 修改用户角色
// @Description 获取JSON
// @Tags 角色/Role
// @Accept application/json
// @Product application/json
// @Param data body dto.SysRoleControl true "body"
// @Success 200 {string} string "{"code": 200, "message": "修改成功"}"
// @Success 200 {string} string "{"code": -1, "message": "修改失败"}"
// @Router /api/v1/role/{id} [put]
// @Security Bearer
func (e *SysRole) UpdateSysRole(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysRoleControl)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//更新操作
err = control.Bind(c)
if err != nil {
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
return
}
object.UpdateBy = user.GetUserId(c)
s := service.SysRole{}
s.Orm = db
s.Log = log
err = s.UpdateSysRole(object)
if err != nil {
log.Error(err)
return
}
_, err = global.LoadPolicy(c)
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "")
return
}
e.OK(c, object.GetId(), "更新成功")
}
// @Summary 删除用户角色
// @Description 删除数据
// @Tags 角色/Role
// @Param data body dto.SysRoleById true "body"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/role [delete]
// @Security Bearer
func (e *SysRole) DeleteSysRole(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.SysRoleById)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//删除操作
err = control.Bind(c)
if err != nil {
log.Errorf("Bind error: %s", err)
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
s := service.SysRole{}
s.Orm = db
s.Log = log
err = s.RemoveSysRole(control)
if err != nil {
log.Error(err)
e.Error(c, http.StatusInternalServerError, err, "")
return
}
_, err = global.LoadPolicy(c)
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "")
return
}
e.OK(c, control.GetId(), "删除成功")
}
func (e *SysRole) UpdateRoleDataScope(c *gin.Context) {
log := e.GetLogger(c)
control := new(dto.RoleDataScopeReq)
db, err := e.GetOrm(c)
if err != nil {
log.Error(err)
return
}
//更新操作
err = c.Bind(control)
if err != nil {
log.Errorf("request bind error, %s", err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
data := &system.SysRole{
RoleId: control.RoleId,
DataScope: control.DataScope,
DeptIds: control.DeptIds,
}
data.UpdateBy = user.GetUserId(c)
s := &service.SysRole{}
s.Orm = db
s.Log = log
err = s.UpdateDataScope(data)
if err != nil {
e.Error(c, http.StatusInternalServerError, err, "")
return
}
e.OK(c, nil, "操作成功")
}
-234
View File
@@ -1,234 +0,0 @@
package system
import (
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"github.com/google/uuid"
"go-admin/app/admin/models"
"go-admin/common/global"
"go-admin/tools"
"go-admin/tools/app"
)
// @Summary 列表用户信息数据
// @Description 获取JSON
// @Tags 用户
// @Param username query string false "username"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
// @Router /api/v1/sysUserList [get]
// @Security Bearer
func GetSysUserList(c *gin.Context) {
var data models.SysUser
var err error
var pageSize = 10
var pageIndex = 1
size := c.Request.FormValue("pageSize")
if size != "" {
pageSize, err = tools.StringToInt(size)
}
index := c.Request.FormValue("pageIndex")
if index != "" {
pageIndex, err = tools.StringToInt(index)
}
data.Username = c.Request.FormValue("username")
data.Status = c.Request.FormValue("status")
data.Phone = c.Request.FormValue("phone")
postId := c.Request.FormValue("postId")
data.PostId, _ = tools.StringToInt(postId)
deptId := c.Request.FormValue("deptId")
data.DeptId, _ = tools.StringToInt(deptId)
data.DataScope = tools.GetUserIdStr(c)
result, count, err := data.GetPage(pageSize, pageIndex)
tools.HasError(err, "", -1)
app.PageOK(c, result, count, pageIndex, pageSize, "")
}
// @Summary 获取用户
// @Description 获取JSON
// @Tags 用户
// @Param userId path int true "用户编码"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/sysUser/{userId} [get]
// @Security Bearer
func GetSysUser(c *gin.Context) {
var SysUser models.SysUser
SysUser.UserId, _ = tools.StringToInt(c.Param("userId"))
result, err := SysUser.Get()
tools.HasError(err, "抱歉未找到相关信息", -1)
var SysRole models.SysRole
var Post models.Post
roles, err := SysRole.GetList()
posts, err := Post.GetList()
postIds := make([]int, 0)
postIds = append(postIds, result.PostId)
roleIds := make([]int, 0)
roleIds = append(roleIds, result.RoleId)
app.Custum(c, gin.H{
"code": 200,
"data": result,
"postIds": postIds,
"roleIds": roleIds,
"roles": roles,
"posts": posts,
})
}
// @Summary 获取个人中心用户
// @Description 获取JSON
// @Tags 个人中心
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/user/profile [get]
// @Security Bearer
func GetSysUserProfile(c *gin.Context) {
var SysUser models.SysUser
userId := tools.GetUserIdStr(c)
SysUser.UserId, _ = tools.StringToInt(userId)
result, err := SysUser.Get()
tools.HasError(err, "抱歉未找到相关信息", -1)
var SysRole models.SysRole
var Post models.Post
var Dept models.SysDept
//获取角色列表
roles, err := SysRole.GetList()
//获取职位列表
posts, err := Post.GetList()
//获取部门列表
Dept.DeptId = result.DeptId
dept, err := Dept.Get()
postIds := make([]int, 0)
postIds = append(postIds, result.PostId)
roleIds := make([]int, 0)
roleIds = append(roleIds, result.RoleId)
app.Custum(c, gin.H{
"code": 200,
"data": result,
"postIds": postIds,
"roleIds": roleIds,
"roles": roles,
"posts": posts,
"dept": dept,
})
}
// @Summary 获取用户角色和职位
// @Description 获取JSON
// @Tags 用户
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/sysUser [get]
// @Security Bearer
func GetSysUserInit(c *gin.Context) {
var SysRole models.SysRole
var Post models.Post
roles, err := SysRole.GetList()
posts, err := Post.GetList()
tools.HasError(err, "抱歉未找到相关信息", -1)
mp := make(map[string]interface{}, 2)
mp["roles"] = roles
mp["posts"] = posts
app.OK(c, mp, "")
}
// @Summary 创建用户
// @Description 获取JSON
// @Tags 用户
// @Accept application/json
// @Product application/json
// @Param data body models.SysUser true "用户数据"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/sysUser [post]
func InsertSysUser(c *gin.Context) {
var sysuser models.SysUser
err := c.BindWith(&sysuser, binding.JSON)
tools.HasError(err, "非法数据格式", 500)
sysuser.CreateBy = tools.GetUserIdStr(c)
id, err := sysuser.Insert()
tools.HasError(err, "添加失败", 500)
app.OK(c, id, "添加成功")
}
// @Summary 修改用户数据
// @Description 获取JSON
// @Tags 用户
// @Accept application/json
// @Product application/json
// @Param data body models.SysUser true "body"
// @Success 200 {string} string "{"code": 200, "message": "修改成功"}"
// @Success 200 {string} string "{"code": -1, "message": "修改失败"}"
// @Router /api/v1/sysuser/{userId} [put]
func UpdateSysUser(c *gin.Context) {
var data models.SysUser
err := c.Bind(&data)
tools.HasError(err, "数据解析失败", -1)
data.UpdateBy = tools.GetUserIdStr(c)
result, err := data.Update(data.UserId)
tools.HasError(err, "修改失败", 500)
app.OK(c, result, "修改成功")
}
// @Summary 删除用户数据
// @Description 删除数据
// @Tags 用户
// @Param userId path int true "userId"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/sysuser/{userId} [delete]
func DeleteSysUser(c *gin.Context) {
var data models.SysUser
data.UpdateBy = tools.GetUserIdStr(c)
IDS := tools.IdsStrToIdsIntGroup("userId", c)
result, err := data.BatchDelete(IDS)
tools.HasError(err, "删除失败", 500)
app.OK(c, result, "删除成功")
}
// @Summary 修改头像
// @Description 获取JSON
// @Tags 用户
// @Accept multipart/form-data
// @Param file formData file true "file"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/user/profileAvatar [post]
func InsetSysUserAvatar(c *gin.Context) {
form, _ := c.MultipartForm()
files := form.File["upload[]"]
guid := uuid.New().String()
filPath := "static/uploadfile/" + guid + ".jpg"
for _, file := range files {
global.Logger.Debug(file.Filename)
// 上传文件至指定目录
_ = c.SaveUploadedFile(file, filPath)
}
sysuser := models.SysUser{}
sysuser.UserId = tools.GetUserId(c)
sysuser.Avatar = "/" + filPath
sysuser.UpdateBy = tools.GetUserIdStr(c)
sysuser.Update(sysuser.UserId)
app.OK(c, filPath, "修改成功")
}
func SysUserUpdatePwd(c *gin.Context) {
var pwd models.SysUserPwd
err := c.Bind(&pwd)
tools.HasError(err, "数据解析失败", 500)
sysuser := models.SysUser{}
sysuser.UserId = tools.GetUserId(c)
sysuser.SetPwd(pwd)
app.OK(c, "", "密码修改成功")
}
+22 -20
View File
@@ -4,10 +4,10 @@ import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"go-admin/app/admin/models/tools"
tools2 "go-admin/tools"
"go-admin/tools/app"
)
// @Summary 分页列表数据 / page list data
@@ -16,35 +16,37 @@ import (
// @Param tableName query string false "tableName / 数据表名称"
// @Param pageSize query int false "pageSize / 页条数"
// @Param pageIndex query int false "pageIndex / 页码"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/db/columns/page [get]
func GetDBColumnList(c *gin.Context) {
func (e *Gen) GetDBColumnList(c *gin.Context) {
log := e.GetLogger(c)
var data tools.DBColumns
var err error
var pageSize = 10
var pageIndex = 1
if size := c.Request.FormValue("pageSize"); size != "" {
pageSize, err = tools2.StringToInt(size)
pageSize, err = pkg.StringToInt(size)
}
if index := c.Request.FormValue("pageIndex"); index != "" {
pageIndex, err = tools2.StringToInt(index)
pageIndex, err = pkg.StringToInt(index)
}
db, err := pkg.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "数据库连接获取失败")
return
}
data.TableName = c.Request.FormValue("tableName")
tools2.Assert(data.TableName == "", "table name cannot be empty!", 500)
result, count, err := data.GetPage(pageSize, pageIndex)
tools2.HasError(err, "", -1)
var mp = make(map[string]interface{}, 3)
mp["list"] = result
mp["count"] = count
mp["pageIndex"] = pageIndex
mp["pageSize"] = pageSize
var res app.Response
res.Data = mp
c.JSON(http.StatusOK, res.ReturnOK())
pkg.Assert(data.TableName == "", "table name cannot be empty!", 500)
result, count, err := data.GetPage(db, pageSize, pageIndex)
if err != nil {
log.Errorf("GetPage error, %s", err.Error())
e.Error(c, 500, err, "")
return
}
e.PageOK(c, result, count, pageIndex, pageSize, "查询成功")
}
+28 -22
View File
@@ -1,14 +1,15 @@
package tools
import (
"errors"
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/config"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"go-admin/app/admin/models/tools"
tools2 "go-admin/tools"
"go-admin/tools/app"
"go-admin/tools/config"
)
// @Summary 分页列表数据 / page list data
@@ -17,39 +18,44 @@ import (
// @Param tableName query string false "tableName / 数据表名称"
// @Param pageSize query int false "pageSize / 页条数"
// @Param pageIndex query int false "pageIndex / 页码"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/db/tables/page [get]
func GetDBTableList(c *gin.Context) {
var res app.Response
func (e *Gen) GetDBTableList(c *gin.Context) {
//var res response.Response
var data tools.DBTables
var err error
var pageSize = 10
var pageIndex = 1
log := e.GetLogger(c)
if config.DatabaseConfig.Driver == "sqlite3" || config.DatabaseConfig.Driver == "postgres" {
res.Msg = "对不起,sqlite3 或 postgres 不支持代码生成!"
c.JSON(http.StatusOK, res.ReturnError(500))
err = errors.New("对不起,sqlite3 或 postgres 不支持代码生成!")
log.Warn(err)
e.Error(c, 403, err, "")
//c.JSON(http.StatusOK, res.ReturnError(500))
return
}
if size := c.Request.FormValue("pageSize"); size != "" {
pageSize, err = tools2.StringToInt(size)
pageSize, err = pkg.StringToInt(size)
}
if index := c.Request.FormValue("pageIndex"); index != "" {
pageIndex, err = tools2.StringToInt(index)
pageIndex, err = pkg.StringToInt(index)
}
db, err := pkg.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "数据库连接获取失败")
return
}
data.TableName = c.Request.FormValue("tableName")
result, count, err := data.GetPage(pageSize, pageIndex)
tools2.HasError(err, "", -1)
var mp = make(map[string]interface{}, 3)
mp["list"] = result
mp["count"] = count
mp["pageIndex"] = pageIndex
mp["pageSize"] = pageSize
res.Data = mp
c.JSON(http.StatusOK, res.ReturnOK())
result, count, err := data.GetPage(db, pageSize, pageIndex)
if err != nil {
log.Errorf("GetPage error, %s", err.Error())
e.Error(c, 500, err, "")
return
}
e.PageOK(c, result, count, pageIndex, pageSize, "查询成功")
}
+264 -96
View File
@@ -3,35 +3,85 @@ package tools
import (
"bytes"
"net/http"
"strconv"
"text/template"
"time"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/config"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"go-admin/app/admin/models"
"go-admin/app/admin/models/tools"
tools2 "go-admin/tools"
"go-admin/tools/app"
"go-admin/tools/config"
"go-admin/common/apis"
)
func Preview(c *gin.Context) {
type Gen struct {
apis.Api
}
func (e *Gen) Preview(c *gin.Context) {
log := e.GetLogger(c)
table := tools.SysTables{}
id, err := tools2.StringToInt(c.Param("tableId"))
tools2.HasError(err, "", -1)
id, err := pkg.StringToInt(c.Param("tableId"))
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
table.TableId = id
t1, err := template.ParseFiles("template/v3/model.go.template")
tools2.HasError(err, "", -1)
t2, err := template.ParseFiles("template/v3/no_actions/apis.go.template")
tools2.HasError(err, "", -1)
t3, err := template.ParseFiles("template/v3/js.go.template")
tools2.HasError(err, "", -1)
t4, err := template.ParseFiles("template/v3/vue.go.template")
tools2.HasError(err, "", -1)
t5, err := template.ParseFiles("template/v3/no_actions/router_check_role.go.template")
tools2.HasError(err, "", -1)
t6, err := template.ParseFiles("template/v3/dto.go.template")
tools2.HasError(err, "", -1)
tab, _ := table.Get()
t1, err := template.ParseFiles("template/v4/model.go.template")
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
t2, err := template.ParseFiles("template/v4/no_actions/apis.go.template")
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
t3, err := template.ParseFiles("template/v4/js.go.template")
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
t4, err := template.ParseFiles("template/v4/vue.go.template")
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
t5, err := template.ParseFiles("template/v4/no_actions/router_check_role.go.template")
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
t6, err := template.ParseFiles("template/v4/dto.go.template")
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
t7, err := template.ParseFiles("template/v4/no_actions/service.go.template")
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
db, err := pkg.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "数据库连接获取失败")
return
}
tab, _ := table.Get(db)
var b1 bytes.Buffer
err = t1.Execute(&b1, tab)
var b2 bytes.Buffer
@@ -44,6 +94,8 @@ func Preview(c *gin.Context) {
err = t5.Execute(&b5, tab)
var b6 bytes.Buffer
err = t6.Execute(&b6, tab)
var b7 bytes.Buffer
err = t7.Execute(&b7, tab)
mp := make(map[string]interface{})
mp["template/model.go.template"] = b1.String()
@@ -52,31 +104,67 @@ func Preview(c *gin.Context) {
mp["template/vue.go.template"] = b4.String()
mp["template/router.go.template"] = b5.String()
mp["template/dto.go.template"] = b6.String()
var res app.Response
res.Data = mp
c.JSON(http.StatusOK, res.ReturnOK())
mp["template/service.go.template"] = b7.String()
e.OK(c, mp, "")
}
func GenCodeV3(c *gin.Context) {
func (e *Gen) GenCodeV3(c *gin.Context) {
log := e.GetLogger(c)
table := tools.SysTables{}
id, err := tools2.StringToInt(c.Param("tableId"))
tools2.HasError(err, "", -1)
table.TableId = id
tab, _ := table.Get()
if tab.IsActions == 1 {
ActionsGenV3(tab)
} else {
NOActionsGenV3(tab)
id, err := pkg.StringToInt(c.Param("tableId"))
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
app.OK(c, "", "Code generated successfully!")
db, err := pkg.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "数据库连接获取失败")
return
}
table.TableId = id
tab, _ := table.Get(db)
if tab.IsActions == 1 {
e.ActionsGenV3(c, tab)
} else {
e.NOActionsGenV3(c, tab)
}
e.OK(c, "", "Code generated successfully!")
}
func NOActionsGenV3(tab tools.SysTables) {
func (e *Gen) GenApiToFile(c *gin.Context) {
log := e.GetLogger(c)
table := tools.SysTables{}
id, err := pkg.StringToInt(c.Param("tableId"))
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
basePath := "template/v3/"
db, err := pkg.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "数据库连接获取失败")
return
}
table.TableId = id
tab, _ := table.Get(db)
e.genApiToFile(c, tab)
e.OK(c, "", "Code generated successfully!")
}
func (e *Gen) NOActionsGenV3(c *gin.Context, tab tools.SysTables) {
log := e.GetLogger(c)
basePath := "template/v4/"
routerFile := basePath + "no_actions/router_check_role.go.template"
if tab.IsAuth == 2 {
@@ -84,26 +172,54 @@ func NOActionsGenV3(tab tools.SysTables) {
}
t1, err := template.ParseFiles(basePath + "model.go.template")
tools2.HasError(err, "", -1)
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
t2, err := template.ParseFiles(basePath + "no_actions/apis.go.template")
tools2.HasError(err, "", -1)
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
t3, err := template.ParseFiles(routerFile)
tools2.HasError(err, "", -1)
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
t4, err := template.ParseFiles(basePath + "js.go.template")
tools2.HasError(err, "", -1)
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
t5, err := template.ParseFiles(basePath + "vue.go.template")
tools2.HasError(err, "", -1)
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
t6, err := template.ParseFiles(basePath + "dto.go.template")
tools2.HasError(err, "", -1)
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
t7, err := template.ParseFiles(basePath + "no_actions/service.go.template")
tools2.HasError(err, "", -1)
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
_ = tools2.PathCreate("./app/" + tab.PackageName + "/apis/" + tab.ModuleName)
_ = tools2.PathCreate("./app/" + tab.PackageName + "/models/")
_ = tools2.PathCreate("./app/" + tab.PackageName + "/router/")
_ = tools2.PathCreate("./app/" + tab.PackageName + "/service/dto/")
_ = tools2.PathCreate(config.GenConfig.FrontPath + "/api/")
_ = tools2.PathCreate(config.GenConfig.FrontPath + "/views/" + tab.BusinessName)
_ = pkg.PathCreate("./app/" + tab.PackageName + "/apis/" + tab.ModuleName)
_ = pkg.PathCreate("./app/" + tab.PackageName + "/models/")
_ = pkg.PathCreate("./app/" + tab.PackageName + "/router/")
_ = pkg.PathCreate("./app/" + tab.PackageName + "/service/dto/")
_ = pkg.PathCreate(config.GenConfig.FrontPath + "/api/")
_ = pkg.PathCreate(config.GenConfig.FrontPath + "/views/" + tab.BusinessName)
var b1 bytes.Buffer
err = t1.Execute(&b1, tab)
@@ -119,18 +235,41 @@ func NOActionsGenV3(tab tools.SysTables) {
err = t6.Execute(&b6, tab)
var b7 bytes.Buffer
err = t7.Execute(&b7, tab)
tools2.FileCreate(b1, "./app/"+tab.PackageName+"/models/"+tab.BusinessName+".go")
tools2.FileCreate(b2, "./app/"+tab.PackageName+"/apis/"+tab.ModuleName+"/"+tab.BusinessName+".go")
tools2.FileCreate(b3, "./app/"+tab.PackageName+"/router/"+tab.BusinessName+".go")
tools2.FileCreate(b4, config.GenConfig.FrontPath+"/api/"+tab.BusinessName+".js")
tools2.FileCreate(b5, config.GenConfig.FrontPath+"/views/"+tab.BusinessName+"/index.vue")
tools2.FileCreate(b6, "./app/"+tab.PackageName+"/service/dto/"+tab.BusinessName+".go")
tools2.FileCreate(b7, "./app/"+tab.PackageName+"/service/"+tab.BusinessName+".go")
pkg.FileCreate(b1, "./app/"+tab.PackageName+"/models/"+tab.BusinessName+".go")
pkg.FileCreate(b2, "./app/"+tab.PackageName+"/apis/"+tab.ModuleName+"/"+tab.BusinessName+".go")
pkg.FileCreate(b3, "./app/"+tab.PackageName+"/router/"+tab.BusinessName+".go")
pkg.FileCreate(b4, config.GenConfig.FrontPath+"/api/"+tab.BusinessName+".js")
pkg.FileCreate(b5, config.GenConfig.FrontPath+"/views/"+tab.BusinessName+"/index.vue")
pkg.FileCreate(b6, "./app/"+tab.PackageName+"/service/dto/"+tab.BusinessName+".go")
pkg.FileCreate(b7, "./app/"+tab.PackageName+"/service/"+tab.BusinessName+".go")
}
func ActionsGenV3(tab tools.SysTables) {
basePath := "template/v3/"
func (e *Gen) genApiToFile(c *gin.Context, tab tools.SysTables) {
log := e.GetLogger(c)
basePath := "template/"
t1, err := template.ParseFiles(basePath + "api_migrate.template")
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
i := strconv.FormatInt(time.Now().UnixNano()/1e6, 10)
var b1 bytes.Buffer
err = t1.Execute(&b1, struct {
tools.SysTables
GenerateTime string
}{tab, i})
pkg.FileCreate(b1, "./cmd/migrate/migration/version/"+i+"_migrate.go")
}
func (e *Gen) ActionsGenV3(c *gin.Context, tab tools.SysTables) {
log := api.GetRequestLogger(c)
basePath := "template/v4/"
routerFile := basePath + "actions/router_check_role.go.template"
if tab.IsAuth == 2 {
@@ -138,21 +277,41 @@ func ActionsGenV3(tab tools.SysTables) {
}
t1, err := template.ParseFiles(basePath + "model.go.template")
tools2.HasError(err, "", -1)
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
t3, err := template.ParseFiles(routerFile)
tools2.HasError(err, "", -1)
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
t4, err := template.ParseFiles(basePath + "js.go.template")
tools2.HasError(err, "", -1)
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
t5, err := template.ParseFiles(basePath + "vue.go.template")
tools2.HasError(err, "", -1)
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
t6, err := template.ParseFiles(basePath + "dto.go.template")
tools2.HasError(err, "", -1)
if err != nil {
log.Error(err)
e.Error(c, 500, err, "")
return
}
_ = tools2.PathCreate("./app/" + tab.PackageName + "/models/")
_ = tools2.PathCreate("./app/" + tab.PackageName + "/router/")
_ = tools2.PathCreate("./app/" + tab.PackageName + "/service/dto/")
_ = tools2.PathCreate(config.GenConfig.FrontPath + "/api/")
_ = tools2.PathCreate(config.GenConfig.FrontPath + "/views/" + tab.BusinessName)
_ = pkg.PathCreate("./app/" + tab.PackageName + "/models/")
_ = pkg.PathCreate("./app/" + tab.PackageName + "/router/")
_ = pkg.PathCreate("./app/" + tab.PackageName + "/service/dto/")
_ = pkg.PathCreate(config.GenConfig.FrontPath + "/api/")
_ = pkg.PathCreate(config.GenConfig.FrontPath + "/views/" + tab.BusinessName)
var b1 bytes.Buffer
err = t1.Execute(&b1, tab)
@@ -165,21 +324,30 @@ func ActionsGenV3(tab tools.SysTables) {
var b6 bytes.Buffer
err = t6.Execute(&b6, tab)
tools2.FileCreate(b1, "./app/"+tab.PackageName+"/models/"+tab.BusinessName+".go")
tools2.FileCreate(b3, "./app/"+tab.PackageName+"/router/"+tab.BusinessName+".go")
tools2.FileCreate(b4, config.GenConfig.FrontPath+"/api/"+tab.BusinessName+".js")
tools2.FileCreate(b5, config.GenConfig.FrontPath+"/views/"+tab.BusinessName+"/index.vue")
tools2.FileCreate(b6, "./app/"+tab.PackageName+"/service/dto/"+tab.BusinessName+".go")
pkg.FileCreate(b1, "./app/"+tab.PackageName+"/models/"+tab.BusinessName+".go")
pkg.FileCreate(b3, "./app/"+tab.PackageName+"/router/"+tab.BusinessName+".go")
pkg.FileCreate(b4, config.GenConfig.FrontPath+"/api/"+tab.BusinessName+".js")
pkg.FileCreate(b5, config.GenConfig.FrontPath+"/views/"+tab.BusinessName+"/index.vue")
pkg.FileCreate(b6, "./app/"+tab.PackageName+"/service/dto/"+tab.BusinessName+".go")
}
func GenMenuAndApi(c *gin.Context) {
func (e *Gen) GenMenuAndApi(c *gin.Context) {
log := api.GetRequestLogger(c)
table := tools.SysTables{}
timeNow := tools2.GetCurrentTime()
id, err := tools2.StringToInt(c.Param("tableId"))
tools2.HasError(err, "", -1)
timeNow := pkg.GetCurrentTime()
id, err := pkg.StringToInt(c.Param("tableId"))
pkg.HasError(err, "", -1)
db, err := pkg.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "数据库连接获取失败")
return
}
table.TableId = id
tab, _ := table.Get()
tab, _ := table.Get(db)
Mmenu := models.Menu{}
Mmenu.MenuName = tab.TBName + "Manage"
Mmenu.Title = tab.TableComment
@@ -197,7 +365,7 @@ func GenMenuAndApi(c *gin.Context) {
Mmenu.UpdateBy = "1"
Mmenu.CreatedAt = timeNow
Mmenu.UpdatedAt = timeNow
Mmenu.MenuId, err = Mmenu.Create()
Mmenu.MenuId, err = Mmenu.Create(db)
Cmenu := models.Menu{}
Cmenu.MenuName = tab.TBName
@@ -206,7 +374,7 @@ func GenMenuAndApi(c *gin.Context) {
Cmenu.Path = tab.TBName
Cmenu.MenuType = "C"
Cmenu.Action = "无"
Cmenu.Permission = tab.ModuleName + ":" + tab.BusinessName + ":list"
Cmenu.Permission = tab.PackageName + ":" + tab.BusinessName + ":list"
Cmenu.ParentId = Mmenu.MenuId
Cmenu.NoCache = false
Cmenu.Component = "/" + tab.BusinessName + "/index"
@@ -217,7 +385,7 @@ func GenMenuAndApi(c *gin.Context) {
Cmenu.UpdateBy = "1"
Cmenu.CreatedAt = timeNow
Cmenu.UpdatedAt = timeNow
Cmenu.MenuId, err = Cmenu.Create()
Cmenu.MenuId, err = Cmenu.Create(db)
MList := models.Menu{}
MList.MenuName = ""
@@ -226,7 +394,7 @@ func GenMenuAndApi(c *gin.Context) {
MList.Path = tab.TBName
MList.MenuType = "F"
MList.Action = "无"
MList.Permission = tab.ModuleName + ":" + tab.BusinessName + ":query"
MList.Permission = tab.PackageName + ":" + tab.BusinessName + ":query"
MList.ParentId = Cmenu.MenuId
MList.NoCache = false
MList.Sort = 0
@@ -236,7 +404,7 @@ func GenMenuAndApi(c *gin.Context) {
MList.UpdateBy = "1"
MList.CreatedAt = timeNow
MList.UpdatedAt = timeNow
MList.MenuId, err = MList.Create()
MList.MenuId, err = MList.Create(db)
MCreate := models.Menu{}
MCreate.MenuName = ""
@@ -245,7 +413,7 @@ func GenMenuAndApi(c *gin.Context) {
MCreate.Path = tab.TBName
MCreate.MenuType = "F"
MCreate.Action = "无"
MCreate.Permission = tab.ModuleName + ":" + tab.BusinessName + ":add"
MCreate.Permission = tab.PackageName + ":" + tab.BusinessName + ":add"
MCreate.ParentId = Cmenu.MenuId
MCreate.NoCache = false
MCreate.Sort = 0
@@ -255,7 +423,7 @@ func GenMenuAndApi(c *gin.Context) {
MCreate.UpdateBy = "1"
MCreate.CreatedAt = timeNow
MCreate.UpdatedAt = timeNow
MCreate.MenuId, err = MCreate.Create()
MCreate.MenuId, err = MCreate.Create(db)
MUpdate := models.Menu{}
MUpdate.MenuName = ""
@@ -264,7 +432,7 @@ func GenMenuAndApi(c *gin.Context) {
MUpdate.Path = tab.TBName
MUpdate.MenuType = "F"
MUpdate.Action = "无"
MUpdate.Permission = tab.ModuleName + ":" + tab.BusinessName + ":edit"
MUpdate.Permission = tab.PackageName + ":" + tab.BusinessName + ":edit"
MUpdate.ParentId = Cmenu.MenuId
MUpdate.NoCache = false
MUpdate.Sort = 0
@@ -274,7 +442,7 @@ func GenMenuAndApi(c *gin.Context) {
MUpdate.UpdateBy = "1"
MUpdate.CreatedAt = timeNow
MUpdate.UpdatedAt = timeNow
MUpdate.MenuId, err = MUpdate.Create()
MUpdate.MenuId, err = MUpdate.Create(db)
MDelete := models.Menu{}
MDelete.MenuName = ""
@@ -283,7 +451,7 @@ func GenMenuAndApi(c *gin.Context) {
MDelete.Path = tab.TBName
MDelete.MenuType = "F"
MDelete.Action = "无"
MDelete.Permission = tab.ModuleName + ":" + tab.BusinessName + ":remove"
MDelete.Permission = tab.PackageName + ":" + tab.BusinessName + ":remove"
MDelete.ParentId = Cmenu.MenuId
MDelete.NoCache = false
MDelete.Sort = 0
@@ -293,7 +461,7 @@ func GenMenuAndApi(c *gin.Context) {
MDelete.UpdateBy = "1"
MDelete.CreatedAt = timeNow
MDelete.UpdatedAt = timeNow
MDelete.MenuId, err = MDelete.Create()
MDelete.MenuId, err = MDelete.Create(db)
var InterfaceId = 63
Amenu := models.Menu{}
@@ -312,7 +480,7 @@ func GenMenuAndApi(c *gin.Context) {
Amenu.UpdateBy = "1"
Amenu.CreatedAt = timeNow
Amenu.UpdatedAt = timeNow
Amenu.MenuId, err = Amenu.Create()
Amenu.MenuId, err = Amenu.Create(db)
AList := models.Menu{}
AList.MenuName = ""
@@ -330,7 +498,7 @@ func GenMenuAndApi(c *gin.Context) {
AList.UpdateBy = "1"
AList.CreatedAt = timeNow
AList.UpdatedAt = timeNow
AList.MenuId, err = AList.Create()
AList.MenuId, err = AList.Create(db)
AGet := models.Menu{}
AGet.MenuName = ""
@@ -348,7 +516,7 @@ func GenMenuAndApi(c *gin.Context) {
AGet.UpdateBy = "1"
AGet.CreatedAt = timeNow
AGet.UpdatedAt = timeNow
AGet.MenuId, err = AGet.Create()
AGet.MenuId, err = AGet.Create(db)
ACreate := models.Menu{}
ACreate.MenuName = ""
@@ -366,7 +534,7 @@ func GenMenuAndApi(c *gin.Context) {
ACreate.UpdateBy = "1"
ACreate.CreatedAt = timeNow
ACreate.UpdatedAt = timeNow
ACreate.MenuId, err = ACreate.Create()
ACreate.MenuId, err = ACreate.Create(db)
AUpdate := models.Menu{}
AUpdate.MenuName = ""
@@ -384,7 +552,7 @@ func GenMenuAndApi(c *gin.Context) {
AUpdate.UpdateBy = "1"
AUpdate.CreatedAt = timeNow
AUpdate.UpdatedAt = timeNow
AUpdate.MenuId, err = AUpdate.Create()
AUpdate.MenuId, err = AUpdate.Create(db)
ADelete := models.Menu{}
ADelete.MenuName = ""
@@ -402,7 +570,7 @@ func GenMenuAndApi(c *gin.Context) {
ADelete.UpdateBy = "1"
ADelete.CreatedAt = timeNow
ADelete.UpdatedAt = timeNow
ADelete.MenuId, err = ADelete.Create()
ADelete.MenuId, err = ADelete.Create(db)
app.OK(c, "", "数据生成成功!")
e.OK(c, "", "数据生成成功!")
}
+148 -75
View File
@@ -5,98 +5,137 @@ import (
"strings"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"gorm.io/gorm"
"go-admin/app/admin/models/tools"
tools2 "go-admin/tools"
"go-admin/tools/app"
"go-admin/common/apis"
)
type SysTable struct {
apis.Api
}
// @Summary 分页列表数据
// @Description 生成表分页列表
// @Tags 工具 - 生成表
// @Param tableName query string false "tableName / 数据表名称"
// @Param pageSize query int false "pageSize / 页条数"
// @Param pageIndex query int false "pageIndex / 页码"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/sys/tables/page [get]
func GetSysTableList(c *gin.Context) {
func (e *SysTable) GetSysTableList(c *gin.Context) {
log := e.GetLogger(c)
var data tools.SysTables
var err error
var pageSize = 10
var pageIndex = 1
if size := c.Request.FormValue("pageSize"); size != "" {
pageSize, err = tools2.StringToInt(size)
pageSize, err = pkg.StringToInt(size)
}
if index := c.Request.FormValue("pageIndex"); index != "" {
pageIndex, err = tools2.StringToInt(index)
pageIndex, err = pkg.StringToInt(index)
}
db, err := e.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "数据库连接获取失败")
return
}
data.TBName = c.Request.FormValue("tableName")
data.TableComment = c.Request.FormValue("tableComment")
result, count, err := data.GetPage(pageSize, pageIndex)
tools2.HasError(err, "", -1)
var mp = make(map[string]interface{}, 3)
mp["list"] = result
mp["count"] = count
mp["pageIndex"] = pageIndex
mp["pageSize"] = pageSize
var res app.Response
res.Data = mp
c.JSON(http.StatusOK, res.ReturnOK())
result, count, err := data.GetPage(db, pageSize, pageIndex)
if err != nil {
log.Errorf("GetPage error, %s", err.Error())
e.Error(c, 500, err, "")
return
}
e.PageOK(c, result, count, pageIndex, pageSize, "查询成功")
}
// @Summary 获取配置
// @Description 获取JSON
// @Tags 工具 - 生成表
// @Param configKey path int true "configKey"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/sys/tables/info/{tableId} [get]
// @Security Bearer
func GetSysTables(c *gin.Context) {
func (e *SysTable) GetSysTables(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "数据库连接获取失败")
return
}
var data tools.SysTables
data.TableId, _ = tools2.StringToInt(c.Param("tableId"))
result, err := data.Get()
tools2.HasError(err, "抱歉未找到相关信息", -1)
data.TableId, _ = pkg.StringToInt(c.Param("tableId"))
result, err := data.Get(db)
if err != nil {
log.Errorf("Get error, %s", err.Error())
e.Error(c, 500, err, "")
return
}
var res app.Response
res.Data = result
mp := make(map[string]interface{})
mp["list"] = result.Columns
mp["info"] = result
res.Data = mp
c.JSON(http.StatusOK, res.ReturnOK())
e.OK(c, mp, "")
}
func GetSysTablesInfo(c *gin.Context) {
func (e *SysTable) GetSysTablesInfo(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "数据库连接获取失败")
return
}
var data tools.SysTables
if c.Request.FormValue("tableName") != "" {
data.TBName = c.Request.FormValue("tableName")
}
result, err := data.Get()
tools2.HasError(err, "抱歉未找到相关信息", -1)
result, err := data.Get(db)
if err != nil {
log.Errorf("Get error, %s", err.Error())
e.Error(c, 500, err, "抱歉未找到相关信息")
return
}
var res app.Response
res.Data = result
mp := make(map[string]interface{})
mp["list"] = result.Columns
mp["info"] = result
res.Data = mp
c.JSON(http.StatusOK, res.ReturnOK())
e.OK(c, mp, "")
//res.Data = mp
//c.JSON(http.StatusOK, res.ReturnOK())
}
func GetSysTablesTree(c *gin.Context) {
var data tools.SysTables
result, err := data.GetTree()
tools2.HasError(err, "抱歉未找到相关信息", -1)
func (e *SysTable) GetSysTablesTree(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "数据库连接获取失败")
return
}
var res app.Response
res.Data = result
c.JSON(http.StatusOK, res.ReturnOK())
var data tools.SysTables
result, err := data.GetTree(db)
if err != nil {
log.Errorf("GetTree error, %s", err.Error())
e.Error(c, 500, err, "抱歉未找到相关信息")
return
}
e.OK(c, result, "")
}
// @Summary 添加表结构
@@ -109,31 +148,48 @@ func GetSysTablesTree(c *gin.Context) {
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/sys/tables/info [post]
// @Security Bearer
func InsertSysTable(c *gin.Context) {
func (e *SysTable) InsertSysTable(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "数据库连接获取失败")
return
}
tablesList := strings.Split(c.Request.FormValue("tables"), ",")
for i := 0; i < len(tablesList); i++ {
data, err := genTableInit(tablesList, i, c)
data, err := genTableInit(db, tablesList, i, c)
if err != nil {
log.Errorf("genTableInit error, %s", err.Error())
e.Error(c, 500, err, "")
return
}
_, err = data.Create()
tools2.HasError(err, "", -1)
_, err = data.Create(db)
if err != nil {
log.Errorf("Create error, %s", err.Error())
e.Error(c, 500, err, "")
return
}
}
var res app.Response
res.Msg = "添加成功!"
c.JSON(http.StatusOK, res.ReturnOK())
e.OK(c, nil, "添加成功")
}
func genTableInit(tablesList []string, i int, c *gin.Context) (tools.SysTables, error) {
func genTableInit(tx *gorm.DB, tablesList []string, i int, c *gin.Context) (tools.SysTables, error) {
var data tools.SysTables
var dbTable tools.DBTables
var dbColumn tools.DBColumns
data.TBName = tablesList[i]
data.CreateBy = tools2.GetUserIdStr(c)
data.CreateBy = user.GetUserIdStr(c)
dbTable.TableName = data.TBName
dbtable, err := dbTable.Get()
dbtable, err := dbTable.Get(tx)
if err != nil {
return data, err
}
dbColumn.TableName = data.TBName
tablenamelist := strings.Split(dbColumn.TableName, "_")
@@ -148,8 +204,8 @@ func genTableInit(tablesList []string, i int, c *gin.Context) (tools.SysTables,
data.TplCategory = "crud"
data.Crud = true
dbcolumn, err := dbColumn.GetList()
data.CreateBy = tools2.GetUserIdStr(c)
dbcolumn, err := dbColumn.GetList(tx)
data.CreateBy = user.GetUserIdStr(c)
data.TableComment = dbtable.TableComment
if dbtable.TableComment == "" {
data.TableComment = data.ClassName
@@ -191,8 +247,8 @@ func genTableInit(tablesList []string, i int, c *gin.Context) (tools.SysTables,
column.IsPk = "1"
column.Pk = true
data.PkColumn = dbcolumn[i].ColumnName
column.GoField = strings.ToUpper(column.GoField)
column.JsonField = strings.ToUpper(column.JsonField)
//column.GoField = strings.ToUpper(column.GoField)
//column.JsonField = strings.ToUpper(column.JsonField)
data.PkGoField = column.GoField
data.PkJsonField = column.JsonField
}
@@ -204,9 +260,7 @@ func genTableInit(tablesList []string, i int, c *gin.Context) (tools.SysTables,
if strings.Contains(dbcolumn[i].ColumnType, "int") {
if strings.Contains(dbcolumn[i].ColumnKey, "PR") {
column.GoType = "uint"
} else if strings.Contains(dbcolumn[i].ColumnType, "unsigned") {
column.GoType = "uint"
column.GoType = "int"
} else {
column.GoType = "string"
}
@@ -237,18 +291,27 @@ func genTableInit(tablesList []string, i int, c *gin.Context) (tools.SysTables,
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/sys/tables/info [put]
// @Security Bearer
func UpdateSysTable(c *gin.Context) {
func (e *SysTable) UpdateSysTable(c *gin.Context) {
var data tools.SysTables
err := c.Bind(&data)
tools2.HasError(err, "数据解析失败", 500)
data.UpdateBy = tools2.GetUserIdStr(c)
result, err := data.Update()
tools2.HasError(err, "", -1)
pkg.HasError(err, "数据解析失败", 500)
var res app.Response
res.Data = result
res.Msg = "修改成功"
c.JSON(http.StatusOK, res.ReturnOK())
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "数据库连接获取失败")
return
}
data.UpdateBy = user.GetUserIdStr(c)
result, err := data.Update(db)
if err != nil {
log.Errorf("Update error, %s", err.Error())
e.Error(c, 500, err, "")
return
}
e.OK(c, result, "修改成功")
}
// @Summary 删除表结构
@@ -258,12 +321,22 @@ func UpdateSysTable(c *gin.Context) {
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/sys/tables/info/{tableId} [delete]
func DeleteSysTables(c *gin.Context) {
func (e *SysTable) DeleteSysTables(c *gin.Context) {
log := e.GetLogger(c)
db, err := e.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "数据库连接获取失败")
return
}
var data tools.SysTables
IDS := tools2.IdsStrToIdsIntGroup("tableId", c)
_, err := data.BatchDelete(IDS)
tools2.HasError(err, "删除失败", 500)
var res app.Response
res.Msg = "删除成功"
c.JSON(http.StatusOK, res.ReturnOK())
IDS := pkg.IdsStrToIdsIntGroup("tableId", c)
_, err = data.BatchDelete(db, IDS)
if err != nil {
log.Errorf("BatchDelete error, %s", err.Error())
e.Error(c, 500, err, "删除失败")
return
}
e.OK(c, nil, "删除成功")
}
+12 -3
View File
@@ -3,16 +3,25 @@ package middleware
import (
"time"
"github.com/go-admin-team/go-admin-core/sdk/config"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/middleware/handler"
jwt "go-admin/pkg/jwtauth"
"go-admin/tools/config"
)
// AuthInit jwt验证new
func AuthInit() (*jwt.GinJWTMiddleware, error) {
timeout := time.Hour
if config.ApplicationConfig.Mode == "dev" {
timeout = time.Duration(876010) * time.Hour
} else {
if config.JwtConfig.Timeout != 0 {
timeout = time.Duration(config.JwtConfig.Timeout) * time.Second
}
}
return jwt.New(&jwt.GinJWTMiddleware{
Realm: "test zone",
Key: []byte(config.ApplicationConfig.JwtSecret),
Timeout: time.Hour,
Timeout: timeout,
MaxRefresh: time.Hour,
PayloadFunc: handler.PayloadFunc,
IdentityHandler: handler.IdentityHandler,
-58
View File
@@ -1,58 +0,0 @@
package middleware
import (
"database/sql"
"errors"
"gorm.io/driver/mysql"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/schema"
"go-admin/common/config"
"go-admin/common/global"
"go-admin/common/middleware"
"go-admin/tools"
)
var WithContextDb = middleware.WithContextDb
func getGormFromDb(driver string, db *sql.DB, config *gorm.Config) (*gorm.DB, error) {
switch driver {
case "mysql":
return gorm.Open(mysql.New(mysql.Config{Conn: db}), config)
case "postgres":
return gorm.Open(postgres.New(postgres.Config{Conn: db}), config)
default:
return nil, errors.New("not support this db driver")
}
}
func GetGormFromConfig(cfg config.Conf) map[string]*gorm.DB {
gormDB := make(map[string]*gorm.DB)
if cfg.GetSaas() {
var err error
for k, v := range cfg.GetDbs() {
gormDB[k], err = getGormFromDb(v.Driver, v.DB, &gorm.Config{
NamingStrategy: schema.NamingStrategy{
SingularTable: true,
},
})
if err != nil {
global.Logger.Fatal(tools.Red(k+" connect error :"), err)
}
}
return gormDB
}
c := cfg.GetDb()
db, err := getGormFromDb(c.Driver, c.DB, &gorm.Config{
NamingStrategy: schema.NamingStrategy{
SingularTable: true,
},
})
if err != nil {
global.Logger.Fatal(tools.Red(c.Driver+" connect error :"), err)
}
gormDB["*"] = db
return gormDB
}
+71 -47
View File
@@ -4,22 +4,25 @@ import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/config"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
"github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"github.com/mojocn/base64Captcha"
"github.com/mssola/user_agent"
"go-admin/app/admin/models"
"go-admin/common/global"
jwt "go-admin/pkg/jwtauth"
"go-admin/tools"
"go-admin/tools/config"
"go-admin/app/admin/models/system"
"go-admin/app/admin/service"
)
var store = base64Captcha.DefaultMemStore
func PayloadFunc(data interface{}) jwt.MapClaims {
if v, ok := data.(map[string]interface{}); ok {
u, _ := v["user"].(models.SysUser)
r, _ := v["role"].(models.SysRole)
u, _ := v["user"].(system.SysUser)
r, _ := v["role"].(system.SysRole)
return jwt.MapClaims{
jwt.IdentityKey: u.UserId,
jwt.RoleIdKey: r.RoleId,
@@ -53,20 +56,30 @@ func IdentityHandler(c *gin.Context) interface{} {
// @Description 注意:开发模式:需要注意全部字段不能为空,账号密码外可以传入0值
// @Accept application/json
// @Product application/json
// @Param account body models.Login true "account"
// @Param account body system.Login true "account"
// @Success 200 {string} string "{"code": 200, "expire": "2019-08-07T12:45:48+08:00", "token": ".eyJleHAiOjE1NjUxNTMxNDgsImlkIjoiYWRtaW4iLCJvcmlnX2lhdCI6MTU2NTE0OTU0OH0.-zvzHvbg0A" }"
// @Router /login [post]
func Authenticator(c *gin.Context) (interface{}, error) {
var loginVals models.Login
var status = "0"
log := api.GetRequestLogger(c)
db, err := pkg.GetOrm(c)
if err != nil {
log.Errorf("get db error, %s", err.Error())
response.Error(c, http.StatusInternalServerError, err, "数据库连接获取失败")
return nil, jwt.ErrFailedAuthentication
}
var loginVals system.Login
var status = "2"
var msg = "登录成功"
var username = ""
defer func() {
LoginLogToDB(c, status, msg, username)
}()
if err := c.ShouldBind(&loginVals); err != nil {
if err = c.ShouldBind(&loginVals); err != nil {
username = loginVals.Username
msg = "数据解析失败"
status = "1"
LoginLogToDB(c, status, msg, username)
return nil, jwt.ErrMissingLoginValues
}
@@ -75,44 +88,48 @@ func Authenticator(c *gin.Context) (interface{}, error) {
username = loginVals.Username
msg = "验证码错误"
status = "1"
LoginLogToDB(c, status, msg, username)
return nil, jwt.ErrInvalidVerificationode
}
}
user, role, e := loginVals.GetUser()
user, role, e := loginVals.GetUser(db)
if e == nil {
username = loginVals.Username
LoginLogToDB(c, status, msg, username)
return map[string]interface{}{"user": user, "role": role}, nil
} else {
msg = "登录失败"
status = "1"
LoginLogToDB(c, status, msg, username)
global.RequestLogger.Println(e.Error())
log.Warnf("%s login failed!", loginVals.Username)
}
return nil, jwt.ErrFailedAuthentication
}
// Write log to database
// LoginLogToDB Write log to database
func LoginLogToDB(c *gin.Context, status string, msg string, username string) {
log := api.GetRequestLogger(c)
if config.LoggerConfig.EnabledDB {
var loginlog models.LoginLog
var loginLog system.SysLoginLog
db, err := pkg.GetOrm(c)
if err != nil {
log.Errorf("获取Orm失败, error:%s", err)
}
ua := user_agent.New(c.Request.UserAgent())
loginlog.Ipaddr = c.ClientIP()
loginlog.Username = username
location := tools.GetLocation(c.ClientIP())
loginlog.LoginLocation = location
loginlog.LoginTime = tools.GetCurrentTime()
loginlog.Status = status
loginlog.Remark = c.Request.UserAgent()
loginLog.Ipaddr = c.ClientIP()
loginLog.Username = username
location := pkg.GetLocation(c.ClientIP())
loginLog.LoginLocation = location
loginLog.LoginTime = pkg.GetCurrentTime()
loginLog.Status = status
loginLog.Remark = c.Request.UserAgent()
browserName, browserVersion := ua.Browser()
loginlog.Browser = browserName + " " + browserVersion
loginlog.Os = ua.OS()
loginlog.Msg = msg
loginlog.Platform = ua.Platform()
_, _ = loginlog.Create()
loginLog.Browser = browserName + " " + browserVersion
loginLog.Os = ua.OS()
loginLog.Msg = msg
loginLog.Platform = ua.Platform()
serviceLoginLog := service.SysLoginLog{}
serviceLoginLog.Orm = db
_ = serviceLoginLog.InsertSysLoginLog(loginLog.Generate())
}
}
@@ -126,21 +143,28 @@ func LoginLogToDB(c *gin.Context, status string, msg string, username string) {
// @Router /logout [post]
// @Security Bearer
func LogOut(c *gin.Context) {
var loginlog models.LoginLog
log := api.GetRequestLogger(c)
var loginLog system.SysLoginLog
ua := user_agent.New(c.Request.UserAgent())
loginlog.Ipaddr = c.ClientIP()
location := tools.GetLocation(c.ClientIP())
loginlog.LoginLocation = location
loginlog.LoginTime = tools.GetCurrentTime()
loginlog.Status = "0"
loginlog.Remark = c.Request.UserAgent()
loginLog.Ipaddr = c.ClientIP()
location := pkg.GetLocation(c.ClientIP())
loginLog.LoginLocation = location
loginLog.LoginTime = pkg.GetCurrentTime()
loginLog.Status = "2"
loginLog.Remark = c.Request.UserAgent()
browserName, browserVersion := ua.Browser()
loginlog.Browser = browserName + " " + browserVersion
loginlog.Os = ua.OS()
loginlog.Platform = ua.Platform()
loginlog.Username = tools.GetUserName(c)
loginlog.Msg = "退出成功"
loginlog.Create()
loginLog.Browser = browserName + " " + browserVersion
loginLog.Os = ua.OS()
loginLog.Platform = ua.Platform()
loginLog.Username = user.GetUserName(c)
loginLog.Msg = "退出成功"
db, err := pkg.GetOrm(c)
if err != nil {
log.Errorf("获取Orm失败, error:%s", err)
}
serviceLoginLog := service.SysLoginLog{}
serviceLoginLog.Orm = db
_ = serviceLoginLog.InsertSysLoginLog(loginLog.Generate())
c.JSON(http.StatusOK, gin.H{
"code": 200,
@@ -152,12 +176,12 @@ func LogOut(c *gin.Context) {
func Authorizator(data interface{}, c *gin.Context) bool {
if v, ok := data.(map[string]interface{}); ok {
u, _ := v["user"].(models.SysUser)
r, _ := v["role"].(models.SysRole)
u, _ := v["user"].(system.SysUser)
r, _ := v["role"].(system.SysRole)
c.Set("role", r.RoleName)
c.Set("roleIds", r.RoleId)
c.Set("userId", u.UserId)
c.Set("userName", u.UserName)
c.Set("userName", u.Username)
c.Set("dataScope", r.DataScope)
return true
+1 -1
View File
@@ -4,7 +4,7 @@ import (
"github.com/gin-gonic/gin"
"github.com/unrolled/secure"
"go-admin/tools/config"
"github.com/go-admin-team/go-admin-core/sdk/config"
)
func TlsHandler() gin.HandlerFunc {
+6
View File
@@ -2,9 +2,13 @@ package middleware
import (
"github.com/gin-gonic/gin"
"go-admin/common/middleware"
)
func InitMiddleware(r *gin.Engine) {
// 数据库链接
r.Use(middleware.WithContextDb)
// 日志处理
r.Use(LoggerToFile())
// 自定义错误处理
@@ -15,4 +19,6 @@ func InitMiddleware(r *gin.Engine) {
r.Use(Options)
// Secure is a middleware function that appends security
r.Use(Secure)
// 链路追踪
//r.Use(middleware.Trace())
}
+94 -58
View File
@@ -1,110 +1,146 @@
package middleware
import (
"encoding/json"
"fmt"
"net/http"
"strings"
"time"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/config"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
"github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"go-admin/app/admin/models"
"go-admin/common/global"
"go-admin/tools"
config2 "go-admin/tools/config"
"go-admin/app/admin/models/system"
"go-admin/app/admin/service"
)
// 日志记录到文件
// LoggerToFile 日志记录到文件
func LoggerToFile() gin.HandlerFunc {
return func(c *gin.Context) {
// 开始时间
startTime := time.Now()
// 处理请求
c.Next()
c.Next()
// 结束时间
endTime := time.Now()
if c.Request.Method == http.MethodOptions {
return
}
log := api.GetRequestLogger(c)
// 执行时间
latencyTime := endTime.Sub(startTime)
bd, bl := c.Get("body")
var body = ""
if bl {
body = bd.(string)
}
rt, bl := c.Get("result")
var result = ""
if bl {
rb, err := json.Marshal(rt)
if err != nil {
log.Warnf("json Marshal result error, %s", err.Error())
} else {
result = string(rb)
}
}
st, bl := c.Get("status")
var statusBus = 0
if bl {
statusBus = st.(int)
}
// 请求方式
reqMethod := c.Request.Method
// 请求路由
reqUri := c.Request.RequestURI
// 状态码
statusCode := c.Writer.Status()
// 请求IP
clientIP := c.ClientIP()
// 执行时间
latencyTime := endTime.Sub(startTime)
// 日志格式
fmt.Printf("%s [INFO] %s %s %3d %13v %15s \r\n",
startTime.Format("2006-01-02 15:04:05"),
reqMethod,
reqUri,
statusCode,
latencyTime,
clientIP,
)
global.RequestLogger.Info(statusCode, latencyTime, clientIP, reqMethod, reqUri)
if c.Request.Method != "GET" && c.Request.Method != "OPTIONS" && config2.LoggerConfig.EnabledDB {
SetDBOperLog(c, clientIP, statusCode, reqUri, reqMethod, latencyTime)
logData := map[string]interface{}{
"statusCode": statusCode,
"latencyTime": latencyTime,
"clientIP": clientIP,
"method": reqMethod,
"uri": reqUri,
}
log.Info(logData)
//l := logger.Logger{Logger: log.Fields(logData)}
//l.Info(logData)
if c.Request.Method != "GET" && c.Request.Method != "OPTIONS" && config.LoggerConfig.EnabledDB {
SetDBOperLog(c, clientIP, statusCode, reqUri, reqMethod, latencyTime, body, result, statusBus)
}
}
}
// 写入操作日志表
// 该方法后续即将弃用
func SetDBOperLog(c *gin.Context, clientIP string, statusCode int, reqUri string, reqMethod string, latencyTime time.Duration) {
// SetDBOperLog 写入操作日志表 fixme 该方法后续即将弃用
func SetDBOperLog(c *gin.Context, clientIP string, statusCode int, reqUri string, reqMethod string, latencyTime time.Duration, body string, result string, status int) {
log := api.GetRequestLogger(c)
db, err := pkg.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
response.Error(c, http.StatusInternalServerError, err, "数据库连接获取失败")
return
}
menu := models.Menu{}
menu.Path = reqUri
menu.Action = reqMethod
menuList, _ := menu.Get()
sysOperLog := models.SysOperLog{}
sysOperLog.OperIp = clientIP
sysOperLog.OperLocation = tools.GetLocation(clientIP)
sysOperLog.Status = tools.IntToString(statusCode)
sysOperLog.OperName = tools.GetUserName(c)
sysOperLog.RequestMethod = c.Request.Method
sysOperLog.OperUrl = reqUri
menuList, _ := menu.Get(db)
sysOperaLog := system.SysOperaLog{}
sysOperaLog.OperIp = clientIP
sysOperaLog.OperLocation = pkg.GetLocation(clientIP)
sysOperaLog.Status = pkg.IntToString(statusCode)
sysOperaLog.OperName = user.GetUserName(c)
sysOperaLog.RequestMethod = c.Request.Method
sysOperaLog.OperUrl = reqUri
sysOperaLog.OperParam = body
if reqUri == "/login" {
sysOperLog.BusinessType = "10"
sysOperLog.Title = "用户登录"
sysOperLog.OperName = "-"
sysOperaLog.BusinessType = "10"
sysOperaLog.Title = "用户登录"
sysOperaLog.OperName = "-"
} else if strings.Contains(reqUri, "/api/v1/logout") {
sysOperLog.BusinessType = "11"
sysOperaLog.BusinessType = "11"
} else if strings.Contains(reqUri, "/api/v1/getCaptcha") {
sysOperLog.BusinessType = "12"
sysOperLog.Title = "验证码"
sysOperaLog.BusinessType = "12"
sysOperaLog.Title = "验证码"
} else {
if reqMethod == "POST" {
sysOperLog.BusinessType = "1"
sysOperaLog.BusinessType = "1"
} else if reqMethod == "PUT" {
sysOperLog.BusinessType = "2"
sysOperaLog.BusinessType = "2"
} else if reqMethod == "DELETE" {
sysOperLog.BusinessType = "3"
sysOperaLog.BusinessType = "3"
}
}
sysOperLog.Method = reqMethod
sysOperaLog.Method = reqMethod
if len(menuList) > 0 {
sysOperLog.Title = menuList[0].Title
sysOperaLog.Title = menuList[0].Title
}
b, _ := c.Get("body")
sysOperLog.OperParam, _ = tools.StructToJsonStr(b)
sysOperLog.CreateBy = tools.GetUserName(c)
sysOperLog.OperTime = tools.GetCurrentTime()
sysOperLog.LatencyTime = (latencyTime).String()
sysOperLog.UserAgent = c.Request.UserAgent()
if c.Err() == nil {
sysOperLog.Status = "0"
sysOperaLog.CreateBy = user.GetUserId(c)
sysOperaLog.OperTime = pkg.GetCurrentTime()
sysOperaLog.LatencyTime = fmt.Sprintf("%v", latencyTime)
sysOperaLog.JsonResult = result
sysOperaLog.UserAgent = c.Request.UserAgent()
if status == 200 {
sysOperaLog.Status = "2"
} else {
sysOperLog.Status = "1"
sysOperaLog.Status = "1"
}
_, _ = sysOperLog.Create()
serviceOperaLog := service.SysOperaLog{}
serviceOperaLog.Orm = db
serviceOperaLog.Log = log
_ = serviceOperaLog.InsertSysOperaLog(&sysOperaLog)
}
-42
View File
@@ -1,42 +0,0 @@
package middleware
import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
mycasbin "go-admin/pkg/casbin"
"go-admin/pkg/jwtauth"
"go-admin/tools"
)
//权限检查中间件
func AuthCheckRole() gin.HandlerFunc {
return func(c *gin.Context) {
data, _ := c.Get(jwtauth.JwtPayloadKey)
v := data.(jwtauth.MapClaims)
e := mycasbin.Casbin()
//检查权限
res, err := e.Enforce(v["rolekey"], c.Request.URL.Path, c.Request.Method)
tools.HasError(err, "", 500)
fmt.Printf("%s [INFO] %s %s %s \r\n",
tools.GetCurrentTimeStr(),
c.Request.Method,
c.Request.URL.Path,
v["rolekey"],
)
if res {
c.Next()
} else {
c.JSON(http.StatusOK, gin.H{
"code": 403,
"msg": "对不起,您没有该接口访问权限,请联系管理员",
})
c.Abort()
return
}
}
}
-85
View File
@@ -1,85 +0,0 @@
package models
import (
"errors"
"fmt"
"gorm.io/gorm"
"go-admin/tools"
"go-admin/tools/config"
)
type DataPermission struct {
DataScope string
UserId int
DeptId int
RoleId int
}
func (e *DataPermission) GetDataScope(tbname string, table *gorm.DB) (*gorm.DB, error) {
if !config.ApplicationConfig.EnableDP {
usageStr := `数据权限已经为您` + tools.Green(`关闭`) + `,如需开启请参考配置文件字段说明`
fmt.Printf("%s\n", usageStr)
return table, nil
}
SysUser := new(SysUser)
SysRole := new(SysRole)
SysUser.UserId = e.UserId
user, err := SysUser.Get()
if err != nil {
return nil, errors.New("获取用户数据出错 msg:" + err.Error())
}
SysRole.RoleId = user.RoleId
role, err := SysRole.Get()
if err != nil {
return nil, errors.New("获取用户数据出错 msg:" + err.Error())
}
if role.DataScope == "2" {
table = table.Where(tbname+".create_by in (select sys_user.user_id from sys_role_dept left join sys_user on sys_user.dept_id=sys_role_dept.dept_id where sys_role_dept.role_id = ?)", user.RoleId)
}
if role.DataScope == "3" {
table = table.Where(tbname+".create_by in (SELECT user_id from sys_user where dept_id = ? )", user.DeptId)
}
if role.DataScope == "4" {
table = table.Where(tbname+".create_by in (SELECT user_id from sys_user where sys_user.dept_id in(select dept_id from sys_dept where dept_path like ? ))", "%"+tools.IntToString(user.DeptId)+"%")
}
if role.DataScope == "5" || role.DataScope == "" {
table = table.Where(tbname+".create_by = ?", e.UserId)
}
return table, nil
}
func DataScopes(tableName string, userid int) func(db *gorm.DB) *gorm.DB {
return func(db *gorm.DB) *gorm.DB {
SysUser := new(SysUser)
SysRole := new(SysRole)
SysUser.UserId = userid
user, err := SysUser.Get()
if err != nil {
db.Error = errors.New("获取用户数据出错 msg:" + err.Error())
return db
}
SysRole.RoleId = user.RoleId
role, err := SysRole.Get()
if err != nil {
db.Error = errors.New("获取用户数据出错 msg:" + err.Error())
return db
}
if role.DataScope == "2" {
return db.Where(tableName+".create_by in (select sys_user.user_id from sys_role_dept left join sys_user on sys_user.dept_id=sys_role_dept.dept_id where sys_role_dept.role_id = ?)", user.RoleId)
}
if role.DataScope == "3" {
return db.Where(tableName+".create_by in (SELECT user_id from sys_user where dept_id = ? )", user.DeptId)
}
if role.DataScope == "4" {
return db.Where(tableName+".create_by in (SELECT user_id from sys_user where sys_user.dept_id in(select dept_id from sys_dept where dept_path like ? ))", "%"+tools.IntToString(user.DeptId)+"%")
}
if role.DataScope == "5" || role.DataScope == "" {
return db.Where(tableName+".create_by = ?", userid)
}
return db
}
}
-276
View File
@@ -1,276 +0,0 @@
package models
import (
"errors"
_ "time"
orm "go-admin/common/global"
"go-admin/tools"
)
type SysDept struct {
DeptId int `json:"deptId" gorm:"primary_key;auto_increment;"` //部门编码
ParentId int `json:"parentId" gorm:""` //上级部门
DeptPath string `json:"deptPath" gorm:"size:255;"` //
DeptName string `json:"deptName" gorm:"size:128;"` //部门名称
Sort int `json:"sort" gorm:""` //排序
Leader string `json:"leader" gorm:"size:128;"` //负责人
Phone string `json:"phone" gorm:"size:11;"` //手机
Email string `json:"email" gorm:"size:64;"` //邮箱
Status string `json:"status" gorm:"size:4;"` //状态
CreateBy string `json:"createBy" gorm:"size:64;"`
UpdateBy string `json:"updateBy" gorm:"size:64;"`
BaseModel
DataScope string `json:"dataScope" gorm:"-"`
Params string `json:"params" gorm:"-"`
Children []SysDept `json:"children" gorm:"-"`
}
func (SysDept) TableName() string {
return "sys_dept"
}
type DeptLable struct {
Id int `gorm:"-" json:"id"`
Label string `gorm:"-" json:"label"`
Children []DeptLable `gorm:"-" json:"children"`
}
func (e *SysDept) Create() (SysDept, error) {
var doc SysDept
result := orm.Eloquent.Table(e.TableName()).Create(&e)
if result.Error != nil {
err := result.Error
return doc, err
}
deptPath := "/" + tools.IntToString(e.DeptId)
if int(e.ParentId) != 0 {
var deptP SysDept
orm.Eloquent.Table(e.TableName()).Where("dept_id = ?", e.ParentId).First(&deptP)
deptPath = deptP.DeptPath + deptPath
} else {
deptPath = "/0" + deptPath
}
var mp = map[string]string{}
mp["deptPath"] = deptPath
if err := orm.Eloquent.Table(e.TableName()).Where("dept_id = ?", e.DeptId).Updates(mp).Error; err != nil {
err := result.Error
return doc, err
}
doc = *e
doc.DeptPath = deptPath
return doc, nil
}
func (e *SysDept) Get() (SysDept, error) {
var doc SysDept
table := orm.Eloquent.Table(e.TableName())
if e.DeptId != 0 {
table = table.Where("dept_id = ?", e.DeptId)
}
if e.DeptName != "" {
table = table.Where("dept_name = ?", e.DeptName)
}
if err := table.First(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
func (e *SysDept) GetList() ([]SysDept, error) {
var doc []SysDept
table := orm.Eloquent.Table(e.TableName())
if e.DeptId != 0 {
table = table.Where("dept_id = ?", e.DeptId)
}
if e.DeptName != "" {
table = table.Where("dept_name = ?", e.DeptName)
}
if e.Status != "" {
table = table.Where("status = ?", e.Status)
}
if err := table.Order("sort").Find(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
func (e *SysDept) GetPage(bl bool) ([]SysDept, error) {
var doc []SysDept
table := orm.Eloquent.Table(e.TableName())
if e.DeptId != 0 {
table = table.Where("dept_id = ?", e.DeptId)
}
if e.DeptName != "" {
table = table.Where("dept_name = ?", e.DeptName)
}
if e.Status != "" {
table = table.Where("status = ?", e.Status)
}
if e.DeptPath != "" {
table = table.Where("deptPath like %?%", e.DeptPath)
}
if bl {
// 数据权限控制
dataPermission := new(DataPermission)
dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
tableper, err := dataPermission.GetDataScope("sys_dept", table)
if err != nil {
return nil, err
}
table = tableper
}
if err := table.Order("sort").Find(&doc).Error; err != nil {
return nil, err
}
return doc, nil
}
func (e *SysDept) SetDept(bl bool) ([]SysDept, error) {
list, err := e.GetPage(bl)
m := make([]SysDept, 0)
for i := 0; i < len(list); i++ {
if list[i].ParentId != 0 {
continue
}
info := Digui(&list, list[i])
m = append(m, info)
}
return m, err
}
func Digui(deptlist *[]SysDept, menu SysDept) SysDept {
list := *deptlist
min := make([]SysDept, 0)
for j := 0; j < len(list); j++ {
if menu.DeptId != list[j].ParentId {
continue
}
mi := SysDept{}
mi.DeptId = list[j].DeptId
mi.ParentId = list[j].ParentId
mi.DeptPath = list[j].DeptPath
mi.DeptName = list[j].DeptName
mi.Sort = list[j].Sort
mi.Leader = list[j].Leader
mi.Phone = list[j].Phone
mi.Email = list[j].Email
mi.Status = list[j].Status
mi.Children = []SysDept{}
ms := Digui(deptlist, mi)
min = append(min, ms)
}
menu.Children = min
return menu
}
func (e *SysDept) Update(id int) (update SysDept, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("dept_id = ?", id).First(&update).Error; err != nil {
return
}
deptPath := "/" + tools.IntToString(e.DeptId)
if int(e.ParentId) != 0 {
var deptP SysDept
orm.Eloquent.Table(e.TableName()).Where("dept_id = ?", e.ParentId).First(&deptP)
deptPath = deptP.DeptPath + deptPath
} else {
deptPath = "/0" + deptPath
}
e.DeptPath = deptPath
if e.DeptPath != "" && e.DeptPath != update.DeptPath {
return update, errors.New("上级部门不允许修改!")
}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
return
}
return
}
func (e *SysDept) Delete(id int) (success bool, err error) {
user := SysUser{}
user.DeptId = id
userlist, err := user.GetList()
tools.HasError(err, "", 500)
tools.Assert(len(userlist) <= 0, "当前部门存在用户,不能删除!", 500)
tx := orm.Eloquent.Begin()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
}
}()
if err = tx.Error; err != nil {
success = false
return
}
if err = tx.Table(e.TableName()).Where("dept_id = ?", id).Delete(&SysDept{}).Error; err != nil {
success = false
tx.Rollback()
return
}
if err = tx.Commit().Error; err != nil {
success = false
return
}
success = true
return
}
func (dept *SysDept) SetDeptLable() (m []DeptLable, err error) {
deptlist, err := dept.GetList()
m = make([]DeptLable, 0)
for i := 0; i < len(deptlist); i++ {
if deptlist[i].ParentId != 0 {
continue
}
e := DeptLable{}
e.Id = deptlist[i].DeptId
e.Label = deptlist[i].DeptName
deptsInfo := DiguiDeptLable(&deptlist, e)
m = append(m, deptsInfo)
}
return
}
func DiguiDeptLable(deptlist *[]SysDept, dept DeptLable) DeptLable {
list := *deptlist
min := make([]DeptLable, 0)
for j := 0; j < len(list); j++ {
if dept.Id != list[j].ParentId {
continue
}
mi := DeptLable{list[j].DeptId, list[j].DeptName, []DeptLable{}}
ms := DiguiDeptLable(deptlist, mi)
min = append(min, ms)
}
dept.Children = min
return dept
}
-166
View File
@@ -1,166 +0,0 @@
package models
import (
"errors"
orm "go-admin/common/global"
"go-admin/tools"
)
type DictData struct {
DictCode int `gorm:"primary_key;auto_increment;" json:"dictCode" example:"1"` //字典编码
DictSort int `gorm:"" json:"dictSort"` //显示顺序
DictLabel string `gorm:"size:128;" json:"dictLabel"` //数据标签
DictValue string `gorm:"size:255;" json:"dictValue"` //数据键值
DictType string `gorm:"size:64;" json:"dictType"` //字典类型
CssClass string `gorm:"size:128;" json:"cssClass"` //
ListClass string `gorm:"size:128;" json:"listClass"` //
IsDefault string `gorm:"size:8;" json:"isDefault"` //
Status string `gorm:"size:4;" json:"status"` //状态
Default string `gorm:"size:8;" json:"default"` //
CreateBy string `gorm:"size:64;" json:"createBy"` //
UpdateBy string `gorm:"size:64;" json:"updateBy"` //
Remark string `gorm:"size:255;" json:"remark"` //备注
BaseModel
Params string `gorm:"-" json:"params"`
DataScope string `gorm:"-" json:"dataScope"`
}
func (DictData) TableName() string {
return "sys_dict_data"
}
func (e *DictData) Create() (DictData, error) {
var doc DictData
var i int64
if err := orm.Eloquent.Table(e.TableName()).
Where("dict_type = ?", e.DictType).
Where("dict_label=? or (dict_label=? and dict_value = ?)", e.DictLabel, e.DictLabel, e.DictValue).
Count(&i).Error; err != nil {
return doc, err
}
if i > 0 {
return doc, errors.New("字典标签或者字典键值已经存在!")
}
result := orm.Eloquent.Table(e.TableName()).Create(&e)
if result.Error != nil {
err := result.Error
return doc, err
}
doc = *e
return doc, nil
}
func (e *DictData) GetByCode() (DictData, error) {
var doc DictData
table := orm.Eloquent.Table(e.TableName())
if e.DictCode != 0 {
table = table.Where("dict_code = ?", e.DictCode)
}
if e.DictLabel != "" {
table = table.Where("dict_label = ?", e.DictLabel)
}
if e.DictType != "" {
table = table.Where("dict_type = ?", e.DictType)
}
if err := table.First(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
func (e *DictData) Get() ([]DictData, error) {
var doc []DictData
table := orm.Eloquent.Table(e.TableName())
if e.DictCode != 0 {
table = table.Where("dict_code = ?", e.DictCode)
}
if e.DictLabel != "" {
table = table.Where("dict_label = ?", e.DictLabel)
}
if e.DictType != "" {
table = table.Where("dict_type = ?", e.DictType)
}
if err := table.Order("dict_sort").Find(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
func (e *DictData) GetPage(pageSize int, pageIndex int) ([]DictData, int, error) {
var doc []DictData
table := orm.Eloquent.Table(e.TableName())
if e.DictCode != 0 {
table = table.Where("dict_code = ?", e.DictCode)
}
if e.DictType != "" {
table = table.Where("dict_type = ?", e.DictType)
}
if e.DictLabel != "" {
table = table.Where("dict_label = ?", e.DictLabel)
}
if e.Status != "" {
table = table.Where("status = ?", e.Status)
}
// 数据权限控制
dataPermission := new(DataPermission)
dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
table, err := dataPermission.GetDataScope("sys_dict_data", table)
if err != nil {
return nil, 0, err
}
var count int64
if err := table.Order("dict_sort").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
return nil, 0, err
}
//table.Where("`deleted_at` IS NULL").Count(&count)
return doc, int(count), nil
}
func (e *DictData) Update(id int) (update DictData, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("dict_code = ?", id).First(&update).Error; err != nil {
return
}
if e.DictLabel != "" && e.DictLabel != update.DictLabel {
return update, errors.New("标签不允许修改!")
}
if e.DictValue != "" && e.DictValue != update.DictValue {
return update, errors.New("键值不允许修改!")
}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
return
}
return
}
func (e *DictData) Delete(id int) (success bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("dict_code = ?", id).Delete(&DictData{}).Error; err != nil {
success = false
return
}
success = true
return
}
func (e *DictData) BatchDelete(id []int) (Result bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("dict_code in (?)", id).Delete(&DictData{}).Error; err != nil {
return
}
Result = true
return
}
-152
View File
@@ -1,152 +0,0 @@
package models
import (
"errors"
"gorm.io/gorm"
orm "go-admin/common/global"
"go-admin/tools"
)
type DictType struct {
DictId int `gorm:"primary_key;auto_increment;" json:"dictId"`
DictName string `gorm:"size:128;" json:"dictName"` //字典名称
DictType string `gorm:"size:128;" json:"dictType"` //字典类型
Status string `gorm:"size:4;" json:"status"` //状态
CreateBy string `gorm:"size:11;" json:"createBy"` //创建者
UpdateBy string `gorm:"size:11;" json:"updateBy"` //更新者
Remark string `gorm:"size:255;" json:"remark"` //备注
BaseModel
DataScope string `gorm:"-" json:"dataScope"` //
Params string `gorm:"-" json:"params"` //
}
func (DictType) TableName() string {
return "sys_dict_type"
}
func (e *DictType) Create() (DictType, error) {
var doc DictType
var i int64
orm.Eloquent.Table(e.TableName()).Where("dict_name=? or dict_type = ?", e.DictName, e.DictType).Count(&i)
if i > 0 {
return doc, errors.New("字典名称或者字典类型已经存在!")
}
result := orm.Eloquent.Table(e.TableName()).Create(&e)
if result.Error != nil {
err := result.Error
return doc, err
}
doc = *e
return doc, nil
}
func (e *DictType) Get() (DictType, error) {
var doc DictType
table := orm.Eloquent.Table(e.TableName())
if e.DictId != 0 {
table = table.Where("dict_id = ?", e.DictId)
}
if e.DictName != "" {
table = table.Where("dict_name = ?", e.DictName)
}
if e.DictType != "" {
table = table.Where("dict_type = ?", e.DictType)
}
if err := table.First(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
func (e *DictType) GetList() ([]DictType, error) {
var doc []DictType
table := orm.Eloquent.Table(e.TableName())
if e.DictId != 0 {
table = table.Where("dict_id = ?", e.DictId)
}
if e.DictName != "" {
table = table.Where("dict_name = ?", e.DictName)
}
if e.DictType != "" {
table = table.Where("dict_type = ?", e.DictType)
}
if err := table.Find(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
func (e *DictType) GetPage(pageSize int, pageIndex int) ([]DictType, int, error) {
var doc []DictType
var db *gorm.DB
table := orm.Eloquent.Table(e.TableName())
if e.DictId != 0 {
db = db.Where("dict_id = ?", e.DictId)
}
if e.DictName != "" {
db = db.Where("dict_name = ?", e.DictName)
}
// 数据权限控制
dataPermission := new(DataPermission)
dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
table, err := dataPermission.GetDataScope("sys_dict_type", table)
if err != nil {
return nil, 0, err
}
var count int64
if err := table.Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
return nil, 0, err
}
//table.Count(&count)
return doc, int(count), nil
}
func (e *DictType) Update(id int) (update DictType, err error) {
if err = orm.Eloquent.Table(e.TableName()).First(&update, id).Error; err != nil {
return
}
if e.DictName != "" && e.DictName != update.DictName {
return update, errors.New("名称不允许修改!")
}
if e.DictType != "" && e.DictType != update.DictType {
return update, errors.New("类型不允许修改!")
}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
return
}
return
}
func (e *DictType) Delete(id int) (success bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("dict_id = ?", id).Delete(&DictData{}).Error; err != nil {
success = false
return
}
success = true
return
}
func (e *DictType) BatchDelete(id []int) (Result bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("dict_id in (?)", id).Delete(&DictType{}).Error; err != nil {
return
}
Result = true
return
}
-177
View File
@@ -1,177 +0,0 @@
package models
import (
orm "go-admin/common/global"
"go-admin/tools"
)
type SysFileDir struct {
Id int `json:"id"`
Label string `json:"label" gorm:"type:varchar(255);"` // 名称
PId int `json:"pId" gorm:"type:int(11);"` // 父id
Sort int `json:"sort" gorm:""` //排序
Path string `json:"path" gorm:"size:255;"` //
CreateBy string `json:"createBy" gorm:"type:varchar(128);"` // 创建人
UpdateBy string `json:"updateBy" gorm:"type:varchar(128);"` // 编辑人
Children []SysFileDir `json:"children" gorm:"-"`
DataScope string `json:"dataScope" gorm:"-"`
Params string `json:"params" gorm:"-"`
BaseModel
}
func (SysFileDir) TableName() string {
return "sys_file_dir"
}
// 创建SysFileDir
func (e *SysFileDir) Create() (SysFileDir, error) {
var doc SysFileDir
result := orm.Eloquent.Table(e.TableName()).Create(&e)
if result.Error != nil {
err := result.Error
return doc, err
}
path := "/" + tools.IntToString(e.Id)
if int(e.PId) != 0 {
var deptP SysFileDir
orm.Eloquent.Table(e.TableName()).Where("id = ?", e.PId).First(&deptP)
path = deptP.Path + path
} else {
path = "/0" + path
}
var mp = map[string]string{}
mp["path"] = path
if err := orm.Eloquent.Table(e.TableName()).Where("id = ?", e.Id).Updates(mp).Error; err != nil {
err := result.Error
return doc, err
}
doc = *e
doc.Path = path
return doc, nil
}
// 获取SysFileDir
func (e *SysFileDir) Get() (SysFileDir, error) {
var doc SysFileDir
table := orm.Eloquent.Table(e.TableName())
if e.Id != 0 {
table = table.Where("id = ?", e.Id)
}
if err := table.First(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
// 获取SysFileDir带分页
func (e *SysFileDir) GetPage() ([]SysFileDir, int, error) {
var doc []SysFileDir
table := orm.Eloquent.Table(e.TableName())
// 数据权限控制(如果不需要数据权限请将此处去掉)
//dataPermission := new(DataPermission)
//dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
//table, err := dataPermission.GetDataScope(e.TableName(), table)
//if err != nil {
// return nil, 0, err
//}
var count int64
if err := table.Find(&doc).Error; err != nil {
return nil, 0, err
}
table.Where("`deleted_at` IS NULL").Count(&count)
return doc, int(count), nil
}
// 更新SysFileDir
func (e *SysFileDir) Update(id int) (update SysFileDir, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("id = ?", id).First(&update).Error; err != nil {
return
}
path := "/" + tools.IntToString(e.Id)
if int(e.Id) != 0 {
var deptP SysFileDir
orm.Eloquent.Table(e.TableName()).Where("id = ?", e.Id).First(&deptP)
path = deptP.Path + path
} else {
path = "/0" + path
}
e.Path = path
//if e.Path != "" && e.Path != update.Path {
// return update, errors.New("上级不允许修改!")
//}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
return
}
return
}
// 删除SysFileDir
func (e *SysFileDir) Delete(id int) (success bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("id = ?", id).Delete(&SysFileDir{}).Error; err != nil {
success = false
return
}
success = true
return
}
//批量删除
func (e *SysFileDir) BatchDelete(id []int) (Result bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("id in (?)", id).Delete(&SysFileDir{}).Error; err != nil {
return
}
Result = true
return
}
func (e *SysFileDir) SetSysFileDir() ([]SysFileDir, error) {
list, _, err := e.GetPage()
m := make([]SysFileDir, 0)
for i := 0; i < len(list); i++ {
if list[i].PId != 0 {
continue
}
info := SysFileDirDigui(&list, list[i])
m = append(m, info)
}
return m, err
}
func SysFileDirDigui(deptlist *[]SysFileDir, menu SysFileDir) SysFileDir {
list := *deptlist
min := make([]SysFileDir, 0)
for j := 0; j < len(list); j++ {
if menu.Id != list[j].PId {
continue
}
mi := SysFileDir{}
mi.Id = list[j].Id
mi.PId = list[j].PId
mi.Label = list[j].Label
mi.Sort = list[j].Sort
mi.CreatedAt = list[j].CreatedAt
mi.UpdatedAt = list[j].UpdatedAt
mi.Children = []SysFileDir{}
ms := SysFileDirDigui(deptlist, mi)
min = append(min, ms)
}
menu.Children = min
return menu
}
+2 -3
View File
@@ -1,14 +1,13 @@
package gorm
import (
"go-admin/app/admin/models/system"
"gorm.io/gorm"
"go-admin/app/admin/models"
)
func InitData(db *gorm.DB) {
list := []models.CasbinRule{
list := []system.CasbinRule{
{"p", "admin", "/api/v1/menulist", "GET", "", "", ""},
{"p", "admin", "/api/v1/menu", "POST", "", "", ""},
{"p", "admin", "/api/v1/dict/databytype/", "GET", "", "", ""},
+1 -2
View File
@@ -2,12 +2,11 @@ package models
import (
"fmt"
"go-admin/common/global"
"gorm.io/gorm"
"io/ioutil"
"log"
"strings"
"go-admin/common/global"
)
func InitDb(db *gorm.DB) (err error) {
-30
View File
@@ -1,30 +0,0 @@
package models
import (
orm "go-admin/common/global"
"go-admin/tools"
)
type Login struct {
Username string `form:"UserName" json:"username" binding:"required"`
Password string `form:"Password" json:"password" binding:"required"`
Code string `form:"Code" json:"code" binding:"required"`
UUID string `form:"UUID" json:"uuid" binding:"required"`
}
func (u *Login) GetUser() (user SysUser, role SysRole, e error) {
e = orm.Eloquent.Table("sys_user").Where("username = ? ", u.Username).Find(&user).Error
if e != nil {
return
}
_, e = tools.CompareHashAndPassword(user.Password, u.Password)
if e != nil {
return
}
e = orm.Eloquent.Table("sys_role").Where("role_id = ? ", user.RoleId).First(&role).Error
if e != nil {
return
}
return
}
-105
View File
@@ -1,105 +0,0 @@
package models
import (
"time"
orm "go-admin/common/global"
)
type LoginLog struct {
InfoId int `json:"infoId" gorm:"primary_key;auto_increment;"` //主键
Username string `json:"username" gorm:"size:128;"` //用户名
Status string `json:"status" gorm:"size:4;"` //状态
Ipaddr string `json:"ipaddr" gorm:"size:255;"` //ip地址
LoginLocation string `json:"loginLocation" gorm:"size:255;"` //归属地
Browser string `json:"browser" gorm:"size:255;"` //浏览器
Os string `json:"os" gorm:"size:255;"` //系统
Platform string `json:"platform" gorm:"size:255;"` // 固件
LoginTime time.Time `json:"loginTime" gorm:"type:timestamp;"` //登录时间
CreateBy string `json:"createBy" gorm:"size:128;"` //创建人
UpdateBy string `json:"updateBy" gorm:"size:128;"` //更新者
DataScope string `json:"dataScope" gorm:"-"` //数据
Params string `json:"params" gorm:"-"` //
Remark string `json:"remark" gorm:"size:255;"` //备注
Msg string `json:"msg" gorm:"size:255;"`
BaseModel
}
func (LoginLog) TableName() string {
return "sys_loginlog"
}
func (e *LoginLog) Get() (LoginLog, error) {
var doc LoginLog
table := orm.Eloquent.Table(e.TableName())
if e.Ipaddr != "" {
table = table.Where("ipaddr = ?", e.Ipaddr)
}
if e.InfoId != 0 {
table = table.Where("info_id = ?", e.InfoId)
}
if err := table.First(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
func (e *LoginLog) GetPage(pageSize int, pageIndex int) ([]LoginLog, int, error) {
var doc []LoginLog
table := orm.Eloquent.Table(e.TableName())
if e.Ipaddr != "" {
table = table.Where("ipaddr = ?", e.Ipaddr)
}
if e.Status != "" {
table = table.Where("status = ?", e.Status)
}
if e.Username != "" {
table = table.Where("userName = ?", e.Username)
}
var count int64
if err := table.Order("info_id desc").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
return nil, 0, err
}
//table.Where("`deleted_at` IS NULL").Count(&count)
return doc, int(count), nil
}
func (e *LoginLog) Create() (LoginLog, error) {
var doc LoginLog
e.CreateBy = "0"
e.UpdateBy = "0"
result := orm.Eloquent.Table(e.TableName()).Create(&e)
if result.Error != nil {
err := result.Error
return doc, err
}
doc = *e
return doc, nil
}
func (e *LoginLog) Update(id int) (update LoginLog, err error) {
if err = orm.Eloquent.Table(e.TableName()).First(&update, id).Error; err != nil {
return
}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
return
}
return
}
func (e *LoginLog) BatchDelete(id []int) (Result bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("info_id in (?)", id).Delete(&LoginLog{}).Error; err != nil {
return
}
Result = true
return
}
+191 -179
View File
@@ -2,13 +2,15 @@ package models
import (
"errors"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
orm "go-admin/common/global"
"go-admin/tools"
"gorm.io/gorm"
"go-admin/app/admin/models/system"
)
type Menu struct {
MenuId int `json:"menuId" gorm:"primary_key;AUTO_INCREMENT"`
MenuId int `json:"menuId" gorm:"primaryKey;autoIncrement"`
MenuName string `json:"menuName" gorm:"size:128;"`
Title string `json:"title" gorm:"size:128;"`
Icon string `json:"icon" gorm:"size:128;"`
@@ -45,7 +47,7 @@ type MenuLable struct {
}
type Menus struct {
MenuId int `json:"menuId" gorm:"column:menu_id;primary_key;"`
MenuId int `json:"menuId" gorm:"column:menu_id;primaryKey;autoIncrement;"`
MenuName string `json:"menuName" gorm:"column:menu_name"`
Title string `json:"title" gorm:"column:title"`
Icon string `json:"icon" gorm:"column:icon"`
@@ -80,152 +82,162 @@ type MenuRole struct {
type MS []Menu
func (e *Menu) GetByMenuId() (Menu Menu, err error) {
//func (e *Menu) GetByMenuId() (Menu Menu, err error) {
//
// table := orm.Eloquent.Table(e.TableName())
// table = table.Where("menu_id = ?", e.MenuId)
// if err = table.Find(&Menu).Error; err != nil {
// return
// }
// return
//}
table := orm.Eloquent.Table(e.TableName())
table = table.Where("menu_id = ?", e.MenuId)
if err = table.Find(&Menu).Error; err != nil {
return
}
return
}
//func (e *Menu) SetMenu() (m []Menu, err error) {
// menulist, err := e.GetPage()
//
// m = make([]Menu, 0)
// for i := 0; i < len(menulist); i++ {
// if menulist[i].ParentId != 0 {
// continue
// }
// menusInfo := DiguiMenu(&menulist, menulist[i])
//
// m = append(m, menusInfo)
// }
// return
//}
func (e *Menu) SetMenu() (m []Menu, err error) {
menulist, err := e.GetPage()
//func DiguiMenu(menulist *[]Menu, menu Menu) Menu {
// list := *menulist
//
// min := make([]Menu, 0)
// for j := 0; j < len(list); j++ {
//
// if menu.MenuId != list[j].ParentId {
// continue
// }
// mi := Menu{}
// mi.MenuId = list[j].MenuId
// mi.MenuName = list[j].MenuName
// mi.Title = list[j].Title
// mi.Icon = list[j].Icon
// mi.Path = list[j].Path
// mi.MenuType = list[j].MenuType
// mi.Action = list[j].Action
// mi.Permission = list[j].Permission
// mi.ParentId = list[j].ParentId
// mi.NoCache = list[j].NoCache
// mi.Breadcrumb = list[j].Breadcrumb
// mi.Component = list[j].Component
// mi.Sort = list[j].Sort
// mi.Visible = list[j].Visible
// mi.CreatedAt = list[j].CreatedAt
// mi.Children = []Menu{}
//
// if mi.MenuType != "F" {
// ms := DiguiMenu(menulist, mi)
// min = append(min, ms)
//
// } else {
// min = append(min, mi)
// }
//
// }
// menu.Children = min
// return menu
//}
m = make([]Menu, 0)
for i := 0; i < len(menulist); i++ {
if menulist[i].ParentId != 0 {
continue
}
menusInfo := DiguiMenu(&menulist, menulist[i])
//func (e *Menu) SetMenuLabel() (m *[]MenuLable, err error) {
// menulist, err := e.Get()
//
// ml := make([]MenuLable, 0)
// for i := 0; i < len(menulist); i++ {
// if menulist[i].ParentId != 0 {
// continue
// }
// e := MenuLable{}
// e.Id = menulist[i].MenuId
// e.Label = menulist[i].Title
// menusInfo := MenuLabelCall(&menulist, e)
//
// ml = append(ml, menusInfo)
// }
// return &ml, err
//}
m = append(m, menusInfo)
}
return
}
//func MenuLabelCall(menulist *[]Menu, menu MenuLable) MenuLable {
// list := *menulist
//
// min := make([]MenuLable, 0)
// for j := 0; j < len(list); j++ {
//
// if menu.Id != list[j].ParentId {
// continue
// }
// mi := MenuLable{}
// mi.Id = list[j].MenuId
// mi.Label = list[j].Title
// mi.Children = []MenuLable{}
// if list[j].MenuType != "F" {
// ms := MenuLabelCall(menulist, mi)
// min = append(min, ms)
// } else {
// min = append(min, mi)
// }
//
// }
// if len(min) > 0 {
// menu.Children = min
// } else {
// menu.Children = nil
// }
// return menu
//}
func DiguiMenu(menulist *[]Menu, menu Menu) Menu {
list := *menulist
//func (e *Menu) SetMenuRole(roleName string) (m []Menu, err error) {
//
// menus, err := e.GetByRoleName(roleName)
//
// m = make([]Menu, 0)
// for i := 0; i < len(menus); i++ {
// if menus[i].ParentId != 0 {
// continue
// }
// menusInfo := DiguiMenu(&menus, menus[i])
//
// m = append(m, menusInfo)
// }
// return
//}
min := make([]Menu, 0)
for j := 0; j < len(list); j++ {
//func (e *MenuRole) Get(tx *gorm.DB) (Menus []MenuRole, err error) {
// table := tx.Table(e.TableName())
// if e.MenuName != "" {
// table = table.Where("menu_name = ?", e.MenuName)
// }
// if err = table.Order("sort").Find(&Menus).Error; err != nil {
// return
// }
// return
//}
if menu.MenuId != list[j].ParentId {
continue
}
mi := Menu{}
mi.MenuId = list[j].MenuId
mi.MenuName = list[j].MenuName
mi.Title = list[j].Title
mi.Icon = list[j].Icon
mi.Path = list[j].Path
mi.MenuType = list[j].MenuType
mi.Action = list[j].Action
mi.Permission = list[j].Permission
mi.ParentId = list[j].ParentId
mi.NoCache = list[j].NoCache
mi.Breadcrumb = list[j].Breadcrumb
mi.Component = list[j].Component
mi.Sort = list[j].Sort
mi.Visible = list[j].Visible
mi.CreatedAt = list[j].CreatedAt
mi.Children = []Menu{}
//func (e *Menu) GetByRoleName(roleName string) (Menus []Menu, err error) {
// var table *gorm.DB
// if roleName == "admin" {
// table = orm.Eloquent.Table(e.TableName()).Select("sys_menu.*")
// table = table.Where(" menu_type in ('M','C')")
// } else {
// table = orm.Eloquent.Table(e.TableName()).Select("sys_menu.*").Joins("left join sys_role_menu on sys_role_menu.menu_id=sys_menu.menu_id")
// table = table.Where("sys_role_menu.role_name=? and menu_type in ('M','C')", roleName)
// }
// if err = table.Order("sort").Find(&Menus).Error; err != nil {
// return
// }
// return
//}
if mi.MenuType != "F" {
ms := DiguiMenu(menulist, mi)
min = append(min, ms)
} else {
min = append(min, mi)
}
}
menu.Children = min
return menu
}
func (e *Menu) SetMenuLable() (m []MenuLable, err error) {
menulist, err := e.Get()
m = make([]MenuLable, 0)
for i := 0; i < len(menulist); i++ {
if menulist[i].ParentId != 0 {
continue
}
e := MenuLable{}
e.Id = menulist[i].MenuId
e.Label = menulist[i].Title
menusInfo := DiguiMenuLable(&menulist, e)
m = append(m, menusInfo)
}
return
}
func DiguiMenuLable(menulist *[]Menu, menu MenuLable) MenuLable {
list := *menulist
min := make([]MenuLable, 0)
for j := 0; j < len(list); j++ {
if menu.Id != list[j].ParentId {
continue
}
mi := MenuLable{}
mi.Id = list[j].MenuId
mi.Label = list[j].Title
mi.Children = []MenuLable{}
if list[j].MenuType != "F" {
ms := DiguiMenuLable(menulist, mi)
min = append(min, ms)
} else {
min = append(min, mi)
}
}
menu.Children = min
return menu
}
func (e *Menu) SetMenuRole(rolename string) (m []Menu, err error) {
menulist, err := e.GetByRoleName(rolename)
m = make([]Menu, 0)
for i := 0; i < len(menulist); i++ {
if menulist[i].ParentId != 0 {
continue
}
menusInfo := DiguiMenu(&menulist, menulist[i])
m = append(m, menusInfo)
}
return
}
func (e *MenuRole) Get() (Menus []MenuRole, err error) {
table := orm.Eloquent.Table(e.TableName())
if e.MenuName != "" {
table = table.Where("menu_name = ?", e.MenuName)
}
if err = table.Order("sort").Find(&Menus).Error; err != nil {
return
}
return
}
func (e *Menu) GetByRoleName(rolename string) (Menus []Menu, err error) {
table := orm.Eloquent.Table(e.TableName()).Select("sys_menu.*").Joins("left join sys_role_menu on sys_role_menu.menu_id=sys_menu.menu_id")
table = table.Where("sys_role_menu.role_name=? and menu_type in ('M','C')", rolename)
if err = table.Order("sort").Find(&Menus).Error; err != nil {
return
}
return
}
func (e *Menu) Get() (Menus []Menu, err error) {
table := orm.Eloquent.Table(e.TableName())
func (e *Menu) Get(tx *gorm.DB) (Menus []Menu, err error) {
table := tx.Table(e.TableName())
if e.MenuName != "" {
table = table.Where("menu_name = ?", e.MenuName)
}
@@ -245,8 +257,8 @@ func (e *Menu) Get() (Menus []Menu, err error) {
return
}
func (e *Menu) GetPage() (Menus []Menu, err error) {
table := orm.Eloquent.Table(e.TableName())
func (e *Menu) GetPage(tx *gorm.DB) (Menus []Menu, err error) {
table := tx.Table(e.TableName())
if e.MenuName != "" {
table = table.Where("menu_name = ?", e.MenuName)
}
@@ -261,8 +273,8 @@ func (e *Menu) GetPage() (Menus []Menu, err error) {
}
// 数据权限控制
dataPermission := new(DataPermission)
dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
dataPermission := new(system.DataPermission)
dataPermission.UserId, _ = pkg.StringToInt(e.DataScope)
table, err = dataPermission.GetDataScope("sys_menu", table)
if err != nil {
return nil, err
@@ -273,13 +285,13 @@ func (e *Menu) GetPage() (Menus []Menu, err error) {
return
}
func (e *Menu) Create() (id int, err error) {
result := orm.Eloquent.Table(e.TableName()).Create(&e)
func (e *Menu) Create(tx *gorm.DB) (id int, err error) {
result := tx.Table(e.TableName()).Create(&e)
if result.Error != nil {
err = result.Error
return
}
err = InitPaths(e)
err = InitPaths(tx, e)
if err != nil {
return
}
@@ -287,44 +299,44 @@ func (e *Menu) Create() (id int, err error) {
return
}
func InitPaths(menu *Menu) (err error) {
func InitPaths(tx *gorm.DB, menu *Menu) (err error) {
parentMenu := new(Menu)
if int(menu.ParentId) != 0 {
orm.Eloquent.Table("sys_menu").Where("menu_id = ?", menu.ParentId).First(parentMenu)
if menu.ParentId != 0 {
tx.Table("sys_menu").Where("menu_id = ?", menu.ParentId).First(parentMenu)
if parentMenu.Paths == "" {
err = errors.New("父级paths异常,请尝试对当前节点父级菜单进行更新操作!")
return
}
menu.Paths = parentMenu.Paths + "/" + tools.IntToString(menu.MenuId)
menu.Paths = parentMenu.Paths + "/" + pkg.IntToString(menu.MenuId)
} else {
menu.Paths = "/0/" + tools.IntToString(menu.MenuId)
menu.Paths = "/0/" + pkg.IntToString(menu.MenuId)
}
orm.Eloquent.Table("sys_menu").Where("menu_id = ?", menu.MenuId).Update("paths", menu.Paths)
tx.Table("sys_menu").Where("menu_id = ?", menu.MenuId).Update("paths", menu.Paths)
return
}
func (e *Menu) Update(id int) (update Menu, err error) {
if err = orm.Eloquent.Table(e.TableName()).First(&update, id).Error; err != nil {
return
}
//func (e *Menu) Update(tx *gorm.DB, id int) (update Menu, err error) {
// if err = tx.Table(e.TableName()).First(&update, id).Error; err != nil {
// return
// }
//
// //参数1:是要修改的数据
// //参数2:是修改的数据
// if err = tx.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
// return
// }
// err = InitPaths(tx, e)
// if err != nil {
// return
// }
// return
//}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
return
}
err = InitPaths(e)
if err != nil {
return
}
return
}
func (e *Menu) Delete(id int) (success bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("menu_id = ?", id).Delete(&Menu{}).Error; err != nil {
success = false
return
}
success = true
return
}
//func (e *Menu) Delete(tx *gorm.DB, id int) (success bool, err error) {
// if err = tx.Table(e.TableName()).Where("menu_id = ?", id).Delete(&Menu{}).Error; err != nil {
// success = false
// return
// }
// success = true
// return
//}
-116
View File
@@ -1,116 +0,0 @@
package models
import (
"time"
orm "go-admin/common/global"
)
//sys_operlog
type SysOperLog struct {
OperId int `json:"operId" gorm:"primary_key;AUTO_INCREMENT"` //日志编码
Title string `json:"title" gorm:"size:255;"` //操作模块
BusinessType string `json:"businessType" gorm:"size:128;"` //操作类型
BusinessTypes string `json:"businessTypes" gorm:"size:128;"`
Method string `json:"method" gorm:"size:128;"` //函数
RequestMethod string `json:"requestMethod" gorm:"size:128;"` //请求方式
OperatorType string `json:"operatorType" gorm:"size:128;"` //操作类型
OperName string `json:"operName" gorm:"size:128;"` //操作者
DeptName string `json:"deptName" gorm:"size:128;"` //部门名称
OperUrl string `json:"operUrl" gorm:"size:255;"` //访问地址
OperIp string `json:"operIp" gorm:"size:128;"` //客户端ip
OperLocation string `json:"operLocation" gorm:"size:128;"` //访问位置
OperParam string `json:"operParam" gorm:"size:255;"` //请求参数
Status string `json:"status" gorm:"size:4;"` //操作状态
OperTime time.Time `json:"operTime" gorm:"type:timestamp;"` //操作时间
JsonResult string `json:"jsonResult" gorm:"size:255;"` //返回数据
CreateBy string `json:"createBy" gorm:"size:128;"` //创建人
UpdateBy string `json:"updateBy" gorm:"size:128;"` //更新者
DataScope string `json:"dataScope" gorm:"-"` //数据
Params string `json:"params" gorm:"-"` //参数
Remark string `json:"remark" gorm:"size:255;"` //备注
LatencyTime string `json:"latencyime" gorm:"size:128;"` //耗时
UserAgent string `json:"userAgent" gorm:"size:255;"` //ua
BaseModel
}
func (SysOperLog) TableName() string {
return "sys_operlog"
}
func (e *SysOperLog) Get() (SysOperLog, error) {
var doc SysOperLog
table := orm.Eloquent.Table(e.TableName())
if e.OperIp != "" {
table = table.Where("oper_ip = ?", e.OperIp)
}
if e.OperId != 0 {
table = table.Where("oper_id = ?", e.OperId)
}
if err := table.First(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
func (e *SysOperLog) GetPage(pageSize int, pageIndex int) ([]SysOperLog, int, error) {
var doc []SysOperLog
table := orm.Eloquent.Table(e.TableName())
if e.OperIp != "" {
table = table.Where("oper_ip = ?", e.OperIp)
}
if e.Status != "" {
table = table.Where("status = ?", e.Status)
}
if e.OperName != "" {
table = table.Where("oper_name = ?", e.OperName)
}
if e.BusinessType != "" {
table = table.Where("business_type = ?", e.BusinessType)
}
var count int64
if err := table.Order("oper_id desc").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
return nil, 0, err
}
//table.Where("`deleted_at` IS NULL").Count(&count)
return doc, int(count), nil
}
func (e *SysOperLog) Create() (SysOperLog, error) {
var doc SysOperLog
e.CreateBy = "0"
e.UpdateBy = "0"
result := orm.Eloquent.Table(e.TableName()).Create(&e)
if result.Error != nil {
err := result.Error
return doc, err
}
doc = *e
return doc, nil
}
func (e *SysOperLog) Update(id int) (update SysOperLog, err error) {
if err = orm.Eloquent.Table(e.TableName()).First(&update, id).Error; err != nil {
return
}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
return
}
return
}
func (e *SysOperLog) BatchDelete(id []int) (Result bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where(" oper_id in (?)", id).Delete(&SysOperLog{}).Error; err != nil {
return
}
Result = true
return
}
-145
View File
@@ -1,145 +0,0 @@
package models
import (
orm "go-admin/common/global"
"go-admin/tools"
)
type Post struct {
PostId int `gorm:"primary_key;AUTO_INCREMENT" json:"postId"` //岗位编号
PostName string `gorm:"size:128;" json:"postName"` //岗位名称
PostCode string `gorm:"size:128;" json:"postCode"` //岗位代码
Sort int `gorm:"" json:"sort"` //岗位排序
Status string `gorm:"size:4;" json:"status"` //状态
Remark string `gorm:"size:255;" json:"remark"` //描述
CreateBy string `gorm:"size:128;" json:"createBy"`
UpdateBy string `gorm:"size:128;" json:"updateBy"`
BaseModel
DataScope string `gorm:"-" json:"dataScope"`
Params string `gorm:"-" json:"params"`
}
func (Post) TableName() string {
return "sys_post"
}
func (e *Post) Create() (Post, error) {
var doc Post
result := orm.Eloquent.Table(e.TableName()).Create(&e)
if result.Error != nil {
err := result.Error
return doc, err
}
doc = *e
return doc, nil
}
func (e *Post) Get() (Post, error) {
var doc Post
table := orm.Eloquent.Table(e.TableName())
if e.PostId != 0 {
table = table.Where("post_id = ?", e.PostId)
}
if e.PostName != "" {
table = table.Where("post_name = ?", e.PostName)
}
if e.PostCode != "" {
table = table.Where("post_code = ?", e.PostCode)
}
if e.Status != "" {
table = table.Where("status = ?", e.Status)
}
if err := table.First(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
func (e *Post) GetList() ([]Post, error) {
var doc []Post
table := orm.Eloquent.Table(e.TableName())
if e.PostId != 0 {
table = table.Where("post_id = ?", e.PostId)
}
if e.PostName != "" {
table = table.Where("post_name = ?", e.PostName)
}
if e.PostCode != "" {
table = table.Where("post_code = ?", e.PostCode)
}
if e.Status != "" {
table = table.Where("status = ?", e.Status)
}
if err := table.Find(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
func (e *Post) GetPage(pageSize int, pageIndex int) ([]Post, int, error) {
var doc []Post
table := orm.Eloquent.Table(e.TableName())
if e.PostId != 0 {
table = table.Where("post_id = ?", e.PostId)
}
if e.PostName != "" {
table = table.Where("post_name = ?", e.PostName)
}
if e.PostCode != "" {
table = table.Where("post_code = ?", e.PostCode)
}
if e.Status != "" {
table = table.Where("status = ?", e.Status)
}
// 数据权限控制
dataPermission := new(DataPermission)
dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
table, err := dataPermission.GetDataScope("sys_post", table)
if err != nil {
return nil, 0, err
}
var count int64
if err := table.Order("sort").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
return nil, 0, err
}
//table.Where("`deleted_at` IS NULL").Count(&count)
return doc, int(count), nil
}
func (e *Post) Update(id int) (update Post, err error) {
if err = orm.Eloquent.Table(e.TableName()).First(&update, id).Error; err != nil {
return
}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
return
}
return
}
func (e *Post) Delete(id int) (success bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("post_id = ?", id).Delete(&Post{}).Error; err != nil {
success = false
return
}
success = true
return
}
func (e *Post) BatchDelete(id []int) (Result bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("post_id in (?)", id).Delete(&Post{}).Error; err != nil {
return
}
Result = true
return
}
+225 -213
View File
@@ -1,30 +1,22 @@
package models
import (
"github.com/pkg/errors"
"gorm.io/gorm"
orm "go-admin/common/global"
"go-admin/tools"
)
type SysRole struct {
RoleId int `json:"roleId" gorm:"primary_key;AUTO_INCREMENT"` // 角色编码
RoleName string `json:"roleName" gorm:"size:128;"` // 角色名称
Status string `json:"status" gorm:"size:4;"` //
RoleKey string `json:"roleKey" gorm:"size:128;"` //角色代码
RoleSort int `json:"roleSort" gorm:""` //角色排序
Flag string `json:"flag" gorm:"size:128;"` //
CreateBy string `json:"createBy" gorm:"size:128;"` //
UpdateBy string `json:"updateBy" gorm:"size:128;"` //
Remark string `json:"remark" gorm:"size:255;"` //备注
RoleId int `json:"roleId" gorm:"primaryKey;autoIncrement"` // 角色编码
RoleName string `json:"roleName" gorm:"size:128;"` // 角色名称
Status string `json:"status" gorm:"size:4;"` //
RoleKey string `json:"roleKey" gorm:"size:128;"` //角色代码
RoleSort int `json:"roleSort" gorm:""` //角色排序
Flag string `json:"flag" gorm:"size:128;"` //
CreateBy string `json:"createBy" gorm:"size:128;"` //
UpdateBy string `json:"updateBy" gorm:"size:128;"` //
Remark string `json:"remark" gorm:"size:255;"` //备注
Admin bool `json:"admin" gorm:"size:4;"`
DataScope string `json:"dataScope" gorm:"size:128;"`
BaseModel
Params string `json:"params" gorm:"-"`
MenuIds []int `json:"menuIds" gorm:"-"`
DeptIds []int `json:"deptIds" gorm:"-"`
Params string `json:"params" gorm:"-"`
MenuIds []int `json:"menuIds" gorm:"-"`
DeptIds []int `json:"deptIds" gorm:"-"`
}
func (SysRole) TableName() string {
@@ -35,196 +27,216 @@ type MenuIdList struct {
MenuId int `json:"menuId"`
}
func (role *SysRole) GetById(tx *gorm.DB, id interface{}) error {
return tx.First(role, id).Error
}
func (role *SysRole) GetPage(pageSize int, pageIndex int) ([]SysRole, int, error) {
var doc []SysRole
table := orm.Eloquent.Table("sys_role")
if role.RoleId != 0 {
table = table.Where("role_id = ?", role.RoleId)
}
if role.RoleName != "" {
table = table.Where("role_name = ?", role.RoleName)
}
if role.Status != "" {
table = table.Where("status = ?", role.Status)
}
if role.RoleKey != "" {
table = table.Where("role_key = ?", role.RoleKey)
}
// 数据权限控制
dataPermission := new(DataPermission)
dataPermission.UserId, _ = tools.StringToInt(role.DataScope)
table, err := dataPermission.GetDataScope("sys_role", table)
if err != nil {
return nil, 0, err
}
var count int64
if err := table.Order("role_sort").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
return nil, 0, err
}
//table.Where("`deleted_at` IS NULL").Count(&count)
return doc, int(count), nil
}
func (role *SysRole) Get() (SysRole SysRole, err error) {
table := orm.Eloquent.Table("sys_role")
if role.RoleId != 0 {
table = table.Where("role_id = ?", role.RoleId)
}
if role.RoleName != "" {
table = table.Where("role_name = ?", role.RoleName)
}
if err = table.First(&SysRole).Error; err != nil {
return
}
return
}
func (role *SysRole) GetList() (SysRole []SysRole, err error) {
table := orm.Eloquent.Table("sys_role")
if role.RoleId != 0 {
table = table.Where("role_id = ?", role.RoleId)
}
if role.RoleName != "" {
table = table.Where("role_name = ?", role.RoleName)
}
if err = table.Order("role_sort").Find(&SysRole).Error; err != nil {
return
}
return
}
// 获取角色对应的菜单ids
func (role *SysRole) GetRoleMeunId() ([]int, error) {
menuIds := make([]int, 0)
menuList := make([]MenuIdList, 0)
if err := orm.Eloquent.Table("sys_role_menu").Select("sys_role_menu.menu_id").Where("role_id = ? ", role.RoleId).Where(" sys_role_menu.menu_id not in(select sys_menu.parent_id from sys_role_menu LEFT JOIN sys_menu on sys_menu.menu_id=sys_role_menu.menu_id where role_id =? and parent_id is not null)", role.RoleId).Find(&menuList).Error; err != nil {
return nil, err
}
for i := 0; i < len(menuList); i++ {
menuIds = append(menuIds, menuList[i].MenuId)
}
return menuIds, nil
}
func (role *SysRole) Insert() (id int, err error) {
var i int64
orm.Eloquent.Table(role.TableName()).Where("role_name=? or role_key = ?", role.RoleName, role.RoleKey).Count(&i)
if i > 0 {
return 0, errors.New("角色名称或者角色标识已经存在!")
}
role.UpdateBy = ""
result := orm.Eloquent.Table(role.TableName()).Create(&role)
if result.Error != nil {
err = result.Error
return
}
id = role.RoleId
return
}
type DeptIdList struct {
DeptId int `json:"DeptId"`
}
func (role *SysRole) GetRoleDeptId() ([]int, error) {
deptIds := make([]int, 0)
deptList := make([]DeptIdList, 0)
if err := orm.Eloquent.Table("sys_role_dept").Select("sys_role_dept.dept_id").Joins("LEFT JOIN sys_dept on sys_dept.dept_id=sys_role_dept.dept_id").Where("role_id = ? ", role.RoleId).Where(" sys_role_dept.dept_id not in(select sys_dept.parent_id from sys_role_dept LEFT JOIN sys_dept on sys_dept.dept_id=sys_role_dept.dept_id where role_id =? )", role.RoleId).Find(&deptList).Error; err != nil {
return nil, err
}
for i := 0; i < len(deptList); i++ {
deptIds = append(deptIds, deptList[i].DeptId)
}
return deptIds, nil
}
//修改
func (role *SysRole) Update(id int) (update SysRole, err error) {
if err = orm.Eloquent.Table(role.TableName()).First(&update, id).Error; err != nil {
return
}
if role.RoleName != "" && role.RoleName != update.RoleName {
return update, errors.New("角色名称不允许修改!")
}
if role.RoleKey != "" && role.RoleKey != update.RoleKey {
return update, errors.New("角色标识不允许修改!")
}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table(role.TableName()).Model(&update).Updates(&role).Error; err != nil {
return
}
return
}
//批量删除
func (role *SysRole) BatchDelete(id []int) (Result bool, err error) {
tx := orm.Eloquent.Begin()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
}
}()
if err := tx.Error; err != nil {
return false, err
}
// 查询角色
var roles []SysRole
if err := tx.Table("sys_role").Where("role_id in (?)", id).Find(&roles).Error; err != nil {
tx.Rollback()
return false, err
}
var count int64
if err := tx.Table("sys_user").Where("role_id in (?)", id).Count(&count).Error; err != nil {
tx.Rollback()
return false, err
}
if count > 0 {
tx.Rollback()
return false, errors.New("存在绑定用户,请解绑后重试")
}
// 删除角色
if err = tx.Table(role.TableName()).Where("role_id in (?)", id).Unscoped().Delete(&SysRole{}).Error; err != nil {
tx.Rollback()
return false, err
}
// 删除角色菜单
if err := tx.Table("sys_role_menu").Where("role_id in (?)", id).Delete(&RoleMenu{}).Error; err != nil {
tx.Rollback()
return false, err
}
// 删除casbin配置
for i := 0; i < len(roles); i++ {
if err := tx.Table("sys_casbin_rule").Where("v0 in (?)", roles[0].RoleKey).Delete(&CasbinRule{}).Error; err != nil {
tx.Rollback()
return false, err
}
}
if err := tx.Commit().Error; err != nil {
return false, err
}
return true, nil
}
//func (role *SysRole) GetById(tx *gorm.DB, id interface{}) error {
// return tx.First(role, id).Error
//}
//
//func (role *SysRole) GetPage(pageSize int, pageIndex int) ([]SysRole, int, error) {
// var doc []SysRole
//
// table := orm.Eloquent.Table("sys_role")
// if role.RoleId != 0 {
// table = table.Where("role_id = ?", role.RoleId)
// }
// if role.RoleName != "" {
// table = table.Where("role_name = ?", role.RoleName)
// }
// if role.Status != "" {
// table = table.Where("status = ?", role.Status)
// }
// if role.RoleKey != "" {
// table = table.Where("role_key = ?", role.RoleKey)
// }
//
// // 数据权限控制
// dataPermission := new(DataPermission)
// dataPermission.UserId, _ = tools.StringToInt(role.DataScope)
// table, err := dataPermission.GetDataScope("sys_role", table)
// if err != nil {
// return nil, 0, err
// }
// var count int64
//
// if err := table.Order("role_sort").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
// return nil, 0, err
// }
// //table.Where("`deleted_at` IS NULL").Count(&count)
// return doc, int(count), nil
//}
//
//func (role *SysRole) Get() (SysRole SysRole, err error) {
// table := orm.Eloquent.Table("sys_role")
// if role.RoleId != 0 {
// table = table.Where("role_id = ?", role.RoleId)
// }
// if role.RoleName != "" {
// table = table.Where("role_name = ?", role.RoleName)
// }
// if err = table.First(&SysRole).Error; err != nil {
// return
// }
//
// return
//}
//
//func (role *SysRole) GetOne(sysRole *SysRole) (err error) {
// table := orm.Eloquent.Table("sys_role")
// if role.RoleId != 0 {
// table = table.Where("role_id = ?", role.RoleId)
// }
// if role.RoleName != "" {
// table = table.Where("role_name = ?", role.RoleName)
// }
// if err = table.First(sysRole).Error; err != nil {
// return
// }
//
// return
//}
//
//func (role *SysRole) GetList() (SysRole []SysRole, err error) {
// table := orm.Eloquent.Table("sys_role")
// if role.RoleId != 0 {
// table = table.Where("role_id = ?", role.RoleId)
// }
// if role.RoleName != "" {
// table = table.Where("role_name = ?", role.RoleName)
// }
// if err = table.Order("role_sort").Find(&SysRole).Error; err != nil {
// return
// }
//
// return
//}
//
//// 获取角色对应的菜单ids
//func (role *SysRole) GetRoleMeunId() ([]int, error) {
// menuIds := make([]int, 0)
// menuList := make([]MenuIdList, 0)
// if err := orm.Eloquent.Table("sys_role_menu").
// Select("sys_role_menu.menu_id").
// Where("role_id = ? ", role.RoleId).
// Where(" sys_role_menu.menu_id not in(select sys_menu.parent_id from sys_role_menu " +
// "LEFT JOIN sys_menu on sys_menu.menu_id=sys_role_menu.menu_id where role_id =? and parent_id is not null)", role.RoleId).
// Find(&menuList).Error; err != nil {
// return nil, err
// }
//
// for i := 0; i < len(menuList); i++ {
// menuIds = append(menuIds, menuList[i].MenuId)
// }
// return menuIds, nil
//}
//
//func (role *SysRole) Insert() (id int, err error) {
// var i int64
// orm.Eloquent.Table(role.TableName()).Where("role_name=? or role_key = ?", role.RoleName, role.RoleKey).Count(&i)
// if i > 0 {
// return 0, errors.New("角色名称或者角色标识已经存在!")
// }
// role.UpdateBy = ""
// result := orm.Eloquent.Table(role.TableName()).Create(&role)
// if result.Error != nil {
// err = result.Error
// return
// }
// id = role.RoleId
// return
//}
//
//type DeptIdList struct {
// DeptId int `json:"DeptId"`
//}
//
//func (role *SysRole) GetRoleDeptId() ([]int, error) {
// deptIds := make([]int, 0)
// deptList := make([]DeptIdList, 0)
// if err := orm.Eloquent.Table("sys_role_dept").Select("sys_role_dept.dept_id").Joins("LEFT JOIN sys_dept on sys_dept.dept_id=sys_role_dept.dept_id").Where("role_id = ? ", role.RoleId).Where(" sys_role_dept.dept_id not in(select sys_dept.parent_id from sys_role_dept LEFT JOIN sys_dept on sys_dept.dept_id=sys_role_dept.dept_id where role_id =? )", role.RoleId).Find(&deptList).Error; err != nil {
// return nil, err
// }
//
// for i := 0; i < len(deptList); i++ {
// deptIds = append(deptIds, deptList[i].DeptId)
// }
//
// return deptIds, nil
//}
//
////修改
//func (role *SysRole) Update(id int) (update SysRole, err error) {
// if err = orm.Eloquent.Table(role.TableName()).First(&update, id).Error; err != nil {
// return
// }
//
// if role.RoleName != "" && role.RoleName != update.RoleName {
// return update, errors.New("角色名称不允许修改!")
// }
//
// if role.RoleKey != "" && role.RoleKey != update.RoleKey {
// return update, errors.New("角色标识不允许修改!")
// }
//
// //参数1:是要修改的数据
// //参数2:是修改的数据
// if err = orm.Eloquent.Table(role.TableName()).Model(&update).Updates(&role).Error; err != nil {
// return
// }
// return
//}
//
////批量删除
//func (role *SysRole) BatchDelete(id []int) (Result bool, err error) {
// tx := orm.Eloquent.Begin()
//
// defer func() {
// if r := recover(); r != nil {
// tx.Rollback()
// }
// }()
//
// if err := tx.Error; err != nil {
// return false, err
// }
// // 查询角色
// var roles []SysRole
// if err := tx.Table("sys_role").Where("role_id in (?)", id).Find(&roles).Error; err != nil {
// tx.Rollback()
// return false, err
// }
//
// var count int64
// if err := tx.Table("sys_user").Where("role_id in (?)", id).Count(&count).Error; err != nil {
// tx.Rollback()
// return false, err
// }
// if count > 0 {
// tx.Rollback()
// return false, errors.New("存在绑定用户,请解绑后重试")
// }
//
// // 删除角色
// if err = tx.Table(role.TableName()).Where("role_id in (?)", id).Unscoped().Delete(&SysRole{}).Error; err != nil {
// tx.Rollback()
// return false, err
// }
//
// // 删除角色菜单
// if err := tx.Table("sys_role_menu").Where("role_id in (?)", id).Delete(&RoleMenu{}).Error; err != nil {
// tx.Rollback()
// return false, err
// }
//
// // 删除casbin配置
// for i := 0; i < len(roles); i++ {
// if err := tx.Table("sys_casbin_rule").Where("v0 in (?)", roles[0].RoleKey).Delete(&CasbinRule{}).Error; err != nil {
// tx.Rollback()
// return false, err
// }
// }
//
// if err := tx.Commit().Error; err != nil {
// return false, err
// }
//
// return true, nil
//}
-47
View File
@@ -1,47 +0,0 @@
package models
import (
"fmt"
orm "go-admin/common/global"
)
//sys_role_dept
type SysRoleDept struct {
RoleId int `gorm:""`
DeptId int `gorm:""`
}
func (SysRoleDept) TableName() string {
return "sys_role_dept"
}
func (rm *SysRoleDept) Insert(roleId int, deptIds []int) (bool, error) {
//ORM不支持批量插入所以需要拼接 sql 串
sql := "INSERT INTO `sys_role_dept` (`role_id`,`dept_id`) VALUES "
for i := 0; i < len(deptIds); i++ {
if len(deptIds)-1 == i {
//最后一条数据 以分号结尾
sql += fmt.Sprintf("(%d,%d);", roleId, deptIds[i])
} else {
sql += fmt.Sprintf("(%d,%d),", roleId, deptIds[i])
}
}
orm.Eloquent.Exec(sql)
return true, nil
}
func (rm *SysRoleDept) DeleteRoleDept(roleId int) (bool, error) {
if err := orm.Eloquent.Table("sys_role_dept").Where("role_id = ?", roleId).Delete(&rm).Error; err != nil {
return false, err
}
var role SysRole
if err := orm.Eloquent.Table("sys_role").Where("role_id = ?", roleId).First(&role).Error; err != nil {
return false, err
}
return true, nil
}
+180 -183
View File
@@ -1,10 +1,7 @@
package models
import (
"fmt"
orm "go-admin/common/global"
"go-admin/tools"
"gorm.io/gorm"
)
type RoleMenu struct {
@@ -23,22 +20,22 @@ type MenuPath struct {
Path string `json:"path"`
}
func (rm *RoleMenu) Get() ([]RoleMenu, error) {
var r []RoleMenu
table := orm.Eloquent.Table("sys_role_menu")
if rm.RoleId != 0 {
table = table.Where("role_id = ?", rm.RoleId)
//func (rm *RoleMenu) Get(tx *gorm.DB) ([]RoleMenu, error) {
// var r []RoleMenu
// table := tx.Table("sys_role_menu")
// if rm.RoleId != 0 {
// table = table.Where("role_id = ?", rm.RoleId)
//
// }
// if err := table.Find(&r).Error; err != nil {
// return nil, err
// }
// return r, nil
//}
}
if err := table.Find(&r).Error; err != nil {
return nil, err
}
return r, nil
}
func (rm *RoleMenu) GetPermis() ([]string, error) {
func (rm *RoleMenu) GetPermis(tx *gorm.DB) ([]string, error) {
var r []Menu
table := orm.Eloquent.Select("sys_menu.permission").Table("sys_menu").Joins("left join sys_role_menu on sys_menu.menu_id = sys_role_menu.menu_id")
table := tx.Select("sys_menu.permission").Table("sys_menu").Joins("left join sys_role_menu on sys_menu.menu_id = sys_role_menu.menu_id")
table = table.Where("role_id = ?", rm.RoleId)
@@ -53,9 +50,9 @@ func (rm *RoleMenu) GetPermis() ([]string, error) {
return list, nil
}
func (rm *RoleMenu) GetIDS() ([]MenuPath, error) {
func (rm *RoleMenu) GetIDS(tx *gorm.DB) ([]MenuPath, error) {
var r []MenuPath
table := orm.Eloquent.Select("sys_menu.path").Table("sys_role_menu")
table := tx.Select("sys_menu.path").Table("sys_role_menu")
table = table.Joins("left join sys_role on sys_role.role_id=sys_role_menu.role_id")
table = table.Joins("left join sys_menu on sys_menu.id=sys_role_menu.menu_id")
table = table.Where("sys_role.role_name = ? and sys_menu.type=1", rm.RoleName)
@@ -65,170 +62,170 @@ func (rm *RoleMenu) GetIDS() ([]MenuPath, error) {
return r, nil
}
func (rm *RoleMenu) DeleteRoleMenu(roleId int) (bool, error) {
tx := orm.Eloquent.Begin()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
}
}()
if err := tx.Error; err != nil {
return false, err
}
if err := tx.Table("sys_role_dept").Where("role_id = ?", roleId).Delete(&rm).Error; err != nil {
tx.Rollback()
return false, err
}
if err := tx.Table("sys_role_menu").Where("role_id = ?", roleId).Delete(&rm).Error; err != nil {
tx.Rollback()
return false, err
}
var role SysRole
if err := tx.Table("sys_role").Where("role_id = ?", roleId).First(&role).Error; err != nil {
tx.Rollback()
return false, err
}
sql3 := "delete from sys_casbin_rule where v0= '" + role.RoleKey + "';"
if err := tx.Exec(sql3).Error; err != nil {
tx.Rollback()
return false, err
}
if err := tx.Commit().Error; err != nil {
return false, err
}
return true, nil
}
//func (rm *RoleMenu) DeleteRoleMenu(roleId int) (bool, error) {
// tx := orm.Eloquent.Begin()
// defer func() {
// if r := recover(); r != nil {
// tx.Rollback()
// }
// }()
//
// if err := tx.Error; err != nil {
// return false, err
// }
//
// if err := tx.Table("sys_role_dept").Where("role_id = ?", roleId).Delete(&rm).Error; err != nil {
// tx.Rollback()
// return false, err
// }
// if err := tx.Table("sys_role_menu").Where("role_id = ?", roleId).Delete(&rm).Error; err != nil {
// tx.Rollback()
// return false, err
// }
// var role SysRole
// if err := tx.Table("sys_role").Where("role_id = ?", roleId).First(&role).Error; err != nil {
// tx.Rollback()
// return false, err
// }
// sql3 := "delete from sys_casbin_rule where v0= '" + role.RoleKey + "';"
// if err := tx.Exec(sql3).Error; err != nil {
// tx.Rollback()
// return false, err
// }
// if err := tx.Commit().Error; err != nil {
// return false, err
// }
//
// return true, nil
//
//}
// 该方法即将弃用
func (rm *RoleMenu) BatchDeleteRoleMenu(roleIds []int) (bool, error) {
tx := orm.Eloquent.Begin()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
}
}()
//func (rm *RoleMenu) BatchDeleteRoleMenu(roleIds []int) (bool, error) {
// tx := orm.Eloquent.Begin()
// defer func() {
// if r := recover(); r != nil {
// tx.Rollback()
// }
// }()
//
// if err := tx.Error; err != nil {
// return false, err
// }
//
// if err := tx.Table("sys_role_menu").Where("role_id in (?)", roleIds).Delete(&rm).Error; err != nil {
// tx.Rollback()
// return false, err
// }
// var role []SysRole
// if err := tx.Table("sys_role").Where("role_id in (?)", roleIds).Find(&role).Error; err != nil {
// tx.Rollback()
// return false, err
// }
// sql := ""
// for i := 0; i < len(role); i++ {
// sql += "delete from sys_casbin_rule where v0= '" + role[i].RoleName + "';"
// }
// if err := tx.Exec(sql).Error; err != nil {
// tx.Rollback()
// return false, err
// }
// if err := tx.Commit().Error; err != nil {
// return false, err
// }
// return true, nil
//
//}
if err := tx.Error; err != nil {
return false, err
}
//func (rm *RoleMenu) Insert(roleId int, menuId []int) (bool, error) {
// var (
// role SysRole
// menu []Menu
// casbinRuleQueue []system.CasbinRule // casbinRule 待插入队列
// )
//
// // 开始事务
// tx := orm.Eloquent.Begin()
// defer func() {
// if r := recover(); r != nil {
// tx.Rollback()
// }
// }()
//
// if err := tx.Error; err != nil {
// return false, err
// }
//
// // 在事务中做一些数据库操作(从这一点使用'tx',而不是'db')
// if err := tx.Table("sys_role").Where("role_id = ?", roleId).First(&role).Error; err != nil {
// tx.Rollback()
// return false, err
// }
// if err := tx.Table("sys_menu").Where("menu_id in (?)", menuId).Find(&menu).Error; err != nil {
// tx.Rollback()
// return false, err
// }
// //ORM不支持批量插入所以需要拼接 sql 串
// sysRoleMenuSql := "INSERT INTO `sys_role_menu` (`role_id`,`menu_id`,`role_name`) VALUES "
// casbinRuleSql := "INSERT INTO `sys_casbin_rule` (`p_type`,`v0`,`v1`,`v2`) VALUES "
//
// for i, m := range menu {
// // 拼装'role_menu'表批量插入SQL语句
// sysRoleMenuSql += fmt.Sprintf("(%d,%d,'%s')", role.RoleId, m.MenuId, role.RoleKey)
// if i == len(menu)-1 {
// sysRoleMenuSql += ";" //最后一条数据 以分号结尾
// } else {
// sysRoleMenuSql += ","
// }
// if m.MenuType == "A" {
// // 加入队列
// casbinRuleQueue = append(casbinRuleQueue,
// system.CasbinRule{
// V0: role.RoleKey,
// V1: m.Path,
// V2: m.Action,
// })
// }
// }
// // 执行批量插入sys_role_menu
// if err := tx.Exec(sysRoleMenuSql).Error; err != nil {
// tx.Rollback()
// return false, err
// }
//
// // 拼装'sys_casbin_rule'批量插入SQL语句
// // TODO: casbinRuleQueue队列不为空时才会拼装,否则直接忽略不执行'for'循环
// for i, v := range casbinRuleQueue {
// casbinRuleSql += fmt.Sprintf("('p','%s','%s','%s')", v.V0, v.V1, v.V2)
// if i == len(casbinRuleQueue)-1 {
// casbinRuleSql += ";"
// } else {
// casbinRuleSql += ","
// }
// }
// // 执行批量插入sys_casbin_rule
// if len(casbinRuleQueue) > 0 {
// if err := tx.Exec(casbinRuleSql).Error; err != nil {
// tx.Rollback()
// return false, err
// }
// }
//
// if err := tx.Commit().Error; err != nil {
// return false, err
// }
// return true, nil
//}
if err := tx.Table("sys_role_menu").Where("role_id in (?)", roleIds).Delete(&rm).Error; err != nil {
tx.Rollback()
return false, err
}
var role []SysRole
if err := tx.Table("sys_role").Where("role_id in (?)", roleIds).Find(&role).Error; err != nil {
tx.Rollback()
return false, err
}
sql := ""
for i := 0; i < len(role); i++ {
sql += "delete from sys_casbin_rule where v0= '" + role[i].RoleName + "';"
}
if err := tx.Exec(sql).Error; err != nil {
tx.Rollback()
return false, err
}
if err := tx.Commit().Error; err != nil {
return false, err
}
return true, nil
}
func (rm *RoleMenu) Insert(roleId int, menuId []int) (bool, error) {
var (
role SysRole
menu []Menu
casbinRuleQueue []CasbinRule // casbinRule 待插入队列
)
// 开始事务
tx := orm.Eloquent.Begin()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
}
}()
if err := tx.Error; err != nil {
return false, err
}
// 在事务中做一些数据库操作(从这一点使用'tx',而不是'db')
if err := tx.Table("sys_role").Where("role_id = ?", roleId).First(&role).Error; err != nil {
tx.Rollback()
return false, err
}
if err := tx.Table("sys_menu").Where("menu_id in (?)", menuId).Find(&menu).Error; err != nil {
tx.Rollback()
return false, err
}
//ORM不支持批量插入所以需要拼接 sql 串
sysRoleMenuSql := "INSERT INTO `sys_role_menu` (`role_id`,`menu_id`,`role_name`) VALUES "
casbinRuleSql := "INSERT INTO `sys_casbin_rule` (`p_type`,`v0`,`v1`,`v2`) VALUES "
for i, m := range menu {
// 拼装'role_menu'表批量插入SQL语句
sysRoleMenuSql += fmt.Sprintf("(%d,%d,'%s')", role.RoleId, m.MenuId, role.RoleKey)
if i == len(menu)-1 {
sysRoleMenuSql += ";" //最后一条数据 以分号结尾
} else {
sysRoleMenuSql += ","
}
if m.MenuType == "A" {
// 加入队列
casbinRuleQueue = append(casbinRuleQueue,
CasbinRule{
V0: role.RoleKey,
V1: m.Path,
V2: m.Action,
})
}
}
// 执行批量插入sys_role_menu
if err := tx.Exec(sysRoleMenuSql).Error; err != nil {
tx.Rollback()
return false, err
}
// 拼装'sys_casbin_rule'批量插入SQL语句
// TODO: casbinRuleQueue队列不为空时才会拼装,否则直接忽略不执行'for'循环
for i, v := range casbinRuleQueue {
casbinRuleSql += fmt.Sprintf("('p','%s','%s','%s')", v.V0, v.V1, v.V2)
if i == len(casbinRuleQueue)-1 {
casbinRuleSql += ";"
} else {
casbinRuleSql += ","
}
}
// 执行批量插入sys_casbin_rule
if len(casbinRuleQueue) > 0 {
if err := tx.Exec(casbinRuleSql).Error; err != nil {
tx.Rollback()
return false, err
}
}
if err := tx.Commit().Error; err != nil {
return false, err
}
return true, nil
}
func (rm *RoleMenu) Delete(RoleId string, MenuID string) (bool, error) {
rm.RoleId, _ = tools.StringToInt(RoleId)
table := orm.Eloquent.Table("sys_role_menu").Where("role_id = ?", RoleId)
if MenuID != "" {
table = table.Where("menu_id = ?", MenuID)
}
if err := table.Delete(&rm).Error; err != nil {
return false, err
}
return true, nil
}
//func (rm *RoleMenu) Delete(RoleId string, MenuID string) (bool, error) {
// rm.RoleId, _ = tools.StringToInt(RoleId)
// table := orm.Eloquent.Table("sys_role_menu").Where("role_id = ?", RoleId)
// if MenuID != "" {
// table = table.Where("menu_id = ?", MenuID)
// }
// if err := table.Delete(&rm).Error; err != nil {
// return false, err
// }
// return true, nil
//
//}
+40
View File
@@ -0,0 +1,40 @@
package models
import (
"go-admin/common/models"
)
type SysFileDir struct {
models.Model
Label string `json:"label" gorm:"type:varchar(255);comment:目录名称"` // 目录名称
PId int `json:"pId" gorm:"type:int(11);comment:上级目录"` // 上级目录
Sort string `json:"sort" gorm:"type:bigint(20);comment:排序"` // 排序
Path string `json:"path" gorm:"type:varchar(255);comment:路径"` // 路径
Children []SysFileDir `json:"children,omitempty" gorm:"-"` // 下级信息
models.ControlBy
models.ModelTime
}
type SysFileDirL struct {
models.Model
Label string `json:"label" gorm:"type:varchar(255);comment:目录名称"` // 目录名称
PId int `json:"pId" gorm:"type:int(11);comment:上级目录"` // 上级目录
Sort string `json:"sort" gorm:"type:bigint(20);comment:排序"` // 排序
Path string `json:"path" gorm:"type:varchar(255);comment:路径"` // 路径
models.ControlBy
models.ModelTime
Children []SysFileDirL `json:"children,omitempty" gorm:"-"` // 下级信息
}
func (SysFileDir) TableName() string { /**/
return "sys_file_dir"
}
func (e *SysFileDir) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysFileDir) GetId() interface{} {
return e.Id
}
+31
View File
@@ -0,0 +1,31 @@
package models
import (
"go-admin/common/models"
)
type SysFileInfo struct {
models.Model
Type string `json:"type" gorm:"type:varchar(255);comment:类型"` //
Name string `json:"name" gorm:"type:varchar(255);comment:名称"` //
Size string `json:"size" gorm:"type:int(11);comment:大小"` //
PId int `json:"pId" gorm:"type:int(11);comment:目录"` //
Source string `json:"source" gorm:"type:varchar(255);comment:来源"` //
Url string `json:"url" gorm:"type:varchar(255);comment:地址"` //
FullUrl string `json:"fullUrl" gorm:"type:varchar(255);comment:全地址"` //
models.ControlBy
models.ModelTime
}
func (SysFileInfo) TableName() string {
return "sys_file_info"
}
func (e *SysFileInfo) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysFileInfo) GetId() interface{} {
return e.Id
}
+14 -107
View File
@@ -1,122 +1,29 @@
package models
import (
orm "go-admin/common/global"
"go-admin/tools"
"go-admin/common/models"
)
type SysCategory struct {
Id int `json:"id" gorm:"type:int(11);primary_key;AUTO_INCREMENT"` // 分类Id
Name string `json:"name" gorm:"type:varchar(255);"` // 名称
Img string `json:"img" gorm:"type:varchar(255);"` // 图片
Sort string `json:"sort" gorm:"type:int(4);"` // 排序
Status string `json:"status" gorm:"type:int(1);"` // 状态
Remark string `json:"remark" gorm:"type:varchar(255);"` // 备注
CreateBy string `json:"createBy" gorm:"type:varchar(64);"` // 创建者
UpdateBy string `json:"updateBy" gorm:"type:varchar(64);"` // 更新者
DataScope string `json:"dataScope" gorm:"-"`
Params string `json:"params" gorm:"-"`
BaseModel
models.Model
Name string `json:"name" gorm:"type:varchar(255);comment:名称"` //
Img string `json:"img" gorm:"type:varchar(255);comment:图标"` //
Sort string `json:"sort" gorm:"type:int(4);comment:排序"` //
Status string `json:"status" gorm:"type:int(1);comment:状态"` //
Remark string `json:"remark" gorm:"type:varchar(255);comment:备注"` //
models.ControlBy
models.ModelTime
}
func (SysCategory) TableName() string {
return "sys_category"
}
// 创建SysCategory
func (e *SysCategory) Create() (SysCategory, error) {
var doc SysCategory
result := orm.Eloquent.Table(e.TableName()).Create(&e)
if result.Error != nil {
err := result.Error
return doc, err
}
doc = *e
return doc, nil
func (e *SysCategory) Generate() models.ActiveRecord {
o := *e
return &o
}
// 获取SysCategory
func (e *SysCategory) Get() (SysCategory, error) {
var doc SysCategory
table := orm.Eloquent.Table(e.TableName())
if e.Id != 0 {
table = table.Where("id = ?", e.Id)
}
if e.Name != "" {
table = table.Where("name = ?", e.Name)
}
if e.Status != "" {
table = table.Where("status = ?", e.Status)
}
if err := table.First(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
// 获取SysCategory带分页
func (e *SysCategory) GetPage(pageSize int, pageIndex int) ([]SysCategory, int, error) {
var doc []SysCategory
table := orm.Eloquent.Table(e.TableName())
if e.Name != "" {
table = table.Where("name = ?", e.Name)
}
if e.Status != "" {
table = table.Where("status = ?", e.Status)
}
// 数据权限控制(如果不需要数据权限请将此处去掉)
dataPermission := new(DataPermission)
dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
table, err := dataPermission.GetDataScope(e.TableName(), table)
if err != nil {
return nil, 0, err
}
var count int64
if err := table.Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
return nil, 0, err
}
//table.Where("`deleted_at` IS NULL").Count(&count)
return doc, int(count), nil
}
// 更新SysCategory
func (e *SysCategory) Update(id int) (update SysCategory, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("id = ?", id).First(&update).Error; err != nil {
return
}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
return
}
return
}
// 删除SysCategory
func (e *SysCategory) Delete(id int) (success bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("id = ?", id).Delete(&SysCategory{}).Error; err != nil {
success = false
return
}
success = true
return
}
//批量删除
func (e *SysCategory) BatchDelete(id []int) (Result bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("id in (?)", id).Delete(&SysCategory{}).Error; err != nil {
return
}
Result = true
return
func (e *SysCategory) GetId() interface{} {
return e.Id
}
+30
View File
@@ -0,0 +1,30 @@
package models
import (
"go-admin/common/models"
"time"
)
type SysChinaAreaData struct {
models.Model
models.ControlBy
PId string `json:"pId" gorm:"type:int(11);comment:上级编码"`
Name string `json:"name" gorm:"type:varchar(128);comment:名称"`
CreateTime time.Time `json:"createTime" gorm:"type:timestamp;comment:CreateTime"`
UpdateTime time.Time `json:"updateTime" gorm:"type:timestamp;comment:UpdateTime"`
DeleteTime time.Time `json:"deleteTime" gorm:"type:timestamp;comment:DeleteTime"`
}
func (SysChinaAreaData) TableName() string {
return "sys_china_area_data"
}
func (e *SysChinaAreaData) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysChinaAreaData) GetId() interface{} {
return e.Id
}
+121 -116
View File
@@ -1,132 +1,137 @@
package models
import (
orm "go-admin/common/global"
"go-admin/tools"
"go-admin/common/models"
)
type SysContent struct {
Id int `json:"id" gorm:"type:int(11);primary_key;auto_increment"` // id
CateId string `json:"cateId" gorm:"type:int(11);"` // 分类id
Name string `json:"name" gorm:"type:varchar(255);"` // 名称
Status string `json:"status" gorm:"type:int(1);"` // 状态
Img string `json:"img" gorm:"type:varchar(255);"` // 图片
Content string `json:"content" gorm:"type:text;"` // 内容
Remark string `json:"remark" gorm:"type:varchar(255);"` // 备注
Sort string `json:"sort" gorm:"type:int(4);"` // 排序
CreateBy string `json:"createBy" gorm:"type:varchar(128);"` // 创建者
UpdateBy string `json:"updateBy" gorm:"type:varchar(128);"` // 更新者
DataScope string `json:"dataScope" gorm:"-"`
Params string `json:"params" gorm:"-"`
BaseModel
Id int `json:"id" gorm:"type:int(11);primaryKey;autoIncrement"` // id
CateId string `json:"cateId" gorm:"type:int(11);comment:分类id"`
Name string `json:"name" gorm:"type:varchar(255);comment:名称"`
Status string `json:"status" gorm:"type:int(1);comment:状态"`
Img string `json:"img" gorm:"type:varchar(255);comment:图片"`
Content string `json:"content" gorm:"type:text;comment:内容"`
Remark string `json:"remark" gorm:"type:varchar(255);comment:备注"`
Sort string `json:"sort" gorm:"type:int(4);comment:排序"`
models.ControlBy
models.ModelTime
}
func (SysContent) TableName() string {
return "sys_content"
}
// 创建SysContent
func (e *SysContent) Create() (SysContent, error) {
var doc SysContent
result := orm.Eloquent.Table(e.TableName()).Create(&e)
if result.Error != nil {
err := result.Error
return doc, err
}
doc = *e
return doc, nil
func (e *SysContent) Generate() models.ActiveRecord {
o := *e
return &o
}
// 获取SysContent
func (e *SysContent) Get() (SysContent, error) {
var doc SysContent
table := orm.Eloquent.Table(e.TableName())
if e.Id != 0 {
table = table.Where("id = ?", e.Id)
}
if e.CateId != "" {
table = table.Where("cate_id = ?", e.CateId)
}
if e.Name != "" {
table = table.Where("name like ?", "%"+e.Name+"%")
}
if e.Status != "" {
table = table.Where("status = ?", e.Status)
}
if err := table.First(&doc).Error; err != nil {
return doc, err
}
return doc, nil
func (e *SysContent) GetId() interface{} {
return e.Id
}
// 获取SysContent带分页
func (e *SysContent) GetPage(pageSize int, pageIndex int) ([]SysContent, int, error) {
var doc []SysContent
table := orm.Eloquent.Table(e.TableName())
if e.CateId != "" {
table = table.Where("cate_id = ?", e.CateId)
}
if e.Name != "" {
table = table.Where("name like ?", "%"+e.Name+"%")
}
if e.Status != "" {
table = table.Where("status = ?", e.Status)
}
// 数据权限控制(如果不需要数据权限请将此处去掉)
dataPermission := new(DataPermission)
dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
table, err := dataPermission.GetDataScope(e.TableName(), table)
if err != nil {
return nil, 0, err
}
var count int64
if err := table.Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
return nil, 0, err
}
//table.Where("`deleted_at` IS NULL").Count(&count)
return doc, int(count), nil
}
// 更新SysContent
func (e *SysContent) Update(id int) (update SysContent, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("id = ?", id).First(&update).Error; err != nil {
return
}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
return
}
return
}
// 删除SysContent
func (e *SysContent) Delete(id int) (success bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("id = ?", id).Delete(&SysContent{}).Error; err != nil {
success = false
return
}
success = true
return
}
//批量删除
func (e *SysContent) BatchDelete(id []int) (Result bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("id in (?)", id).Delete(&SysContent{}).Error; err != nil {
return
}
Result = true
return
}
//// 创建SysContent
//func (e *SysContent) Create() (SysContent, error) {
// var doc SysContent
// result := orm.Eloquent.Table(e.TableName()).Create(&e)
// if result.Error != nil {
// err := result.Error
// return doc, err
// }
// doc = *e
// return doc, nil
//}
//
//// 获取SysContent
//func (e *SysContent) Get() (SysContent, error) {
// var doc SysContent
// table := orm.Eloquent.Table(e.TableName())
//
// if e.Id != 0 {
// table = table.Where("id = ?", e.Id)
// }
//
// if e.CateId != "" {
// table = table.Where("cate_id = ?", e.CateId)
// }
//
// if e.Name != "" {
// table = table.Where("name like ?", "%"+e.Name+"%")
// }
//
// if e.Status != "" {
// table = table.Where("status = ?", e.Status)
// }
//
// if err := table.First(&doc).Error; err != nil {
// return doc, err
// }
// return doc, nil
//}
//
//// 获取SysContent带分页
//func (e *SysContent) GetPage(pageSize int, pageIndex int) ([]SysContent, int, error) {
// var doc []SysContent
//
// table := orm.Eloquent.Table(e.TableName())
//
// if e.CateId != "" {
// table = table.Where("cate_id = ?", e.CateId)
// }
//
// if e.Name != "" {
// table = table.Where("name like ?", "%"+e.Name+"%")
// }
//
// if e.Status != "" {
// table = table.Where("status = ?", e.Status)
// }
//
// // 数据权限控制(如果不需要数据权限请将此处去掉)
// dataPermission := new(system.DataPermission)
// dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
// table, err := dataPermission.GetDataScope(e.TableName(), table)
// if err != nil {
// return nil, 0, err
// }
// var count int64
//
// if err := table.Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
// return nil, 0, err
// }
// //table.Where("`deleted_at` IS NULL").Count(&count)
// return doc, int(count), nil
//}
//
//// 更新SysContent
//func (e *SysContent) Update(id int) (update SysContent, err error) {
// if err = orm.Eloquent.Table(e.TableName()).Where("id = ?", id).First(&update).Error; err != nil {
// return
// }
//
// //参数1:是要修改的数据
// //参数2:是修改的数据
// if err = orm.Eloquent.Table(e.TableName()).Model(&update).Where("id = ?", id).Updates(&e).Error; err != nil {
// return
// }
// return
//}
//
//// 删除SysContent
//func (e *SysContent) Delete(id int) (success bool, err error) {
// if err = orm.Eloquent.Table(e.TableName()).Where("id = ?", id).Delete(&SysContent{}).Error; err != nil {
// success = false
// return
// }
// success = true
// return
//}
//
////批量删除
//func (e *SysContent) BatchDelete(id []int) (Result bool, err error) {
// if err = orm.Eloquent.Table(e.TableName()).Where("id in (?)", id).Delete(&SysContent{}).Error; err != nil {
// return
// }
// Result = true
// return
//}
-111
View File
@@ -1,111 +0,0 @@
package models
import (
orm "go-admin/common/global"
)
type SysFileInfo struct {
Id int `json:"id"` // id
Type string `json:"type" gorm:"type:varchar(255);"` // 文件类型
Name string `json:"name" gorm:"type:varchar(255);"` // 文件名称
Size string `json:"size" gorm:"type:int(11);"` // 文件大小
PId int `json:"pId" gorm:"type:int(11);"` // 目录id
Source string `json:"source" gorm:"type:varchar(255);"` // 文件源
Url string `json:"url" gorm:"type:varchar(255);"` // 文件路径
FullUrl string `json:"fullUrl" gorm:"type:varchar(255);"` // 文件全路径
CreateBy string `json:"createBy" gorm:"type:varchar(128);"` // 创建人
UpdateBy string `json:"updateBy" gorm:"type:varchar(128);"` // 编辑人
DataScope string `json:"dataScope" gorm:"-"`
Params string `json:"params" gorm:"-"`
BaseModel
}
func (SysFileInfo) TableName() string {
return "sys_file_info"
}
// 创建SysFileInfo
func (e *SysFileInfo) Create() (SysFileInfo, error) {
var doc SysFileInfo
result := orm.Eloquent.Table(e.TableName()).Create(&e)
if result.Error != nil {
err := result.Error
return doc, err
}
doc = *e
return doc, nil
}
// 获取SysFileInfo
func (e *SysFileInfo) Get() (SysFileInfo, error) {
var doc SysFileInfo
table := orm.Eloquent.Table(e.TableName())
if e.Id != 0 {
table = table.Where("id = ?", e.Id)
}
if err := table.First(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
// 获取SysFileInfo带分页
func (e *SysFileInfo) GetPage(pageSize int, pageIndex int) ([]SysFileInfo, int, error) {
var doc []SysFileInfo
table := orm.Eloquent.Table(e.TableName())
if e.PId != 0 {
table = table.Where("p_id = ?", e.PId)
}
// 数据权限控制(如果不需要数据权限请将此处去掉)
//dataPermission := new(DataPermission)
//dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
//table, err := dataPermission.GetDataScope(e.TableName(), table)
//if err != nil {
// return nil, 0, err
//}
var count int64
if err := table.Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
return nil, 0, err
}
//table.Where("`deleted_at` IS NULL").Count(&count)
return doc, int(count), nil
}
// 更新SysFileInfo
func (e *SysFileInfo) Update(id int) (update SysFileInfo, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("id = ?", id).First(&update).Error; err != nil {
return
}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
return
}
return
}
// 删除SysFileInfo
func (e *SysFileInfo) Delete(id int) (success bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("id = ?", id).Delete(&SysFileInfo{}).Error; err != nil {
success = false
return
}
success = true
return
}
//批量删除
func (e *SysFileInfo) BatchDelete(id []int) (Result bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("id in (?)", id).Delete(&SysFileInfo{}).Error; err != nil {
return
}
Result = true
return
}
+60 -62
View File
@@ -1,30 +1,28 @@
package models
import (
"go-admin/common/dto"
orm "go-admin/common/global"
"go-admin/common/models"
"go-admin/tools"
"gorm.io/gorm"
"strconv"
)
type SysJob struct {
JobId uint `json:"jobId" gorm:"primary_key;AUTO_INCREMENT"` // 编码
JobName string `json:"jobName" gorm:"size:255;"` // 名称
JobGroup string `json:"jobGroup" gorm:"size:255;"` // 任务分组
JobType int `json:"jobType" gorm:"size:1;"` // 任务类型
CronExpression string `json:"cronExpression" gorm:"size:255;"` // cron表达式
InvokeTarget string `json:"invokeTarget" gorm:"size:255;"` // 调用目标
Args string `json:"args" gorm:"size:255;"` // 目标参数
MisfirePolicy int `json:"misfirePolicy" gorm:"size:255;"` // 执行策略
Concurrent int `json:"concurrent" gorm:"size:1;"` // 是否并发
Status int `json:"status" gorm:"size:1;"` // 状态
EntryId int `json:"entry_id" gorm:"size:11;"` // job启动时返回的id
CreateBy string `json:"createBy" gorm:"size:128;"` //
UpdateBy string `json:"updateBy" gorm:"size:128;"` //
JobId int `json:"jobId" gorm:"primaryKey;autoIncrement"` // 编码
JobName string `json:"jobName" gorm:"size:255;"` // 名称
JobGroup string `json:"jobGroup" gorm:"size:255;"` // 任务分组
JobType int `json:"jobType" gorm:"size:1;"` // 任务类型
CronExpression string `json:"cronExpression" gorm:"size:255;"` // cron表达式
InvokeTarget string `json:"invokeTarget" gorm:"size:255;"` // 调用目标
Args string `json:"args" gorm:"size:255;"` // 目标参数
MisfirePolicy int `json:"misfirePolicy" gorm:"size:255;"` // 执行策略
Concurrent int `json:"concurrent" gorm:"size:1;"` // 是否并发
Status int `json:"status" gorm:"size:1;"` // 状态
EntryId int `json:"entry_id" gorm:"size:11;"` // job启动时返回的id
CreateBy string `json:"createBy" gorm:"size:128;"` //
UpdateBy string `json:"updateBy" gorm:"size:128;"` //
BaseModel
DataScope string `json:"dataScope" gorm:"-"`
DataScope string `json:"dataScope" gorm:"-"`
}
func (SysJob) TableName() string {
@@ -40,74 +38,74 @@ func (e *SysJob) GetId() interface{} {
return e.JobId
}
func (e *SysJob) SetCreateBy(createBy uint) {
func (e *SysJob) SetCreateBy(createBy int) {
e.CreateBy = strconv.Itoa(int(createBy))
}
func (e *SysJob) SetUpdateBy(updateBy uint) {
func (e *SysJob) SetUpdateBy(updateBy int) {
e.UpdateBy = strconv.Itoa(int(updateBy))
}
// 创建SysJob
func (e *SysJob) Create() (err error) {
return orm.Eloquent.Table(e.TableName()).Create(e).Error
}
//func (e *SysJob) Create() (err error) {
// return orm.Eloquent.Table(e.TableName()).Create(e).Error
//}
// 获取SysJob
func (e *SysJob) Get(id interface{}) (err error) {
return orm.Eloquent.Table(e.TableName()).First(e, id).Error
}
//func (e *SysJob) Get(id interface{}) (err error) {
// return orm.Eloquent.Table(e.TableName()).First(e, id).Error
//}
// 获取SysJob带分页
func (e *SysJob) GetPage(pageSize int, pageIndex int, v interface{}, list interface{}) (int, error) {
table := orm.Eloquent.Table(e.TableName()).Scopes(dto.MakeCondition(v))
//func (e *SysJob) GetPage(pageSize int, pageIndex int, v interface{}, list interface{}) (int, error) {
// table := orm.Eloquent.Table(e.TableName()).Scopes(dto.MakeCondition(v))
//
// // 数据权限控制(如果不需要数据权限请将此处去掉)
// //dataPermission := new(DataPermission)
// userid, _ := tools.StringToInt(e.DataScope)
//
// var count int64
//
// if err := table.Scopes(system.DataScopes(e.TableName(), userid), dto.Paginate(pageSize, pageIndex)).Find(list).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
// return 0, err
// }
// return int(count), nil
//}
// 数据权限控制(如果不需要数据权限请将此处去掉)
//dataPermission := new(DataPermission)
userid, _ := tools.StringToInt(e.DataScope)
var count int64
if err := table.Scopes(DataScopes(e.TableName(), userid), dto.Paginate(pageSize, pageIndex)).Find(list).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
return 0, err
}
return int(count), nil
}
func (e *SysJob) GetList(list interface{}) (err error) {
return orm.Eloquent.Table(e.TableName()).Where("status = ?", 2).Find(list).Error
func (e *SysJob) GetList(tx *gorm.DB, list interface{}) (err error) {
return tx.Table(e.TableName()).Where("status = ?", 2).Find(list).Error
}
// 更新SysJob
func (e *SysJob) Update(id interface{}) (err error) {
return orm.Eloquent.Table(e.TableName()).Where(id).Updates(&e).Error
func (e *SysJob) Update(tx *gorm.DB, id interface{}) (err error) {
return tx.Table(e.TableName()).Where(id).Updates(&e).Error
}
func (e *SysJob) RemoveAllEntryID() (update SysJob, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("entry_id > ?", 0).Update("entry_id", 0).Error; err != nil {
func (e *SysJob) RemoveAllEntryID(tx *gorm.DB) (update SysJob, err error) {
if err = tx.Table(e.TableName()).Where("entry_id > ?", 0).Update("entry_id", 0).Error; err != nil {
return
}
return
}
func (e *SysJob) RemoveEntryID(entryID int) (update SysJob, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("entry_id = ?", entryID).Updates(map[string]interface{}{"entry_id": 0}).Error; err != nil {
return
}
return
}
//func (e *SysJob) RemoveEntryID(entryID int) (update SysJob, err error) {
// if err = orm.Eloquent.Table(e.TableName()).Where("entry_id = ?", entryID).Updates(map[string]interface{}{"entry_id": 0}).Error; err != nil {
// return
// }
// return
//}
// 删除SysJob
func (e *SysJob) Delete(id int) (success bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where(id).Delete(&SysJob{}).Error; err != nil {
success = false
return
}
success = true
return
}
//func (e *SysJob) Delete(id int) (success bool, err error) {
// if err = orm.Eloquent.Table(e.TableName()).Where(id).Delete(&SysJob{}).Error; err != nil {
// success = false
// return
// }
// success = true
// return
//}
//批量删除
func (e *SysJob) BatchDelete(id []int) error {
return orm.Eloquent.Table(e.TableName()).Where(id).Delete(&SysJob{}).Error
}
//func (e *SysJob) BatchDelete(id []int) error {
// return orm.Eloquent.Table(e.TableName()).Where(id).Delete(&SysJob{}).Error
//}
+23 -18
View File
@@ -1,39 +1,44 @@
package models
import (
orm "go-admin/common/global"
"go-admin/common/models"
)
type SysSetting struct {
SettingsId int `json:"settings_id" gorm:"primary_key;AUTO_INCREMENT"`
Name string `json:"name" gorm:"type:varchar(256);"`
Logo string `json:"logo" gorm:"type:varchar(256);"`
BaseModel
models.ModelTime
}
func (SysSetting) TableName() string {
return "sys_setting"
}
//查询
func (s *SysSetting) Get() (create SysSetting, err error) {
result := orm.Eloquent.Table("sys_setting").First(&create)
if result.Error != nil {
err = result.Error
return
}
return create, nil
func (s *SysSetting) GetId() interface{} {
return s.SettingsId
}
//查询
//func (s *SysSetting) Get() (create SysSetting, err error) {
// result := orm.Eloquent.Table("sys_setting").First(&create)
// if result.Error != nil {
// err = result.Error
// return
// }
// return create, nil
//}
//修改
func (s *SysSetting) Update() (update SysSetting, err error) {
if err = orm.Eloquent.Table("sys_setting").Model(&update).Updates(&s).Error; err != nil {
return
}
return
}
//func (s *SysSetting) Update() (update SysSetting, err error) {
// if err = orm.Eloquent.Table("sys_setting").Model(&update).Where("settings_id = ?", s.SettingsId).Updates(&s).Error; err != nil {
// return
// }
// return
//}
type ResponseSystemConfig struct {
Name string `json:"name" binding:"required"` // 名称
Logo string `json:"logo" binding:"required"` // 头像
Name string `json:"name" binding:"required"` // 名称
Logo string `json:"logo" binding:"required"` // 头像
SettingsId int `json:"settings_id" binding:"required"` // 头像
}
@@ -1,4 +1,4 @@
package models
package system
//sys_casbin_rule
type CasbinRule struct {
+81
View File
@@ -0,0 +1,81 @@
package system
import (
"errors"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"gorm.io/gorm"
log "github.com/go-admin-team/go-admin-core/logger"
"github.com/go-admin-team/go-admin-core/sdk/config"
)
type DataPermission struct {
DataScope string
UserId int
DeptId int
RoleId int
}
func (e *DataPermission) GetDataScope(tableName string, db *gorm.DB) (*gorm.DB, error) {
if !config.ApplicationConfig.EnableDP {
usageStr := `数据权限已经为您` + pkg.Green(`关闭`) + `,如需开启请参考配置文件字段说明`
log.Debug("%s\n", usageStr)
return db, nil
}
user := new(SysUser)
role := new(SysRole)
err := db.Find(user, e.UserId).Error
if err != nil {
return nil, errors.New("获取用户数据出错 msg:" + err.Error())
}
err = db.Find(role, user.RoleId).Error
if err != nil {
return nil, errors.New("获取用户数据出错 msg:" + err.Error())
}
if role.DataScope == "2" {
db = db.Where(tableName+".create_by in (select sys_user.user_id from sys_role_dept left join sys_user on sys_user.dept_id=sys_role_dept.dept_id where sys_role_dept.role_id = ?)", user.RoleId)
}
if role.DataScope == "3" {
db = db.Where(tableName+".create_by in (SELECT user_id from sys_user where dept_id = ? )", user.DeptId)
}
if role.DataScope == "4" {
db = db.Where(tableName+".create_by in (SELECT user_id from sys_user where sys_user.dept_id in(select dept_id from sys_dept where dept_path like ? ))", "%"+pkg.IntToString(user.DeptId)+"%")
}
if role.DataScope == "5" || role.DataScope == "" {
db = db.Where(tableName+".create_by = ?", e.UserId)
}
return db, nil
}
func DataScopes(tableName string, userId int) func(db *gorm.DB) *gorm.DB {
return func(db *gorm.DB) *gorm.DB {
user := new(SysUser)
role := new(SysRole)
user.UserId = userId
err := db.Find(user, userId).Error
if err != nil {
db.Error = errors.New("获取用户数据出错 msg:" + err.Error())
return db
}
err = db.Find(role, user.RoleId).Error
if err != nil {
db.Error = errors.New("获取用户数据出错 msg:" + err.Error())
return db
}
if role.DataScope == "2" {
return db.Where(tableName+".create_by in (select sys_user.user_id from sys_role_dept left join sys_user on sys_user.dept_id=sys_role_dept.dept_id where sys_role_dept.role_id = ?)", user.RoleId)
}
if role.DataScope == "3" {
return db.Where(tableName+".create_by in (SELECT user_id from sys_user where dept_id = ? )", user.DeptId)
}
if role.DataScope == "4" {
return db.Where(tableName+".create_by in (SELECT user_id from sys_user where sys_user.dept_id in(select dept_id from sys_dept where dept_path like ? ))", "%"+pkg.IntToString(user.DeptId)+"%")
}
if role.DataScope == "5" || role.DataScope == "" {
return db.Where(tableName+".create_by = ?", userId)
}
return db
}
}
+35
View File
@@ -0,0 +1,35 @@
package system
import (
"fmt"
log "github.com/go-admin-team/go-admin-core/logger"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"gorm.io/gorm"
)
type Login struct {
Username string `form:"UserName" json:"username" binding:"required"`
Password string `form:"Password" json:"password" binding:"required"`
Code string `form:"Code" json:"code" binding:"required"`
UUID string `form:"UUID" json:"uuid" binding:"required"`
}
func (u *Login) GetUser(tx *gorm.DB) (user SysUser, role SysRole, err error) {
err = tx.Table("sys_user").Where("username = ? and status = 2", u.Username).First(&user).Error
if err != nil {
log.Errorf("get user error, %s", err.Error())
return
}
fmt.Println(user.Password, u.Password)
_, err = pkg.CompareHashAndPassword(user.Password, u.Password)
if err != nil {
log.Errorf("user login error, %s", err.Error())
return
}
err = tx.Table("sys_role").Where("role_id = ? ", user.RoleId).First(&role).Error
if err != nil {
log.Errorf("get role error, %s", err.Error())
return
}
return
}
+11
View File
@@ -0,0 +1,11 @@
package system
//sys_role_dept
type SysRoleDept struct {
RoleId int `gorm:"size:11;primaryKey"`
DeptId int `gorm:"size:11;primaryKey"`
}
func (SysRoleDept) TableName() string {
return "sys_role_dept"
}
+171
View File
@@ -0,0 +1,171 @@
package system
import (
"fmt"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"github.com/casbin/casbin/v2"
"gorm.io/gorm"
)
type RoleMenu struct {
RoleId int `gorm:""`
MenuId int `gorm:""`
RoleName string `gorm:"size:128"`
CreateBy string `gorm:"size:128"`
UpdateBy string `gorm:"size:128"`
}
func (RoleMenu) TableName() string {
return "sys_role_menu"
}
type MenuPath struct {
Path string `json:"path"`
}
func (rm *RoleMenu) Get(tx *gorm.DB) ([]RoleMenu, error) {
var r []RoleMenu
table := tx.Table("sys_role_menu")
if rm.RoleId != 0 {
table = table.Where("role_id = ?", rm.RoleId)
}
if err := table.Find(&r).Error; err != nil {
return nil, err
}
return r, nil
}
func (rm *RoleMenu) GetPermis(tx *gorm.DB) ([]string, error) {
var r []SysMenu
table := tx.Select("sys_menu.permission").Table("sys_menu").Joins("left join sys_role_menu on sys_menu.menu_id = sys_role_menu.menu_id")
table = table.Where("role_id = ?", rm.RoleId)
table = table.Where("sys_menu.menu_type in('F','C')")
if err := table.Find(&r).Error; err != nil {
return nil, err
}
var list []string
for i := 0; i < len(r); i++ {
list = append(list, r[i].Permission)
}
return list, nil
}
func (rm *RoleMenu) GetIDS(tx *gorm.DB) ([]MenuPath, error) {
var r []MenuPath
table := tx.Select("sys_menu.path").Table("sys_role_menu")
table = table.Joins("left join sys_role on sys_role.role_id=sys_role_menu.role_id")
table = table.Joins("left join sys_menu on sys_menu.id=sys_role_menu.menu_id")
table = table.Where("sys_role.role_name = ? and sys_menu.type=1", rm.RoleName)
if err := table.Find(&r).Error; err != nil {
return nil, err
}
return r, nil
}
func (rm *RoleMenu) DeleteRoleMenu(tx *gorm.DB, roleId int) error {
if err := tx.Table("sys_role_dept").Where("role_id = ?", roleId).Delete(&rm).Error; err != nil {
return err
}
if err := tx.Table("sys_role_menu").Where("role_id = ?", roleId).Delete(&rm).Error; err != nil {
return err
}
var role SysRole
if err := tx.Table("sys_role").Where("role_id = ?", roleId).First(&role).Error; err != nil {
return err
}
sql3 := "delete from sys_casbin_rule where v0= '" + role.RoleKey + "';"
if err := tx.Exec(sql3).Error; err != nil {
return err
}
return nil
}
// 该方法即将弃用
func (rm *RoleMenu) BatchDeleteRoleMenu(tx *gorm.DB, roleIds []int) error {
if err := tx.Table("sys_role_menu").Where("role_id in (?)", roleIds).Delete(&rm).Error; err != nil {
return err
}
var role []SysRole
if err := tx.Table("sys_role").Where("role_id in (?)", roleIds).Find(&role).Error; err != nil {
return err
}
sql := ""
for i := 0; i < len(role); i++ {
sql += "delete from sys_casbin_rule where v0= '" + role[i].RoleName + "';"
}
if err := tx.Exec(sql).Error; err != nil {
return err
}
if err := tx.Commit().Error; err != nil {
return err
}
return nil
}
func (rm *RoleMenu) Insert(tx *gorm.DB, enforcer *casbin.SyncedEnforcer, roleId int, menuId []int) error {
var err error
var (
role SysRole
menu []SysMenu
casbinRules []CasbinRule // casbinRule 待插入队列
)
// 在事务中做一些数据库操作(从这一点使用'tx',而不是'db')
if err = tx.Table("sys_role").Where("role_id = ?", roleId).First(&role).Error; err != nil {
return err
}
if err = tx.Table("sys_menu").Where("menu_id in (?)", menuId).Find(&menu).Error; err != nil {
return err
}
//ORM不支持批量插入所以需要拼接 sql 串
sysRoleMenuSql := "INSERT INTO `sys_role_menu` (`role_id`,`menu_id`,`role_name`) VALUES "
for i, m := range menu {
// 拼装'role_menu'表批量插入SQL语句
sysRoleMenuSql += fmt.Sprintf("(%d,%d,'%s')", role.RoleId, m.MenuId, role.RoleKey)
if i == len(menu)-1 {
sysRoleMenuSql += ";" //最后一条数据 以分号结尾
} else {
sysRoleMenuSql += ","
}
if m.MenuType == "A" {
// 加入队列
casbinRules = append(casbinRules,
CasbinRule{
V0: role.RoleKey,
V1: m.Path,
V2: m.Action,
})
}
}
// 执行批量插入sys_role_menu
if err = tx.Exec(sysRoleMenuSql).Error; err != nil {
return err
}
// 执行批量插入sys_casbin_rule
if len(casbinRules) > 0 {
if err = tx.Create(&casbinRules).Error; err != nil {
return err
}
}
return nil
}
func (rm *RoleMenu) Delete(tx *gorm.DB, RoleId string, MenuID string) (bool, error) {
rm.RoleId, _ = pkg.StringToInt(RoleId)
table := tx.Table("sys_role_menu").Where("role_id = ?", RoleId)
if MenuID != "" {
table = table.Where("menu_id = ?", MenuID)
}
if err := table.Delete(&rm).Error; err != nil {
return false, err
}
return true, nil
}
+7 -7
View File
@@ -1,19 +1,19 @@
package system
import (
"gorm.io/gorm"
"go-admin/common/models"
)
type SysConfig struct {
gorm.Model
models.ControlBy
models.Model
ConfigName string `json:"configName" gorm:"type:varchar(128);comment:ConfigName"` //
ConfigKey string `json:"configKey" gorm:"type:varchar(128);comment:ConfigKey"` //
ConfigValue string `json:"configValue" gorm:"type:varchar(255);comment:ConfigValue"` //
ConfigType string `json:"configType" gorm:"type:varchar(64);comment:ConfigType"` //
Remark string `json:"remark" gorm:"type:varchar(128);comment:Remark"` //
ConfigType string `json:"configType" gorm:"type:varchar(64);comment:ConfigType"`
IsFrontend int `json:"isFrontend" gorm:"type:varchar(64);comment:是否前台"` //
Remark string `json:"remark" gorm:"type:varchar(128);comment:Remark"` //
models.ControlBy
models.ModelTime
}
func (SysConfig) TableName() string {
@@ -26,5 +26,5 @@ func (e *SysConfig) Generate() models.ActiveRecord {
}
func (e *SysConfig) GetId() interface{} {
return e.ID
return e.Id
}
+33
View File
@@ -0,0 +1,33 @@
package system
import "go-admin/common/models"
type SysDept struct {
DeptId int `json:"deptId" gorm:"primaryKey;autoIncrement;"` //部门编码
ParentId int `json:"parentId" gorm:""` //上级部门
DeptPath string `json:"deptPath" gorm:"size:255;"` //
DeptName string `json:"deptName" gorm:"size:128;"` //部门名称
Sort int `json:"sort" gorm:""` //排序
Leader string `json:"leader" gorm:"size:128;"` //负责人
Phone string `json:"phone" gorm:"size:11;"` //手机
Email string `json:"email" gorm:"size:64;"` //邮箱
Status string `json:"status" gorm:"size:4;"` //状态
models.ControlBy
models.ModelTime
DataScope string `json:"dataScope" gorm:"-"`
Params string `json:"params" gorm:"-"`
Children []SysDept `json:"children" gorm:"-"`
}
func (SysDept) TableName() string {
return "sys_dept"
}
func (e *SysDept) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysDept) GetId() interface{} {
return e.DeptId
}
+35
View File
@@ -0,0 +1,35 @@
package system
import (
"go-admin/common/models"
)
type SysDictData struct {
models.ControlBy
models.ModelTime
DictCode int `json:"dictCode" gorm:"primaryKey;column:dict_code;autoIncrement;comment:主键编码"`
DictSort int `json:"dictSort" gorm:"type:bigint(20);comment:DictSort"`
DictLabel string `json:"dictLabel" gorm:"type:varchar(128);comment:DictLabel"`
DictValue string `json:"dictValue" gorm:"type:varchar(255);comment:DictValue"`
DictType string `json:"dictType" gorm:"type:varchar(64);comment:DictType"`
CssClass string `json:"cssClass" gorm:"type:varchar(128);comment:CssClass"`
ListClass string `json:"listClass" gorm:"type:varchar(128);comment:ListClass"`
IsDefault string `json:"isDefault" gorm:"type:varchar(8);comment:IsDefault"`
Status string `json:"status" gorm:"type:varchar(4);comment:Status"`
Default string `json:"default" gorm:"type:varchar(8);comment:Default"`
Remark string `json:"remark" gorm:"type:varchar(255);comment:Remark"`
}
func (SysDictData) TableName() string {
return "sys_dict_data"
}
func (e *SysDictData) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysDictData) GetId() interface{} {
return e.DictCode
}
+29
View File
@@ -0,0 +1,29 @@
package system
import (
"go-admin/common/models"
)
type SysDictType struct {
models.ControlBy
models.ModelTime
ID int `json:"id" gorm:"primaryKey;column:dict_id;autoIncrement;comment:主键编码"`
DictName string `json:"dictName" gorm:"type:varchar(128);comment:DictName"`
DictType string `json:"dictType" gorm:"type:varchar(128);comment:DictType"`
Status string `json:"status" gorm:"type:varchar(4);comment:Status"`
Remark string `json:"remark" gorm:"type:varchar(255);comment:Remark"`
}
func (SysDictType) TableName() string {
return "sys_dict_type"
}
func (e *SysDictType) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysDictType) GetId() interface{} {
return e.ID
}
+37
View File
@@ -0,0 +1,37 @@
package system
import (
"go-admin/common/models"
"time"
)
type SysLoginLog struct {
models.Model
Username string `json:"username" gorm:"type:varchar(128);comment:用户名"`
Status string `json:"status" gorm:"type:varchar(4);comment:状态"`
Ipaddr string `json:"ipaddr" gorm:"type:varchar(255);comment:ip地址"`
LoginLocation string `json:"loginLocation" gorm:"type:varchar(255);comment:归属地"`
Browser string `json:"browser" gorm:"type:varchar(255);comment:浏览器"`
Os string `json:"os" gorm:"type:varchar(255);comment:系统"`
Platform string `json:"platform" gorm:"type:varchar(255);comment:固件"`
LoginTime time.Time `json:"loginTime" gorm:"type:timestamp;comment:登录时间"`
Remark string `json:"remark" gorm:"type:varchar(255);comment:备注"`
Msg string `json:"msg" gorm:"type:varchar(255);comment:信息"`
CreatedAt time.Time `json:"createdAt" gorm:"comment:创建时间"`
UpdatedAt time.Time `json:"updatedAt" gorm:"comment:最后更新时间"`
models.ControlBy
}
func (SysLoginLog) TableName() string {
return "sys_login_log"
}
func (e *SysLoginLog) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysLoginLog) GetId() interface{} {
return e.Id
}
+64
View File
@@ -0,0 +1,64 @@
package system
import "go-admin/common/models"
type SysMenu struct {
MenuId int `json:"menuId" gorm:"primaryKey;autoIncrement"`
MenuName string `json:"menuName" gorm:"size:128;"`
Title string `json:"title" gorm:"size:128;"`
Icon string `json:"icon" gorm:"size:128;"`
Path string `json:"path" gorm:"size:128;"`
Paths string `json:"paths" gorm:"size:128;"`
MenuType string `json:"menuType" gorm:"size:1;"`
Action string `json:"action" gorm:"size:16;"`
Permission string `json:"permission" gorm:"size:255;"`
ParentId int `json:"parentId" gorm:"size:11;"`
NoCache bool `json:"noCache" gorm:"size:8;"`
Breadcrumb string `json:"breadcrumb" gorm:"size:255;"`
Component string `json:"component" gorm:"size:255;"`
Sort int `json:"sort" gorm:"size:4;"`
Visible string `json:"visible" gorm:"size:1;"`
IsFrame string `json:"isFrame" gorm:"size:1;DEFAULT:0;"`
DataScope string `json:"dataScope" gorm:"-"`
Params string `json:"params" gorm:"-"`
RoleId int `gorm:"-"`
Children []SysMenu `json:"children" gorm:"-"`
IsSelect bool `json:"is_select" gorm:"-"`
models.ControlBy
models.ModelTime
}
type SysMenus struct {
MenuId int `json:"menuId" gorm:"column:menu_id;primaryKey;autoIncrement;"`
MenuName string `json:"menuName" gorm:"column:menu_name"`
Title string `json:"title" gorm:"column:title"`
Icon string `json:"icon" gorm:"column:icon"`
Path string `json:"path" gorm:"column:path"`
MenuType string `json:"menuType" gorm:"column:menu_type"`
Action string `json:"action" gorm:"column:action"`
Permission string `json:"permission" gorm:"column:permission"`
ParentId int `json:"parentId" gorm:"column:parent_id"`
NoCache bool `json:"noCache" gorm:"column:no_cache"`
Breadcrumb string `json:"breadcrumb" gorm:"column:breadcrumb"`
Component string `json:"component" gorm:"column:component"`
Sort int `json:"sort" gorm:"column:sort"`
Visible string `json:"visible" gorm:"column:visible"`
Children []SysMenu `json:"children" gorm:"-"`
models.ControlBy
models.ModelTime
DataScope string `json:"dataScope" gorm:"-"`
Params string `json:"params" gorm:"-"`
}
func (SysMenu) TableName() string {
return "sys_menu"
}
func (e *SysMenu) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysMenu) GetId() interface{} {
return e.MenuId
}
+45
View File
@@ -0,0 +1,45 @@
package system
import (
"go-admin/common/models"
"time"
)
type SysOperaLog struct {
models.Model
Title string `json:"title" gorm:"type:varchar(255);comment:操作模块"`
BusinessType string `json:"businessType" gorm:"type:varchar(128);comment:操作类型"`
BusinessTypes string `json:"businessTypes" gorm:"type:varchar(128);comment:BusinessTypes"`
Method string `json:"method" gorm:"type:varchar(128);comment:函数"`
RequestMethod string `json:"requestMethod" gorm:"type:varchar(128);comment:请求方式"`
OperatorType string `json:"operatorType" gorm:"type:varchar(128);comment:操作类型"`
OperName string `json:"operName" gorm:"type:varchar(128);comment:操作者"`
DeptName string `json:"deptName" gorm:"type:varchar(128);comment:部门名称"`
OperUrl string `json:"operUrl" gorm:"type:varchar(255);comment:访问地址"`
OperIp string `json:"operIp" gorm:"type:varchar(128);comment:客户端ip"`
OperLocation string `json:"operLocation" gorm:"type:varchar(128);comment:访问位置"`
OperParam string `json:"operParam" gorm:"type:varchar(255);comment:请求参数"`
Status string `json:"status" gorm:"type:varchar(4);comment:操作状态"`
OperTime time.Time `json:"operTime" gorm:"type:timestamp;comment:操作时间"`
JsonResult string `json:"jsonResult" gorm:"type:varchar(255);comment:返回数据"`
Remark string `json:"remark" gorm:"type:varchar(255);comment:备注"`
LatencyTime string `json:"latencyTime" gorm:"type:varchar(128);comment:耗时"`
UserAgent string `json:"userAgent" gorm:"type:varchar(255);comment:ua"`
CreatedAt time.Time `json:"createdAt" gorm:"comment:创建时间"`
UpdatedAt time.Time `json:"updatedAt" gorm:"comment:最后更新时间"`
models.ControlBy
}
func (SysOperaLog) TableName() string {
return "sys_opera_log"
}
func (e *SysOperaLog) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysOperaLog) GetId() interface{} {
return e.Id
}
+30
View File
@@ -0,0 +1,30 @@
package system
import "go-admin/common/models"
type SysPost struct {
PostId int `gorm:"primaryKey;autoIncrement" json:"postId"` //岗位编号
PostName string `gorm:"size:128;" json:"postName"` //岗位名称
PostCode string `gorm:"size:128;" json:"postCode"` //岗位代码
Sort int `gorm:"" json:"sort"` //岗位排序
Status int `gorm:"size:4;" json:"status"` //状态
Remark string `gorm:"size:255;" json:"remark"` //描述
models.ControlBy
models.ModelTime
DataScope string `gorm:"-" json:"dataScope"`
Params string `gorm:"-" json:"params"`
}
func (SysPost) TableName() string {
return "sys_post"
}
func (e *SysPost) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysPost) GetId() interface{} {
return e.PostId
}
+33
View File
@@ -0,0 +1,33 @@
package system
import "go-admin/common/models"
type SysRole struct {
RoleId int `json:"roleId" gorm:"primaryKey;autoIncrement"` // 角色编码
RoleName string `json:"roleName" gorm:"size:128;"` // 角色名称
Status string `json:"status" gorm:"size:4;"` //
RoleKey string `json:"roleKey" gorm:"size:128;"` //角色代码
RoleSort int `json:"roleSort" gorm:""` //角色排序
Flag string `json:"flag" gorm:"size:128;"` //
Remark string `json:"remark" gorm:"size:255;"` //备注
Admin bool `json:"admin" gorm:"size:4;"`
DataScope string `json:"dataScope" gorm:"size:128;"`
Params string `json:"params" gorm:"-"`
MenuIds []int `json:"menuIds" gorm:"-"`
DeptIds []int `json:"deptIds" gorm:"-"`
models.ControlBy
models.ModelTime
}
func (SysRole) TableName() string {
return "sys_role"
}
func (e *SysRole) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysRole) GetId() interface{} {
return e.RoleId
}
+77
View File
@@ -0,0 +1,77 @@
package system
import (
"go-admin/common/models"
"golang.org/x/crypto/bcrypt"
"gorm.io/gorm"
)
type SysUser struct {
models.ControlBy
models.ModelTime
UserId int `gorm:"primaryKey;autoIncrement;comment:编码" json:"userId"`
Username string `json:"username" gorm:"type:varchar(64);comment:用户名"`
Password string `json:"-" gorm:"type:varchar(128);comment:密码"`
NickName string `json:"nickName" gorm:"type:varchar(128);comment:昵称"`
Phone string `json:"phone" gorm:"type:varchar(11);comment:手机号"`
RoleId int `json:"roleId" gorm:"type:bigint(20);comment:角色ID"`
Salt string `json:"-" gorm:"type:varchar(255);comment:加盐"`
Avatar string `json:"avatar" gorm:"type:varchar(255);comment:头像"`
Sex string `json:"sex" gorm:"type:varchar(255);comment:性别"`
Email string `json:"email" gorm:"type:varchar(128);comment:邮箱"`
DeptId int `json:"deptId" gorm:"type:bigint(20);comment:部门"`
PostId int `json:"postId" gorm:"type:bigint(20);comment:岗位"`
Remark string `json:"remark" gorm:"type:varchar(255);comment:备注"`
Status string `json:"status" gorm:"type:varchar(4);comment:状态"`
DeptIds []int `json:"deptIds" gorm:"-"`
PostIds []int `json:"postIds" gorm:"-"`
RoleIds []int `json:"roleIds" gorm:"-"`
Dept *SysDept `json:"dept"`
}
func (SysUser) TableName() string {
return "sys_user"
}
func (e *SysUser) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysUser) GetId() interface{} {
return e.UserId
}
//加密
func (e *SysUser) Encrypt() (err error) {
if e.Password == "" {
return
}
var hash []byte
if hash, err = bcrypt.GenerateFromPassword([]byte(e.Password), bcrypt.DefaultCost); err != nil {
return
} else {
e.Password = string(hash)
return
}
}
func (e *SysUser) BeforeCreate(_ *gorm.DB) error {
return e.Encrypt()
}
func (e *SysUser) BeforeUpdate(_ *gorm.DB) error {
var err error
if e.Password != "" {
err = e.Encrypt()
}
return err
}
func (e *SysUser) AfterFind(_ *gorm.DB) error {
e.DeptIds = []int{e.DeptId}
e.PostIds = []int{e.PostId}
e.RoleIds = []int{e.RoleId}
return nil
}
-322
View File
@@ -1,322 +0,0 @@
package models
import (
"errors"
"gorm.io/gorm"
"log"
"strings"
"golang.org/x/crypto/bcrypt"
orm "go-admin/common/global"
"go-admin/tools"
)
// User
type User struct {
// key
IdentityKey string
// 用户名
UserName string
FirstName string
LastName string
// 角色
Role string
}
type UserName struct {
Username string `gorm:"size:64" json:"username"`
}
type PassWord struct {
// 密码
Password string `gorm:"size:128" json:"password"`
}
type LoginM struct {
UserName
PassWord
}
type SysUserId struct {
UserId int `gorm:"primary_key;AUTO_INCREMENT" json:"userId"` // 编码
}
type SysUserB struct {
NickName string `gorm:"size:128" json:"nickName"` // 昵称
Phone string `gorm:"size:11" json:"phone"` // 手机号
RoleId int `gorm:"" json:"roleId"` // 角色编码
Salt string `gorm:"size:255" json:"salt"` //盐
Avatar string `gorm:"size:255" json:"avatar"` //头像
Sex string `gorm:"size:255" json:"sex"` //性别
Email string `gorm:"size:128" json:"email"` //邮箱
DeptId int `gorm:"" json:"deptId"` //部门编码
PostId int `gorm:"" json:"postId"` //职位编码
CreateBy string `gorm:"size:128" json:"createBy"` //
UpdateBy string `gorm:"size:128" json:"updateBy"` //
Remark string `gorm:"size:255" json:"remark"` //备注
Status string `gorm:"size:4;" json:"status"`
BaseModel
DataScope string `gorm:"-" json:"dataScope"`
Params string `gorm:"-" json:"params"`
}
type SysUser struct {
SysUserId
LoginM
SysUserB
}
func (SysUser) TableName() string {
return "sys_user"
}
type SysUserPwd struct {
OldPassword string `json:"oldPassword"`
NewPassword string `json:"newPassword"`
}
type SysUserPage struct {
SysUserId
SysUserB
LoginM
DeptName string `gorm:"-" json:"deptName"`
}
type SysUserView struct {
SysUserId
SysUserB
LoginM
RoleName string `gorm:"column:role_name" json:"role_name"`
}
// 获取用户数据
func (e *SysUser) Get() (SysUserView SysUserView, err error) {
table := orm.Eloquent.Table(e.TableName()).Select([]string{"sys_user.*", "sys_role.role_name"})
table = table.Joins("left join sys_role on sys_user.role_id=sys_role.role_id")
if e.UserId != 0 {
table = table.Where("user_id = ?", e.UserId)
}
if e.Username != "" {
table = table.Where("username = ?", e.Username)
}
if e.Password != "" {
table = table.Where("password = ?", e.Password)
}
if e.RoleId != 0 {
table = table.Where("role_id = ?", e.RoleId)
}
if e.DeptId != 0 {
table = table.Where("dept_id = ?", e.DeptId)
}
if e.PostId != 0 {
table = table.Where("post_id = ?", e.PostId)
}
if err = table.First(&SysUserView).Error; err != nil {
return
}
SysUserView.Password = ""
return
}
func (e *SysUser) GetUserInfo() (SysUserView SysUserView, err error) {
table := orm.Eloquent.Table(e.TableName()).Select([]string{"sys_user.*", "sys_role.role_name"})
table = table.Joins("left join sys_role on sys_user.role_id=sys_role.role_id")
if e.UserId != 0 {
table = table.Where("user_id = ?", e.UserId)
}
if e.Username != "" {
table = table.Where("username = ?", e.Username)
}
if e.Password != "" {
table = table.Where("password = ?", e.Password)
}
if e.RoleId != 0 {
table = table.Where("role_id = ?", e.RoleId)
}
if e.DeptId != 0 {
table = table.Where("dept_id = ?", e.DeptId)
}
if e.PostId != 0 {
table = table.Where("post_id = ?", e.PostId)
}
if err = table.First(&SysUserView).Error; err != nil {
return
}
return
}
func (e *SysUser) GetList() (SysUserView []SysUserView, err error) {
table := orm.Eloquent.Table(e.TableName()).Select([]string{"sys_user.*", "sys_role.role_name"})
table = table.Joins("left join sys_role on sys_user.role_id=sys_role.role_id")
if e.UserId != 0 {
table = table.Where("user_id = ?", e.UserId)
}
if e.Username != "" {
table = table.Where("username = ?", e.Username)
}
if e.Password != "" {
table = table.Where("password = ?", e.Password)
}
if e.RoleId != 0 {
table = table.Where("role_id = ?", e.RoleId)
}
if e.DeptId != 0 {
table = table.Where("dept_id = ?", e.DeptId)
}
if e.PostId != 0 {
table = table.Where("post_id = ?", e.PostId)
}
if err = table.Find(&SysUserView).Error; err != nil {
return
}
return
}
func (e *SysUser) GetPage(pageSize int, pageIndex int) ([]SysUserPage, int, error) {
var doc []SysUserPage
table := orm.Eloquent.Select("sys_user.*,sys_dept.dept_name").Table(e.TableName())
table = table.Joins("left join sys_dept on sys_dept.dept_id = sys_user.dept_id")
if e.Username != "" {
table = table.Where("username = ?", e.Username)
}
if e.Status != "" {
table = table.Where("sys_user.status = ?", e.Status)
}
if e.Phone != "" {
table = table.Where("sys_user.phone = ?", e.Phone)
}
if e.DeptId != 0 {
table = table.Where("sys_user.dept_id in (select dept_id from sys_dept where dept_path like ? )", "%"+tools.IntToString(e.DeptId)+"%")
}
// 数据权限控制(如果不需要数据权限请将此处去掉)
dataPermission := new(DataPermission)
dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
table, err := dataPermission.GetDataScope(e.TableName(), table)
if err != nil {
return nil, 0, err
}
var count int64
if err := table.Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
return nil, 0, err
}
return doc, int(count), nil
}
//加密
func (e *SysUser) Encrypt() (err error) {
if e.Password == "" {
return
}
var hash []byte
if hash, err = bcrypt.GenerateFromPassword([]byte(e.Password), bcrypt.DefaultCost); err != nil {
return
} else {
e.Password = string(hash)
return
}
}
//添加
func (e SysUser) Insert() (id int, err error) {
if err = e.Encrypt(); err != nil {
return
}
// check 用户名
var count int64
orm.Eloquent.Table(e.TableName()).Where("username = ?", e.Username).Count(&count)
if count > 0 {
err = errors.New("账户已存在!")
return
}
//添加数据
if err = orm.Eloquent.Table(e.TableName()).Create(&e).Error; err != nil {
return
}
id = e.UserId
return
}
//修改
func (e *SysUser) Update(id int) (update SysUser, err error) {
if e.Password != "" {
if err = e.Encrypt(); err != nil {
return
}
}
if err = orm.Eloquent.Table(e.TableName()).First(&update, id).Error; err != nil {
return
}
if e.RoleId == 0 {
e.RoleId = update.RoleId
}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
return
}
return
}
func (e *SysUser) BatchDelete(id []int) (Result bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("user_id in (?)", id).Delete(&SysUser{}).Error; err != nil {
return
}
Result = true
return
}
func (e *SysUser) SetPwd(pwd SysUserPwd) (Result bool, err error) {
user, err := e.GetUserInfo()
if err != nil {
tools.HasError(err, "获取用户数据失败(代码202)", 500)
}
_, err = tools.CompareHashAndPassword(user.Password, pwd.OldPassword)
if err != nil {
if strings.Contains(err.Error(), "hashedPassword is not the hash of the given password") {
tools.HasError(err, "密码错误(代码202)", 500)
}
log.Print(err)
return
}
e.Password = pwd.NewPassword
_, err = e.Update(e.UserId)
tools.HasError(err, "更新密码失败(代码202)", 500)
return
}
func (e *SysUser) GetByUserId(tx *gorm.DB, id interface{}) error {
return tx.First(e, id).Error
}
+11 -12
View File
@@ -2,12 +2,11 @@ package tools
import (
"errors"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"gorm.io/gorm"
orm "go-admin/common/global"
"go-admin/tools"
config2 "go-admin/tools/config"
"github.com/go-admin-team/go-admin-core/sdk/config"
)
type DBColumns struct {
@@ -25,14 +24,14 @@ type DBColumns struct {
ColumnComment string `gorm:"column:COLUMN_COMMENT" json:"columnComment"`
}
func (e *DBColumns) GetPage(pageSize int, pageIndex int) ([]DBColumns, int, error) {
func (e *DBColumns) GetPage(tx *gorm.DB, pageSize int, pageIndex int) ([]DBColumns, int, error) {
var doc []DBColumns
var count int64
table := new(gorm.DB)
if config2.DatabaseConfig.Driver == "mysql" {
table = orm.Eloquent.Table("information_schema.`COLUMNS`")
table = table.Where("table_schema= ? ", config2.GenConfig.DBName)
if config.DatabaseConfig.Driver == "mysql" {
table = tx.Table("information_schema.`COLUMNS`")
table = table.Where("table_schema= ? ", config.GenConfig.DBName)
if e.TableName != "" {
return nil, 0, errors.New("table name cannot be empty!")
@@ -49,7 +48,7 @@ func (e *DBColumns) GetPage(pageSize int, pageIndex int) ([]DBColumns, int, erro
}
func (e *DBColumns) GetList() ([]DBColumns, error) {
func (e *DBColumns) GetList(tx *gorm.DB) ([]DBColumns, error) {
var doc []DBColumns
table := new(gorm.DB)
@@ -57,13 +56,13 @@ func (e *DBColumns) GetList() ([]DBColumns, error) {
return nil, errors.New("table name cannot be empty!")
}
if config2.DatabaseConfig.Driver == "mysql" {
table = orm.Eloquent.Table("information_schema.columns")
table = table.Where("table_schema= ? ", config2.GenConfig.DBName)
if config.DatabaseConfig.Driver == "mysql" {
table = tx.Table("information_schema.columns")
table = table.Where("table_schema= ? ", config.GenConfig.DBName)
table = table.Where("TABLE_NAME = ?", e.TableName).Order("ORDINAL_POSITION asc")
} else {
tools.Assert(true, "目前只支持mysql数据库", 500)
pkg.Assert(true, "目前只支持mysql数据库", 500)
}
if err := table.Find(&doc).Error; err != nil {
return doc, err
+12 -14
View File
@@ -2,12 +2,11 @@ package tools
import (
"errors"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"gorm.io/gorm"
orm "go-admin/common/global"
"go-admin/tools"
config2 "go-admin/tools/config"
config2 "github.com/go-admin-team/go-admin-core/sdk/config"
)
type DBTables struct {
@@ -20,14 +19,14 @@ type DBTables struct {
TableComment string `gorm:"column:TABLE_COMMENT" json:"tableComment"`
}
func (e *DBTables) GetPage(pageSize int, pageIndex int) ([]DBTables, int, error) {
func (e *DBTables) GetPage(tx *gorm.DB, pageSize int, pageIndex int) ([]DBTables, int, error) {
var doc []DBTables
table := new(gorm.DB)
var count int64
if config2.DatabaseConfig.Driver == "mysql" {
table = orm.Eloquent.Table("information_schema.tables")
table = table.Where("TABLE_NAME not in (select table_name from " + config2.GenConfig.DBName + ".sys_tables) ")
table = tx.Table("information_schema.tables")
table = table.Where("TABLE_NAME not in (select table_name from `" + config2.GenConfig.DBName + "`.sys_tables) ")
table = table.Where("table_schema= ? ", config2.GenConfig.DBName)
if e.TableName != "" {
@@ -37,28 +36,27 @@ func (e *DBTables) GetPage(pageSize int, pageIndex int) ([]DBTables, int, error)
return nil, 0, err
}
} else {
tools.Assert(true, "目前只支持mysql数据库", 500)
pkg.Assert(true, "目前只支持mysql数据库", 500)
}
//table.Count(&count)
return doc, int(count), nil
}
func (e *DBTables) Get() (DBTables, error) {
func (e *DBTables) Get(tx *gorm.DB) (DBTables, error) {
var doc DBTables
table := new(gorm.DB)
if config2.DatabaseConfig.Driver == "mysql" {
table = orm.Eloquent.Table("information_schema.tables")
table := tx.Table("information_schema.tables")
table = table.Where("table_schema= ? ", config2.GenConfig.DBName)
if e.TableName == "" {
return doc, errors.New("table name cannot be empty!")
}
table = table.Where("TABLE_NAME = ?", e.TableName)
if err := table.First(&doc).Error; err != nil {
return doc, err
}
} else {
tools.Assert(true, "目前只支持mysql数据库", 500)
}
if err := table.First(&doc).Error; err != nil {
return doc, err
pkg.Assert(true, "目前只支持mysql数据库", 500)
}
return doc, nil
}
+9 -9
View File
@@ -2,11 +2,11 @@ package tools
import (
"go-admin/app/admin/models"
orm "go-admin/common/global"
"gorm.io/gorm"
)
type SysColumns struct {
ColumnId int `gorm:"primary_key;auto_increment" json:"columnId"`
ColumnId int `gorm:"primaryKey;autoIncrement" json:"columnId"`
TableId int `gorm:"" json:"tableId"`
ColumnName string `gorm:"size:128;" json:"columnName"`
ColumnComment string `gorm:"column:column_comment;size:128;" json:"columnComment"`
@@ -51,10 +51,10 @@ func (SysColumns) TableName() string {
return "sys_columns"
}
func (e *SysColumns) GetList() ([]SysColumns, error) {
func (e *SysColumns) GetList(tx *gorm.DB) ([]SysColumns, error) {
var doc []SysColumns
table := orm.Eloquent.Table("sys_columns")
table := tx.Table("sys_columns")
table = table.Where("table_id = ?", e.TableId)
@@ -64,9 +64,9 @@ func (e *SysColumns) GetList() ([]SysColumns, error) {
return doc, nil
}
func (e *SysColumns) Create() (SysColumns, error) {
func (e *SysColumns) Create(tx *gorm.DB) (SysColumns, error) {
var doc SysColumns
result := orm.Eloquent.Table("sys_columns").Create(&e)
result := tx.Table("sys_columns").Create(&e)
if result.Error != nil {
err := result.Error
return doc, err
@@ -75,14 +75,14 @@ func (e *SysColumns) Create() (SysColumns, error) {
return doc, nil
}
func (e *SysColumns) Update() (update SysColumns, err error) {
if err = orm.Eloquent.Table("sys_columns").First(&update, e.ColumnId).Error; err != nil {
func (e *SysColumns) Update(tx *gorm.DB) (update SysColumns, err error) {
if err = tx.Table("sys_columns").First(&update, e.ColumnId).Error; err != nil {
return
}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table("sys_columns").Model(&update).Updates(&e).Error; err != nil {
if err = tx.Table("sys_columns").Model(&update).Updates(&e).Error; err != nil {
return
}
+21 -21
View File
@@ -1,14 +1,14 @@
package tools
import (
"gorm.io/gorm"
"strings"
"go-admin/app/admin/models"
orm "go-admin/common/global"
)
type SysTables struct {
TableId int `gorm:"primary_key;auto_increment" json:"tableId"` //表编码
TableId int `gorm:"primaryKey;autoIncrement" json:"tableId"` //表编码
TBName string `gorm:"column:table_name;size:255;" json:"tableName"` //表名称
TableComment string `gorm:"size:255;" json:"tableComment"` //表备注
ClassName string `gorm:"size:255;" json:"className"` //类名
@@ -53,10 +53,10 @@ type Params struct {
TreeName string `gorm:"-" json:"treeName"`
}
func (e *SysTables) GetPage(pageSize int, pageIndex int) ([]SysTables, int, error) {
func (e *SysTables) GetPage(tx *gorm.DB, pageSize int, pageIndex int) ([]SysTables, int, error) {
var doc []SysTables
table := orm.Eloquent.Table("sys_tables")
table := tx.Table("sys_tables")
if e.TBName != "" {
table = table.Where("table_name = ?", e.TBName)
@@ -74,10 +74,10 @@ func (e *SysTables) GetPage(pageSize int, pageIndex int) ([]SysTables, int, erro
return doc, int(count), nil
}
func (e *SysTables) Get() (SysTables, error) {
func (e *SysTables) Get(tx *gorm.DB) (SysTables, error) {
var doc SysTables
var err error
table := orm.Eloquent.Table("sys_tables")
table := tx.Table("sys_tables")
if e.TBName != "" {
table = table.Where("table_name = ?", e.TBName)
@@ -94,17 +94,17 @@ func (e *SysTables) Get() (SysTables, error) {
}
var col SysColumns
col.TableId = doc.TableId
if doc.Columns, err = col.GetList(); err != nil {
if doc.Columns, err = col.GetList(tx); err != nil {
return doc, err
}
return doc, nil
}
func (e *SysTables) GetTree() ([]SysTables, error) {
func (e *SysTables) GetTree(tx *gorm.DB) ([]SysTables, error) {
var doc []SysTables
var err error
table := orm.Eloquent.Table("sys_tables")
table := tx.Table("sys_tables")
if e.TBName != "" {
table = table.Where("table_name = ?", e.TBName)
@@ -123,7 +123,7 @@ func (e *SysTables) GetTree() ([]SysTables, error) {
var col SysColumns
//col.FkCol = append(col.FkCol, SysColumns{ColumnId: 0, ColumnName: "请选择"})
col.TableId = doc[i].TableId
if doc[i].Columns, err = col.GetList(); err != nil {
if doc[i].Columns, err = col.GetList(tx); err != nil {
return doc, err
}
@@ -132,9 +132,9 @@ func (e *SysTables) GetTree() ([]SysTables, error) {
return doc, nil
}
func (e *SysTables) Create() (SysTables, error) {
func (e *SysTables) Create(tx *gorm.DB) (SysTables, error) {
var doc SysTables
result := orm.Eloquent.Table("sys_tables").Create(&e)
result := tx.Table("sys_tables").Create(&e)
if result.Error != nil {
err := result.Error
return doc, err
@@ -143,20 +143,20 @@ func (e *SysTables) Create() (SysTables, error) {
for i := 0; i < len(e.Columns); i++ {
e.Columns[i].TableId = doc.TableId
e.Columns[i].Create()
_, _ = e.Columns[i].Create(tx)
}
return doc, nil
}
func (e *SysTables) Update() (update SysTables, err error) {
func (e *SysTables) Update(tx *gorm.DB) (update SysTables, err error) {
//if err = orm.Eloquent.Table("sys_tables").First(&update, e.TableId).Error; err != nil {
// return
//}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table("sys_tables").Where("table_id = ?", e.TableId).Updates(&e).Error; err != nil {
if err = tx.Table("sys_tables").Where("table_id = ?", e.TableId).Updates(&e).Error; err != nil {
return
}
@@ -170,7 +170,7 @@ func (e *SysTables) Update() (update SysTables, err error) {
tables := make([]SysTables, 0)
tableMap := make(map[string]*SysTables)
if len(tableNames) > 0 {
if err = orm.Eloquent.Table("sys_tables").Where("table_name in (?)", tableNames).Find(&tables).Error; err != nil {
if err = tx.Table("sys_tables").Where("table_name in (?)", tableNames).Find(&tables).Error; err != nil {
return
}
for i := range tables {
@@ -196,13 +196,13 @@ func (e *SysTables) Update() (update SysTables, err error) {
}
}
}
_, _ = e.Columns[i].Update()
_, _ = e.Columns[i].Update(tx)
}
return
}
func (e *SysTables) Delete() (success bool, err error) {
tx := orm.Eloquent.Begin()
func (e *SysTables) Delete(db *gorm.DB) (success bool, err error) {
tx := db.Begin()
defer func() {
if err != nil {
tx.Rollback()
@@ -222,8 +222,8 @@ func (e *SysTables) Delete() (success bool, err error) {
return
}
func (e *SysTables) BatchDelete(id []int) (Result bool, err error) {
if err = orm.Eloquent.Unscoped().Table(e.TableName()).Where(" table_id in (?)", id).Delete(&SysColumns{}).Error; err != nil {
func (e *SysTables) BatchDelete(tx *gorm.DB, id []int) (Result bool, err error) {
if err = tx.Unscoped().Table(e.TableName()).Where(" table_id in (?)", id).Delete(&SysColumns{}).Error; err != nil {
return
}
Result = true
@@ -1,26 +1,28 @@
package router
import (
"github.com/go-admin-team/go-admin-core/sdk"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"os"
"github.com/gin-gonic/gin"
log "github.com/go-admin-team/go-admin-core/logger"
"go-admin/app/admin/middleware"
"go-admin/app/admin/middleware/handler"
"go-admin/common/global"
"go-admin/common/log"
common "go-admin/common/middleware"
_ "go-admin/pkg/jwtauth"
"go-admin/tools"
"go-admin/tools/config"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/config"
)
// InitRouter 路由初始化,不要怀疑,这里用到了
func InitRouter() {
var r *gin.Engine
h := global.Cfg.GetEngine()
h := sdk.Runtime.GetEngine()
if h == nil {
h = gin.New()
global.Cfg.SetEngine(h)
sdk.Runtime.SetEngine(h)
}
switch h.(type) {
case *gin.Engine:
@@ -32,14 +34,16 @@ func InitRouter() {
if config.SslConfig.Enable {
r.Use(handler.TlsHandler())
}
r.Use(middleware.WithContextDb(middleware.GetGormFromConfig(global.Cfg)))
r.Use(common.Sentinel())
r.Use(common.Sentinel()).
Use(common.RequestId(pkg.TrafficKey)).
Use(api.SetRequestLogger)
middleware.InitMiddleware(r)
// the jwt middleware
var err error
authMiddleware, err := middleware.AuthInit()
tools.HasError(err, "JWT Init Error", 500)
if err != nil {
log.Fatalf("JWT Init Error, %s", err.Error())
}
// 注册系统路由
InitSysRouter(r, authMiddleware)
@@ -47,6 +51,4 @@ func InitRouter() {
// 注册业务路由
// TODO: 这里可存放业务路由,里边并无实际路由只有演示代码
InitExamplesRouter(r, authMiddleware)
//return r
}
+32
View File
@@ -0,0 +1,32 @@
package router
import (
"github.com/go-admin-team/go-admin-core/sdk"
"net/http"
"github.com/gin-gonic/gin"
log "github.com/go-admin-team/go-admin-core/logger"
"github.com/go-admin-team/go-admin-core/tools/transfer"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
func Monitor() {
var r *gin.Engine
h := sdk.Runtime.GetEngine()
if h == nil {
h = gin.New()
sdk.Runtime.SetEngine(h)
}
switch h.(type) {
case *gin.Engine:
r = h.(*gin.Engine)
default:
log.Fatal("not support other engine")
}
//开发环境启动监控指标
r.GET("/metrics", transfer.Handler(promhttp.Handler()))
//健康检查
r.GET("/health", func(c *gin.Context) {
c.Status(http.StatusOK)
})
}
+3 -9
View File
@@ -3,8 +3,8 @@ package router
import (
"github.com/gin-gonic/gin"
_ "github.com/gin-gonic/gin"
"go-admin/pkg/jwtauth"
jwt "go-admin/pkg/jwtauth"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
)
var (
@@ -35,8 +35,7 @@ func examplesNoCheckRoleRouter(r *gin.Engine) {
}
// {{无需认证路由自动补充在此处请勿删除}}
registerSysFileInfoRouter(v1)
registerSysFileDirRouter(v1)
//registerSysFileInfoRouter(v1)
}
// 需要认证的路由示例
@@ -49,9 +48,4 @@ func examplesCheckRoleRouter(r *gin.Engine, authMiddleware *jwtauth.GinJWTMiddle
for _, f := range routerCheckRole {
f(v1, authMiddleware)
}
// {{认证路由自动补充在此处请勿删除}}
registerSysContentRouter(v1, authMiddleware)
registerSysCategoryRouter(v1, authMiddleware)
}
+31
View File
@@ -0,0 +1,31 @@
package router
import (
"github.com/gin-gonic/gin"
middleware2 "go-admin/common/middleware"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/models"
"go-admin/app/admin/service/dto"
"go-admin/common/actions"
)
func init() {
routerCheckRole = append(routerCheckRole, registerSysCategoryRouter)
}
// 需认证的路由代码
func registerSysCategoryRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
r := v1.Group("/syscategory").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole())
{
model := &models.SysCategory{}
r.GET("", actions.PermissionAction(), actions.IndexAction(model, new(dto.SysCategorySearch), func() interface{} {
list := make([]models.SysCategory, 0)
return &list
}))
r.GET("/:id", actions.PermissionAction(), actions.ViewAction(new(dto.SysCategoryById), nil))
r.POST("", actions.CreateAction(new(dto.SysCategoryControl)))
r.PUT("/:id", actions.PermissionAction(), actions.UpdateAction(new(dto.SysCategoryControl)))
r.DELETE("", actions.PermissionAction(), actions.DeleteAction(new(dto.SysCategoryById)))
}
}
+18 -18
View File
@@ -2,12 +2,9 @@ package router
import (
"github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/apis/system/sys_config"
"go-admin/app/admin/middleware"
"go-admin/app/admin/models/system"
"go-admin/app/admin/service/dto"
"go-admin/common/actions"
jwt "go-admin/pkg/jwtauth"
middleware2 "go-admin/common/middleware"
)
func init() {
@@ -16,22 +13,25 @@ func init() {
// 需认证的路由代码
func registerSysConfigRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
r := v1.Group("/config").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
api := &sys_config.SysConfig{}
r := v1.Group("/config").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole())
{
model := &system.SysConfig{}
r.GET("", actions.PermissionAction(), actions.IndexAction(model, new(dto.SysConfigSearch), func() interface{} {
list := make([]system.SysConfig, 0)
return &list
}))
r.GET("/:id", actions.PermissionAction(), actions.ViewAction(new(dto.SysConfigById), nil))
r.POST("", actions.CreateAction(new(dto.SysConfigControl)))
r.PUT("/:id", actions.PermissionAction(), actions.UpdateAction(new(dto.SysConfigControl)))
r.DELETE("", actions.PermissionAction(), actions.DeleteAction(new(dto.SysConfigById)))
r.GET("", api.GetSysConfigList)
r.GET("/:id", api.GetSysConfig)
r.POST("", api.InsertSysConfig)
r.PUT("/:id", api.UpdateSysConfig)
r.DELETE("/:id", api.DeleteSysConfig)
}
r1 := v1.Group("/configKey").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
r1 := v1.Group("/configKey").Use(authMiddleware.MiddlewareFunc())
{
model := &sys_config.SysConfig{}
r1.POST("", model.GetSysConfigByKEYForService)
r1.GET("/:configKey", api.GetSysConfigByKEYForService)
}
r2 := v1.Group("/app-config")
{
r2.GET("", api.GetSysConfigBySysApp)
}
}
+37
View File
@@ -0,0 +1,37 @@
package router
import (
"github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/models"
"go-admin/app/admin/service/dto"
"go-admin/common/actions"
middleware2 "go-admin/common/middleware"
)
func init() {
routerCheckRole = append(routerCheckRole, registerSysContentRouter)
}
// 需认证的路由代码
func registerSysContentRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
r := v1.Group("/syscontent").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole())
{
//r.GET("", sys_content.GetSysContentList)
//r.GET("/:id", sys_content.GetSysContent)
//r.POST("", sys_content.InsertSysContent)
//r.PUT("", sys_content.UpdateSysContent)
//r.DELETE("/:id", sys_content.DeleteSysContent)
model := &models.SysContent{}
r.GET("", actions.PermissionAction(), actions.IndexAction(model, new(dto.SysContentSearch), func() interface{} {
list := make([]models.SysContent, 0)
return &list
}))
r.GET("/:id", actions.PermissionAction(), actions.ViewAction(new(dto.SysContentById), nil))
r.POST("", actions.CreateAction(new(dto.SysContentControl)))
r.PUT("/:id", actions.PermissionAction(), actions.UpdateAction(new(dto.SysContentControl)))
r.DELETE("", actions.PermissionAction(), actions.DeleteAction(new(dto.SysContentById)))
}
}
+31
View File
@@ -0,0 +1,31 @@
package router
import (
"github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/apis/system/sys_dept"
middleware2 "go-admin/common/middleware"
)
func init() {
routerCheckRole = append(routerCheckRole, registerSysDeptRouter)
}
// 需认证的路由代码
func registerSysDeptRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := &sys_dept.SysDept{}
r := v1.Group("/dept").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole())
{
r.GET("", api.GetSysDeptList)
r.GET("/:id", api.GetSysDept)
r.POST("", api.InsertSysDept)
r.PUT("/:id", api.UpdateSysDept)
r.DELETE("/:id", api.DeleteSysDept)
}
r1 := v1.Group("").Use(authMiddleware.MiddlewareFunc())
{
r1.GET("/deptTree", api.GetDeptTree)
}
}

Some files were not shown because too many files have changed in this diff Show More