فهرست منبع

模块化变更

pixel 3 سال پیش
والد
کامیت
9c5afb7c1a
100فایلهای تغییر یافته به همراه449 افزوده شده و 381 حذف شده
  1. 1 1
      server/api/v1/exa_breakpoint_continue.go
  2. 7 7
      server/api/v1/exa_customer.go
  3. 2 2
      server/api/v1/exa_excel.go
  4. 5 5
      server/api/v1/exa_file_upload_download.go
  5. 2 2
      server/api/v1/exa_simple_uploader.go
  6. 6 6
      server/api/v1/sys_api.go
  7. 7 7
      server/api/v1/sys_authority.go
  8. 6 6
      server/api/v1/sys_auto_code.go
  9. 1 1
      server/api/v1/sys_captcha.go
  10. 2 2
      server/api/v1/sys_casbin.go
  11. 7 7
      server/api/v1/sys_dictionary.go
  12. 7 7
      server/api/v1/sys_dictionary_detail.go
  13. 2 2
      server/api/v1/sys_initdb.go
  14. 2 2
      server/api/v1/sys_jwt_blacklist.go
  15. 6 6
      server/api/v1/sys_menu.go
  16. 6 6
      server/api/v1/sys_operation_record.go
  17. 3 3
      server/api/v1/sys_system.go
  18. 9 9
      server/api/v1/sys_user.go
  19. 17 16
      server/initialize/gorm.go
  20. 18 18
      server/initialize/router.go
  21. 2 2
      server/middleware/email.go
  22. 5 5
      server/middleware/jwt.go
  23. 2 2
      server/middleware/operation.go
  24. 0 14
      server/model/exa_customer.go
  25. 0 6
      server/model/exa_excel.go
  26. 1 1
      server/model/example/exa_breakpoint_continue.go
  27. 15 0
      server/model/example/exa_customer.go
  28. 8 0
      server/model/example/exa_excel.go
  29. 1 1
      server/model/example/exa_file_upload_download.go
  30. 1 1
      server/model/example/exa_simple_uploader.go
  31. 23 0
      server/model/example/request/common.go
  32. 17 0
      server/model/example/request/jwt.go
  33. 2 2
      server/model/example/response/exa_breakpoint_continue.go
  34. 7 0
      server/model/example/response/exa_customer.go
  35. 7 0
      server/model/example/response/exa_file_upload_download.go
  36. 0 8
      server/model/request/sys_dictionary.go
  37. 0 8
      server/model/request/sys_dictionary_detail.go
  38. 0 8
      server/model/request/sys_operation_record.go
  39. 0 7
      server/model/response/exa_customer.go
  40. 0 7
      server/model/response/exa_file_upload_download.go
  41. 0 11
      server/model/response/sys_api.go
  42. 0 12
      server/model/response/sys_authority.go
  43. 0 15
      server/model/response/sys_menu.go
  44. 0 15
      server/model/response/sys_user.go
  45. 0 36
      server/model/sys_base_menu.go
  46. 4 2
      server/model/system/request/sys_api.go
  47. 3 1
      server/model/system/request/sys_autocode.go
  48. 0 0
      server/model/system/request/sys_casbin.go
  49. 11 0
      server/model/system/request/sys_dictionary.go
  50. 11 0
      server/model/system/request/sys_dictionary_detail.go
  51. 0 0
      server/model/system/request/sys_init.go
  52. 5 5
      server/model/system/request/sys_menu.go
  53. 11 0
      server/model/system/request/sys_operation_record.go
  54. 0 0
      server/model/system/request/sys_user.go
  55. 8 0
      server/model/system/response/common.go
  56. 11 0
      server/model/system/response/sys_api.go
  57. 12 0
      server/model/system/response/sys_authority.go
  58. 0 0
      server/model/system/response/sys_captcha.go
  59. 3 1
      server/model/system/response/sys_casbin.go
  60. 15 0
      server/model/system/response/sys_menu.go
  61. 0 0
      server/model/system/response/sys_system.go
  62. 15 0
      server/model/system/response/sys_user.go
  63. 4 4
      server/model/system/sys_api.go
  64. 1 1
      server/model/system/sys_authority.go
  65. 1 1
      server/model/system/sys_authority_menu.go
  66. 1 1
      server/model/system/sys_auto_code.go
  67. 1 1
      server/model/system/sys_autocode_history.go
  68. 36 0
      server/model/system/sys_base_menu.go
  69. 1 1
      server/model/system/sys_casbin.go
  70. 1 1
      server/model/system/sys_dictionary.go
  71. 1 1
      server/model/system/sys_dictionary_detail.go
  72. 1 1
      server/model/system/sys_initdb.go
  73. 1 1
      server/model/system/sys_jwt_blacklist.go
  74. 1 1
      server/model/system/sys_operation_record.go
  75. 1 1
      server/model/system/sys_system.go
  76. 5 5
      server/model/system/sys_user.go
  77. 2 2
      server/router/example/exa_customer.go
  78. 2 2
      server/router/example/exa_excel.go
  79. 2 2
      server/router/example/exa_file_upload_and_download.go
  80. 2 2
      server/router/example/exa_simple_uploader.go
  81. 2 2
      server/router/system/sys_api.go
  82. 2 2
      server/router/system/sys_authority.go
  83. 2 2
      server/router/system/sys_auto_code.go
  84. 2 2
      server/router/system/sys_base.go
  85. 2 2
      server/router/system/sys_casbin.go
  86. 2 2
      server/router/system/sys_dictionary.go
  87. 2 2
      server/router/system/sys_dictionary_detail.go
  88. 2 2
      server/router/system/sys_email.go
  89. 2 2
      server/router/system/sys_initdb.go
  90. 2 2
      server/router/system/sys_jwt.go
  91. 2 2
      server/router/system/sys_menu.go
  92. 2 2
      server/router/system/sys_operation_record.go
  93. 2 2
      server/router/system/sys_system.go
  94. 2 2
      server/router/system/sys_user.go
  95. 6 6
      server/service/exa_breakpoint_continue.go
  96. 10 9
      server/service/exa_customer.go
  97. 5 5
      server/service/exa_excel_parse.go
  98. 10 10
      server/service/exa_file_upload_download.go
  99. 7 7
      server/service/exa_simple_uploader.go
  100. 3 3
      server/service/jwt_black_list.go

+ 1 - 1
server/api/v1/exa_breakpoint_continue.go

@@ -2,7 +2,7 @@ package v1
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/example/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
 	"github.com/gin-gonic/gin"

+ 7 - 7
server/api/v1/exa_customer.go

@@ -2,9 +2,9 @@ package v1
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
-	"gin-vue-admin/model/request"
-	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/example"
+	"gin-vue-admin/model/example/request"
+	"gin-vue-admin/model/example/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
 	"github.com/gin-gonic/gin"
@@ -20,7 +20,7 @@ import (
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
 // @Router /customer/customer [post]
 func CreateExaCustomer(c *gin.Context) {
-	var customer model.ExaCustomer
+	var customer example.ExaCustomer
 	_ = c.ShouldBindJSON(&customer)
 	if err := utils.Verify(customer, utils.CustomerVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -45,7 +45,7 @@ func CreateExaCustomer(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
 // @Router /customer/customer [delete]
 func DeleteExaCustomer(c *gin.Context) {
-	var customer model.ExaCustomer
+	var customer example.ExaCustomer
 	_ = c.ShouldBindJSON(&customer)
 	if err := utils.Verify(customer.GVA_MODEL, utils.IdVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -68,7 +68,7 @@ func DeleteExaCustomer(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
 // @Router /customer/customer [put]
 func UpdateExaCustomer(c *gin.Context) {
-	var customer model.ExaCustomer
+	var customer example.ExaCustomer
 	_ = c.ShouldBindJSON(&customer)
 	if err := utils.Verify(customer.GVA_MODEL, utils.IdVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -95,7 +95,7 @@ func UpdateExaCustomer(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
 // @Router /customer/customer [get]
 func GetExaCustomer(c *gin.Context) {
-	var customer model.ExaCustomer
+	var customer example.ExaCustomer
 	_ = c.ShouldBindQuery(&customer)
 	if err := utils.Verify(customer.GVA_MODEL, utils.IdVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)

+ 2 - 2
server/api/v1/exa_excel.go

@@ -2,7 +2,7 @@ package v1
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
+	"gin-vue-admin/model/example"
 	"gin-vue-admin/model/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
@@ -24,7 +24,7 @@ import (
 // @Success 200
 // @Router /excel/exportExcel [post]
 func ExportExcel(c *gin.Context) {
-	var excelInfo model.ExcelInfo
+	var excelInfo example.ExcelInfo
 	_ = c.ShouldBindJSON(&excelInfo)
 	filePath := global.GVA_CONFIG.Excel.Dir + excelInfo.FileName
 	err := service.ParseInfoList2Excel(excelInfo.InfoList, filePath)

+ 5 - 5
server/api/v1/exa_file_upload_download.go

@@ -2,9 +2,9 @@ package v1
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
-	"gin-vue-admin/model/request"
-	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/example"
+	"gin-vue-admin/model/example/request"
+	"gin-vue-admin/model/example/response"
 	"gin-vue-admin/service"
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
@@ -19,7 +19,7 @@ import (
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"上传成功"}"
 // @Router /fileUploadAndDownload/upload [post]
 func UploadFile(c *gin.Context) {
-	var file model.ExaFileUploadAndDownload
+	var file example.ExaFileUploadAndDownload
 	noSave := c.DefaultQuery("noSave", "0")
 	_, header, err := c.Request.FormFile("file")
 	if err != nil {
@@ -44,7 +44,7 @@ func UploadFile(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
 // @Router /fileUploadAndDownload/deleteFile [post]
 func DeleteFile(c *gin.Context) {
-	var file model.ExaFileUploadAndDownload
+	var file example.ExaFileUploadAndDownload
 	_ = c.ShouldBindJSON(&file)
 	if err := service.DeleteFile(file); err != nil {
 		global.GVA_LOG.Error("删除失败!", zap.Any("err", err))

+ 2 - 2
server/api/v1/exa_simple_uploader.go

@@ -2,7 +2,7 @@ package v1
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
+	"gin-vue-admin/model/example"
 	"gin-vue-admin/model/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
@@ -19,7 +19,7 @@ import (
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"切片创建成功"}"
 // @Router /simpleUploader/upload [post]
 func SimpleUploaderUpload(c *gin.Context) {
-	var chunk model.ExaSimpleUploader
+	var chunk example.ExaSimpleUploader
 	_, header, err := c.Request.FormFile("file")
 	chunk.Filename = c.PostForm("filename")
 	chunk.ChunkNumber = c.PostForm("chunkNumber")

+ 6 - 6
server/api/v1/sys_api.go

@@ -2,9 +2,9 @@ package v1
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
-	"gin-vue-admin/model/request"
-	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/system"
+	"gin-vue-admin/model/system/request"
+	"gin-vue-admin/model/system/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
 
@@ -21,7 +21,7 @@ import (
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
 // @Router /api/createApi [post]
 func CreateApi(c *gin.Context) {
-	var api model.SysApi
+	var api system.SysApi
 	_ = c.ShouldBindJSON(&api)
 	if err := utils.Verify(api, utils.ApiVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -44,7 +44,7 @@ func CreateApi(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
 // @Router /api/deleteApi [post]
 func DeleteApi(c *gin.Context) {
-	var api model.SysApi
+	var api system.SysApi
 	_ = c.ShouldBindJSON(&api)
 	if err := utils.Verify(api.GVA_MODEL, utils.IdVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -119,7 +119,7 @@ func GetApiById(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"修改成功"}"
 // @Router /api/updateApi [post]
 func UpdateApi(c *gin.Context) {
-	var api model.SysApi
+	var api system.SysApi
 	_ = c.ShouldBindJSON(&api)
 	if err := utils.Verify(api, utils.ApiVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)

+ 7 - 7
server/api/v1/sys_authority.go

@@ -2,9 +2,9 @@ package v1
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
-	"gin-vue-admin/model/request"
-	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/system"
+	"gin-vue-admin/model/system/request"
+	"gin-vue-admin/model/system/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
 
@@ -21,7 +21,7 @@ import (
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
 // @Router /authority/createAuthority [post]
 func CreateAuthority(c *gin.Context) {
-	var authority model.SysAuthority
+	var authority system.SysAuthority
 	_ = c.ShouldBindJSON(&authority)
 	if err := utils.Verify(authority, utils.AuthorityVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -72,7 +72,7 @@ func CopyAuthority(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
 // @Router /authority/deleteAuthority [post]
 func DeleteAuthority(c *gin.Context) {
-	var authority model.SysAuthority
+	var authority system.SysAuthority
 	_ = c.ShouldBindJSON(&authority)
 	if err := utils.Verify(authority, utils.AuthorityIdVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -95,7 +95,7 @@ func DeleteAuthority(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
 // @Router /authority/updateAuthority [post]
 func UpdateAuthority(c *gin.Context) {
-	var auth model.SysAuthority
+	var auth system.SysAuthority
 	_ = c.ShouldBindJSON(&auth)
 	if err := utils.Verify(auth, utils.AuthorityVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -146,7 +146,7 @@ func GetAuthorityList(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"设置成功"}"
 // @Router /authority/setDataAuthority [post]
 func SetDataAuthority(c *gin.Context) {
-	var auth model.SysAuthority
+	var auth system.SysAuthority
 	_ = c.ShouldBindJSON(&auth)
 	if err := utils.Verify(auth, utils.AuthorityIdVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)

+ 6 - 6
server/api/v1/sys_auto_code.go

@@ -4,9 +4,9 @@ import (
 	"errors"
 	"fmt"
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
-	"gin-vue-admin/model/request"
-	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/system"
+	"gin-vue-admin/model/system/request"
+	"gin-vue-admin/model/system/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
 	"net/url"
@@ -108,7 +108,7 @@ func GetMeta(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
 // @Router /autoCode/preview [post]
 func PreviewTemp(c *gin.Context) {
-	var a model.AutoCodeStruct
+	var a system.AutoCodeStruct
 	_ = c.ShouldBindJSON(&a)
 	if err := utils.Verify(a, utils.AutoCodeVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -132,7 +132,7 @@ func PreviewTemp(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
 // @Router /autoCode/createTemp [post]
 func CreateTemp(c *gin.Context) {
-	var a model.AutoCodeStruct
+	var a system.AutoCodeStruct
 	_ = c.ShouldBindJSON(&a)
 	if err := utils.Verify(a, utils.AutoCodeVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -151,7 +151,7 @@ func CreateTemp(c *gin.Context) {
 	}
 	err := service.CreateTemp(a, apiIds...)
 	if err != nil {
-		if errors.Is(err, model.AutoMoveErr) {
+		if errors.Is(err, system.AutoMoveErr) {
 			c.Writer.Header().Add("success", "false")
 			c.Writer.Header().Add("msgtype", "success")
 			c.Writer.Header().Add("msg", url.QueryEscape(err.Error()))

+ 1 - 1
server/api/v1/sys_captcha.go

@@ -2,7 +2,7 @@ package v1
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/system/response"
 	"github.com/gin-gonic/gin"
 	"github.com/mojocn/base64Captcha"
 	"go.uber.org/zap"

+ 2 - 2
server/api/v1/sys_casbin.go

@@ -2,8 +2,8 @@ package v1
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model/request"
-	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/system/request"
+	"gin-vue-admin/model/system/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
 	"github.com/gin-gonic/gin"

+ 7 - 7
server/api/v1/sys_dictionary.go

@@ -2,9 +2,9 @@ package v1
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
-	"gin-vue-admin/model/request"
-	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/system"
+	"gin-vue-admin/model/system/request"
+	"gin-vue-admin/model/system/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
 	"github.com/gin-gonic/gin"
@@ -20,7 +20,7 @@ import (
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
 // @Router /sysDictionary/createSysDictionary [post]
 func CreateSysDictionary(c *gin.Context) {
-	var dictionary model.SysDictionary
+	var dictionary system.SysDictionary
 	_ = c.ShouldBindJSON(&dictionary)
 	if err := service.CreateSysDictionary(dictionary); err != nil {
 		global.GVA_LOG.Error("创建失败!", zap.Any("err", err))
@@ -39,7 +39,7 @@ func CreateSysDictionary(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
 // @Router /sysDictionary/deleteSysDictionary [delete]
 func DeleteSysDictionary(c *gin.Context) {
-	var dictionary model.SysDictionary
+	var dictionary system.SysDictionary
 	_ = c.ShouldBindJSON(&dictionary)
 	if err := service.DeleteSysDictionary(dictionary); err != nil {
 		global.GVA_LOG.Error("删除失败!", zap.Any("err", err))
@@ -58,7 +58,7 @@ func DeleteSysDictionary(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
 // @Router /sysDictionary/updateSysDictionary [put]
 func UpdateSysDictionary(c *gin.Context) {
-	var dictionary model.SysDictionary
+	var dictionary system.SysDictionary
 	_ = c.ShouldBindJSON(&dictionary)
 	if err := service.UpdateSysDictionary(&dictionary); err != nil {
 		global.GVA_LOG.Error("更新失败!", zap.Any("err", err))
@@ -77,7 +77,7 @@ func UpdateSysDictionary(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
 // @Router /sysDictionary/findSysDictionary [get]
 func FindSysDictionary(c *gin.Context) {
-	var dictionary model.SysDictionary
+	var dictionary system.SysDictionary
 	_ = c.ShouldBindQuery(&dictionary)
 	if err, sysDictionary := service.GetSysDictionary(dictionary.Type, dictionary.ID); err != nil {
 		global.GVA_LOG.Error("查询失败!", zap.Any("err", err))

+ 7 - 7
server/api/v1/sys_dictionary_detail.go

@@ -2,9 +2,9 @@ package v1
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
-	"gin-vue-admin/model/request"
-	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/system"
+	"gin-vue-admin/model/system/request"
+	"gin-vue-admin/model/system/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
 	"github.com/gin-gonic/gin"
@@ -20,7 +20,7 @@ import (
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
 // @Router /sysDictionaryDetail/createSysDictionaryDetail [post]
 func CreateSysDictionaryDetail(c *gin.Context) {
-	var detail model.SysDictionaryDetail
+	var detail system.SysDictionaryDetail
 	_ = c.ShouldBindJSON(&detail)
 	if err := service.CreateSysDictionaryDetail(detail); err != nil {
 		global.GVA_LOG.Error("创建失败!", zap.Any("err", err))
@@ -39,7 +39,7 @@ func CreateSysDictionaryDetail(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
 // @Router /sysDictionaryDetail/deleteSysDictionaryDetail [delete]
 func DeleteSysDictionaryDetail(c *gin.Context) {
-	var detail model.SysDictionaryDetail
+	var detail system.SysDictionaryDetail
 	_ = c.ShouldBindJSON(&detail)
 	if err := service.DeleteSysDictionaryDetail(detail); err != nil {
 		global.GVA_LOG.Error("删除失败!", zap.Any("err", err))
@@ -58,7 +58,7 @@ func DeleteSysDictionaryDetail(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
 // @Router /sysDictionaryDetail/updateSysDictionaryDetail [put]
 func UpdateSysDictionaryDetail(c *gin.Context) {
-	var detail model.SysDictionaryDetail
+	var detail system.SysDictionaryDetail
 	_ = c.ShouldBindJSON(&detail)
 	if err := service.UpdateSysDictionaryDetail(&detail); err != nil {
 		global.GVA_LOG.Error("更新失败!", zap.Any("err", err))
@@ -77,7 +77,7 @@ func UpdateSysDictionaryDetail(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
 // @Router /sysDictionaryDetail/findSysDictionaryDetail [get]
 func FindSysDictionaryDetail(c *gin.Context) {
-	var detail model.SysDictionaryDetail
+	var detail system.SysDictionaryDetail
 	_ = c.ShouldBindQuery(&detail)
 	if err := utils.Verify(detail, utils.IdVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)

+ 2 - 2
server/api/v1/sys_initdb.go

@@ -2,8 +2,8 @@ package v1
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model/request"
-	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/system/request"
+	"gin-vue-admin/model/system/response"
 	"gin-vue-admin/service"
 
 	"go.uber.org/zap"

+ 2 - 2
server/api/v1/sys_jwt_blacklist.go

@@ -2,8 +2,8 @@ package v1
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
 	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/system"
 	"gin-vue-admin/service"
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
@@ -18,7 +18,7 @@ import (
 // @Router /jwt/jsonInBlacklist [post]
 func JsonInBlacklist(c *gin.Context) {
 	token := c.Request.Header.Get("x-token")
-	jwt := model.JwtBlacklist{Jwt: token}
+	jwt := system.JwtBlacklist{Jwt: token}
 	if err := service.JsonInBlacklist(jwt); err != nil {
 		global.GVA_LOG.Error("jwt作废失败!", zap.Any("err", err))
 		response.FailWithMessage("jwt作废失败", c)

+ 6 - 6
server/api/v1/sys_menu.go

@@ -2,9 +2,9 @@ package v1
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
-	"gin-vue-admin/model/request"
-	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/system"
+	"gin-vue-admin/model/system/request"
+	"gin-vue-admin/model/system/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
 
@@ -25,7 +25,7 @@ func GetMenu(c *gin.Context) {
 		response.FailWithMessage("获取失败", c)
 	} else {
 		if menus == nil {
-			menus = []model.SysMenu{}
+			menus = []system.SysMenu{}
 		}
 		response.OkWithDetailed(response.SysMenusResponse{Menus: menus}, "获取成功", c)
 	}
@@ -102,7 +102,7 @@ func GetMenuAuthority(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"添加成功"}"
 // @Router /menu/addBaseMenu [post]
 func AddBaseMenu(c *gin.Context) {
-	var menu model.SysBaseMenu
+	var menu system.SysBaseMenu
 	_ = c.ShouldBindJSON(&menu)
 	if err := utils.Verify(menu, utils.MenuVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -153,7 +153,7 @@ func DeleteBaseMenu(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
 // @Router /menu/updateBaseMenu [post]
 func UpdateBaseMenu(c *gin.Context) {
-	var menu model.SysBaseMenu
+	var menu system.SysBaseMenu
 	_ = c.ShouldBindJSON(&menu)
 	if err := utils.Verify(menu, utils.MenuVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)

+ 6 - 6
server/api/v1/sys_operation_record.go

@@ -2,9 +2,9 @@ package v1
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
-	"gin-vue-admin/model/request"
-	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/system"
+	"gin-vue-admin/model/system/request"
+	"gin-vue-admin/model/system/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
 	"github.com/gin-gonic/gin"
@@ -20,7 +20,7 @@ import (
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
 // @Router /sysOperationRecord/createSysOperationRecord [post]
 func CreateSysOperationRecord(c *gin.Context) {
-	var sysOperationRecord model.SysOperationRecord
+	var sysOperationRecord system.SysOperationRecord
 	_ = c.ShouldBindJSON(&sysOperationRecord)
 	if err := service.CreateSysOperationRecord(sysOperationRecord); err != nil {
 		global.GVA_LOG.Error("创建失败!", zap.Any("err", err))
@@ -39,7 +39,7 @@ func CreateSysOperationRecord(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
 // @Router /sysOperationRecord/deleteSysOperationRecord [delete]
 func DeleteSysOperationRecord(c *gin.Context) {
-	var sysOperationRecord model.SysOperationRecord
+	var sysOperationRecord system.SysOperationRecord
 	_ = c.ShouldBindJSON(&sysOperationRecord)
 	if err := service.DeleteSysOperationRecord(sysOperationRecord); err != nil {
 		global.GVA_LOG.Error("删除失败!", zap.Any("err", err))
@@ -77,7 +77,7 @@ func DeleteSysOperationRecordByIds(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
 // @Router /sysOperationRecord/findSysOperationRecord [get]
 func FindSysOperationRecord(c *gin.Context) {
-	var sysOperationRecord model.SysOperationRecord
+	var sysOperationRecord system.SysOperationRecord
 	_ = c.ShouldBindQuery(&sysOperationRecord)
 	if err := utils.Verify(sysOperationRecord, utils.IdVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)

+ 3 - 3
server/api/v1/sys_system.go

@@ -2,8 +2,8 @@ package v1
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
-	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/system"
+	"gin-vue-admin/model/system/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
 
@@ -34,7 +34,7 @@ func GetSystemConfig(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"设置成功"}"
 // @Router /system/setSystemConfig [post]
 func SetSystemConfig(c *gin.Context) {
-	var sys model.System
+	var sys system.System
 	_ = c.ShouldBindJSON(&sys)
 	if err := service.SetSystemConfig(sys); err != nil {
 		global.GVA_LOG.Error("设置失败!", zap.Any("err", err))

+ 9 - 9
server/api/v1/sys_user.go

@@ -3,9 +3,9 @@ package v1
 import (
 	"gin-vue-admin/global"
 	"gin-vue-admin/middleware"
-	"gin-vue-admin/model"
-	"gin-vue-admin/model/request"
-	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/system"
+	"gin-vue-admin/model/system/request"
+	"gin-vue-admin/model/system/response"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
 	"time"
@@ -30,7 +30,7 @@ func Login(c *gin.Context) {
 		return
 	}
 	if store.Verify(l.CaptchaId, l.Captcha, true) {
-		u := &model.SysUser{Username: l.Username, Password: l.Password}
+		u := &system.SysUser{Username: l.Username, Password: l.Password}
 		if err, user := service.Login(u); err != nil {
 			global.GVA_LOG.Error("登陆失败! 用户名不存在或者密码错误!", zap.Any("err", err))
 			response.FailWithMessage("用户名不存在或者密码错误", c)
@@ -43,7 +43,7 @@ func Login(c *gin.Context) {
 }
 
 // 登录以后签发jwt
-func tokenNext(c *gin.Context, user model.SysUser) {
+func tokenNext(c *gin.Context, user system.SysUser) {
 	j := &middleware.JWT{SigningKey: []byte(global.GVA_CONFIG.JWT.SigningKey)} // 唯一签名
 	claims := request.CustomClaims{
 		UUID:        user.UUID,
@@ -87,7 +87,7 @@ func tokenNext(c *gin.Context, user model.SysUser) {
 		global.GVA_LOG.Error("设置登录状态失败!", zap.Any("err", err))
 		response.FailWithMessage("设置登录状态失败", c)
 	} else {
-		var blackJWT model.JwtBlacklist
+		var blackJWT system.JwtBlacklist
 		blackJWT.Jwt = jwtStr
 		if err := service.JsonInBlacklist(blackJWT); err != nil {
 			response.FailWithMessage("jwt作废失败", c)
@@ -118,7 +118,7 @@ func Register(c *gin.Context) {
 		response.FailWithMessage(err.Error(), c)
 		return
 	}
-	user := &model.SysUser{Username: r.Username, NickName: r.NickName, Password: r.Password, HeaderImg: r.HeaderImg, AuthorityId: r.AuthorityId}
+	user := &system.SysUser{Username: r.Username, NickName: r.NickName, Password: r.Password, HeaderImg: r.HeaderImg, AuthorityId: r.AuthorityId}
 	err, userReturn := service.Register(*user)
 	if err != nil {
 		global.GVA_LOG.Error("注册失败!", zap.Any("err", err))
@@ -142,7 +142,7 @@ func ChangePassword(c *gin.Context) {
 		response.FailWithMessage(err.Error(), c)
 		return
 	}
-	u := &model.SysUser{Username: user.Username, Password: user.Password}
+	u := &system.SysUser{Username: user.Username, Password: user.Password}
 	if err, _ := service.ChangePassword(u, user.NewPassword); err != nil {
 		global.GVA_LOG.Error("修改失败!", zap.Any("err", err))
 		response.FailWithMessage("修改失败,原密码与当前账户不符", c)
@@ -239,7 +239,7 @@ func DeleteUser(c *gin.Context) {
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"设置成功"}"
 // @Router /user/setUserInfo [put]
 func SetUserInfo(c *gin.Context) {
-	var user model.SysUser
+	var user system.SysUser
 	_ = c.ShouldBindJSON(&user)
 	if err := utils.Verify(user, utils.IdVerify); err != nil {
 		response.FailWithMessage(err.Error(), c)

+ 17 - 16
server/initialize/gorm.go

@@ -3,7 +3,8 @@ package initialize
 import (
 	"gin-vue-admin/global"
 	"gin-vue-admin/initialize/internal"
-	"gin-vue-admin/model"
+	"gin-vue-admin/model/example"
+	"gin-vue-admin/model/system"
 	"os"
 
 	"go.uber.org/zap"
@@ -34,21 +35,21 @@ func Gorm() *gorm.DB {
 
 func MysqlTables(db *gorm.DB) {
 	err := db.AutoMigrate(
-		model.SysUser{},
-		model.SysAuthority{},
-		model.SysApi{},
-		model.SysBaseMenu{},
-		model.SysBaseMenuParameter{},
-		model.JwtBlacklist{},
-		model.SysDictionary{},
-		model.SysDictionaryDetail{},
-		model.ExaFileUploadAndDownload{},
-		model.ExaFile{},
-		model.ExaFileChunk{},
-		model.ExaSimpleUploader{},
-		model.ExaCustomer{},
-		model.SysOperationRecord{},
-		model.SysAutoCodeHistory{},
+		system.SysUser{},
+		system.SysAuthority{},
+		system.SysApi{},
+		system.SysBaseMenu{},
+		system.SysBaseMenuParameter{},
+		system.JwtBlacklist{},
+		system.SysDictionary{},
+		system.SysDictionaryDetail{},
+		example.ExaFileUploadAndDownload{},
+		example.ExaFile{},
+		example.ExaFileChunk{},
+		example.ExaSimpleUploader{},
+		example.ExaCustomer{},
+		system.SysOperationRecord{},
+		system.SysAutoCodeHistory{},
 		// Code generated by gin-vue-admin Begin; DO NOT EDIT.
 		// Code generated by gin-vue-admin End; DO NOT EDIT.
 	)

+ 18 - 18
server/initialize/router.go

@@ -27,28 +27,28 @@ func Routers() *gin.Engine {
 	// 方便统一添加路由组前缀 多服务器上线使用
 	PublicGroup := Router.Group("")
 	{
-		router.InitBaseRouter(PublicGroup) // 注册基础功能路由 不做鉴权
-		router.InitInitRouter(PublicGroup) // 自动初始化相关
+		router.RouterApp.System.InitBaseRouter(PublicGroup) // 注册基础功能路由 不做鉴权
+		router.RouterApp.System.InitInitRouter(PublicGroup) // 自动初始化相关
 	}
 	PrivateGroup := Router.Group("")
 	PrivateGroup.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler())
 	{
-		router.InitApiRouter(PrivateGroup)                   // 注册功能api路由
-		router.InitJwtRouter(PrivateGroup)                   // jwt相关路由
-		router.InitUserRouter(PrivateGroup)                  // 注册用户路由
-		router.InitMenuRouter(PrivateGroup)                  // 注册menu路由
-		router.InitEmailRouter(PrivateGroup)                 // 邮件相关路由
-		router.InitSystemRouter(PrivateGroup)                // system相关路由
-		router.InitCasbinRouter(PrivateGroup)                // 权限相关路由
-		router.InitCustomerRouter(PrivateGroup)              // 客户路由
-		router.InitAutoCodeRouter(PrivateGroup)              // 创建自动化代码
-		router.InitAuthorityRouter(PrivateGroup)             // 注册角色路由
-		router.InitSimpleUploaderRouter(PrivateGroup)        // 断点续传(插件版)
-		router.InitSysDictionaryRouter(PrivateGroup)         // 字典管理
-		router.InitSysOperationRecordRouter(PrivateGroup)    // 操作记录
-		router.InitSysDictionaryDetailRouter(PrivateGroup)   // 字典详情管理
-		router.InitFileUploadAndDownloadRouter(PrivateGroup) // 文件上传下载功能路由
-		router.InitExcelRouter(PrivateGroup)                 // 表格导入导出
+		router.RouterApp.System.InitApiRouter(PrivateGroup)                    // 注册功能api路由
+		router.RouterApp.System.InitJwtRouter(PrivateGroup)                    // jwt相关路由
+		router.RouterApp.System.InitUserRouter(PrivateGroup)                   // 注册用户路由
+		router.RouterApp.System.InitMenuRouter(PrivateGroup)                   // 注册menu路由
+		router.RouterApp.System.InitEmailRouter(PrivateGroup)                  // 邮件相关路由
+		router.RouterApp.System.InitSystemRouter(PrivateGroup)                 // system相关路由
+		router.RouterApp.System.InitCasbinRouter(PrivateGroup)                 // 权限相关路由
+		router.RouterApp.Example.InitCustomerRouter(PrivateGroup)              // 客户路由
+		router.RouterApp.System.InitAutoCodeRouter(PrivateGroup)               // 创建自动化代码
+		router.RouterApp.System.InitAuthorityRouter(PrivateGroup)              // 注册角色路由
+		router.RouterApp.Example.InitSimpleUploaderRouter(PrivateGroup)        // 断点续传(插件版)
+		router.RouterApp.System.InitSysDictionaryRouter(PrivateGroup)          // 字典管理
+		router.RouterApp.System.InitSysOperationRecordRouter(PrivateGroup)     // 操作记录
+		router.RouterApp.System.InitSysDictionaryDetailRouter(PrivateGroup)    // 字典详情管理
+		router.RouterApp.Example.InitFileUploadAndDownloadRouter(PrivateGroup) // 文件上传下载功能路由
+		router.RouterApp.Example.InitExcelRouter(PrivateGroup)                 // 表格导入导出
 
 		// Code generated by gin-vue-admin Begin; DO NOT EDIT.
 		// Code generated by gin-vue-admin End; DO NOT EDIT.

+ 2 - 2
server/middleware/email.go

@@ -2,8 +2,8 @@ package middleware
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
 	"gin-vue-admin/model/request"
+	"gin-vue-admin/model/system"
 	"gin-vue-admin/service"
 	"gin-vue-admin/utils"
 	"github.com/gin-gonic/gin"
@@ -28,7 +28,7 @@ func ErrorToEmail() gin.HandlerFunc {
 			username = user.Username
 		}
 		body, _ := ioutil.ReadAll(c.Request.Body)
-		record := model.SysOperationRecord{
+		record := system.SysOperationRecord{
 			Ip:     c.ClientIP(),
 			Method: c.Request.Method,
 			Path:   c.Request.URL.Path,

+ 5 - 5
server/middleware/jwt.go

@@ -3,9 +3,9 @@ package middleware
 import (
 	"errors"
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
-	"gin-vue-admin/model/request"
-	"gin-vue-admin/model/response"
+	"gin-vue-admin/model/system"
+	"gin-vue-admin/model/system/request"
+	"gin-vue-admin/model/system/response"
 	"gin-vue-admin/service"
 	"strconv"
 	"time"
@@ -43,7 +43,7 @@ func JWTAuth() gin.HandlerFunc {
 			return
 		}
 		if err, _ = service.FindUserByUuid(claims.UUID.String()); err != nil {
-			_ = service.JsonInBlacklist(model.JwtBlacklist{Jwt: token})
+			_ = service.JsonInBlacklist(system.JwtBlacklist{Jwt: token})
 			response.FailWithDetailed(gin.H{"reload": true}, err.Error(), c)
 			c.Abort()
 		}
@@ -58,7 +58,7 @@ func JWTAuth() gin.HandlerFunc {
 				if err != nil {
 					global.GVA_LOG.Error("get redis jwt failed", zap.Any("err", err))
 				} else { // 当之前的取成功时才进行拉黑操作
-					_ = service.JsonInBlacklist(model.JwtBlacklist{Jwt: RedisJwtToken})
+					_ = service.JsonInBlacklist(system.JwtBlacklist{Jwt: RedisJwtToken})
 				}
 				// 无论如何都要记录当前的活跃状态
 				_ = service.SetRedisJWT(newToken, newClaims.Username)

+ 2 - 2
server/middleware/operation.go

@@ -3,8 +3,8 @@ package middleware
 import (
 	"bytes"
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
 	"gin-vue-admin/model/request"
+	"gin-vue-admin/model/system"
 	"gin-vue-admin/service"
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
@@ -37,7 +37,7 @@ func OperationRecord() gin.HandlerFunc {
 			}
 			userId = id
 		}
-		record := model.SysOperationRecord{
+		record := system.SysOperationRecord{
 			Ip:     c.ClientIP(),
 			Method: c.Request.Method,
 			Path:   c.Request.URL.Path,

+ 0 - 14
server/model/exa_customer.go

@@ -1,14 +0,0 @@
-package model
-
-import (
-	"gin-vue-admin/global"
-)
-
-type ExaCustomer struct {
-	global.GVA_MODEL
-	CustomerName       string  `json:"customerName" form:"customerName" gorm:"comment:客户名"`                // 客户名
-	CustomerPhoneData  string  `json:"customerPhoneData" form:"customerPhoneData" gorm:"comment:客户手机号"`    // 客户手机号
-	SysUserID          uint    `json:"sysUserId" form:"sysUserId" gorm:"comment:管理ID"`                     // 管理ID
-	SysUserAuthorityID string  `json:"sysUserAuthorityID" form:"sysUserAuthorityID" gorm:"comment:管理角色ID"` // 管理角色ID
-	SysUser            SysUser `json:"sysUser" form:"sysUser" gorm:"comment:管理详情"`                         // 管理详情
-}

+ 0 - 6
server/model/exa_excel.go

@@ -1,6 +0,0 @@
-package model
-
-type ExcelInfo struct {
-	FileName string        `json:"fileName"` // 文件名
-	InfoList []SysBaseMenu `json:"infoList"`
-}

+ 1 - 1
server/model/exa_breakpoint_continue.go → server/model/example/exa_breakpoint_continue.go

@@ -1,4 +1,4 @@
-package model
+package example
 
 import (
 	"gin-vue-admin/global"

+ 15 - 0
server/model/example/exa_customer.go

@@ -0,0 +1,15 @@
+package example
+
+import (
+	"gin-vue-admin/global"
+	"gin-vue-admin/model/system"
+)
+
+type ExaCustomer struct {
+	global.GVA_MODEL
+	CustomerName       string         `json:"customerName" form:"customerName" gorm:"comment:客户名"`                // 客户名
+	CustomerPhoneData  string         `json:"customerPhoneData" form:"customerPhoneData" gorm:"comment:客户手机号"`    // 客户手机号
+	SysUserID          uint           `json:"sysUserId" form:"sysUserId" gorm:"comment:管理ID"`                     // 管理ID
+	SysUserAuthorityID string         `json:"sysUserAuthorityID" form:"sysUserAuthorityID" gorm:"comment:管理角色ID"` // 管理角色ID
+	SysUser            system.SysUser `json:"sysUser" form:"sysUser" gorm:"comment:管理详情"`                         // 管理详情
+}

+ 8 - 0
server/model/example/exa_excel.go

@@ -0,0 +1,8 @@
+package example
+
+import "gin-vue-admin/model/system"
+
+type ExcelInfo struct {
+	FileName string               `json:"fileName"` // 文件名
+	InfoList []system.SysBaseMenu `json:"infoList"`
+}

+ 1 - 1
server/model/exa_file_upload_download.go → server/model/example/exa_file_upload_download.go

@@ -1,4 +1,4 @@
-package model
+package example
 
 import (
 	"gin-vue-admin/global"

+ 1 - 1
server/model/exa_simple_uploader.go → server/model/example/exa_simple_uploader.go

@@ -1,4 +1,4 @@
-package model
+package example
 
 type ExaSimpleUploader struct {
 	ChunkNumber      string `json:"chunkNumber" gorm:"comment:当前切片标记"`

+ 23 - 0
server/model/example/request/common.go

@@ -0,0 +1,23 @@
+package request
+
+// Paging common input parameter structure
+type PageInfo struct {
+	Page     int `json:"page" form:"page"`         // 页码
+	PageSize int `json:"pageSize" form:"pageSize"` // 每页大小
+}
+
+// Find by id structure
+type GetById struct {
+	ID float64 `json:"id" form:"id"` // 主键ID
+}
+
+type IdsReq struct {
+	Ids []int `json:"ids" form:"ids"`
+}
+
+// Get role by id structure
+type GetAuthorityId struct {
+	AuthorityId string // 角色ID
+}
+
+type Empty struct{}

+ 17 - 0
server/model/example/request/jwt.go

@@ -0,0 +1,17 @@
+package request
+
+import (
+	"github.com/dgrijalva/jwt-go"
+	uuid "github.com/satori/go.uuid"
+)
+
+// Custom claims structure
+type CustomClaims struct {
+	UUID        uuid.UUID
+	ID          uint
+	Username    string
+	NickName    string
+	AuthorityId string
+	BufferTime  int64
+	jwt.StandardClaims
+}

+ 2 - 2
server/model/response/exa_breakpoint_continue.go → server/model/example/response/exa_breakpoint_continue.go

@@ -1,11 +1,11 @@
 package response
 
-import "gin-vue-admin/model"
+import "gin-vue-admin/model/example"
 
 type FilePathResponse struct {
 	FilePath string `json:"filePath"`
 }
 
 type FileResponse struct {
-	File model.ExaFile `json:"file"`
+	File example.ExaFile `json:"file"`
 }

+ 7 - 0
server/model/example/response/exa_customer.go

@@ -0,0 +1,7 @@
+package response
+
+import "gin-vue-admin/model/example"
+
+type ExaCustomerResponse struct {
+	Customer example.ExaCustomer `json:"customer"`
+}

+ 7 - 0
server/model/example/response/exa_file_upload_download.go

@@ -0,0 +1,7 @@
+package response
+
+import "gin-vue-admin/model/example"
+
+type ExaFileResponse struct {
+	File example.ExaFileUploadAndDownload `json:"file"`
+}

+ 0 - 8
server/model/request/sys_dictionary.go

@@ -1,8 +0,0 @@
-package request
-
-import "gin-vue-admin/model"
-
-type SysDictionarySearch struct {
-	model.SysDictionary
-	PageInfo
-}

+ 0 - 8
server/model/request/sys_dictionary_detail.go

@@ -1,8 +0,0 @@
-package request
-
-import "gin-vue-admin/model"
-
-type SysDictionaryDetailSearch struct {
-	model.SysDictionaryDetail
-	PageInfo
-}

+ 0 - 8
server/model/request/sys_operation_record.go

@@ -1,8 +0,0 @@
-package request
-
-import "gin-vue-admin/model"
-
-type SysOperationRecordSearch struct {
-	model.SysOperationRecord
-	PageInfo
-}

+ 0 - 7
server/model/response/exa_customer.go

@@ -1,7 +0,0 @@
-package response
-
-import "gin-vue-admin/model"
-
-type ExaCustomerResponse struct {
-	Customer model.ExaCustomer `json:"customer"`
-}

+ 0 - 7
server/model/response/exa_file_upload_download.go

@@ -1,7 +0,0 @@
-package response
-
-import "gin-vue-admin/model"
-
-type ExaFileResponse struct {
-	File model.ExaFileUploadAndDownload `json:"file"`
-}

+ 0 - 11
server/model/response/sys_api.go

@@ -1,11 +0,0 @@
-package response
-
-import "gin-vue-admin/model"
-
-type SysAPIResponse struct {
-	Api model.SysApi `json:"api"`
-}
-
-type SysAPIListResponse struct {
-	Apis []model.SysApi `json:"apis"`
-}

+ 0 - 12
server/model/response/sys_authority.go

@@ -1,12 +0,0 @@
-package response
-
-import "gin-vue-admin/model"
-
-type SysAuthorityResponse struct {
-	Authority model.SysAuthority `json:"authority"`
-}
-
-type SysAuthorityCopyResponse struct {
-	Authority      model.SysAuthority `json:"authority"`
-	OldAuthorityId string             `json:"oldAuthorityId"` // 旧角色ID
-}

+ 0 - 15
server/model/response/sys_menu.go

@@ -1,15 +0,0 @@
-package response
-
-import "gin-vue-admin/model"
-
-type SysMenusResponse struct {
-	Menus []model.SysMenu `json:"menus"`
-}
-
-type SysBaseMenusResponse struct {
-	Menus []model.SysBaseMenu `json:"menus"`
-}
-
-type SysBaseMenuResponse struct {
-	Menu model.SysBaseMenu `json:"menu"`
-}

+ 0 - 15
server/model/response/sys_user.go

@@ -1,15 +0,0 @@
-package response
-
-import (
-	"gin-vue-admin/model"
-)
-
-type SysUserResponse struct {
-	User model.SysUser `json:"user"`
-}
-
-type LoginResponse struct {
-	User      model.SysUser `json:"user"`
-	Token     string        `json:"token"`
-	ExpiresAt int64         `json:"expiresAt"`
-}

+ 0 - 36
server/model/sys_base_menu.go

@@ -1,36 +0,0 @@
-package model
-
-import (
-	"gin-vue-admin/global"
-)
-
-type SysBaseMenu struct {
-	global.GVA_MODEL
-	MenuLevel     uint                   `json:"-"`
-	ParentId      string                 `json:"parentId" gorm:"comment:父菜单ID"`     // 父菜单ID
-	Path          string                 `json:"path" gorm:"comment:路由path"`        // 路由path
-	Name          string                 `json:"name" gorm:"comment:路由name"`        // 路由name
-	Hidden        bool                   `json:"hidden" gorm:"comment:是否在列表隐藏"`     // 是否在列表隐藏
-	Component     string                 `json:"component" gorm:"comment:对应前端文件路径"` // 对应前端文件路径
-	Sort          int                    `json:"sort" gorm:"comment:排序标记"`          // 排序标记
-	Meta          `json:"meta" gorm:"comment:附加属性"`                                 // 附加属性
-	SysAuthoritys []SysAuthority         `json:"authoritys" gorm:"many2many:sys_authority_menus;"`
-	Children      []SysBaseMenu          `json:"children" gorm:"-"`
-	Parameters    []SysBaseMenuParameter `json:"parameters"`
-}
-
-type Meta struct {
-	KeepAlive   bool   `json:"keepAlive" gorm:"comment:是否缓存"`           // 是否缓存
-	DefaultMenu bool   `json:"defaultMenu" gorm:"comment:是否是基础路由(开发中)"` // 是否是基础路由(开发中)
-	Title       string `json:"title" gorm:"comment:菜单名"`                // 菜单名
-	Icon        string `json:"icon" gorm:"comment:菜单图标"`                // 菜单图标
-	CloseTab    bool   `json:"closeTab" gorm:"comment:自动关闭tab"`         // 自动关闭tab
-}
-
-type SysBaseMenuParameter struct {
-	global.GVA_MODEL
-	SysBaseMenuID uint
-	Type          string `json:"type" gorm:"comment:地址栏携带参数为params还是query"` // 地址栏携带参数为params还是query
-	Key           string `json:"key" gorm:"comment:地址栏携带参数的key"`            // 地址栏携带参数的key
-	Value         string `json:"value" gorm:"comment:地址栏携带参数的值"`            // 地址栏携带参数的值
-}

+ 4 - 2
server/model/request/sys_api.go → server/model/system/request/sys_api.go

@@ -1,10 +1,12 @@
 package request
 
-import "gin-vue-admin/model"
+import (
+	"gin-vue-admin/model/system"
+)
 
 // api分页条件查询及排序结构体
 type SearchApiParams struct {
-	model.SysApi
+	system.SysApi
 	PageInfo
 	OrderKey string `json:"orderKey"` // 排序
 	Desc     bool   `json:"desc"`     // 排序方式:升序false(默认)|降序true

+ 3 - 1
server/model/request/sys_autocode.go → server/model/system/request/sys_autocode.go

@@ -1,7 +1,9 @@
 package request
 
+import "gin-vue-admin/model/request"
+
 type SysAutoHistory struct {
-	PageInfo
+	request.PageInfo
 }
 
 type AutoHistoryByID struct {

+ 0 - 0
server/model/request/sys_casbin.go → server/model/system/request/sys_casbin.go


+ 11 - 0
server/model/system/request/sys_dictionary.go

@@ -0,0 +1,11 @@
+package request
+
+import (
+	"gin-vue-admin/model/request"
+	"gin-vue-admin/model/system"
+)
+
+type SysDictionarySearch struct {
+	system.SysDictionary
+	request.PageInfo
+}

+ 11 - 0
server/model/system/request/sys_dictionary_detail.go

@@ -0,0 +1,11 @@
+package request
+
+import (
+	"gin-vue-admin/model/request"
+	"gin-vue-admin/model/system"
+)
+
+type SysDictionaryDetailSearch struct {
+	system.SysDictionaryDetail
+	request.PageInfo
+}

+ 0 - 0
server/model/request/sys_init.go → server/model/system/request/sys_init.go


+ 5 - 5
server/model/request/sys_menu.go → server/model/system/request/sys_menu.go

@@ -2,24 +2,24 @@ package request
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
+	"gin-vue-admin/model/system"
 )
 
 // Add menu authority info structure
 type AddMenuAuthorityInfo struct {
-	Menus       []model.SysBaseMenu
+	Menus       []system.SysBaseMenu
 	AuthorityId string // 角色ID
 }
 
-func DefaultMenu() []model.SysBaseMenu {
-	return []model.SysBaseMenu{{
+func DefaultMenu() []system.SysBaseMenu {
+	return []system.SysBaseMenu{{
 		GVA_MODEL: global.GVA_MODEL{ID: 1},
 		ParentId:  "0",
 		Path:      "dashboard",
 		Name:      "dashboard",
 		Component: "view/dashboard/index.vue",
 		Sort:      1,
-		Meta: model.Meta{
+		Meta: system.Meta{
 			Title: "仪表盘",
 			Icon:  "setting",
 		},

+ 11 - 0
server/model/system/request/sys_operation_record.go

@@ -0,0 +1,11 @@
+package request
+
+import (
+	"gin-vue-admin/model/request"
+	"gin-vue-admin/model/system"
+)
+
+type SysOperationRecordSearch struct {
+	system.SysOperationRecord
+	request.PageInfo
+}

+ 0 - 0
server/model/request/sys_user.go → server/model/system/request/sys_user.go


+ 8 - 0
server/model/system/response/common.go

@@ -0,0 +1,8 @@
+package response
+
+type PageResult struct {
+	List     interface{} `json:"list"`
+	Total    int64       `json:"total"`
+	Page     int         `json:"page"`
+	PageSize int         `json:"pageSize"`
+}

+ 11 - 0
server/model/system/response/sys_api.go

@@ -0,0 +1,11 @@
+package response
+
+import "gin-vue-admin/model/system"
+
+type SysAPIResponse struct {
+	Api system.SysApi `json:"api"`
+}
+
+type SysAPIListResponse struct {
+	Apis []system.SysApi `json:"apis"`
+}

+ 12 - 0
server/model/system/response/sys_authority.go

@@ -0,0 +1,12 @@
+package response
+
+import "gin-vue-admin/model/system"
+
+type SysAuthorityResponse struct {
+	Authority system.SysAuthority `json:"authority"`
+}
+
+type SysAuthorityCopyResponse struct {
+	Authority      system.SysAuthority `json:"authority"`
+	OldAuthorityId string              `json:"oldAuthorityId"` // 旧角色ID
+}

+ 0 - 0
server/model/response/sys_captcha.go → server/model/system/response/sys_captcha.go


+ 3 - 1
server/model/response/sys_casbin.go → server/model/system/response/sys_casbin.go

@@ -1,6 +1,8 @@
 package response
 
-import "gin-vue-admin/model/request"
+import (
+	"gin-vue-admin/model/system/request"
+)
 
 type PolicyPathResponse struct {
 	Paths []request.CasbinInfo `json:"paths"`

+ 15 - 0
server/model/system/response/sys_menu.go

@@ -0,0 +1,15 @@
+package response
+
+import "gin-vue-admin/model/system"
+
+type SysMenusResponse struct {
+	Menus []system.SysMenu `json:"menus"`
+}
+
+type SysBaseMenusResponse struct {
+	Menus []system.SysBaseMenu `json:"menus"`
+}
+
+type SysBaseMenuResponse struct {
+	Menu system.SysBaseMenu `json:"menu"`
+}

+ 0 - 0
server/model/response/sys_system.go → server/model/system/response/sys_system.go


+ 15 - 0
server/model/system/response/sys_user.go

@@ -0,0 +1,15 @@
+package response
+
+import (
+	"gin-vue-admin/model/system"
+)
+
+type SysUserResponse struct {
+	User system.SysUser `json:"user"`
+}
+
+type LoginResponse struct {
+	User      system.SysUser `json:"user"`
+	Token     string         `json:"token"`
+	ExpiresAt int64          `json:"expiresAt"`
+}

+ 4 - 4
server/model/sys_api.go → server/model/system/sys_api.go

@@ -1,4 +1,4 @@
-package model
+package system
 
 import (
 	"gin-vue-admin/global"
@@ -6,8 +6,8 @@ import (
 
 type SysApi struct {
 	global.GVA_MODEL
-	Path        string `json:"path" gorm:"comment:api路径"`                    // api路径
-	Description string `json:"description" gorm:"comment:api中文描述"`           // api中文描述
-	ApiGroup    string `json:"apiGroup" gorm:"comment:api组"`                 // api组
+	Path        string `json:"path" gorm:"comment:api路径"`             // api路径
+	Description string `json:"description" gorm:"comment:api中文描述"`    // api中文描述
+	ApiGroup    string `json:"apiGroup" gorm:"comment:api组"`          // api组
 	Method      string `json:"method" gorm:"default:POST;comment:方法"` // 方法:创建POST(默认)|查看GET|更新PUT|删除DELETE
 }

+ 1 - 1
server/model/sys_authority.go → server/model/system/sys_authority.go

@@ -1,4 +1,4 @@
-package model
+package system
 
 import (
 	"time"

+ 1 - 1
server/model/sys_authority_menu.go → server/model/system/sys_authority_menu.go

@@ -1,4 +1,4 @@
-package model
+package system
 
 type SysMenu struct {
 	SysBaseMenu

+ 1 - 1
server/model/sys_auto_code.go → server/model/system/sys_auto_code.go

@@ -1,4 +1,4 @@
-package model
+package system
 
 import "errors"
 

+ 1 - 1
server/model/sys_autocode_history.go → server/model/system/sys_autocode_history.go

@@ -1,4 +1,4 @@
-package model
+package system
 
 import "gin-vue-admin/global"
 

+ 36 - 0
server/model/system/sys_base_menu.go

@@ -0,0 +1,36 @@
+package system
+
+import (
+	"gin-vue-admin/global"
+)
+
+type SysBaseMenu struct {
+	global.GVA_MODEL
+	MenuLevel     uint                              `json:"-"`
+	ParentId      string                            `json:"parentId" gorm:"comment:父菜单ID"`     // 父菜单ID
+	Path          string                            `json:"path" gorm:"comment:路由path"`        // 路由path
+	Name          string                            `json:"name" gorm:"comment:路由name"`        // 路由name
+	Hidden        bool                              `json:"hidden" gorm:"comment:是否在列表隐藏"`     // 是否在列表隐藏
+	Component     string                            `json:"component" gorm:"comment:对应前端文件路径"` // 对应前端文件路径
+	Sort          int                               `json:"sort" gorm:"comment:排序标记"`          // 排序标记
+	Meta          `json:"meta" gorm:"comment:附加属性"` // 附加属性
+	SysAuthoritys []SysAuthority                    `json:"authoritys" gorm:"many2many:sys_authority_menus;"`
+	Children      []SysBaseMenu                     `json:"children" gorm:"-"`
+	Parameters    []SysBaseMenuParameter            `json:"parameters"`
+}
+
+type Meta struct {
+	KeepAlive   bool   `json:"keepAlive" gorm:"comment:是否缓存"`           // 是否缓存
+	DefaultMenu bool   `json:"defaultMenu" gorm:"comment:是否是基础路由(开发中)"` // 是否是基础路由(开发中)
+	Title       string `json:"title" gorm:"comment:菜单名"`                // 菜单名
+	Icon        string `json:"icon" gorm:"comment:菜单图标"`                // 菜单图标
+	CloseTab    bool   `json:"closeTab" gorm:"comment:自动关闭tab"`         // 自动关闭tab
+}
+
+type SysBaseMenuParameter struct {
+	global.GVA_MODEL
+	SysBaseMenuID uint
+	Type          string `json:"type" gorm:"comment:地址栏携带参数为params还是query"` // 地址栏携带参数为params还是query
+	Key           string `json:"key" gorm:"comment:地址栏携带参数的key"`            // 地址栏携带参数的key
+	Value         string `json:"value" gorm:"comment:地址栏携带参数的值"`            // 地址栏携带参数的值
+}

+ 1 - 1
server/model/sys_casbin.go → server/model/system/sys_casbin.go

@@ -1,4 +1,4 @@
-package model
+package system
 
 type CasbinModel struct {
 	Ptype       string `json:"ptype" gorm:"column:ptype"`

+ 1 - 1
server/model/sys_dictionary.go → server/model/system/sys_dictionary.go

@@ -1,5 +1,5 @@
 // 自动生成模板SysDictionary
-package model
+package system
 
 import (
 	"gin-vue-admin/global"

+ 1 - 1
server/model/sys_dictionary_detail.go → server/model/system/sys_dictionary_detail.go

@@ -1,5 +1,5 @@
 // 自动生成模板SysDictionaryDetail
-package model
+package system
 
 import (
 	"gin-vue-admin/global"

+ 1 - 1
server/model/sys_initdb.go → server/model/system/sys_initdb.go

@@ -1,4 +1,4 @@
-package model
+package system
 
 type InitDBFunc interface {
 	Init() (err error)

+ 1 - 1
server/model/sys_jwt_blacklist.go → server/model/system/sys_jwt_blacklist.go

@@ -1,4 +1,4 @@
-package model
+package system
 
 import (
 	"gin-vue-admin/global"

+ 1 - 1
server/model/sys_operation_record.go → server/model/system/sys_operation_record.go

@@ -1,5 +1,5 @@
 // 自动生成模板SysOperationRecord
-package model
+package system
 
 import (
 	"gin-vue-admin/global"

+ 1 - 1
server/model/sys_system.go → server/model/system/sys_system.go

@@ -1,4 +1,4 @@
-package model
+package system
 
 import (
 	"gin-vue-admin/config"

+ 5 - 5
server/model/sys_user.go → server/model/system/sys_user.go

@@ -1,4 +1,4 @@
-package model
+package system
 
 import (
 	"gin-vue-admin/global"
@@ -13,8 +13,8 @@ type SysUser struct {
 	NickName    string       `json:"nickName" gorm:"default:系统用户;comment:用户昵称"`                                     // 用户昵称
 	HeaderImg   string       `json:"headerImg" gorm:"default:http://qmplusimg.henrongyi.top/head.png;comment:用户头像"` // 用户头像
 	Authority   SysAuthority `json:"authority" gorm:"foreignKey:AuthorityId;references:AuthorityId;comment:用户角色"`
-	AuthorityId string       `json:"authorityId" gorm:"default:888;comment:用户角色ID"` // 用户角色ID
-	SideMode	string       `json:"sideMode" gorm:"default:dark;comment:用户角色ID"` // 用户侧边主题
-	ActiveColor	string       `json:"activeColor" gorm:"default:#1890ff;comment:用户角色ID"` // 活跃颜色
-	BaseColor	string       `json:"baseColor" gorm:"default:#fff;comment:用户角色ID"` // 基础颜色
+	AuthorityId string       `json:"authorityId" gorm:"default:888;comment:用户角色ID"`     // 用户角色ID
+	SideMode    string       `json:"sideMode" gorm:"default:dark;comment:用户角色ID"`       // 用户侧边主题
+	ActiveColor string       `json:"activeColor" gorm:"default:#1890ff;comment:用户角色ID"` // 活跃颜色
+	BaseColor   string       `json:"baseColor" gorm:"default:#fff;comment:用户角色ID"`      // 基础颜色
 }

+ 2 - 2
server/router/exa_customer.go → server/router/example/exa_customer.go

@@ -1,4 +1,4 @@
-package router
+package example
 
 import (
 	"gin-vue-admin/api/v1"
@@ -6,7 +6,7 @@ import (
 	"github.com/gin-gonic/gin"
 )
 
-func InitCustomerRouter(Router *gin.RouterGroup) {
+func (e *Router) InitCustomerRouter(Router *gin.RouterGroup) {
 	CustomerRouter := Router.Group("customer").Use(middleware.OperationRecord())
 	{
 		CustomerRouter.POST("customer", v1.CreateExaCustomer)     // 创建客户

+ 2 - 2
server/router/exa_excel.go → server/router/example/exa_excel.go

@@ -1,11 +1,11 @@
-package router
+package example
 
 import (
 	"gin-vue-admin/api/v1"
 	"github.com/gin-gonic/gin"
 )
 
-func InitExcelRouter(Router *gin.RouterGroup) {
+func (e *Router) InitExcelRouter(Router *gin.RouterGroup) {
 	ExcelRouter := Router.Group("excel")
 	{
 		ExcelRouter.POST("/importExcel", v1.ImportExcel)          // 导入Excel

+ 2 - 2
server/router/exa_file_upload_and_download.go → server/router/example/exa_file_upload_and_download.go

@@ -1,11 +1,11 @@
-package router
+package example
 
 import (
 	"gin-vue-admin/api/v1"
 	"github.com/gin-gonic/gin"
 )
 
-func InitFileUploadAndDownloadRouter(Router *gin.RouterGroup) {
+func (e *Router) InitFileUploadAndDownloadRouter(Router *gin.RouterGroup) {
 	FileUploadAndDownloadRouter := Router.Group("fileUploadAndDownload")
 	{
 		FileUploadAndDownloadRouter.POST("/upload", v1.UploadFile)                                 // 上传文件

+ 2 - 2
server/router/exa_simple_uploader.go → server/router/example/exa_simple_uploader.go

@@ -1,11 +1,11 @@
-package router
+package example
 
 import (
 	"gin-vue-admin/api/v1"
 	"github.com/gin-gonic/gin"
 )
 
-func InitSimpleUploaderRouter(Router *gin.RouterGroup) {
+func (e *Router) InitSimpleUploaderRouter(Router *gin.RouterGroup) {
 	SimpleUploaderRouter := Router.Group("simpleUploader")
 	{
 		SimpleUploaderRouter.POST("upload", v1.SimpleUploaderUpload) // 上传功能

+ 2 - 2
server/router/sys_api.go → server/router/system/sys_api.go

@@ -1,4 +1,4 @@
-package router
+package system
 
 import (
 	"gin-vue-admin/api/v1"
@@ -6,7 +6,7 @@ import (
 	"github.com/gin-gonic/gin"
 )
 
-func InitApiRouter(Router *gin.RouterGroup) {
+func (s *Router) InitApiRouter(Router *gin.RouterGroup) {
 	ApiRouter := Router.Group("api").Use(middleware.OperationRecord())
 	{
 		ApiRouter.POST("createApi", v1.CreateApi)               // 创建Api

+ 2 - 2
server/router/sys_authority.go → server/router/system/sys_authority.go

@@ -1,4 +1,4 @@
-package router
+package system
 
 import (
 	"gin-vue-admin/api/v1"
@@ -6,7 +6,7 @@ import (
 	"github.com/gin-gonic/gin"
 )
 
-func InitAuthorityRouter(Router *gin.RouterGroup) {
+func (s *Router) InitAuthorityRouter(Router *gin.RouterGroup) {
 	AuthorityRouter := Router.Group("authority").Use(middleware.OperationRecord())
 	{
 		AuthorityRouter.POST("createAuthority", v1.CreateAuthority)   // 创建角色

+ 2 - 2
server/router/sys_auto_code.go → server/router/system/sys_auto_code.go

@@ -1,11 +1,11 @@
-package router
+package system
 
 import (
 	"gin-vue-admin/api/v1"
 	"github.com/gin-gonic/gin"
 )
 
-func InitAutoCodeRouter(Router *gin.RouterGroup) {
+func (s *Router) InitAutoCodeRouter(Router *gin.RouterGroup) {
 	AutoCodeRouter := Router.Group("autoCode")
 	{
 		AutoCodeRouter.POST("delSysHistory", v1.DelSysHistory) // 删除回滚记录

+ 2 - 2
server/router/sys_base.go → server/router/system/sys_base.go

@@ -1,11 +1,11 @@
-package router
+package system
 
 import (
 	"gin-vue-admin/api/v1"
 	"github.com/gin-gonic/gin"
 )
 
-func InitBaseRouter(Router *gin.RouterGroup) (R gin.IRoutes) {
+func (s *Router) InitBaseRouter(Router *gin.RouterGroup) (R gin.IRoutes) {
 	BaseRouter := Router.Group("base")
 	{
 		BaseRouter.POST("login", v1.Login)

+ 2 - 2
server/router/sys_casbin.go → server/router/system/sys_casbin.go

@@ -1,4 +1,4 @@
-package router
+package system
 
 import (
 	"gin-vue-admin/api/v1"
@@ -6,7 +6,7 @@ import (
 	"github.com/gin-gonic/gin"
 )
 
-func InitCasbinRouter(Router *gin.RouterGroup) {
+func (s *Router) InitCasbinRouter(Router *gin.RouterGroup) {
 	CasbinRouter := Router.Group("casbin").Use(middleware.OperationRecord())
 	{
 		CasbinRouter.POST("updateCasbin", v1.UpdateCasbin)

+ 2 - 2
server/router/sys_dictionary.go → server/router/system/sys_dictionary.go

@@ -1,4 +1,4 @@
-package router
+package system
 
 import (
 	"gin-vue-admin/api/v1"
@@ -6,7 +6,7 @@ import (
 	"github.com/gin-gonic/gin"
 )
 
-func InitSysDictionaryRouter(Router *gin.RouterGroup) {
+func (s *Router) InitSysDictionaryRouter(Router *gin.RouterGroup) {
 	SysDictionaryRouter := Router.Group("sysDictionary").Use(middleware.OperationRecord())
 	{
 		SysDictionaryRouter.POST("createSysDictionary", v1.CreateSysDictionary)   // 新建SysDictionary

+ 2 - 2
server/router/sys_dictionary_detail.go → server/router/system/sys_dictionary_detail.go

@@ -1,4 +1,4 @@
-package router
+package system
 
 import (
 	"gin-vue-admin/api/v1"
@@ -6,7 +6,7 @@ import (
 	"github.com/gin-gonic/gin"
 )
 
-func InitSysDictionaryDetailRouter(Router *gin.RouterGroup) {
+func (s *Router) InitSysDictionaryDetailRouter(Router *gin.RouterGroup) {
 	SysDictionaryDetailRouter := Router.Group("sysDictionaryDetail").Use(middleware.OperationRecord())
 	{
 		SysDictionaryDetailRouter.POST("createSysDictionaryDetail", v1.CreateSysDictionaryDetail)   // 新建SysDictionaryDetail

+ 2 - 2
server/router/sys_email.go → server/router/system/sys_email.go

@@ -1,4 +1,4 @@
-package router
+package system
 
 import (
 	"gin-vue-admin/api/v1"
@@ -6,7 +6,7 @@ import (
 	"github.com/gin-gonic/gin"
 )
 
-func InitEmailRouter(Router *gin.RouterGroup) {
+func (s *Router) InitEmailRouter(Router *gin.RouterGroup) {
 	EmailRouter := Router.Group("email").Use(middleware.OperationRecord())
 	{
 		EmailRouter.POST("emailTest", v1.EmailTest) // 发送测试邮件

+ 2 - 2
server/router/sys_initdb.go → server/router/system/sys_initdb.go

@@ -1,11 +1,11 @@
-package router
+package system
 
 import (
 	"gin-vue-admin/api/v1"
 	"github.com/gin-gonic/gin"
 )
 
-func InitInitRouter(Router *gin.RouterGroup) {
+func (s *Router) InitInitRouter(Router *gin.RouterGroup) {
 	InitRouter := Router.Group("init")
 	{
 		InitRouter.POST("initdb", v1.InitDB)   // 创建Api

+ 2 - 2
server/router/sys_jwt.go → server/router/system/sys_jwt.go

@@ -1,4 +1,4 @@
-package router
+package system
 
 import (
 	"gin-vue-admin/api/v1"
@@ -6,7 +6,7 @@ import (
 	"github.com/gin-gonic/gin"
 )
 
-func InitJwtRouter(Router *gin.RouterGroup) {
+func (s *Router) InitJwtRouter(Router *gin.RouterGroup) {
 	JwtRouter := Router.Group("jwt").Use(middleware.OperationRecord())
 	{
 		JwtRouter.POST("jsonInBlacklist", v1.JsonInBlacklist) // jwt加入黑名单

+ 2 - 2
server/router/sys_menu.go → server/router/system/sys_menu.go

@@ -1,4 +1,4 @@
-package router
+package system
 
 import (
 	"gin-vue-admin/api/v1"
@@ -6,7 +6,7 @@ import (
 	"github.com/gin-gonic/gin"
 )
 
-func InitMenuRouter(Router *gin.RouterGroup) (R gin.IRoutes) {
+func (s *Router) InitMenuRouter(Router *gin.RouterGroup) (R gin.IRoutes) {
 	MenuRouter := Router.Group("menu").Use(middleware.OperationRecord())
 	{
 		MenuRouter.POST("getMenu", v1.GetMenu)                   // 获取菜单树

+ 2 - 2
server/router/sys_operation_record.go → server/router/system/sys_operation_record.go

@@ -1,4 +1,4 @@
-package router
+package system
 
 import (
 	"gin-vue-admin/api/v1"
@@ -6,7 +6,7 @@ import (
 	"github.com/gin-gonic/gin"
 )
 
-func InitSysOperationRecordRouter(Router *gin.RouterGroup) {
+func (s *Router) InitSysOperationRecordRouter(Router *gin.RouterGroup) {
 	SysOperationRecordRouter := Router.Group("sysOperationRecord").Use(middleware.OperationRecord())
 	{
 		SysOperationRecordRouter.POST("createSysOperationRecord", v1.CreateSysOperationRecord)             // 新建SysOperationRecord

+ 2 - 2
server/router/sys_system.go → server/router/system/sys_system.go

@@ -1,4 +1,4 @@
-package router
+package system
 
 import (
 	"gin-vue-admin/api/v1"
@@ -6,7 +6,7 @@ import (
 	"github.com/gin-gonic/gin"
 )
 
-func InitSystemRouter(Router *gin.RouterGroup) {
+func (s *Router) InitSystemRouter(Router *gin.RouterGroup) {
 	SystemRouter := Router.Group("system").Use(middleware.OperationRecord())
 	{
 		SystemRouter.POST("getSystemConfig", v1.GetSystemConfig) // 获取配置文件内容

+ 2 - 2
server/router/sys_user.go → server/router/system/sys_user.go

@@ -1,4 +1,4 @@
-package router
+package system
 
 import (
 	"gin-vue-admin/api/v1"
@@ -6,7 +6,7 @@ import (
 	"github.com/gin-gonic/gin"
 )
 
-func InitUserRouter(Router *gin.RouterGroup) {
+func (s *Router) InitUserRouter(Router *gin.RouterGroup) {
 	UserRouter := Router.Group("user").Use(middleware.OperationRecord())
 	{
 		UserRouter.POST("register", v1.Register)                 // 用户注册账号

+ 6 - 6
server/service/exa_breakpoint_continue.go

@@ -3,7 +3,7 @@ package service
 import (
 	"errors"
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
+	"gin-vue-admin/model/example"
 	"gorm.io/gorm"
 )
 
@@ -13,8 +13,8 @@ import (
 //@param: fileMd5 string, fileName string, chunkTotal int
 //@return: err error, file model.ExaFile
 
-func FindOrCreateFile(fileMd5 string, fileName string, chunkTotal int) (err error, file model.ExaFile) {
-	var cfile model.ExaFile
+func FindOrCreateFile(fileMd5 string, fileName string, chunkTotal int) (err error, file example.ExaFile) {
+	var cfile example.ExaFile
 	cfile.FileMd5 = fileMd5
 	cfile.FileName = fileName
 	cfile.ChunkTotal = chunkTotal
@@ -36,7 +36,7 @@ func FindOrCreateFile(fileMd5 string, fileName string, chunkTotal int) (err erro
 //@return: error
 
 func CreateFileChunk(id uint, fileChunkPath string, fileChunkNumber int) error {
-	var chunk model.ExaFileChunk
+	var chunk example.ExaFileChunk
 	chunk.FileChunkPath = fileChunkPath
 	chunk.ExaFileID = id
 	chunk.FileChunkNumber = fileChunkNumber
@@ -51,8 +51,8 @@ func CreateFileChunk(id uint, fileChunkPath string, fileChunkNumber int) error {
 //@return: error
 
 func DeleteFileChunk(fileMd5 string, fileName string, filePath string) error {
-	var chunks []model.ExaFileChunk
-	var file model.ExaFile
+	var chunks []example.ExaFileChunk
+	var file example.ExaFile
 	err := global.GVA_DB.Where("file_md5 = ? AND file_name = ?", fileMd5, fileName).First(&file).Update("IsFinish", true).Update("file_path", filePath).Error
 	err = global.GVA_DB.Where("exa_file_id = ?", file.ID).Delete(&chunks).Unscoped().Error
 	return err

+ 10 - 9
server/service/exa_customer.go

@@ -2,8 +2,9 @@ package service
 
 import (
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
-	"gin-vue-admin/model/request"
+	"gin-vue-admin/model/example"
+	"gin-vue-admin/model/example/request"
+	"gin-vue-admin/model/system"
 )
 
 //@author: [piexlmax](https://github.com/piexlmax)
@@ -12,7 +13,7 @@ import (
 //@param: e model.ExaCustomer
 //@return: err error
 
-func CreateExaCustomer(e model.ExaCustomer) (err error) {
+func CreateExaCustomer(e example.ExaCustomer) (err error) {
 	err = global.GVA_DB.Create(&e).Error
 	return err
 }
@@ -23,7 +24,7 @@ func CreateExaCustomer(e model.ExaCustomer) (err error) {
 //@param: e model.ExaCustomer
 //@return: err error
 
-func DeleteExaCustomer(e model.ExaCustomer) (err error) {
+func DeleteExaCustomer(e example.ExaCustomer) (err error) {
 	err = global.GVA_DB.Delete(&e).Error
 	return err
 }
@@ -34,7 +35,7 @@ func DeleteExaCustomer(e model.ExaCustomer) (err error) {
 //@param: e *model.ExaCustomer
 //@return: err error
 
-func UpdateExaCustomer(e *model.ExaCustomer) (err error) {
+func UpdateExaCustomer(e *example.ExaCustomer) (err error) {
 	err = global.GVA_DB.Save(e).Error
 	return err
 }
@@ -45,7 +46,7 @@ func UpdateExaCustomer(e *model.ExaCustomer) (err error) {
 //@param: id uint
 //@return: err error, customer model.ExaCustomer
 
-func GetExaCustomer(id uint) (err error, customer model.ExaCustomer) {
+func GetExaCustomer(id uint) (err error, customer example.ExaCustomer) {
 	err = global.GVA_DB.Where("id = ?", id).First(&customer).Error
 	return
 }
@@ -59,15 +60,15 @@ func GetExaCustomer(id uint) (err error, customer model.ExaCustomer) {
 func GetCustomerInfoList(sysUserAuthorityID string, info request.PageInfo) (err error, list interface{}, total int64) {
 	limit := info.PageSize
 	offset := info.PageSize * (info.Page - 1)
-	db := global.GVA_DB.Model(&model.ExaCustomer{})
-	var a model.SysAuthority
+	db := global.GVA_DB.Model(&example.ExaCustomer{})
+	var a system.SysAuthority
 	a.AuthorityId = sysUserAuthorityID
 	err, auth := GetAuthorityInfo(a)
 	var dataId []string
 	for _, v := range auth.DataAuthorityId {
 		dataId = append(dataId, v.AuthorityId)
 	}
-	var CustomerList []model.ExaCustomer
+	var CustomerList []example.ExaCustomer
 	err = db.Where("sys_user_authority_id in ?", dataId).Count(&total).Error
 	if err != nil {
 		return err, CustomerList, total

+ 5 - 5
server/service/exa_excel_parse.go

@@ -4,12 +4,12 @@ import (
 	"errors"
 	"fmt"
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
+	"gin-vue-admin/model/system"
 	"github.com/360EntSecGroup-Skylar/excelize/v2"
 	"strconv"
 )
 
-func ParseInfoList2Excel(infoList []model.SysBaseMenu, filePath string) error {
+func ParseInfoList2Excel(infoList []system.SysBaseMenu, filePath string) error {
 	excel := excelize.NewFile()
 	excel.SetSheetRow("Sheet1", "A1", &[]string{"ID", "路由Name", "路由Path", "是否隐藏", "父节点", "排序", "文件名称"})
 	for i, menu := range infoList {
@@ -28,14 +28,14 @@ func ParseInfoList2Excel(infoList []model.SysBaseMenu, filePath string) error {
 	return err
 }
 
-func ParseExcel2InfoList() ([]model.SysBaseMenu, error) {
+func ParseExcel2InfoList() ([]system.SysBaseMenu, error) {
 	skipHeader := true
 	fixedHeader := []string{"ID", "路由Name", "路由Path", "是否隐藏", "父节点", "排序", "文件名称"}
 	file, err := excelize.OpenFile(global.GVA_CONFIG.Excel.Dir + "ExcelImport.xlsx")
 	if err != nil {
 		return nil, err
 	}
-	menus := make([]model.SysBaseMenu, 0)
+	menus := make([]system.SysBaseMenu, 0)
 	rows, err := file.Rows("Sheet1")
 	if err != nil {
 		return nil, err
@@ -59,7 +59,7 @@ func ParseExcel2InfoList() ([]model.SysBaseMenu, error) {
 		id, _ := strconv.Atoi(row[0])
 		hidden, _ := strconv.ParseBool(row[3])
 		sort, _ := strconv.Atoi(row[5])
-		menu := model.SysBaseMenu{
+		menu := system.SysBaseMenu{
 			GVA_MODEL: global.GVA_MODEL{
 				ID: uint(id),
 			},

+ 10 - 10
server/service/exa_file_upload_download.go

@@ -3,8 +3,8 @@ package service
 import (
 	"errors"
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
-	"gin-vue-admin/model/request"
+	"gin-vue-admin/model/example"
+	"gin-vue-admin/model/example/request"
 	"gin-vue-admin/utils/upload"
 	"mime/multipart"
 	"strings"
@@ -16,7 +16,7 @@ import (
 //@param: file model.ExaFileUploadAndDownload
 //@return: error
 
-func Upload(file model.ExaFileUploadAndDownload) error {
+func Upload(file example.ExaFileUploadAndDownload) error {
 	return global.GVA_DB.Create(&file).Error
 }
 
@@ -26,8 +26,8 @@ func Upload(file model.ExaFileUploadAndDownload) error {
 //@param: id uint
 //@return: error, model.ExaFileUploadAndDownload
 
-func FindFile(id uint) (error, model.ExaFileUploadAndDownload) {
-	var file model.ExaFileUploadAndDownload
+func FindFile(id uint) (error, example.ExaFileUploadAndDownload) {
+	var file example.ExaFileUploadAndDownload
 	err := global.GVA_DB.Where("id = ?", id).First(&file).Error
 	return err, file
 }
@@ -38,8 +38,8 @@ func FindFile(id uint) (error, model.ExaFileUploadAndDownload) {
 //@param: file model.ExaFileUploadAndDownload
 //@return: err error
 
-func DeleteFile(file model.ExaFileUploadAndDownload) (err error) {
-	var fileFromDb model.ExaFileUploadAndDownload
+func DeleteFile(file example.ExaFileUploadAndDownload) (err error) {
+	var fileFromDb example.ExaFileUploadAndDownload
 	err, fileFromDb = FindFile(file.ID)
 	oss := upload.NewOss()
 	if err = oss.DeleteFile(fileFromDb.Key); err != nil {
@@ -59,7 +59,7 @@ func GetFileRecordInfoList(info request.PageInfo) (err error, list interface{},
 	limit := info.PageSize
 	offset := info.PageSize * (info.Page - 1)
 	db := global.GVA_DB
-	var fileLists []model.ExaFileUploadAndDownload
+	var fileLists []example.ExaFileUploadAndDownload
 	err = db.Find(&fileLists).Count(&total).Error
 	err = db.Limit(limit).Offset(offset).Order("updated_at desc").Find(&fileLists).Error
 	return err, fileLists, total
@@ -71,7 +71,7 @@ func GetFileRecordInfoList(info request.PageInfo) (err error, list interface{},
 //@param: header *multipart.FileHeader, noSave string
 //@return: err error, file model.ExaFileUploadAndDownload
 
-func UploadFile(header *multipart.FileHeader, noSave string) (err error, file model.ExaFileUploadAndDownload) {
+func UploadFile(header *multipart.FileHeader, noSave string) (err error, file example.ExaFileUploadAndDownload) {
 	oss := upload.NewOss()
 	filePath, key, uploadErr := oss.UploadFile(header)
 	if uploadErr != nil {
@@ -79,7 +79,7 @@ func UploadFile(header *multipart.FileHeader, noSave string) (err error, file mo
 	}
 	if noSave == "0" {
 		s := strings.Split(header.Filename, ".")
-		f := model.ExaFileUploadAndDownload{
+		f := example.ExaFileUploadAndDownload{
 			Url:  filePath,
 			Name: header.Filename,
 			Tag:  s[len(s)-1],

+ 7 - 7
server/service/exa_simple_uploader.go

@@ -4,7 +4,7 @@ import (
 	"errors"
 	"fmt"
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
+	"gin-vue-admin/model/example"
 	"gorm.io/gorm"
 	"io/ioutil"
 	"os"
@@ -17,7 +17,7 @@ import (
 //@param: uploader model.ExaSimpleUploader
 //@return: err error
 
-func SaveChunk(uploader model.ExaSimpleUploader) (err error) {
+func SaveChunk(uploader example.ExaSimpleUploader) (err error) {
 	return global.GVA_DB.Create(uploader).Error
 }
 
@@ -27,9 +27,9 @@ func SaveChunk(uploader model.ExaSimpleUploader) (err error) {
 //@param: md5 string
 //@return: err error, uploads []model.ExaSimpleUploader, isDone bool
 
-func CheckFileMd5(md5 string) (err error, uploads []model.ExaSimpleUploader, isDone bool) {
+func CheckFileMd5(md5 string) (err error, uploads []example.ExaSimpleUploader, isDone bool) {
 	err = global.GVA_DB.Find(&uploads, "identifier = ? AND is_done = ?", md5, false).Error
-	isDone = errors.Is(global.GVA_DB.First(&model.ExaSimpleUploader{}, "identifier = ? AND is_done = ?", md5, true).Error, gorm.ErrRecordNotFound)
+	isDone = errors.Is(global.GVA_DB.First(&example.ExaSimpleUploader{}, "identifier = ? AND is_done = ?", md5, true).Error, gorm.ErrRecordNotFound)
 	return err, uploads, !isDone
 }
 
@@ -43,7 +43,7 @@ func MergeFileMd5(md5 string, fileName string) (err error) {
 	finishDir := "./finish/"
 	dir := "./chunk/" + md5
 	// 如果文件上传成功 不做后续操作 通知成功即可
-	if !errors.Is(global.GVA_DB.First(&model.ExaSimpleUploader{}, "identifier = ? AND is_done = ?", md5, true).Error, gorm.ErrRecordNotFound) {
+	if !errors.Is(global.GVA_DB.First(&example.ExaSimpleUploader{}, "identifier = ? AND is_done = ?", md5, true).Error, gorm.ErrRecordNotFound) {
 		return nil
 	}
 
@@ -71,11 +71,11 @@ func MergeFileMd5(md5 string, fileName string) (err error) {
 	}
 	err = global.GVA_DB.Transaction(func(tx *gorm.DB) error {
 		// 删除切片信息
-		if err = tx.Delete(&model.ExaSimpleUploader{}, "identifier = ? AND is_done = ?", md5, false).Error; err != nil {
+		if err = tx.Delete(&example.ExaSimpleUploader{}, "identifier = ? AND is_done = ?", md5, false).Error; err != nil {
 			fmt.Println(err)
 			return err
 		}
-		data := model.ExaSimpleUploader{
+		data := example.ExaSimpleUploader{
 			Identifier: md5,
 			IsDone:     true,
 			FilePath:   finishDir + fileName,

+ 3 - 3
server/service/jwt_black_list.go

@@ -4,7 +4,7 @@ import (
 	"context"
 	"errors"
 	"gin-vue-admin/global"
-	"gin-vue-admin/model"
+	"gin-vue-admin/model/system"
 	"time"
 
 	"gorm.io/gorm"
@@ -16,7 +16,7 @@ import (
 //@param: jwtList model.JwtBlacklist
 //@return: err error
 
-func JsonInBlacklist(jwtList model.JwtBlacklist) (err error) {
+func JsonInBlacklist(jwtList system.JwtBlacklist) (err error) {
 	err = global.GVA_DB.Create(&jwtList).Error
 	return
 }
@@ -28,7 +28,7 @@ func JsonInBlacklist(jwtList model.JwtBlacklist) (err error) {
 //@return: bool
 
 func IsBlacklist(jwt string) bool {
-	err := global.GVA_DB.Where("jwt = ?", jwt).First(&model.JwtBlacklist{}).Error
+	err := global.GVA_DB.Where("jwt = ?", jwt).First(&system.JwtBlacklist{}).Error
 	isNotFound := errors.Is(err, gorm.ErrRecordNotFound)
 	return !isNotFound
 }

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است