xu 11 months ago
parent
commit
f9aca28c36
80 changed files with 890 additions and 315 deletions
  1. 90 0
      server/api/v1/crm/customer.go
  2. 67 0
      server/api/v1/crm/customerGenre.go
  3. 15 0
      server/api/v1/crm/enter.go
  4. 79 0
      server/api/v1/crm/progress.go
  5. 2 0
      server/api/v1/enter.go
  6. 4 4
      server/api/v1/system/sys_api.go
  7. 5 5
      server/api/v1/system/sys_authority.go
  8. 5 5
      server/api/v1/system/sys_dictionary.go
  9. 5 5
      server/api/v1/system/sys_dictionary_detail.go
  10. 2 2
      server/api/v1/system/sys_jwt_blacklist.go
  11. 4 4
      server/api/v1/system/sys_menu.go
  12. 4 4
      server/api/v1/system/sys_operation_record.go
  13. 9 9
      server/api/v1/system/sys_user.go
  14. 8 5
      server/dao/approver.go
  15. 2 1
      server/dao/borrowing.go
  16. 49 0
      server/dao/crm/customer.go
  17. 29 0
      server/dao/crm/customerGenre.go
  18. 9 0
      server/dao/crm/demand.go
  19. 36 0
      server/dao/crm/progress.go
  20. 2 1
      server/dao/dailyExpenses.go
  21. 13 10
      server/dao/department.go
  22. 23 16
      server/dao/expenses.go
  23. 7 6
      server/dao/node.go
  24. 10 7
      server/dao/notice.go
  25. 2 1
      server/dao/project.go
  26. 2 1
      server/dao/projectFee.go
  27. 6 5
      server/dao/projectWorkingHours.go
  28. 14 13
      server/dao/project_process.go
  29. 2 1
      server/dao/reimbursement.go
  30. 1 1
      server/dao/sys_api.go
  31. 1 1
      server/dao/sys_authority.go
  32. 1 1
      server/dao/sys_authority_btn.go
  33. 1 1
      server/dao/sys_authority_menu.go
  34. 1 1
      server/dao/sys_base_menu.go
  35. 1 1
      server/dao/sys_dictionary.go
  36. 1 1
      server/dao/sys_dictionary_detail.go
  37. 1 1
      server/dao/sys_jwt_blacklist.go
  38. 1 1
      server/dao/sys_menu_btn.go
  39. 1 1
      server/dao/sys_operation_record.go
  40. 1 1
      server/dao/sys_user.go
  41. 1 1
      server/dao/sys_user_authority.go
  42. 12 11
      server/initialize/gorm.go
  43. 5 0
      server/initialize/router.go
  44. 2 2
      server/middleware/email.go
  45. 2 2
      server/middleware/jwt.go
  46. 2 2
      server/middleware/operation.go
  47. 5 0
      server/model/common/request/common.go
  48. 2 2
      server/model/system/request/sys_api.go
  49. 2 2
      server/model/system/request/sys_dictionary_detail.go
  50. 6 6
      server/model/system/request/sys_menu.go
  51. 2 2
      server/model/system/request/sys_operation_record.go
  52. 11 11
      server/model/system/request/sys_user.go
  53. 3 3
      server/model/system/response/sys_api.go
  54. 4 4
      server/model/system/response/sys_authority.go
  55. 4 4
      server/model/system/response/sys_menu.go
  56. 5 5
      server/model/system/response/sys_user.go
  57. 5 5
      server/plugin/plugin-tool/utils/check.go
  58. 1 1
      server/router/admin/file.go
  59. 24 0
      server/router/crm/customer.go
  60. 23 0
      server/router/crm/customerGenre.go
  61. 7 0
      server/router/crm/enter.go
  62. 23 0
      server/router/crm/progress.go
  63. 2 0
      server/router/enter.go
  64. 2 1
      server/service/admin/department.go
  65. 2 1
      server/service/admin/expenses.go
  66. 30 0
      server/service/crm/customer.go
  67. 22 0
      server/service/crm/customerGenre.go
  68. 7 0
      server/service/crm/enter.go
  69. 22 0
      server/service/crm/progress.go
  70. 2 0
      server/service/enter.go
  71. 3 3
      server/service/system/jwt_black_list.go
  72. 16 16
      server/service/system/sys_api.go
  73. 17 17
      server/service/system/sys_authority.go
  74. 4 4
      server/service/system/sys_authority_btn.go
  75. 10 10
      server/service/system/sys_base_menu.go
  76. 14 14
      server/service/system/sys_dictionary.go
  77. 14 14
      server/service/system/sys_dictionary_detail.go
  78. 27 27
      server/service/system/sys_menu.go
  79. 6 6
      server/service/system/sys_operation_record.go
  80. 23 23
      server/service/system/sys_user.go

+ 90 - 0
server/api/v1/crm/customer.go

@@ -0,0 +1,90 @@
+package crm
+
+import (
+	"github.com/gin-gonic/gin"
+	"server/dao/crm"
+	"server/global"
+	"server/model/common/request"
+	"server/model/common/response"
+	"strconv"
+)
+
+type CustomerApi struct{}
+
+func (ca *CustomerApi) QueryAllCustomers(c *gin.Context) {
+	allCustomers, err := customerService.QueryAllCustomers()
+	if err != nil {
+		response.FailWithMessage("查询失败", c)
+		global.GVA_LOG.Error("QueryAllCustomers ====== " + err.Error())
+		return
+	}
+	response.OkWithData(allCustomers, c)
+}
+
+func (ca *CustomerApi) QueryCustomerList(c *gin.Context) {
+	var info request.SearchCustomer
+	err := c.ShouldBindJSON(&info)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("QueryCustomerList ====== " + err.Error())
+		return
+	}
+	list, total, err := customerService.QueryCustomerList(info)
+	if err != nil {
+		response.FailWithMessage("查询失败", c)
+		global.GVA_LOG.Error("QueryCustomerList ====== " + err.Error())
+		return
+	}
+	response.OkWithDetailed(response.PageResult{
+		List:     list,
+		Total:    total,
+		Page:     info.PageInfo.Page,
+		PageSize: info.PageInfo.PageSize,
+	}, "获取成功", c)
+}
+
+func (ca *CustomerApi) CreateCustomer(c *gin.Context) {
+	var customer crm.Customer
+	err := c.ShouldBindJSON(&customer)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("CreateCustomer ====== " + err.Error())
+		return
+	}
+	err = customerService.CreateCustomer(customer)
+	if err != nil {
+		response.FailWithMessage("创建失败", c)
+		global.GVA_LOG.Error("CreateCustomer ====== " + err.Error())
+		return
+	}
+	response.OkWithMessage("创建成功", c)
+}
+
+func (ca *CustomerApi) UpdateCustomer(c *gin.Context) {
+	var customer crm.Customer
+	err := c.ShouldBindJSON(&customer)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("UpdateCustomer ====== " + err.Error())
+		return
+	}
+	err = customerService.UpdateCustomer(customer)
+	if err != nil {
+		response.FailWithMessage("更新失败", c)
+		global.GVA_LOG.Error("UpdateCustomer ====== " + err.Error())
+		return
+	}
+	response.OkWithMessage("更新成功", c)
+}
+
+func (ca *CustomerApi) DeleteCustomer(c *gin.Context) {
+	id := c.Query("id")
+	idInt, _ := strconv.Atoi(id)
+	err := customerService.DeleteCustomer(idInt)
+	if err != nil {
+		response.FailWithMessage("删除失败", c)
+		global.GVA_LOG.Error("DeleteCustomer ====== " + err.Error())
+		return
+	}
+	response.OkWithMessage("删除成功", c)
+}

+ 67 - 0
server/api/v1/crm/customerGenre.go

@@ -0,0 +1,67 @@
+package crm
+
+import (
+	"github.com/gin-gonic/gin"
+	"server/dao/crm"
+	"server/global"
+	"server/model/common/response"
+	"strconv"
+)
+
+type CustomerGenreApi struct{}
+
+func (cga *CustomerGenreApi) QueryAllCustomerGenres(c *gin.Context) {
+	genres, err := customerGenreService.QueryAllCustomerGenres()
+	if err != nil {
+		response.FailWithMessage("查询失败", c)
+		global.GVA_LOG.Error("QueryAllCustomerGenres ======= " + err.Error())
+		return
+	}
+	response.OkWithData(genres, c)
+}
+
+func (cga *CustomerGenreApi) CreateCustomerGenre(c *gin.Context) {
+	var customerGenre crm.CustomerGenre
+	err := c.ShouldBindJSON(&customerGenre)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("CreateCustomerGenre ======= " + err.Error())
+		return
+	}
+	err = customerGenreService.CreateCustomerGenre(customerGenre)
+	if err != nil {
+		response.FailWithMessage("创建失败", c)
+		global.GVA_LOG.Error("CreateCustomerGenre ======= " + err.Error())
+		return
+	}
+	response.OkWithMessage("创建成功", c)
+}
+
+func (cga *CustomerGenreApi) UpdateCustomerGenre(c *gin.Context) {
+	var customerGenre crm.CustomerGenre
+	err := c.ShouldBindJSON(&customerGenre)
+	if err != nil {
+		response.FailWithMessage("参数解析失败", c)
+		global.GVA_LOG.Error("UpdateCustomerGenre ======= " + err.Error())
+		return
+	}
+	err = customerGenreService.UpdateCustomerGenre(customerGenre)
+	if err != nil {
+		response.FailWithMessage("更新失败", c)
+		global.GVA_LOG.Error("UpdateCustomerGenre ======= " + err.Error())
+		return
+	}
+	response.OkWithMessage("更新成功", c)
+}
+
+func (cga *CustomerGenreApi) DeleteCustomerGenre(c *gin.Context) {
+	id := c.Query("id")
+	idInt, _ := strconv.Atoi(id)
+	err := customerGenreService.DeleteCustomerGenre(idInt)
+	if err != nil {
+		response.FailWithMessage("删除失败", c)
+		global.GVA_LOG.Error("DeleteCustomerGenre ======= " + err.Error())
+		return
+	}
+	response.OkWithMessage("删除成功", c)
+}

+ 15 - 0
server/api/v1/crm/enter.go

@@ -0,0 +1,15 @@
+package crm
+
+import "server/service"
+
+type ApiGroup struct {
+	CustomerApi
+	CustomerGenreApi
+	ProgressApi
+}
+
+var (
+	customerService      = service.ServiceGroupApp.CRMServiceGroup.CustomerService
+	customerGenreService = service.ServiceGroupApp.CRMServiceGroup.CustomerGenreService
+	progressService      = service.ServiceGroupApp.CRMServiceGroup.ProgressService
+)

+ 79 - 0
server/api/v1/crm/progress.go

@@ -0,0 +1,79 @@
+package crm
+
+import (
+	"github.com/gin-gonic/gin"
+	"server/dao/crm"
+	"server/global"
+	"server/model/common/response"
+	"strconv"
+)
+
+type ProgressApi struct{}
+
+func (pa *ProgressApi) QueryProgressByCustomerId(c *gin.Context) {
+	id := c.Query("id")
+	customerId, err := strconv.Atoi(id)
+	if err != nil {
+		response.FailWithMessage("参数错误", c)
+		global.GVA_LOG.Error("QueryProgressByCustomerId ====== " + err.Error())
+		return
+	}
+	progress, err := progressService.QueryProgressByCustomerId(customerId)
+	if err != nil {
+		response.FailWithMessage("查询失败", c)
+		global.GVA_LOG.Error("QueryProgressByCustomerId ====== " + err.Error())
+		return
+	}
+	response.OkWithData(progress, c)
+}
+
+func (pa *ProgressApi) CreateProgress(c *gin.Context) {
+	var progress crm.Progress
+	err := c.ShouldBindJSON(&progress)
+	if err != nil {
+		response.FailWithMessage("参数错误", c)
+		global.GVA_LOG.Error("CreateProgress ====== " + err.Error())
+		return
+	}
+	err = progressService.CreateProgress(progress)
+	if err != nil {
+		response.FailWithMessage("创建失败", c)
+		global.GVA_LOG.Error("CreateProgress ====== " + err.Error())
+		return
+	}
+	response.OkWithMessage("创建成功", c)
+}
+
+func (pa *ProgressApi) UpdateProgress(c *gin.Context) {
+	var progress crm.Progress
+	err := c.ShouldBindJSON(&progress)
+	if err != nil {
+		response.FailWithMessage("参数错误", c)
+		global.GVA_LOG.Error("UpdateProgress ====== " + err.Error())
+		return
+	}
+	err = progressService.UpdateProgress(progress)
+	if err != nil {
+		response.FailWithMessage("更新失败", c)
+		global.GVA_LOG.Error("UpdateProgress ====== " + err.Error())
+		return
+	}
+	response.OkWithMessage("更新成功", c)
+}
+
+func (pa *ProgressApi) DeleteProgress(c *gin.Context) {
+	id := c.Query("id")
+	progressId, err := strconv.Atoi(id)
+	if err != nil {
+		response.FailWithMessage("参数错误", c)
+		global.GVA_LOG.Error("DeleteProgress ====== " + err.Error())
+		return
+	}
+	err = progressService.DeleteProgress(progressId)
+	if err != nil {
+		response.FailWithMessage("删除失败", c)
+		global.GVA_LOG.Error("DeleteProgress ====== " + err.Error())
+		return
+	}
+	response.OkWithMessage("删除成功", c)
+}

+ 2 - 0
server/api/v1/enter.go

@@ -2,6 +2,7 @@ package v1
 
 import (
 	"server/api/v1/admin"
+	"server/api/v1/crm"
 	"server/api/v1/example"
 	"server/api/v1/storehouse"
 	"server/api/v1/system"
@@ -14,6 +15,7 @@ type ApiGroup struct {
 	AdminApiGroup      admin.ApiGroup
 	WorkflowApiGroup   workflow.ApiGroup
 	StorehouseApiGroup storehouse.ApiGroup
+	CRMApiGroup        crm.ApiGroup
 }
 
 var ApiGroupApp = new(ApiGroup)

+ 4 - 4
server/api/v1/system/sys_api.go

@@ -1,7 +1,7 @@
 package system
 
 import (
-	"server/dao"
+	"server/dao/system"
 	"server/global"
 	"server/model/common/request"
 	"server/model/common/response"
@@ -25,7 +25,7 @@ type SystemApiApi struct{}
 // @Success   200   {object}  response.Response{msg=string}  "创建基础api"
 // @Router    /api/createApi [post]
 func (s *SystemApiApi) CreateApi(c *gin.Context) {
-	var api dao.SysApi
+	var api system.SysApi
 	err := c.ShouldBindJSON(&api)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -55,7 +55,7 @@ func (s *SystemApiApi) CreateApi(c *gin.Context) {
 // @Success   200   {object}  response.Response{msg=string}  "删除api"
 // @Router    /api/deleteApi [post]
 func (s *SystemApiApi) DeleteApi(c *gin.Context) {
-	var api dao.SysApi
+	var api system.SysApi
 	err := c.ShouldBindJSON(&api)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -150,7 +150,7 @@ func (s *SystemApiApi) GetApiById(c *gin.Context) {
 // @Success   200   {object}  response.Response{msg=string}  "修改基础api"
 // @Router    /api/updateApi [post]
 func (s *SystemApiApi) UpdateApi(c *gin.Context) {
-	var api dao.SysApi
+	var api system.SysApi
 	err := c.ShouldBindJSON(&api)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)

+ 5 - 5
server/api/v1/system/sys_authority.go

@@ -1,7 +1,7 @@
 package system
 
 import (
-	"server/dao"
+	"server/dao/system"
 	"server/global"
 	"server/model/common/request"
 	"server/model/common/response"
@@ -24,7 +24,7 @@ type AuthorityApi struct{}
 // @Success   200   {object}  response.Response{data=systemRes.SysAuthorityResponse,msg=string}  "创建角色,返回包括系统角色详情"
 // @Router    /authority/createAuthority [post]
 func (a *AuthorityApi) CreateAuthority(c *gin.Context) {
-	var authority, authBack dao.SysAuthority
+	var authority, authBack system.SysAuthority
 	var err error
 
 	if err = c.ShouldBindJSON(&authority); err != nil {
@@ -61,7 +61,7 @@ func (a *AuthorityApi) CreateAuthority(c *gin.Context) {
 // @Success   200   {object}  response.Response{msg=string}  "删除角色"
 // @Router    /authority/deleteAuthority [post]
 func (a *AuthorityApi) DeleteAuthority(c *gin.Context) {
-	var authority dao.SysAuthority
+	var authority system.SysAuthority
 	var err error
 	if err = c.ShouldBindJSON(&authority); err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -91,7 +91,7 @@ func (a *AuthorityApi) DeleteAuthority(c *gin.Context) {
 // @Success   200   {object}  response.Response{data=systemRes.SysAuthorityResponse,msg=string}  "更新角色信息,返回包括系统角色详情"
 // @Router    /authority/updateAuthority [post]
 func (a *AuthorityApi) UpdateAuthority(c *gin.Context) {
-	var auth dao.SysAuthority
+	var auth system.SysAuthority
 	err := c.ShouldBindJSON(&auth)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -156,7 +156,7 @@ func (a *AuthorityApi) GetAuthorityList(c *gin.Context) {
 // @Success   200   {object}  response.Response{msg=string}  "设置角色资源权限"
 // @Router    /authority/setDataAuthority [post]
 func (a *AuthorityApi) SetDataAuthority(c *gin.Context) {
-	var auth dao.SysAuthority
+	var auth system.SysAuthority
 	err := c.ShouldBindJSON(&auth)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)

+ 5 - 5
server/api/v1/system/sys_dictionary.go

@@ -3,7 +3,7 @@ package system
 import (
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
-	"server/dao"
+	"server/dao/system"
 	"server/global"
 	"server/model/common/response"
 )
@@ -20,7 +20,7 @@ type DictionaryApi struct{}
 // @Success   200   {object}  response.Response{msg=string}  "创建SysDictionary"
 // @Router    /sysDictionary/createSysDictionary [post]
 func (s *DictionaryApi) CreateSysDictionary(c *gin.Context) {
-	var dictionary dao.SysDictionary
+	var dictionary system.SysDictionary
 	err := c.ShouldBindJSON(&dictionary)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -45,7 +45,7 @@ func (s *DictionaryApi) CreateSysDictionary(c *gin.Context) {
 // @Success   200   {object}  response.Response{msg=string}  "删除SysDictionary"
 // @Router    /sysDictionary/deleteSysDictionary [delete]
 func (s *DictionaryApi) DeleteSysDictionary(c *gin.Context) {
-	var dictionary dao.SysDictionary
+	var dictionary system.SysDictionary
 	err := c.ShouldBindJSON(&dictionary)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -70,7 +70,7 @@ func (s *DictionaryApi) DeleteSysDictionary(c *gin.Context) {
 // @Success   200   {object}  response.Response{msg=string}  "更新SysDictionary"
 // @Router    /sysDictionary/updateSysDictionary [put]
 func (s *DictionaryApi) UpdateSysDictionary(c *gin.Context) {
-	var dictionary dao.SysDictionary
+	var dictionary system.SysDictionary
 	err := c.ShouldBindJSON(&dictionary)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -95,7 +95,7 @@ func (s *DictionaryApi) UpdateSysDictionary(c *gin.Context) {
 // @Success   200   {object}  response.Response{data=map[string]interface{},msg=string}  "用id查询SysDictionary"
 // @Router    /sysDictionary/findSysDictionary [get]
 func (s *DictionaryApi) FindSysDictionary(c *gin.Context) {
-	var dictionary dao.SysDictionary
+	var dictionary system.SysDictionary
 	err := c.ShouldBindQuery(&dictionary)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)

+ 5 - 5
server/api/v1/system/sys_dictionary_detail.go

@@ -3,7 +3,7 @@ package system
 import (
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
-	"server/dao"
+	"server/dao/system"
 	"server/global"
 	"server/model/common/response"
 	"server/model/system/request"
@@ -22,7 +22,7 @@ type DictionaryDetailApi struct{}
 // @Success   200   {object}  response.Response{msg=string}  "创建SysDictionaryDetail"
 // @Router    /sysDictionaryDetail/createSysDictionaryDetail [post]
 func (s *DictionaryDetailApi) CreateSysDictionaryDetail(c *gin.Context) {
-	var detail dao.SysDictionaryDetail
+	var detail system.SysDictionaryDetail
 	err := c.ShouldBindJSON(&detail)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -47,7 +47,7 @@ func (s *DictionaryDetailApi) CreateSysDictionaryDetail(c *gin.Context) {
 // @Success   200   {object}  response.Response{msg=string}  "删除SysDictionaryDetail"
 // @Router    /sysDictionaryDetail/deleteSysDictionaryDetail [delete]
 func (s *DictionaryDetailApi) DeleteSysDictionaryDetail(c *gin.Context) {
-	var detail dao.SysDictionaryDetail
+	var detail system.SysDictionaryDetail
 	err := c.ShouldBindJSON(&detail)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -72,7 +72,7 @@ func (s *DictionaryDetailApi) DeleteSysDictionaryDetail(c *gin.Context) {
 // @Success   200   {object}  response.Response{msg=string}  "更新SysDictionaryDetail"
 // @Router    /sysDictionaryDetail/updateSysDictionaryDetail [put]
 func (s *DictionaryDetailApi) UpdateSysDictionaryDetail(c *gin.Context) {
-	var detail dao.SysDictionaryDetail
+	var detail system.SysDictionaryDetail
 	err := c.ShouldBindJSON(&detail)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -97,7 +97,7 @@ func (s *DictionaryDetailApi) UpdateSysDictionaryDetail(c *gin.Context) {
 // @Success   200   {object}  response.Response{data=map[string]interface{},msg=string}  "用id查询SysDictionaryDetail"
 // @Router    /sysDictionaryDetail/findSysDictionaryDetail [get]
 func (s *DictionaryDetailApi) FindSysDictionaryDetail(c *gin.Context) {
-	var detail dao.SysDictionaryDetail
+	var detail system.SysDictionaryDetail
 	err := c.ShouldBindQuery(&detail)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)

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

@@ -3,7 +3,7 @@ package system
 import (
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
-	"server/dao"
+	"server/dao/system"
 	"server/global"
 	"server/model/common/response"
 	"server/utils"
@@ -21,7 +21,7 @@ type JwtApi struct{}
 // @Router    /jwt/jsonInBlacklist [post]
 func (j *JwtApi) JsonInBlacklist(c *gin.Context) {
 	token := utils.GetToken(c)
-	jwt := dao.JwtBlacklist{Jwt: token}
+	jwt := system.JwtBlacklist{Jwt: token}
 	err := jwtService.JsonInBlacklist(jwt)
 	if err != nil {
 		global.GVA_LOG.Error("jwt作废失败!", zap.Error(err))

+ 4 - 4
server/api/v1/system/sys_menu.go

@@ -1,7 +1,7 @@
 package system
 
 import (
-	"server/dao"
+	"server/dao/system"
 	"server/global"
 	"server/model/common/request"
 	"server/model/common/response"
@@ -31,7 +31,7 @@ func (a *AuthorityMenuApi) GetMenu(c *gin.Context) {
 		return
 	}
 	if menus == nil {
-		menus = []dao.SysMenu{}
+		menus = []system.SysMenu{}
 	}
 	response.OkWithDetailed(systemRes.SysMenusResponse{Menus: menus}, "获取成功", c)
 }
@@ -122,7 +122,7 @@ func (a *AuthorityMenuApi) GetMenuAuthority(c *gin.Context) {
 // @Success   200   {object}  response.Response{msg=string}  "新增菜单"
 // @Router    /menu/addBaseMenu [post]
 func (a *AuthorityMenuApi) AddBaseMenu(c *gin.Context) {
-	var menu dao.SysBaseMenu
+	var menu system.SysBaseMenu
 	err := c.ShouldBindJSON(&menu)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -187,7 +187,7 @@ func (a *AuthorityMenuApi) DeleteBaseMenu(c *gin.Context) {
 // @Success   200   {object}  response.Response{msg=string}  "更新菜单"
 // @Router    /menu/updateBaseMenu [post]
 func (a *AuthorityMenuApi) UpdateBaseMenu(c *gin.Context) {
-	var menu dao.SysBaseMenu
+	var menu system.SysBaseMenu
 	err := c.ShouldBindJSON(&menu)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)

+ 4 - 4
server/api/v1/system/sys_operation_record.go

@@ -3,7 +3,7 @@ package system
 import (
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
-	"server/dao"
+	"server/dao/system"
 	"server/global"
 	"server/model/common/request"
 	"server/model/common/response"
@@ -23,7 +23,7 @@ type OperationRecordApi struct{}
 // @Success   200   {object}  response.Response{msg=string}  "创建SysOperationRecord"
 // @Router    /sysOperationRecord/createSysOperationRecord [post]
 func (s *OperationRecordApi) CreateSysOperationRecord(c *gin.Context) {
-	var sysOperationRecord dao.SysOperationRecord
+	var sysOperationRecord system.SysOperationRecord
 	err := c.ShouldBindJSON(&sysOperationRecord)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -48,7 +48,7 @@ func (s *OperationRecordApi) CreateSysOperationRecord(c *gin.Context) {
 // @Success   200   {object}  response.Response{msg=string}  "删除SysOperationRecord"
 // @Router    /sysOperationRecord/deleteSysOperationRecord [delete]
 func (s *OperationRecordApi) DeleteSysOperationRecord(c *gin.Context) {
-	var sysOperationRecord dao.SysOperationRecord
+	var sysOperationRecord system.SysOperationRecord
 	err := c.ShouldBindJSON(&sysOperationRecord)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -98,7 +98,7 @@ func (s *OperationRecordApi) DeleteSysOperationRecordByIds(c *gin.Context) {
 // @Success   200   {object}  response.Response{data=map[string]interface{},msg=string}  "用id查询SysOperationRecord"
 // @Router    /sysOperationRecord/findSysOperationRecord [get]
 func (s *OperationRecordApi) FindSysOperationRecord(c *gin.Context) {
-	var sysOperationRecord dao.SysOperationRecord
+	var sysOperationRecord system.SysOperationRecord
 	err := c.ShouldBindQuery(&sysOperationRecord)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)

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

@@ -2,7 +2,7 @@ package system
 
 import (
 	"fmt"
-	"server/dao"
+	"server/dao/system"
 	"strconv"
 	"time"
 
@@ -63,7 +63,7 @@ func (b *BaseApi) Login(c *gin.Context) {
 	l.Password = rsa.Encryption(l.Password)
 
 	if !oc || (l.CaptchaId != "" && l.Captcha != "" && store.Verify(l.CaptchaId, l.Captcha, true)) {
-		u := &dao.SysUser{Username: l.Username, Password: l.Password}
+		u := &system.SysUser{Username: l.Username, Password: l.Password}
 		user, err := userService.Login(u)
 		if err != nil {
 			global.GVA_LOG.Error("登陆失败! 用户名不存在或者密码错误!", zap.Error(err))
@@ -88,7 +88,7 @@ func (b *BaseApi) Login(c *gin.Context) {
 }
 
 // TokenNext 登录以后签发jwt
-func (b *BaseApi) TokenNext(c *gin.Context, user dao.SysUser) {
+func (b *BaseApi) TokenNext(c *gin.Context, user system.SysUser) {
 	j := &utils.JWT{SigningKey: []byte(global.GVA_CONFIG.JWT.SigningKey)} // 唯一签名
 	claims := j.CreateClaims(systemReq.BaseClaims{
 		UUID:        user.UUID,
@@ -129,7 +129,7 @@ func (b *BaseApi) TokenNext(c *gin.Context, user dao.SysUser) {
 		global.GVA_LOG.Error("设置登录状态失败!", zap.Error(err))
 		response.FailWithMessage("设置登录状态失败", c)
 	} else {
-		var blackJWT dao.JwtBlacklist
+		var blackJWT system.JwtBlacklist
 		blackJWT.Jwt = jwtStr
 		if err := jwtService.JsonInBlacklist(blackJWT); err != nil {
 			response.FailWithMessage("jwt作废失败", c)
@@ -168,7 +168,7 @@ func (b *BaseApi) Register(c *gin.Context) {
 		return
 	}
 
-	user := &dao.SysUser{Username: r.Username, NickName: r.NickName, Password: r.Password, HeaderImg: r.HeaderImg, AuthorityId: r.AuthorityId, Enable: r.Enable, Phone: r.Phone, Email: r.Email}
+	user := &system.SysUser{Username: r.Username, NickName: r.NickName, Password: r.Password, HeaderImg: r.HeaderImg, AuthorityId: r.AuthorityId, Enable: r.Enable, Phone: r.Phone, Email: r.Email}
 	userReturn, err := userService.Register(*user)
 	if err != nil {
 		global.GVA_LOG.Error("注册失败!", zap.Error(err))
@@ -199,7 +199,7 @@ func (b *BaseApi) ChangePassword(c *gin.Context) {
 		return
 	}
 	uid := utils.GetUserID(c)
-	u := &dao.SysUser{GVA_MODEL: global.GVA_MODEL{ID: uid}, Password: req.Password}
+	u := &system.SysUser{GVA_MODEL: global.GVA_MODEL{ID: uid}, Password: req.Password}
 	_, err = userService.ChangePassword(u, req.NewPassword)
 	if err != nil {
 		global.GVA_LOG.Error("修改失败!", zap.Error(err))
@@ -376,7 +376,7 @@ func (b *BaseApi) SetUserInfo(c *gin.Context) {
 			return
 		}
 	}
-	err = userService.SetUserInfo(dao.SysUser{
+	err = userService.SetUserInfo(system.SysUser{
 		GVA_MODEL: global.GVA_MODEL{
 			ID: user.ID,
 		},
@@ -413,7 +413,7 @@ func (b *BaseApi) SetSelfInfo(c *gin.Context) {
 		return
 	}
 	user.ID = utils.GetUserID(c)
-	err = userService.SetSelfInfo(dao.SysUser{
+	err = userService.SetSelfInfo(system.SysUser{
 		GVA_MODEL: global.GVA_MODEL{
 			ID: user.ID,
 		},
@@ -460,7 +460,7 @@ func (b *BaseApi) GetUserInfo(c *gin.Context) {
 // @Success   200   {object}  response.Response{msg=string}  "重置用户密码"
 // @Router    /user/resetPassword [post]
 func (b *BaseApi) ResetPassword(c *gin.Context) {
-	var user dao.SysUser
+	var user system.SysUser
 	err := c.ShouldBindJSON(&user)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)

+ 8 - 5
server/dao/approver.go

@@ -1,13 +1,16 @@
 package dao
 
-import "server/global"
+import (
+	"server/dao/system"
+	"server/global"
+)
 
 type Approver struct {
 	global.GVA_MODEL
-	UserId                    int     `json:"userId" form:"userId" gorm:"comment:用户id"`
-	User                      SysUser `json:"user" form:"user" gorm:"foreignKey:UserId;references:id;"`
-	ApproverDescription       string  `json:"approverDescription" form:"approverDescription" gorm:"comment:审批人详情"`
-	ApproverRightsDescription string  `json:"approverRightsDescription" form:"approverRightsDescription" gorm:"comment:审批人权限详情"`
+	UserId                    int            `json:"userId" form:"userId" gorm:"comment:用户id"`
+	User                      system.SysUser `json:"user" form:"user" gorm:"foreignKey:UserId;references:id;"`
+	ApproverDescription       string         `json:"approverDescription" form:"approverDescription" gorm:"comment:审批人详情"`
+	ApproverRightsDescription string         `json:"approverRightsDescription" form:"approverRightsDescription" gorm:"comment:审批人权限详情"`
 }
 
 func (Approver) TableName() string {

+ 2 - 1
server/dao/borrowing.go

@@ -2,6 +2,7 @@ package dao
 
 import (
 	"github.com/shopspring/decimal"
+	"server/dao/system"
 	"server/global"
 )
 
@@ -11,7 +12,7 @@ type Borrowing struct {
 	Applicant       string          `json:"applicant" form:"applicant" gorm:"comment:申请人"`
 	ApplicationTime string          `json:"applicationTime" form:"applicationTime" gorm:"comment:申请日期"`
 	Charge          int             `json:"charge" form:"charge" gorm:"comment:负责人"`
-	User            SysUser         `json:"user" form:"user" gorm:"foreignKey:Charge;references:id;"`
+	User            system.SysUser  `json:"user" form:"user" gorm:"foreignKey:Charge;references:id;"`
 	BorrowingPrice  decimal.Decimal `json:"borrowingPrice" form:"borrowingPrice" gorm:"comment:支借金额;type:decimal(10,2)"`
 }
 

+ 49 - 0
server/dao/crm/customer.go

@@ -0,0 +1,49 @@
+package crm
+
+import "server/global"
+
+type Customer struct {
+	global.GVA_MODEL
+	Name          string        `json:"name" form:"name" gorm:"comment:客户名称"`
+	Phone         string        `json:"phone" form:"phone" gorm:"comment:客户电话"`
+	Email         string        `json:"email" form:"email" gorm:"comment:客户邮箱"`
+	Company       string        `json:"company" form:"company" gorm:"comment:公司"`
+	Posts         string        `json:"posts" form:"posts" gorm:"comment:职位"`
+	Genre         int           `json:"genre" form:"genre" gorm:"comment:;客户类型"`
+	CustomerGenre CustomerGenre `json:"customerGenre" form:"customerGenre" gorm:"foreignKey:Genre;references:id;"`
+	Progress      []Progress    `json:"progress" form:"progress" gorm:"foreignKey:CustomerId"`
+	SupervisorId  *uint         `json:"supervisorId" form:"supervisorId" gorm:"comment:直系上司id"`
+	Supervisor    *Customer     `json:"supervisor" form:"supervisor" gorm:"foreignKey:SupervisorId;references:ID"`
+	Subordinates  []Customer    `json:"subordinates" form:"subordinates" gorm:"foreignKey:SupervisorId"`
+}
+
+func (Customer) TableName() string {
+	return "customer"
+}
+
+func QueryAllCustomers() (customers []Customer, err error) {
+	err = global.GVA_DB.Model(&Customer{}).Preload("Progress").Preload("Supervisor").Preload("CustomerGenre").Preload("Subordinates").Find(&customers).Error
+	return customers, err
+}
+
+func QueryCustomerList(limit, offset int) (customers []Customer, total int64, err error) {
+	db := global.GVA_DB.Model(&Customer{})
+	err = db.Count(&total).Error
+	if err != nil {
+		return
+	}
+	err = db.Limit(limit).Offset(offset).Preload("Progress").Preload("Supervisor").Preload("CustomerGenre").Preload("Subordinates").Find(&customers).Error
+	return
+}
+
+func (c Customer) CreateCustomer() error {
+	return global.GVA_DB.Create(&c).Error
+}
+
+func (c Customer) UpdateCustomer() error {
+	return global.GVA_DB.Model(&Customer{}).Updates(&c).Error
+}
+
+func DeleteCustomer(id int) error {
+	return global.GVA_DB.Unscoped().Delete(&Customer{}, id).Error
+}

+ 29 - 0
server/dao/crm/customerGenre.go

@@ -0,0 +1,29 @@
+package crm
+
+import "server/global"
+
+type CustomerGenre struct {
+	global.GVA_MODEL
+	Name string `json:"name" form:"name" gorm:"comment:客户类目名称"`
+}
+
+func (CustomerGenre) TableName() string {
+	return "customer_genre"
+}
+
+func QueryAllCustomerGenres() (customerGenres []CustomerGenre, err error) {
+	err = global.GVA_DB.Find(&customerGenres).Error
+	return customerGenres, err
+}
+
+func (cg CustomerGenre) CreateCustomerGenre() error {
+	return global.GVA_DB.Create(&cg).Error
+}
+
+func (cg CustomerGenre) UpdateCustomerGenre() error {
+	return global.GVA_DB.Model(&cg).Updates(&cg).Error
+}
+
+func DeleteCustomerGenre(id int) error {
+	return global.GVA_DB.Unscoped().Delete(&CustomerGenre{}, id).Error
+}

+ 9 - 0
server/dao/crm/demand.go

@@ -0,0 +1,9 @@
+package crm
+
+import "server/global"
+
+type Demand struct {
+	global.GVA_MODEL
+	Content    string `json:"content" form:"content" gorm:"comment:内容"`
+	CustomerId int    `json:"customerId" form:"customerId" gorm:"comment:所属客户id"`
+}

+ 36 - 0
server/dao/crm/progress.go

@@ -0,0 +1,36 @@
+package crm
+
+import (
+	"server/dao/system"
+	"server/global"
+)
+
+type Progress struct {
+	global.GVA_MODEL
+	Content      string         `json:"content" form:"content" gorm:"comment:内容"`
+	UserId       int            `json:"userId" form:"userId" gorm:"comment:填写用户"`
+	User         system.SysUser `json:"user" form:"user" gorm:"foreignKey:UserId"`
+	CustomerId   int            `json:"customerId" form:"customerId" gorm:"comment:所属客户id"`
+	FollowUpTime string         `json:"followUpTime" form:"followUpTime" gorm:"comment:跟进时间"`
+}
+
+func (Progress) TableName() string {
+	return "progress"
+}
+
+func QueryProgressByCustomerId(customerId int) (progress []Progress, err error) {
+	err = global.GVA_DB.Where("customer_id = ?", customerId).Find(&progress).Error
+	return progress, err
+}
+
+func (p Progress) CreateProgress() error {
+	return global.GVA_DB.Create(&p).Error
+}
+
+func (p Progress) UpdateProgress() error {
+	return global.GVA_DB.Model(&p).Updates(&p).Error
+}
+
+func DeleteProgress(id int) error {
+	return global.GVA_DB.Unscoped().Delete(&Progress{}, id).Error
+}

+ 2 - 1
server/dao/dailyExpenses.go

@@ -2,6 +2,7 @@ package dao
 
 import (
 	"gorm.io/gorm"
+	"server/dao/system"
 	"server/global"
 )
 
@@ -13,7 +14,7 @@ type DailyExpenses struct {
 	Applicant       string            `json:"applicant" form:"applicant" gorm:"comment:申请人"`
 	ApplicationTime string            `json:"applicationTime" form:"applicationTime" gorm:"comment:申请日期"`
 	Charge          int               `json:"charge" form:"charge" gorm:"comment:负责人"`
-	User            SysUser           `json:"user" form:"user" gorm:"foreignKey:Charge;references:id;"`
+	User            system.SysUser    `json:"user" form:"user" gorm:"foreignKey:Charge;references:id;"`
 	TotalAmount     float64           `json:"totalAmount" form:"totalAmount" gorm:"type:decimal(10,2);comment:总金额"`
 	DailyFeeDetails []DailyFeeDetails `json:"dailyFeeDetails" form:"dailyFeeDetails" gorm:"-"`
 }

+ 13 - 10
server/dao/department.go

@@ -1,15 +1,18 @@
 package dao
 
-import "server/global"
+import (
+	"server/dao/system"
+	"server/global"
+)
 
 type Department struct {
-	Id          int       `gorm:"primarykey" from:"id" json:"ID"`
-	Name        string    `json:"name" from:"name" gorm:"comment:部门名称"`
-	Desc        string    `json:"desc" from:"desc" gorm:"comment:部门描述"`
-	PrincipalId int       `json:"principalId" from:"principal_id" gorm:"comment:负责人id"`
-	Principal   SysUser   `json:"principal" from:"principal" gorm:"foreignKey:PrincipalId;references:id;"`
-	Users       []SysUser `json:"users" gorm:"-"`
-	IsStart     bool      `json:"isStart" from:"is_start" gorm:"comment:是否启用"`
+	Id          int              `gorm:"primarykey" from:"id" json:"ID"`
+	Name        string           `json:"name" from:"name" gorm:"comment:部门名称"`
+	Desc        string           `json:"desc" from:"desc" gorm:"comment:部门描述"`
+	PrincipalId int              `json:"principalId" from:"principal_id" gorm:"comment:负责人id"`
+	Principal   system.SysUser   `json:"principal" from:"principal" gorm:"foreignKey:PrincipalId;references:id;"`
+	Users       []system.SysUser `json:"users" gorm:"-"`
+	IsStart     bool             `json:"isStart" from:"is_start" gorm:"comment:是否启用"`
 }
 
 func (Department) TableName() string {
@@ -31,8 +34,8 @@ func QueryDepByStart() (deps []Department, err error) {
 }
 
 // QueryUsersByDepId 查询部门下的用户
-func QueryUsersByDepId(depId int) (users []SysUser, err error) {
-	err = global.GVA_DB.Model(&SysUser{}).Where("department_id =?", depId).Find(&users).Error
+func QueryUsersByDepId(depId int) (users []system.SysUser, err error) {
+	err = global.GVA_DB.Model(&system.SysUser{}).Where("department_id =?", depId).Find(&users).Error
 	return users, err
 }
 

+ 23 - 16
server/dao/expenses.go

@@ -1,26 +1,29 @@
 package dao
 
-import "server/global"
+import (
+	"server/dao/system"
+	"server/global"
+)
 
 type Expenses struct {
 	global.GVA_MODEL
-	Reimburser        int           `json:"reimburser" form:"reimburser" gorm:"comment:报销人"`
-	SysUser           SysUser       `json:"user" form:"user" gorm:"foreignKey:Reimburser;references:id;"`
-	DepartmentId      int           `json:"departmentId" form:"departmentId" gorm:"comment:部门id"`
-	Department        Department    `json:"department" form:"department" gorm:"foreignKey:DepartmentId;references:id;"`
-	ExpenditureAmount float64       `json:"expenditureAmount" form:"expenditureAmount" gorm:"comment:支出金额;type:double(10,2)"`
-	DepositAmount     float64       `json:"depositAmount" form:"depositAmount" gorm:"comment:支入金额;type:double(10,2)"`
-	FeeTime           string        `json:"feeTime" form:"feeTime" gorm:"comment:时间"`
-	Genre             int           `json:"genre" form:"genre" gorm:"comment:费用类型id"`
-	ExpensesGenre     ExpensesGenre `json:"expensesGenre" form:"expensesGenre" gorm:"foreignKey:Genre;references:id;"`
-	ExpenseDetail     string        `json:"expenseDetail" form:"expenseDetail" gorm:"comment:费用明细;type:varchar(400)"`
-	Remarks           string        `json:"remarks" form:"remarks" gorm:"comment:备注"`
-	ThenBalance       float64       `json:"thenBalance" form:"thenBalance" gorm:"comment:当时余额;type:double(10,2)"`
+	Reimburser        int            `json:"reimburser" form:"reimburser" gorm:"comment:报销人"`
+	SysUser           system.SysUser `json:"user" form:"user" gorm:"foreignKey:Reimburser;references:id;"`
+	DepartmentId      int            `json:"departmentId" form:"departmentId" gorm:"comment:部门id"`
+	Department        Department     `json:"department" form:"department" gorm:"foreignKey:DepartmentId;references:id;"`
+	ExpenditureAmount float64        `json:"expenditureAmount" form:"expenditureAmount" gorm:"comment:支出金额;type:double(10,2)"`
+	DepositAmount     float64        `json:"depositAmount" form:"depositAmount" gorm:"comment:支入金额;type:double(10,2)"`
+	FeeTime           string         `json:"feeTime" form:"feeTime" gorm:"comment:时间"`
+	Genre             int            `json:"genre" form:"genre" gorm:"comment:费用类型id"`
+	ExpensesGenre     ExpensesGenre  `json:"expensesGenre" form:"expensesGenre" gorm:"foreignKey:Genre;references:id;"`
+	ExpenseDetail     string         `json:"expenseDetail" form:"expenseDetail" gorm:"comment:费用明细;type:varchar(400)"`
+	Remarks           string         `json:"remarks" form:"remarks" gorm:"comment:备注"`
+	ThenBalance       float64        `json:"thenBalance" form:"thenBalance" gorm:"comment:当时余额;type:double(10,2)"`
 }
 
 type ExpensesResult struct {
-	Reimburser           int     `json:"reimburser" form:"reimburser" gorm:"comment:报销人"`
-	SysUser              SysUser `json:"user" form:"user" gorm:"foreignKey:Reimburser;references:id;"`
+	Reimburser           int            `json:"reimburser" form:"reimburser" gorm:"comment:报销人"`
+	SysUser              system.SysUser `json:"user" form:"user" gorm:"foreignKey:Reimburser;references:id;"`
 	ExpenditureAmountSum float64
 	DepositAmountSum     float64
 	DepartmentId         int        `json:"departmentId" form:"departmentId" gorm:"comment:部门id"`
@@ -78,7 +81,11 @@ func QueryExpensesSumByPeople(limit, offset, genre, name int, dayTime, monthTime
 	if yearTime != "" {
 		db = db.Where("DATE_FORMAT(fee_time, '%Y') = ?", yearTime)
 	}
-	err = db.Group("reimburser,department_id").Limit(limit).Offset(offset).Preload("SysUser").Preload("Department").Count(&total).Scan(&results).Error
+	err = db.Group("reimburser,department_id").Count(&total).Error
+	if err != nil {
+		return
+	}
+	err = db.Limit(limit).Offset(offset).Preload("SysUser").Preload("Department").Scan(&results).Error
 
 	return
 }

+ 7 - 6
server/dao/node.go

@@ -1,17 +1,18 @@
 package dao
 
 import (
+	"server/dao/system"
 	"server/global"
 )
 
 type Node struct {
 	global.GVA_MODEL
-	NodeName        string    `json:"nodeName" form:"nodeName" gorm:"comment:审批节点名称"`
-	ApproverId      int       `json:"approverId" form:"approverId" gorm:"comment:审批人id"`
-	Approver        SysUser   `json:"approver" form:"approver" gorm:"foreignKey:ApproverId;references:id;"`
-	NodeDescription string    `json:"nodeDescription" form:"nodeDescription" gorm:"comment:节点描述"`
-	Processes       []Process `json:"processes" form:"processes" gorm:"many2many:process_nodes;"`
-	Order           int       `json:"order" form:"order" gorm:"-"`
+	NodeName        string         `json:"nodeName" form:"nodeName" gorm:"comment:审批节点名称"`
+	ApproverId      int            `json:"approverId" form:"approverId" gorm:"comment:审批人id"`
+	Approver        system.SysUser `json:"approver" form:"approver" gorm:"foreignKey:ApproverId;references:id;"`
+	NodeDescription string         `json:"nodeDescription" form:"nodeDescription" gorm:"comment:节点描述"`
+	Processes       []Process      `json:"processes" form:"processes" gorm:"many2many:process_nodes;"`
+	Order           int            `json:"order" form:"order" gorm:"-"`
 }
 
 func (Node) TableName() string {

+ 10 - 7
server/dao/notice.go

@@ -1,15 +1,18 @@
 package dao
 
-import "server/global"
+import (
+	"server/dao/system"
+	"server/global"
+)
 
 type Notice struct {
 	global.GVA_MODEL
-	Title   string  `json:"title" form:"title" gorm:"comment:标题"`
-	Content string  `json:"content" form:"content" gorm:"comment:内容"`
-	Type    string  `json:"type" form:"type" gorm:"comment:类型"`
-	UserId  int     `json:"userId" form:"userId" gorm:"comment:接收者ID"`
-	User    SysUser `json:"user" form:"user" gorm:"foreignKey:UserId;references:id;"`
-	IsRead  bool    `json:"isRead" form:"isRead" gorm:"default:false;comment:是否已读"`
+	Title   string         `json:"title" form:"title" gorm:"comment:标题"`
+	Content string         `json:"content" form:"content" gorm:"comment:内容"`
+	Type    string         `json:"type" form:"type" gorm:"comment:类型"`
+	UserId  int            `json:"userId" form:"userId" gorm:"comment:接收者ID"`
+	User    system.SysUser `json:"user" form:"user" gorm:"foreignKey:UserId;references:id;"`
+	IsRead  bool           `json:"isRead" form:"isRead" gorm:"default:false;comment:是否已读"`
 }
 
 func (Notice) TableName() string {

+ 2 - 1
server/dao/project.go

@@ -3,6 +3,7 @@ package dao
 import (
 	"github.com/shopspring/decimal"
 	"gorm.io/gorm"
+	"server/dao/system"
 	"server/global"
 )
 
@@ -15,7 +16,7 @@ type Project struct {
 	FirstPhone           string                `json:"firstPhone" form:"firstPhone" gorm:"comment:甲方电话"`
 	ProjectPrice         float64               `json:"projectPrice" form:"projectPrice" gorm:"type:decimal(10,2);comment:合同金额"`
 	SecondPrincipal      int                   `json:"secondPrincipal" form:"secondPrincipal" gorm:"comment:乙方负责人"`
-	Principal            SysUser               `json:"principal" form:"principal" gorm:"foreignKey:SecondPrincipal;references:id;"`
+	Principal            system.SysUser        `json:"principal" form:"principal" gorm:"foreignKey:SecondPrincipal;references:id;"`
 	SecondPrincipalName  string                `json:"secondPrincipalName" form:"secondPrincipalName" gorm:"comment:乙方姓名"`
 	SignTime             string                `json:"signTime" form:"signTime" gorm:"comment:合同签订日期"`
 	IntoConstructionTime string                `json:"intoConstructionTime" form:"intoConstructionTime" gorm:"comment:进场施工时间"`

+ 2 - 1
server/dao/projectFee.go

@@ -3,13 +3,14 @@ package dao
 import (
 	"github.com/shopspring/decimal"
 	"gorm.io/gorm"
+	"server/dao/system"
 	"server/global"
 )
 
 type ProjectFee struct {
 	global.GVA_MODEL
 	Reimburser        int             `json:"reimburser" form:"reimburser" gorm:"comment:报销人"`
-	SysUser           SysUser         `json:"user" form:"user" gorm:"foreignKey:Reimburser;references:id;"`
+	SysUser           system.SysUser  `json:"user" form:"user" gorm:"foreignKey:Reimburser;references:id;"`
 	DepartmentId      int             `json:"departmentId" form:"departmentId" gorm:"comment:部门id"`
 	Department        Department      `json:"department" form:"department" gorm:"foreignKey:DepartmentId;references:id;"`
 	ExpenditureAmount float64         `json:"expenditureAmount" form:"expenditureAmount" gorm:"comment:支出金额;type:double(10,2)"`

+ 6 - 5
server/dao/projectWorkingHours.go

@@ -1,16 +1,17 @@
 package dao
 
 import (
+	"server/dao/system"
 	"server/global"
 )
 
 type ProjectWorkingHours struct {
 	global.GVA_MODEL
-	ProjectCode string  `json:"projectCode" form:"projectCode" gorm:"comment:项目编号"`
-	People      int     `json:"people" form:"people" gorm:"comment:报工人"`
-	SysUser     SysUser `json:"constructor" form:"constructor" gorm:"foreignKey:People;references:id;"`
-	Days        float64 `json:"days" form:"days" gorm:"type:double(5,1);not null;comment:天数"`
-	PeopleTime  string  `json:"peopleTime" form:"peopleTime" gorm:"comment:报工时间"`
+	ProjectCode string         `json:"projectCode" form:"projectCode" gorm:"comment:项目编号"`
+	People      int            `json:"people" form:"people" gorm:"comment:报工人"`
+	SysUser     system.SysUser `json:"constructor" form:"constructor" gorm:"foreignKey:People;references:id;"`
+	Days        float64        `json:"days" form:"days" gorm:"type:double(5,1);not null;comment:天数"`
+	PeopleTime  string         `json:"peopleTime" form:"peopleTime" gorm:"comment:报工时间"`
 }
 
 func (ProjectWorkingHours) TableName() string {

+ 14 - 13
server/dao/project_process.go

@@ -1,24 +1,25 @@
 package dao
 
 import (
+	"server/dao/system"
 	"server/global"
 )
 
 type ProjectProcess struct {
 	global.GVA_MODEL
-	ProjectProcessName string        `json:"projectProcessName" form:"projectProcessName" gorm:"comment:项目审批名称"`
-	Applicant          int           `json:"applicant" form:"applicant" gorm:"comment:申请人"`
-	User               SysUser       `json:"user" form:"user" gorm:"foreignKey:Applicant;references:id;"`
-	ProjectId          int           `json:"projectId" form:"projectId" gorm:"comment:项目id"`
-	CurrentNodeOrder   int           `json:"currentNodeOrder" form:"currentNodeOrder" gorm:"comment:当前审批节点id"`
-	Node               Node          `json:"node" form:"node" gorm:"foreignKey:CurrentNodeOrder;references:id;"`
-	ProcessApprovalId  int           `json:"processApprovalId" form:"processApprovalId" gorm:"comment:当前审批流程id"`
-	Process            Process       `json:"process" form:"process" gorm:"foreignKey:ProcessApprovalId;references:id"`
-	ProjectType        string        `json:"projectType" form:"projectType" gorm:"comment:项目类型"`
-	Descriptions       []Description `json:"descriptions" form:"descriptions" gorm:"foreignKey:ProjectProcessId;"`
-	State              int           `json:"state" form:"state" gorm:"comment:状态;default:0;"`
-	Code               string        `json:"code" form:"code" gorm:"-"`
-	IsBack             bool          `json:"isBack" form:"isBack" gorm:"default:false;comment:是否打回"`
+	ProjectProcessName string         `json:"projectProcessName" form:"projectProcessName" gorm:"comment:项目审批名称"`
+	Applicant          int            `json:"applicant" form:"applicant" gorm:"comment:申请人"`
+	User               system.SysUser `json:"user" form:"user" gorm:"foreignKey:Applicant;references:id;"`
+	ProjectId          int            `json:"projectId" form:"projectId" gorm:"comment:项目id"`
+	CurrentNodeOrder   int            `json:"currentNodeOrder" form:"currentNodeOrder" gorm:"comment:当前审批节点id"`
+	Node               Node           `json:"node" form:"node" gorm:"foreignKey:CurrentNodeOrder;references:id;"`
+	ProcessApprovalId  int            `json:"processApprovalId" form:"processApprovalId" gorm:"comment:当前审批流程id"`
+	Process            Process        `json:"process" form:"process" gorm:"foreignKey:ProcessApprovalId;references:id"`
+	ProjectType        string         `json:"projectType" form:"projectType" gorm:"comment:项目类型"`
+	Descriptions       []Description  `json:"descriptions" form:"descriptions" gorm:"foreignKey:ProjectProcessId;"`
+	State              int            `json:"state" form:"state" gorm:"comment:状态;default:0;"`
+	Code               string         `json:"code" form:"code" gorm:"-"`
+	IsBack             bool           `json:"isBack" form:"isBack" gorm:"default:false;comment:是否打回"`
 }
 
 func (ProjectProcess) TableName() string {

+ 2 - 1
server/dao/reimbursement.go

@@ -3,6 +3,7 @@ package dao
 import (
 	"github.com/shopspring/decimal"
 	"gorm.io/gorm"
+	"server/dao/system"
 	"server/global"
 )
 
@@ -13,7 +14,7 @@ type Reimbursement struct {
 	Applicant          string          `json:"applicant" form:"applicant" gorm:"comment:报销申请人"`
 	ApplicationTime    string          `json:"applicationTime" form:"applicationTime" gorm:"comment:申请日期"`
 	Approval           int             `json:"approval" form:"approval" gorm:"comment:报销审批人"`
-	User               SysUser         `json:"user" form:"user" gorm:"foreignKey:Approval;references:id;"`
+	User               system.SysUser  `json:"user" form:"user" gorm:"foreignKey:Approval;references:id;"`
 	ReimbursementPrice decimal.Decimal `json:"reimbursementPrice" form:"reimbursementPrice" gorm:"comment:项目金额;type:decimal(10,2)"`
 	Genre              int             `json:"genre" form:"genre" gorm:"comment:费用类型"`
 	ExpensesGenre      ExpensesGenre   `json:"expensesGenre" form:"expensesGenre" gorm:"foreignKey:Genre;references:id;"`

+ 1 - 1
server/dao/sys_api.go

@@ -1,4 +1,4 @@
-package dao
+package system
 
 import (
 	"fmt"

+ 1 - 1
server/dao/sys_authority.go

@@ -1,4 +1,4 @@
-package dao
+package system
 
 import (
 	"server/global"

+ 1 - 1
server/dao/sys_authority_btn.go

@@ -1,4 +1,4 @@
-package dao
+package system
 
 import (
 	"gorm.io/gorm"

+ 1 - 1
server/dao/sys_authority_menu.go

@@ -1,4 +1,4 @@
-package dao
+package system
 
 import "server/global"
 

+ 1 - 1
server/dao/sys_base_menu.go

@@ -1,4 +1,4 @@
-package dao
+package system
 
 import (
 	"errors"

+ 1 - 1
server/dao/sys_dictionary.go

@@ -1,5 +1,5 @@
 // 自动生成模板SysDictionary
-package dao
+package system
 
 import (
 	"gorm.io/gorm"

+ 1 - 1
server/dao/sys_dictionary_detail.go

@@ -1,5 +1,5 @@
 // 自动生成模板SysDictionaryDetail
-package dao
+package system
 
 import (
 	"server/global"

+ 1 - 1
server/dao/sys_jwt_blacklist.go

@@ -1,4 +1,4 @@
-package dao
+package system
 
 import (
 	"server/global"

+ 1 - 1
server/dao/sys_menu_btn.go

@@ -1,4 +1,4 @@
-package dao
+package system
 
 import "server/global"
 

+ 1 - 1
server/dao/sys_operation_record.go

@@ -1,5 +1,5 @@
 // 自动生成模板SysOperationRecord
-package dao
+package system
 
 import (
 	"time"

+ 1 - 1
server/dao/sys_user.go

@@ -1,4 +1,4 @@
-package dao
+package system
 
 import (
 	"errors"

+ 1 - 1
server/dao/sys_user_authority.go

@@ -1,4 +1,4 @@
-package dao
+package system
 
 // SysUserAuthority 是 sysUser 和 sysAuthority 的连接表
 type SysUserAuthority struct {

+ 12 - 11
server/initialize/gorm.go

@@ -3,6 +3,7 @@ package initialize
 import (
 	"os"
 	"server/dao"
+	"server/dao/system"
 
 	"go.uber.org/zap"
 	"gorm.io/gorm"
@@ -31,17 +32,17 @@ func RegisterTables() {
 	db := global.GVA_DB
 	err := db.AutoMigrate(
 
-		dao.SysApi{},
-		dao.SysUser{},
-		dao.SysBaseMenu{},
-		dao.JwtBlacklist{},
-		dao.SysAuthority{},
-		dao.SysDictionary{},
-		dao.SysOperationRecord{},
-		dao.SysDictionaryDetail{},
-		dao.SysBaseMenuParameter{},
-		dao.SysBaseMenuBtn{},
-		dao.SysAuthorityBtn{},
+		system.SysApi{},
+		system.SysUser{},
+		system.SysBaseMenu{},
+		system.JwtBlacklist{},
+		system.SysAuthority{},
+		system.SysDictionary{},
+		system.SysOperationRecord{},
+		system.SysDictionaryDetail{},
+		system.SysBaseMenuParameter{},
+		system.SysBaseMenuBtn{},
+		system.SysAuthorityBtn{},
 		dao.Notice{},
 
 		example.ExaFile{},

+ 5 - 0
server/initialize/router.go

@@ -45,6 +45,7 @@ func Routers() *gin.Engine {
 	adminRouter := router.RouterGroupApp.Admin
 	workflowRouter := router.RouterGroupApp.Workflow
 	storehouseRouter := router.RouterGroupApp.Storehouse
+	crmRouter := router.RouterGroupApp.CRM
 	// 如果想要不使用nginx代理前端网页,可以修改 web/.env.production 下的
 	// VUE_APP_BASE_API = /
 	// VUE_APP_BASE_PATH = http://localhost
@@ -110,6 +111,10 @@ func Routers() *gin.Engine {
 		storehouseRouter.InitPlaceRouter(PrivateGroup)
 		storehouseRouter.InitStorageAreaRouter(PrivateGroup)
 		storehouseRouter.InitStorageAreaGenreRouter(PrivateGroup)
+
+		crmRouter.InitCustomerRouter(PrivateGroup)
+		crmRouter.InitCustomerGenreRouter(PrivateGroup)
+		crmRouter.InitProgressRouter(PrivateGroup)
 	}
 
 	global.GVA_LOG.Info("router register success")

+ 2 - 2
server/middleware/email.go

@@ -3,7 +3,7 @@ package middleware
 import (
 	"bytes"
 	"io"
-	"server/dao"
+	"server/dao/system"
 	"strconv"
 	"time"
 
@@ -35,7 +35,7 @@ func ErrorToEmail() gin.HandlerFunc {
 		body, _ := io.ReadAll(c.Request.Body)
 		// 再重新写回请求体body中,ioutil.ReadAll会清空c.Request.Body中的数据
 		c.Request.Body = io.NopCloser(bytes.NewBuffer(body))
-		record := dao.SysOperationRecord{
+		record := system.SysOperationRecord{
 			Ip:     c.ClientIP(),
 			Method: c.Request.Method,
 			Path:   c.Request.URL.Path,

+ 2 - 2
server/middleware/jwt.go

@@ -4,7 +4,7 @@ import (
 	"errors"
 	"github.com/golang-jwt/jwt/v4"
 	"go.uber.org/zap"
-	"server/dao"
+	"server/dao/system"
 	"server/global"
 	"server/utils"
 	"strconv"
@@ -71,7 +71,7 @@ func JWTAuth() gin.HandlerFunc {
 				if err != nil {
 					global.GVA_LOG.Error("get redis jwt failed", zap.Error(err))
 				} else { // 当之前的取成功时才进行拉黑操作
-					_ = jwtService.JsonInBlacklist(dao.JwtBlacklist{Jwt: RedisJwtToken})
+					_ = jwtService.JsonInBlacklist(system.JwtBlacklist{Jwt: RedisJwtToken})
 				}
 				// 无论如何都要记录当前的活跃状态
 				_ = jwtService.SetRedisJWT(newToken, newClaims.Username)

+ 2 - 2
server/middleware/operation.go

@@ -6,7 +6,7 @@ import (
 	"io"
 	"net/http"
 	"net/url"
-	"server/dao"
+	"server/dao/system"
 	"strconv"
 	"strings"
 	"sync"
@@ -66,7 +66,7 @@ func OperationRecord() gin.HandlerFunc {
 			}
 			userId = id
 		}
-		record := dao.SysOperationRecord{
+		record := system.SysOperationRecord{
 			Ip:     c.ClientIP(),
 			Method: c.Request.Method,
 			Path:   c.Request.URL.Path,

+ 5 - 0
server/model/common/request/common.go

@@ -138,4 +138,9 @@ type SearchWarehouse struct {
 	Name     string   `json:"name" form:"name"`
 }
 
+type SearchCustomer struct {
+	PageInfo PageInfo `json:"pageInfo" form:"pageInfo"`
+	Name     string   `json:"name" form:"name"`
+}
+
 type Empty struct{}

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

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

+ 2 - 2
server/model/system/request/sys_dictionary_detail.go

@@ -1,11 +1,11 @@
 package request
 
 import (
-	"server/dao"
+	"server/dao/system"
 	"server/model/common/request"
 )
 
 type SysDictionaryDetailSearch struct {
-	dao.SysDictionaryDetail
+	system.SysDictionaryDetail
 	request.PageInfo
 }

+ 6 - 6
server/model/system/request/sys_menu.go

@@ -1,25 +1,25 @@
 package request
 
 import (
-	"server/dao"
+	"server/dao/system"
 	"server/global"
 )
 
 // Add menu authority info structure
 type AddMenuAuthorityInfo struct {
-	Menus       []dao.SysBaseMenu `json:"menus"`
-	AuthorityId uint              `json:"authorityId"` // 角色ID
+	Menus       []system.SysBaseMenu `json:"menus"`
+	AuthorityId uint                 `json:"authorityId"` // 角色ID
 }
 
-func DefaultMenu() []dao.SysBaseMenu {
-	return []dao.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: dao.Meta{
+		Meta: system.Meta{
 			Title: "仪表盘",
 			Icon:  "setting",
 		},

+ 2 - 2
server/model/system/request/sys_operation_record.go

@@ -1,11 +1,11 @@
 package request
 
 import (
-	"server/dao"
+	"server/dao/system"
 	"server/model/common/request"
 )
 
 type SysOperationRecordSearch struct {
-	dao.SysOperationRecord
+	system.SysOperationRecord
 	request.PageInfo
 }

+ 11 - 11
server/model/system/request/sys_user.go

@@ -1,7 +1,7 @@
 package request
 
 import (
-	"server/dao"
+	"server/dao/system"
 )
 
 // Register User register structure
@@ -43,14 +43,14 @@ type SetUserAuthorities struct {
 }
 
 type ChangeUserInfo struct {
-	ID           uint               `gorm:"primarykey"`                                                                           // 主键ID
-	NickName     string             `json:"nickName" gorm:"default:系统用户;comment:用户昵称"`                                            // 用户昵称
-	Phone        string             `json:"phone"  gorm:"comment:用户手机号"`                                                          // 用户手机号
-	AuthorityIds uint               `json:"authorityIds" gorm:"-"`                                                                // 角色ID
-	Email        string             `json:"email"  gorm:"comment:用户邮箱"`                                                           // 用户邮箱
-	HeaderImg    string             `json:"headerImg" gorm:"default:https://qmplusimg.henrongyi.top/gva_header.jpg;comment:用户头像"` // 用户头像
-	SideMode     string             `json:"sideMode"  gorm:"comment:用户侧边主题"`                                                      // 用户侧边主题
-	Enable       int                `json:"enable" gorm:"comment:冻结用户"`                                                           //冻结用户
-	Authorities  []dao.SysAuthority `json:"-" gorm:"many2many:sys_user_authority;"`
-	OnePrice     float64            `json:"onePrice" form:"onePrice" gorm:"comment:人天单价"`
+	ID           uint                  `gorm:"primarykey"`                                                                           // 主键ID
+	NickName     string                `json:"nickName" gorm:"default:系统用户;comment:用户昵称"`                                            // 用户昵称
+	Phone        string                `json:"phone"  gorm:"comment:用户手机号"`                                                          // 用户手机号
+	AuthorityIds uint                  `json:"authorityIds" gorm:"-"`                                                                // 角色ID
+	Email        string                `json:"email"  gorm:"comment:用户邮箱"`                                                           // 用户邮箱
+	HeaderImg    string                `json:"headerImg" gorm:"default:https://qmplusimg.henrongyi.top/gva_header.jpg;comment:用户头像"` // 用户头像
+	SideMode     string                `json:"sideMode"  gorm:"comment:用户侧边主题"`                                                      // 用户侧边主题
+	Enable       int                   `json:"enable" gorm:"comment:冻结用户"`                                                           //冻结用户
+	Authorities  []system.SysAuthority `json:"-" gorm:"many2many:sys_user_authority;"`
+	OnePrice     float64               `json:"onePrice" form:"onePrice" gorm:"comment:人天单价"`
 }

+ 3 - 3
server/model/system/response/sys_api.go

@@ -1,13 +1,13 @@
 package response
 
 import (
-	"server/dao"
+	"server/dao/system"
 )
 
 type SysAPIResponse struct {
-	Api dao.SysApi `json:"api"`
+	Api system.SysApi `json:"api"`
 }
 
 type SysAPIListResponse struct {
-	Apis []dao.SysApi `json:"apis"`
+	Apis []system.SysApi `json:"apis"`
 }

+ 4 - 4
server/model/system/response/sys_authority.go

@@ -1,14 +1,14 @@
 package response
 
 import (
-	"server/dao"
+	"server/dao/system"
 )
 
 type SysAuthorityResponse struct {
-	Authority dao.SysAuthority `json:"authority"`
+	Authority system.SysAuthority `json:"authority"`
 }
 
 type SysAuthorityCopyResponse struct {
-	Authority      dao.SysAuthority `json:"authority"`
-	OldAuthorityId uint             `json:"oldAuthorityId"` // 旧角色ID
+	Authority      system.SysAuthority `json:"authority"`
+	OldAuthorityId uint                `json:"oldAuthorityId"` // 旧角色ID
 }

+ 4 - 4
server/model/system/response/sys_menu.go

@@ -1,17 +1,17 @@
 package response
 
 import (
-	"server/dao"
+	"server/dao/system"
 )
 
 type SysMenusResponse struct {
-	Menus []dao.SysMenu `json:"menus"`
+	Menus []system.SysMenu `json:"menus"`
 }
 
 type SysBaseMenusResponse struct {
-	Menus []dao.SysBaseMenu `json:"menus"`
+	Menus []system.SysBaseMenu `json:"menus"`
 }
 
 type SysBaseMenuResponse struct {
-	Menu dao.SysBaseMenu `json:"menu"`
+	Menu system.SysBaseMenu `json:"menu"`
 }

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

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

+ 5 - 5
server/plugin/plugin-tool/utils/check.go

@@ -2,18 +2,18 @@ package utils
 
 import (
 	"fmt"
-	"server/dao"
+	"server/dao/system"
 
 	"server/global"
 )
 
-func RegisterApis(apis ...dao.SysApi) {
+func RegisterApis(apis ...system.SysApi) {
 	var count int64
 	var apiPaths []string
 	for i := range apis {
 		apiPaths = append(apiPaths, apis[i].Path)
 	}
-	global.GVA_DB.Find(&[]dao.SysApi{}, "path in (?)", apiPaths).Count(&count)
+	global.GVA_DB.Find(&[]system.SysApi{}, "path in (?)", apiPaths).Count(&count)
 	if count > 0 {
 		fmt.Println("插件已安装或存在同名路由")
 		return
@@ -24,7 +24,7 @@ func RegisterApis(apis ...dao.SysApi) {
 	}
 }
 
-func RegisterMenus(menus ...dao.SysBaseMenu) {
+func RegisterMenus(menus ...system.SysBaseMenu) {
 	var count int64
 	var menuNames []string
 	parentMenu := menus[0]
@@ -32,7 +32,7 @@ func RegisterMenus(menus ...dao.SysBaseMenu) {
 	for i := range menus {
 		menuNames = append(menuNames, menus[i].Name)
 	}
-	global.GVA_DB.Find(&[]dao.SysBaseMenu{}, "name in (?)", menuNames).Count(&count)
+	global.GVA_DB.Find(&[]system.SysBaseMenu{}, "name in (?)", menuNames).Count(&count)
 	if count > 0 {
 		fmt.Println("插件已安装或存在同名菜单")
 		return

+ 1 - 1
server/router/admin/file.go

@@ -8,7 +8,7 @@ import (
 
 type FileRouter struct{}
 
-func (s *ProjectRouter) InitFileRouter(Router *gin.RouterGroup) {
+func (s *FileRouter) InitFileRouter(Router *gin.RouterGroup) {
 	fileRouter := Router.Group("file").Use(middleware.OperationRecord())
 	fileRouterWithoutRecord := Router.Group("file")
 	fileApi := v1.ApiGroupApp.AdminApiGroup.FileApi

+ 24 - 0
server/router/crm/customer.go

@@ -0,0 +1,24 @@
+package crm
+
+import (
+	"github.com/gin-gonic/gin"
+	v1 "server/api/v1"
+	"server/middleware"
+)
+
+type CustomerRouter struct{}
+
+func (s *CustomerRouter) InitCustomerRouter(Router *gin.RouterGroup) {
+	customerRouter := Router.Group("customer").Use(middleware.OperationRecord())
+	customerRouterWithoutRecord := Router.Group("customer")
+	customerApi := v1.ApiGroupApp.CRMApiGroup.CustomerApi
+	{
+		customerRouter.POST("createCustomer", customerApi.CreateCustomer)
+		customerRouter.PUT("updateCustomer", customerApi.UpdateCustomer)
+		customerRouter.DELETE("deleteCustomer", customerApi.DeleteCustomer)
+	}
+	{
+		customerRouterWithoutRecord.GET("queryAllCustomers", customerApi.QueryAllCustomers)
+		customerRouterWithoutRecord.POST("queryCustomerList", customerApi.QueryCustomerList)
+	}
+}

+ 23 - 0
server/router/crm/customerGenre.go

@@ -0,0 +1,23 @@
+package crm
+
+import (
+	"github.com/gin-gonic/gin"
+	v1 "server/api/v1"
+	"server/middleware"
+)
+
+type CustomerGenreRouter struct{}
+
+func (s *CustomerGenreRouter) InitCustomerGenreRouter(Router *gin.RouterGroup) {
+	customerGenreRouter := Router.Group("customerGenre").Use(middleware.OperationRecord())
+	customerGenreRouterWithoutRecord := Router.Group("customerGenre")
+	customerGenreApi := v1.ApiGroupApp.CRMApiGroup.CustomerGenreApi
+	{
+		customerGenreRouter.POST("createCustomerGenre", customerGenreApi.CreateCustomerGenre)
+		customerGenreRouter.PUT("updateCustomerGenre", customerGenreApi.UpdateCustomerGenre)
+		customerGenreRouter.DELETE("deleteCustomerGenre", customerGenreApi.DeleteCustomerGenre)
+	}
+	{
+		customerGenreRouterWithoutRecord.GET("queryAllCustomerGenres", customerGenreApi.QueryAllCustomerGenres)
+	}
+}

+ 7 - 0
server/router/crm/enter.go

@@ -0,0 +1,7 @@
+package crm
+
+type RouterGroup struct {
+	CustomerRouter
+	CustomerGenreRouter
+	ProgressRouter
+}

+ 23 - 0
server/router/crm/progress.go

@@ -0,0 +1,23 @@
+package crm
+
+import (
+	"github.com/gin-gonic/gin"
+	v1 "server/api/v1"
+	"server/middleware"
+)
+
+type ProgressRouter struct{}
+
+func (s *ProgressRouter) InitProgressRouter(Router *gin.RouterGroup) {
+	progressRouter := Router.Group("progress").Use(middleware.OperationRecord())
+	progressRouterWithoutRecord := Router.Group("progress")
+	progressApi := v1.ApiGroupApp.CRMApiGroup.ProgressApi
+	{
+		progressRouter.POST("createProgress", progressApi.CreateProgress)
+		progressRouter.PUT("updateProgress", progressApi.UpdateProgress)
+		progressRouter.DELETE("deleteProgress", progressApi.DeleteProgress)
+	}
+	{
+		progressRouterWithoutRecord.GET("queryProgressByCustomerId", progressApi.QueryProgressByCustomerId)
+	}
+}

+ 2 - 0
server/router/enter.go

@@ -2,6 +2,7 @@ package router
 
 import (
 	"server/router/admin"
+	"server/router/crm"
 	"server/router/example"
 	"server/router/storehouse"
 	"server/router/system"
@@ -14,6 +15,7 @@ type RouterGroup struct {
 	Admin      admin.RouterGroup
 	Workflow   workflow.RouterGroup
 	Storehouse storehouse.RouterGroup
+	CRM        crm.RouterGroup
 }
 
 var RouterGroupApp = new(RouterGroup)

+ 2 - 1
server/service/admin/department.go

@@ -3,6 +3,7 @@ package admin
 import (
 	"errors"
 	"server/dao"
+	"server/dao/system"
 )
 
 type DepartmentService struct {
@@ -45,7 +46,7 @@ func (ds *DepartmentService) UpdateDepStatus(depId int, isStart bool) error {
 }
 
 func (ds *DepartmentService) UpdateUserDep(userIds []int, depId int) error {
-	return dao.UpdateUserDep(userIds, depId)
+	return system.UpdateUserDep(userIds, depId)
 }
 
 func (ds *DepartmentService) DeleteDep(depId int) error {

+ 2 - 1
server/service/admin/expenses.go

@@ -2,6 +2,7 @@ package admin
 
 import (
 	"server/dao"
+	"server/dao/system"
 	"server/model/common/request"
 	"server/utils"
 )
@@ -33,7 +34,7 @@ func (es *ExpensesService) QueryExpensesSumByPeople(info request.SearchExpenses)
 		if err != nil {
 			return expenses, total, err
 		}
-		user, err := dao.QueryUserByUserId(uint(expens.Reimburser))
+		user, err := system.QueryUserByUserId(uint(expens.Reimburser))
 		if err != nil {
 			return expenses, total, err
 		}

+ 30 - 0
server/service/crm/customer.go

@@ -0,0 +1,30 @@
+package crm
+
+import (
+	"server/dao/crm"
+	"server/model/common/request"
+)
+
+type CustomerService struct{}
+
+func (cs *CustomerService) QueryAllCustomers() ([]crm.Customer, error) {
+	return crm.QueryAllCustomers()
+}
+
+func (cs *CustomerService) QueryCustomerList(info request.SearchCustomer) (customers []crm.Customer, total int64, err error) {
+	limit := info.PageInfo.PageSize
+	offset := info.PageInfo.PageSize * (info.PageInfo.Page - 1)
+	return crm.QueryCustomerList(limit, offset)
+}
+
+func (cs *CustomerService) CreateCustomer(customer crm.Customer) error {
+	return customer.CreateCustomer()
+}
+
+func (cs *CustomerService) UpdateCustomer(customer crm.Customer) error {
+	return customer.UpdateCustomer()
+}
+
+func (cs *CustomerService) DeleteCustomer(id int) error {
+	return crm.DeleteCustomer(id)
+}

+ 22 - 0
server/service/crm/customerGenre.go

@@ -0,0 +1,22 @@
+package crm
+
+import "server/dao/crm"
+
+type CustomerGenreService struct {
+}
+
+func (cgs *CustomerGenreService) QueryAllCustomerGenres() ([]crm.CustomerGenre, error) {
+	return crm.QueryAllCustomerGenres()
+}
+
+func (cgs *CustomerGenreService) CreateCustomerGenre(cg crm.CustomerGenre) error {
+	return cg.CreateCustomerGenre()
+}
+
+func (cgs *CustomerGenreService) UpdateCustomerGenre(cg crm.CustomerGenre) error {
+	return cg.UpdateCustomerGenre()
+}
+
+func (cgs *CustomerGenreService) DeleteCustomerGenre(id int) error {
+	return crm.DeleteCustomerGenre(id)
+}

+ 7 - 0
server/service/crm/enter.go

@@ -0,0 +1,7 @@
+package crm
+
+type ServiceGroup struct {
+	CustomerService
+	CustomerGenreService
+	ProgressService
+}

+ 22 - 0
server/service/crm/progress.go

@@ -0,0 +1,22 @@
+package crm
+
+import "server/dao/crm"
+
+type ProgressService struct {
+}
+
+func (ps *ProgressService) QueryProgressByCustomerId(id int) (progress []crm.Progress, err error) {
+	return crm.QueryProgressByCustomerId(id)
+}
+
+func (ps *ProgressService) CreateProgress(progress crm.Progress) error {
+	return progress.CreateProgress()
+}
+
+func (ps *ProgressService) UpdateProgress(progress crm.Progress) error {
+	return progress.UpdateProgress()
+}
+
+func (ps *ProgressService) DeleteProgress(id int) error {
+	return crm.DeleteProgress(id)
+}

+ 2 - 0
server/service/enter.go

@@ -2,6 +2,7 @@ package service
 
 import (
 	"server/service/admin"
+	"server/service/crm"
 	"server/service/example"
 	"server/service/storehouse"
 	"server/service/system"
@@ -14,6 +15,7 @@ type ServiceGroup struct {
 	AdminServiceGroup      admin.ServiceGroup
 	WorkflowServiceGroup   workflow.ServiceGroup
 	StorehouseServiceGroup storehouse.ServiceGroup
+	CRMServiceGroup        crm.ServiceGroup
 }
 
 var ServiceGroupApp = new(ServiceGroup)

+ 3 - 3
server/service/system/jwt_black_list.go

@@ -2,7 +2,7 @@ package system
 
 import (
 	"context"
-	"server/dao"
+	"server/dao/system"
 
 	"go.uber.org/zap"
 
@@ -18,7 +18,7 @@ type JwtService struct{}
 //@param: jwtList model.JwtBlacklist
 //@return: err error
 
-func (jwtService *JwtService) JsonInBlacklist(jwtList dao.JwtBlacklist) (err error) {
+func (jwtService *JwtService) JsonInBlacklist(jwtList system.JwtBlacklist) (err error) {
 	err = jwtList.CreateJwtBlack()
 	if err != nil {
 		return
@@ -71,7 +71,7 @@ func (jwtService *JwtService) SetRedisJWT(jwt string, userName string) (err erro
 
 func LoadAll() {
 	var data []string
-	err := global.GVA_DB.Model(&dao.JwtBlacklist{}).Select("jwt").Find(&data).Error
+	err := global.GVA_DB.Model(&system.JwtBlacklist{}).Select("jwt").Find(&data).Error
 	if err != nil {
 		global.GVA_LOG.Error("加载数据库jwt黑名单失败!", zap.Error(err))
 		return

+ 16 - 16
server/service/system/sys_api.go

@@ -3,7 +3,7 @@ package system
 import (
 	"errors"
 	"gorm.io/gorm"
-	"server/dao"
+	"server/dao/system"
 	"server/global"
 	"server/model/common/request"
 )
@@ -18,9 +18,9 @@ type ApiService struct{}
 
 var ApiServiceApp = new(ApiService)
 
-func (apiService *ApiService) CreateApi(api dao.SysApi) (err error) {
+func (apiService *ApiService) CreateApi(api system.SysApi) (err error) {
 
-	_, err = dao.QueryApiByPathMethod(api.Path, api.Method)
+	_, err = system.QueryApiByPathMethod(api.Path, api.Method)
 
 	if !errors.Is(err, gorm.ErrRecordNotFound) {
 		return errors.New("存在相同api")
@@ -34,8 +34,8 @@ func (apiService *ApiService) CreateApi(api dao.SysApi) (err error) {
 //@param: api model.SysApi
 //@return: err error
 
-func (apiService *ApiService) DeleteApi(api dao.SysApi) (err error) {
-	entity, err := dao.QueryApiById(api.ID)
+func (apiService *ApiService) DeleteApi(api system.SysApi) (err error) {
+	entity, err := system.QueryApiById(api.ID)
 
 	if errors.Is(err, gorm.ErrRecordNotFound) { // api记录不存在
 		return err
@@ -57,7 +57,7 @@ func (apiService *ApiService) DeleteApi(api dao.SysApi) (err error) {
 //@param: api model.SysApi, info request.PageInfo, order string, desc bool
 //@return: list interface{}, total int64, err error
 
-func (apiService *ApiService) GetAPIInfoList(api dao.SysApi, info request.PageInfo, order string, desc bool) (list interface{}, total int64, err error) {
+func (apiService *ApiService) GetAPIInfoList(api system.SysApi, info request.PageInfo, order string, desc bool) (list interface{}, total int64, err error) {
 	limit := info.PageSize
 	offset := info.PageSize * (info.Page - 1)
 
@@ -69,8 +69,8 @@ func (apiService *ApiService) GetAPIInfoList(api dao.SysApi, info request.PageIn
 //@description: 获取所有的api
 //@return:  apis []model.SysApi, err error
 
-func (apiService *ApiService) GetAllApis() (apis []dao.SysApi, err error) {
-	return dao.GetAllApis()
+func (apiService *ApiService) GetAllApis() (apis []system.SysApi, err error) {
+	return system.GetAllApis()
 }
 
 //@author: [piexlmax](https://github.com/piexlmax)
@@ -79,8 +79,8 @@ func (apiService *ApiService) GetAllApis() (apis []dao.SysApi, err error) {
 //@param: id float64
 //@return: api model.SysApi, err error
 
-func (apiService *ApiService) GetApiById(id int) (api dao.SysApi, err error) {
-	return dao.QueryApiById(uint(id))
+func (apiService *ApiService) GetApiById(id int) (api system.SysApi, err error) {
+	return system.QueryApiById(uint(id))
 }
 
 //@author: [piexlmax](https://github.com/piexlmax)
@@ -89,11 +89,11 @@ func (apiService *ApiService) GetApiById(id int) (api dao.SysApi, err error) {
 //@param: api model.SysApi
 //@return: err error
 
-func (apiService *ApiService) UpdateApi(api dao.SysApi) (err error) {
-	oldA, err := dao.QueryApiById(api.ID)
+func (apiService *ApiService) UpdateApi(api system.SysApi) (err error) {
+	oldA, err := system.QueryApiById(api.ID)
 	if oldA.Path != api.Path || oldA.Method != api.Method {
-		var duplicateApi dao.SysApi
-		duplicateApi, err := dao.QueryApiByPathMethod(api.Path, api.Method)
+		var duplicateApi system.SysApi
+		duplicateApi, err := system.QueryApiByPathMethod(api.Path, api.Method)
 		if err != nil {
 			if !errors.Is(err, gorm.ErrRecordNotFound) {
 				return err
@@ -123,12 +123,12 @@ func (apiService *ApiService) UpdateApi(api dao.SysApi) (err error) {
 
 func (apiService *ApiService) DeleteApisByIds(ids request.IdsReq) (err error) {
 	return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
-		var apis []dao.SysApi
+		var apis []system.SysApi
 		err = tx.Find(&apis, "id in ?", ids.Ids).Error
 		if err != nil {
 			return err
 		}
-		err = tx.Delete(&[]dao.SysApi{}, "id in ?", ids.Ids).Error
+		err = tx.Delete(&[]system.SysApi{}, "id in ?", ids.Ids).Error
 		if err != nil {
 			return err
 		}

+ 17 - 17
server/service/system/sys_authority.go

@@ -2,7 +2,7 @@ package system
 
 import (
 	"errors"
-	"server/dao"
+	"server/dao/system"
 	"strconv"
 
 	systemReq "server/model/system/request"
@@ -24,9 +24,9 @@ type AuthorityService struct{}
 
 var AuthorityServiceApp = new(AuthorityService)
 
-func (authorityService *AuthorityService) CreateAuthority(auth dao.SysAuthority) (authority dao.SysAuthority, err error) {
+func (authorityService *AuthorityService) CreateAuthority(auth system.SysAuthority) (authority system.SysAuthority, err error) {
 
-	_, err = dao.QueryAuthorityById(auth.AuthorityId)
+	_, err = system.QueryAuthorityById(auth.AuthorityId)
 
 	if !errors.Is(err, gorm.ErrRecordNotFound) {
 		return auth, ErrRoleExistence
@@ -60,11 +60,11 @@ func (authorityService *AuthorityService) CreateAuthority(auth dao.SysAuthority)
 //@param: auth model.SysAuthority
 //@return: authority system.SysAuthority, err error
 
-func (authorityService *AuthorityService) UpdateAuthority(auth dao.SysAuthority) (authority dao.SysAuthority, err error) {
-	_, err = dao.QueryAuthorityById(auth.AuthorityId)
+func (authorityService *AuthorityService) UpdateAuthority(auth system.SysAuthority) (authority system.SysAuthority, err error) {
+	_, err = system.QueryAuthorityById(auth.AuthorityId)
 	if err != nil {
 		global.GVA_LOG.Debug(err.Error())
-		return dao.SysAuthority{}, errors.New("查询角色数据失败")
+		return system.SysAuthority{}, errors.New("查询角色数据失败")
 	}
 	err = auth.UpdateAuthority()
 	return auth, err
@@ -76,17 +76,17 @@ func (authorityService *AuthorityService) UpdateAuthority(auth dao.SysAuthority)
 //@param: auth *model.SysAuthority
 //@return: err error
 
-func (authorityService *AuthorityService) DeleteAuthority(auth *dao.SysAuthority) error {
+func (authorityService *AuthorityService) DeleteAuthority(auth *system.SysAuthority) error {
 	if errors.Is(global.GVA_DB.Debug().Preload("Users").First(&auth).Error, gorm.ErrRecordNotFound) {
 		return errors.New("该角色不存在")
 	}
 	if len(auth.Users) != 0 {
 		return errors.New("此角色有用户正在使用禁止删除")
 	}
-	if !errors.Is(global.GVA_DB.Where("authority_id = ?", auth.AuthorityId).First(&dao.SysUser{}).Error, gorm.ErrRecordNotFound) {
+	if !errors.Is(global.GVA_DB.Where("authority_id = ?", auth.AuthorityId).First(&system.SysUser{}).Error, gorm.ErrRecordNotFound) {
 		return errors.New("此角色有用户正在使用禁止删除")
 	}
-	if !errors.Is(global.GVA_DB.Where("parent_id = ?", auth.AuthorityId).First(&dao.SysAuthority{}).Error, gorm.ErrRecordNotFound) {
+	if !errors.Is(global.GVA_DB.Where("parent_id = ?", auth.AuthorityId).First(&system.SysAuthority{}).Error, gorm.ErrRecordNotFound) {
 		return errors.New("此角色存在子角色不允许删除")
 	}
 
@@ -108,10 +108,10 @@ func (authorityService *AuthorityService) DeleteAuthority(auth *dao.SysAuthority
 			}
 		}
 
-		if err = tx.Delete(&dao.SysUserAuthority{}, "sys_authority_authority_id = ?", auth.AuthorityId).Error; err != nil {
+		if err = tx.Delete(&system.SysUserAuthority{}, "sys_authority_authority_id = ?", auth.AuthorityId).Error; err != nil {
 			return err
 		}
-		if err = tx.Where("authority_id = ?", auth.AuthorityId).Delete(&[]dao.SysAuthorityBtn{}).Error; err != nil {
+		if err = tx.Where("authority_id = ?", auth.AuthorityId).Delete(&[]system.SysAuthorityBtn{}).Error; err != nil {
 			return err
 		}
 
@@ -135,7 +135,7 @@ func (authorityService *AuthorityService) GetAuthorityInfoList(info request.Page
 	limit := info.PageSize
 	offset := info.PageSize * (info.Page - 1)
 
-	return dao.GetAuthorityInfoList(limit, offset)
+	return system.GetAuthorityInfoList(limit, offset)
 }
 
 //@author: [piexlmax](https://github.com/piexlmax)
@@ -144,7 +144,7 @@ func (authorityService *AuthorityService) GetAuthorityInfoList(info request.Page
 //@param: auth model.SysAuthority
 //@return: sa system.SysAuthority, err error
 
-func (authorityService *AuthorityService) GetAuthorityInfo(auth dao.SysAuthority) (sa dao.SysAuthority, err error) {
+func (authorityService *AuthorityService) GetAuthorityInfo(auth system.SysAuthority) (sa system.SysAuthority, err error) {
 	return auth.GetAuthorityInfo()
 }
 
@@ -154,8 +154,8 @@ func (authorityService *AuthorityService) GetAuthorityInfo(auth dao.SysAuthority
 //@param: auth model.SysAuthority
 //@return: error
 
-func (authorityService *AuthorityService) SetDataAuthority(auth dao.SysAuthority) error {
-	var s dao.SysAuthority
+func (authorityService *AuthorityService) SetDataAuthority(auth system.SysAuthority) error {
+	var s system.SysAuthority
 	global.GVA_DB.Preload("DataAuthorityId").First(&s, "authority_id = ?", auth.AuthorityId)
 	err := global.GVA_DB.Model(&s).Association("DataAuthorityId").Replace(&auth.DataAuthorityId)
 	return err
@@ -167,8 +167,8 @@ func (authorityService *AuthorityService) SetDataAuthority(auth dao.SysAuthority
 //@param: auth *model.SysAuthority
 //@return: error
 
-func (authorityService *AuthorityService) SetMenuAuthority(auth *dao.SysAuthority) error {
-	var s dao.SysAuthority
+func (authorityService *AuthorityService) SetMenuAuthority(auth *system.SysAuthority) error {
+	var s system.SysAuthority
 	global.GVA_DB.Preload("SysBaseMenus").First(&s, "authority_id = ?", auth.AuthorityId)
 	err := global.GVA_DB.Model(&s).Association("SysBaseMenus").Replace(&auth.SysBaseMenus)
 	return err

+ 4 - 4
server/service/system/sys_authority_btn.go

@@ -3,7 +3,7 @@ package system
 import (
 	"errors"
 	"gorm.io/gorm"
-	"server/dao"
+	"server/dao/system"
 	"server/model/system/request"
 	"server/model/system/response"
 )
@@ -11,7 +11,7 @@ import (
 type AuthorityBtnService struct{}
 
 func (a *AuthorityBtnService) GetAuthorityBtn(req request.SysAuthorityBtnReq) (res response.SysAuthorityBtnRes, err error) {
-	authorityBtn, err := dao.QueryAuthorityBtnByAuthorityIdMenuId(req.AuthorityId, req.MenuID)
+	authorityBtn, err := system.QueryAuthorityBtnByAuthorityIdMenuId(req.AuthorityId, req.MenuID)
 	if err != nil {
 		return
 	}
@@ -24,11 +24,11 @@ func (a *AuthorityBtnService) GetAuthorityBtn(req request.SysAuthorityBtnReq) (r
 }
 
 func (a *AuthorityBtnService) SetAuthorityBtn(req request.SysAuthorityBtnReq) (err error) {
-	return dao.SetAuthorityBtn(req.MenuID, req.AuthorityId, req.Selected)
+	return system.SetAuthorityBtn(req.MenuID, req.AuthorityId, req.Selected)
 }
 
 func (a *AuthorityBtnService) CanRemoveAuthorityBtn(ID string) (err error) {
-	_, fErr := dao.QueryAuthorityBtn(ID)
+	_, fErr := system.QueryAuthorityBtn(ID)
 	if errors.Is(fErr, gorm.ErrRecordNotFound) {
 		return nil
 	}

+ 10 - 10
server/service/system/sys_base_menu.go

@@ -2,7 +2,7 @@ package system
 
 import (
 	"errors"
-	"server/dao"
+	"server/dao/system"
 
 	"gorm.io/gorm"
 	"server/global"
@@ -19,30 +19,30 @@ type BaseMenuService struct{}
 var BaseMenuServiceApp = new(BaseMenuService)
 
 func (baseMenuService *BaseMenuService) DeleteBaseMenu(id int) (err error) {
-	err = global.GVA_DB.First(&dao.SysBaseMenu{}, "parent_id = ?", id).Error
+	err = global.GVA_DB.First(&system.SysBaseMenu{}, "parent_id = ?", id).Error
 	if err != nil {
 		return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
 
-			err = tx.Delete(&dao.SysBaseMenu{}, "id = ?", id).Error
+			err = tx.Delete(&system.SysBaseMenu{}, "id = ?", id).Error
 			if err != nil {
 				return err
 			}
 
-			err = tx.Delete(&dao.SysBaseMenuParameter{}, "sys_base_menu_id = ?", id).Error
+			err = tx.Delete(&system.SysBaseMenuParameter{}, "sys_base_menu_id = ?", id).Error
 			if err != nil {
 				return err
 			}
 
-			err = tx.Delete(&dao.SysBaseMenuBtn{}, "sys_base_menu_id = ?", id).Error
+			err = tx.Delete(&system.SysBaseMenuBtn{}, "sys_base_menu_id = ?", id).Error
 			if err != nil {
 				return err
 			}
-			err = tx.Delete(&dao.SysAuthorityBtn{}, "sys_menu_id = ?", id).Error
+			err = tx.Delete(&system.SysAuthorityBtn{}, "sys_menu_id = ?", id).Error
 			if err != nil {
 				return err
 			}
 
-			err = tx.Delete(&dao.SysAuthorityMenu{}, "sys_base_menu_id = ?", id).Error
+			err = tx.Delete(&system.SysAuthorityMenu{}, "sys_base_menu_id = ?", id).Error
 			if err != nil {
 				return err
 			}
@@ -58,7 +58,7 @@ func (baseMenuService *BaseMenuService) DeleteBaseMenu(id int) (err error) {
 //@param: menu model.SysBaseMenu
 //@return: err error
 
-func (baseMenuService *BaseMenuService) UpdateBaseMenu(menu dao.SysBaseMenu) (err error) {
+func (baseMenuService *BaseMenuService) UpdateBaseMenu(menu system.SysBaseMenu) (err error) {
 	return menu.UpdateBaseMenu()
 }
 
@@ -68,6 +68,6 @@ func (baseMenuService *BaseMenuService) UpdateBaseMenu(menu dao.SysBaseMenu) (er
 //@param: id float64
 //@return: menu system.SysBaseMenu, err error
 
-func (baseMenuService *BaseMenuService) GetBaseMenuById(id int) (menu dao.SysBaseMenu, err error) {
-	return dao.QueryBaseMenuAndMenuBtnAndParameterById(id)
+func (baseMenuService *BaseMenuService) GetBaseMenuById(id int) (menu system.SysBaseMenu, err error) {
+	return system.QueryBaseMenuAndMenuBtnAndParameterById(id)
 }

+ 14 - 14
server/service/system/sys_dictionary.go

@@ -2,7 +2,7 @@ package system
 
 import (
 	"errors"
-	"server/dao"
+	"server/dao/system"
 
 	"gorm.io/gorm"
 	"server/global"
@@ -16,8 +16,8 @@ import (
 
 type DictionaryService struct{}
 
-func (dictionaryService *DictionaryService) CreateSysDictionary(sysDictionary dao.SysDictionary) (err error) {
-	_, err = dao.QueryDictionaryByType(sysDictionary.Type)
+func (dictionaryService *DictionaryService) CreateSysDictionary(sysDictionary system.SysDictionary) (err error) {
+	_, err = system.QueryDictionaryByType(sysDictionary.Type)
 	if !errors.Is(err, gorm.ErrRecordNotFound) {
 		return errors.New("存在相同的type,不允许创建")
 	}
@@ -30,8 +30,8 @@ func (dictionaryService *DictionaryService) CreateSysDictionary(sysDictionary da
 //@param: sysDictionary model.SysDictionary
 //@return: err error
 
-func (dictionaryService *DictionaryService) DeleteSysDictionary(sysDictionary dao.SysDictionary) (err error) {
-	_, err = dao.QueryDictionaryAndDetailsById(sysDictionary.ID)
+func (dictionaryService *DictionaryService) DeleteSysDictionary(sysDictionary system.SysDictionary) (err error) {
+	_, err = system.QueryDictionaryAndDetailsById(sysDictionary.ID)
 	if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
 		return errors.New("请不要搞事")
 	}
@@ -58,22 +58,22 @@ func (dictionaryService *DictionaryService) DeleteSysDictionary(sysDictionary da
 //@param: sysDictionary *model.SysDictionary
 //@return: err error
 
-func (dictionaryService *DictionaryService) UpdateSysDictionary(sysDictionary *dao.SysDictionary) (err error) {
-	var dict dao.SysDictionary
+func (dictionaryService *DictionaryService) UpdateSysDictionary(sysDictionary *system.SysDictionary) (err error) {
+	var dict system.SysDictionary
 
-	_, err = dao.QueryDictionaryAndDetailsById(sysDictionary.ID)
+	_, err = system.QueryDictionaryAndDetailsById(sysDictionary.ID)
 	if err != nil {
 		global.GVA_LOG.Debug(err.Error())
 		return errors.New("查询字典数据失败")
 	}
 	if dict.Type != sysDictionary.Type {
-		_, err = dao.QueryDictionaryByType(sysDictionary.Type)
+		_, err = system.QueryDictionaryByType(sysDictionary.Type)
 		if !errors.Is(err, gorm.ErrRecordNotFound) {
 			return errors.New("存在相同的type,不允许创建")
 		}
 	}
 
-	return dao.SysDictionary{
+	return system.SysDictionary{
 		Name:   sysDictionary.Name,
 		Type:   sysDictionary.Type,
 		Status: sysDictionary.Status,
@@ -87,14 +87,14 @@ func (dictionaryService *DictionaryService) UpdateSysDictionary(sysDictionary *d
 //@param: Type string, Id uint
 //@return: err error, sysDictionary model.SysDictionary
 
-func (dictionaryService *DictionaryService) GetSysDictionary(Type string, Id uint, status *bool) (sysDictionary dao.SysDictionary, err error) {
+func (dictionaryService *DictionaryService) GetSysDictionary(Type string, Id uint, status *bool) (sysDictionary system.SysDictionary, err error) {
 	var flag = false
 	if status == nil {
 		flag = true
 	} else {
 		flag = *status
 	}
-	return dao.GetSysDictionary(Type, Id, flag)
+	return system.GetSysDictionary(Type, Id, flag)
 }
 
 //@author: [piexlmax](https://github.com/piexlmax)
@@ -104,6 +104,6 @@ func (dictionaryService *DictionaryService) GetSysDictionary(Type string, Id uin
 //@param: info request.SysDictionarySearch
 //@return: err error, list interface{}, total int64
 
-func (dictionaryService *DictionaryService) GetSysDictionaryInfoList() (sysDictionaries []dao.SysDictionary, err error) {
-	return dao.GetSysDictionaryInfoList()
+func (dictionaryService *DictionaryService) GetSysDictionaryInfoList() (sysDictionaries []system.SysDictionary, err error) {
+	return system.GetSysDictionaryInfoList()
 }

+ 14 - 14
server/service/system/sys_dictionary_detail.go

@@ -1,7 +1,7 @@
 package system
 
 import (
-	"server/dao"
+	"server/dao/system"
 	"server/model/system/request"
 )
 
@@ -13,7 +13,7 @@ import (
 
 type DictionaryDetailService struct{}
 
-func (dictionaryDetailService *DictionaryDetailService) CreateSysDictionaryDetail(sysDictionaryDetail dao.SysDictionaryDetail) error {
+func (dictionaryDetailService *DictionaryDetailService) CreateSysDictionaryDetail(sysDictionaryDetail system.SysDictionaryDetail) error {
 	return sysDictionaryDetail.CreateSysDictionaryDetail()
 }
 
@@ -23,7 +23,7 @@ func (dictionaryDetailService *DictionaryDetailService) CreateSysDictionaryDetai
 //@param: sysDictionaryDetail model.SysDictionaryDetail
 //@return: err error
 
-func (dictionaryDetailService *DictionaryDetailService) DeleteSysDictionaryDetail(sysDictionaryDetail dao.SysDictionaryDetail) error {
+func (dictionaryDetailService *DictionaryDetailService) DeleteSysDictionaryDetail(sysDictionaryDetail system.SysDictionaryDetail) error {
 	return sysDictionaryDetail.DeleteSysDictionaryDetail()
 }
 
@@ -33,7 +33,7 @@ func (dictionaryDetailService *DictionaryDetailService) DeleteSysDictionaryDetai
 //@param: sysDictionaryDetail *model.SysDictionaryDetail
 //@return: err error
 
-func (dictionaryDetailService *DictionaryDetailService) UpdateSysDictionaryDetail(sysDictionaryDetail *dao.SysDictionaryDetail) error {
+func (dictionaryDetailService *DictionaryDetailService) UpdateSysDictionaryDetail(sysDictionaryDetail *system.SysDictionaryDetail) error {
 	return sysDictionaryDetail.UpdateSysDictionaryDetail()
 }
 
@@ -43,8 +43,8 @@ func (dictionaryDetailService *DictionaryDetailService) UpdateSysDictionaryDetai
 //@param: id uint
 //@return: sysDictionaryDetail system.SysDictionaryDetail, err error
 
-func (dictionaryDetailService *DictionaryDetailService) GetSysDictionaryDetail(id uint) (dao.SysDictionaryDetail, error) {
-	return dao.GetSysDictionaryDetailById(id)
+func (dictionaryDetailService *DictionaryDetailService) GetSysDictionaryDetail(id uint) (system.SysDictionaryDetail, error) {
+	return system.GetSysDictionaryDetailById(id)
 }
 
 //@author: [piexlmax](https://github.com/piexlmax)
@@ -60,21 +60,21 @@ func (dictionaryDetailService *DictionaryDetailService) GetSysDictionaryDetailIn
 }
 
 // GetDictionaryList 按照字典id获取字典全部内容的方法
-func (dictionaryDetailService *DictionaryDetailService) GetDictionaryList(dictionaryID uint) ([]dao.SysDictionaryDetail, error) {
-	return dao.GetDictionaryListByDictionaryId(dictionaryID)
+func (dictionaryDetailService *DictionaryDetailService) GetDictionaryList(dictionaryID uint) ([]system.SysDictionaryDetail, error) {
+	return system.GetDictionaryListByDictionaryId(dictionaryID)
 }
 
 // GetDictionaryListByType 按照字典type获取字典全部内容的方法
-func (dictionaryDetailService *DictionaryDetailService) GetDictionaryListByType(t string) ([]dao.SysDictionaryDetail, error) {
-	return dao.GetDictionaryListByType(t)
+func (dictionaryDetailService *DictionaryDetailService) GetDictionaryListByType(t string) ([]system.SysDictionaryDetail, error) {
+	return system.GetDictionaryListByType(t)
 }
 
 // GetDictionaryInfoByValue 按照字典id+字典内容value获取单条字典内容
-func (dictionaryDetailService *DictionaryDetailService) GetDictionaryInfoByValue(dictionaryID uint, value uint) (dao.SysDictionaryDetail, error) {
-	return dao.GetDictionaryInfoByValue(dictionaryID, value)
+func (dictionaryDetailService *DictionaryDetailService) GetDictionaryInfoByValue(dictionaryID uint, value uint) (system.SysDictionaryDetail, error) {
+	return system.GetDictionaryInfoByValue(dictionaryID, value)
 }
 
 // GetDictionaryInfoByTypeValue 按照字典type+字典内容value获取单条字典内容
-func (dictionaryDetailService *DictionaryDetailService) GetDictionaryInfoByTypeValue(t string, value uint) (dao.SysDictionaryDetail, error) {
-	return dao.GetDictionaryInfoByTypeValue(t, value)
+func (dictionaryDetailService *DictionaryDetailService) GetDictionaryInfoByTypeValue(t string, value uint) (system.SysDictionaryDetail, error) {
+	return system.GetDictionaryInfoByTypeValue(t, value)
 }

+ 27 - 27
server/service/system/sys_menu.go

@@ -2,7 +2,7 @@ package system
 
 import (
 	"errors"
-	"server/dao"
+	"server/dao/system"
 
 	"gorm.io/gorm"
 	"server/model/common/request"
@@ -18,11 +18,11 @@ type MenuService struct{}
 
 var MenuServiceApp = new(MenuService)
 
-func (menuService *MenuService) getMenuTreeMap(authorityId uint) (treeMap map[uint][]dao.SysMenu, err error) {
-	var allMenus []dao.SysMenu
-	treeMap = make(map[uint][]dao.SysMenu)
+func (menuService *MenuService) getMenuTreeMap(authorityId uint) (treeMap map[uint][]system.SysMenu, err error) {
+	var allMenus []system.SysMenu
+	treeMap = make(map[uint][]system.SysMenu)
 
-	SysAuthorityMenus, err := dao.QueryAuthorityMenuByAuthorityId(authorityId)
+	SysAuthorityMenus, err := system.QueryAuthorityMenuByAuthorityId(authorityId)
 	if err != nil {
 		return
 	}
@@ -33,13 +33,13 @@ func (menuService *MenuService) getMenuTreeMap(authorityId uint) (treeMap map[ui
 		MenuIds = append(MenuIds, SysAuthorityMenus[i].MenuId)
 	}
 
-	baseMenu, err := dao.QueryBaseMenuAndParametersByMenuId(MenuIds)
+	baseMenu, err := system.QueryBaseMenuAndParametersByMenuId(MenuIds)
 	if err != nil {
 		return
 	}
 
 	for i := range baseMenu {
-		allMenus = append(allMenus, dao.SysMenu{
+		allMenus = append(allMenus, system.SysMenu{
 			SysBaseMenu: baseMenu[i],
 			AuthorityId: authorityId,
 			MenuId:      baseMenu[i].ID,
@@ -47,7 +47,7 @@ func (menuService *MenuService) getMenuTreeMap(authorityId uint) (treeMap map[ui
 		})
 	}
 
-	btns, err := dao.QueryAuthorityBtnAndSysBaseMenuBtnById(authorityId)
+	btns, err := system.QueryAuthorityBtnAndSysBaseMenuBtnById(authorityId)
 
 	if err != nil {
 		return
@@ -72,7 +72,7 @@ func (menuService *MenuService) getMenuTreeMap(authorityId uint) (treeMap map[ui
 //@param: authorityId string
 //@return: menus []system.SysMenu, err error
 
-func (menuService *MenuService) GetMenuTree(authorityId uint) (menus []dao.SysMenu, err error) {
+func (menuService *MenuService) GetMenuTree(authorityId uint) (menus []system.SysMenu, err error) {
 	menuTree, err := menuService.getMenuTreeMap(authorityId)
 	menus = menuTree[0]
 	for i := 0; i < len(menus); i++ {
@@ -87,7 +87,7 @@ func (menuService *MenuService) GetMenuTree(authorityId uint) (menus []dao.SysMe
 //@param: menu *model.SysMenu, treeMap map[string][]model.SysMenu
 //@return: err error
 
-func (menuService *MenuService) getChildrenList(menu *dao.SysMenu, treeMap map[uint][]dao.SysMenu) (err error) {
+func (menuService *MenuService) getChildrenList(menu *system.SysMenu, treeMap map[uint][]system.SysMenu) (err error) {
 	menu.Children = treeMap[menu.MenuId]
 	for i := 0; i < len(menu.Children); i++ {
 		err = menuService.getChildrenList(&menu.Children[i], treeMap)
@@ -101,7 +101,7 @@ func (menuService *MenuService) getChildrenList(menu *dao.SysMenu, treeMap map[u
 //@return: list interface{}, total int64,err error
 
 func (menuService *MenuService) GetInfoList() (list interface{}, total int64, err error) {
-	var menuList []dao.SysBaseMenu
+	var menuList []system.SysBaseMenu
 	treeMap, err := menuService.getBaseMenuTreeMap()
 	menuList = treeMap[0]
 	for i := 0; i < len(menuList); i++ {
@@ -116,7 +116,7 @@ func (menuService *MenuService) GetInfoList() (list interface{}, total int64, er
 //@param: menu *model.SysBaseMenu, treeMap map[string][]model.SysBaseMenu
 //@return: err error
 
-func (menuService *MenuService) getBaseChildrenList(menu *dao.SysBaseMenu, treeMap map[uint][]dao.SysBaseMenu) (err error) {
+func (menuService *MenuService) getBaseChildrenList(menu *system.SysBaseMenu, treeMap map[uint][]system.SysBaseMenu) (err error) {
 	menu.Children = treeMap[menu.ID]
 	for i := 0; i < len(menu.Children); i++ {
 		err = menuService.getBaseChildrenList(&menu.Children[i], treeMap)
@@ -130,8 +130,8 @@ func (menuService *MenuService) getBaseChildrenList(menu *dao.SysBaseMenu, treeM
 //@param: menu model.SysBaseMenu
 //@return: error
 
-func (menuService *MenuService) AddBaseMenu(menu dao.SysBaseMenu) error {
-	_, err := dao.QueryBaseMenuByName(menu.Name)
+func (menuService *MenuService) AddBaseMenu(menu system.SysBaseMenu) error {
+	_, err := system.QueryBaseMenuByName(menu.Name)
 	if !errors.Is(err, gorm.ErrRecordNotFound) {
 		return errors.New("存在重复name,请修改name")
 	}
@@ -143,9 +143,9 @@ func (menuService *MenuService) AddBaseMenu(menu dao.SysBaseMenu) error {
 //@description: 获取路由总树map
 //@return: treeMap map[string][]system.SysBaseMenu, err error
 
-func (menuService *MenuService) getBaseMenuTreeMap() (treeMap map[uint][]dao.SysBaseMenu, err error) {
-	treeMap = make(map[uint][]dao.SysBaseMenu)
-	allMenus, err := dao.QueryBaseMenuAndMenuBtnAndParameters()
+func (menuService *MenuService) getBaseMenuTreeMap() (treeMap map[uint][]system.SysBaseMenu, err error) {
+	treeMap = make(map[uint][]system.SysBaseMenu)
+	allMenus, err := system.QueryBaseMenuAndMenuBtnAndParameters()
 	for _, v := range allMenus {
 		treeMap[v.ParentId] = append(treeMap[v.ParentId], v)
 	}
@@ -157,7 +157,7 @@ func (menuService *MenuService) getBaseMenuTreeMap() (treeMap map[uint][]dao.Sys
 //@description: 获取基础路由树
 //@return: menus []system.SysBaseMenu, err error
 
-func (menuService *MenuService) GetBaseMenuTree() (menus []dao.SysBaseMenu, err error) {
+func (menuService *MenuService) GetBaseMenuTree() (menus []system.SysBaseMenu, err error) {
 	treeMap, err := menuService.getBaseMenuTreeMap()
 	menus = treeMap[0]
 	for i := 0; i < len(menus); i++ {
@@ -172,8 +172,8 @@ func (menuService *MenuService) GetBaseMenuTree() (menus []dao.SysBaseMenu, err
 //@param: menus []model.SysBaseMenu, authorityId string
 //@return: err error
 
-func (menuService *MenuService) AddMenuAuthority(menus []dao.SysBaseMenu, authorityId uint) (err error) {
-	var auth dao.SysAuthority
+func (menuService *MenuService) AddMenuAuthority(menus []system.SysBaseMenu, authorityId uint) (err error) {
+	var auth system.SysAuthority
 	auth.AuthorityId = authorityId
 	auth.SysBaseMenus = menus
 	err = AuthorityServiceApp.SetMenuAuthority(&auth)
@@ -186,8 +186,8 @@ func (menuService *MenuService) AddMenuAuthority(menus []dao.SysBaseMenu, author
 //@param: info *request.GetAuthorityId
 //@return: menus []system.SysMenu, err error
 
-func (menuService *MenuService) GetMenuAuthority(info *request.GetAuthorityId) (menus []dao.SysMenu, err error) {
-	SysAuthorityMenus, err := dao.QueryAuthorityMenuByAuthorityId(info.AuthorityId)
+func (menuService *MenuService) GetMenuAuthority(info *request.GetAuthorityId) (menus []system.SysMenu, err error) {
+	SysAuthorityMenus, err := system.QueryAuthorityMenuByAuthorityId(info.AuthorityId)
 	if err != nil {
 		return
 	}
@@ -198,10 +198,10 @@ func (menuService *MenuService) GetMenuAuthority(info *request.GetAuthorityId) (
 		MenuIds = append(MenuIds, SysAuthorityMenus[i].MenuId)
 	}
 
-	baseMenu, err := dao.QueryBaseMenuAndParametersByMenuId(MenuIds)
+	baseMenu, err := system.QueryBaseMenuAndParametersByMenuId(MenuIds)
 
 	for i := range baseMenu {
-		menus = append(menus, dao.SysMenu{
+		menus = append(menus, system.SysMenu{
 			SysBaseMenu: baseMenu[i],
 			AuthorityId: info.AuthorityId,
 			MenuId:      baseMenu[i].ID,
@@ -214,13 +214,13 @@ func (menuService *MenuService) GetMenuAuthority(info *request.GetAuthorityId) (
 // UserAuthorityDefaultRouter 用户角色默认路由检查
 //
 //	Author [SliverHorn](https://github.com/SliverHorn)
-func (menuService *MenuService) UserAuthorityDefaultRouter(user *dao.SysUser) {
-	menuIds, err := dao.QuerySysBaseMenuIdById(user.AuthorityId)
+func (menuService *MenuService) UserAuthorityDefaultRouter(user *system.SysUser) {
+	menuIds, err := system.QuerySysBaseMenuIdById(user.AuthorityId)
 	if err != nil {
 		return
 	}
 
-	_, err = dao.QueryBaseMenuByIdAndDefaultRouter(user.Authority.DefaultRouter, menuIds)
+	_, err = system.QueryBaseMenuByIdAndDefaultRouter(user.Authority.DefaultRouter, menuIds)
 
 	if errors.Is(err, gorm.ErrRecordNotFound) {
 		user.Authority.DefaultRouter = "404"

+ 6 - 6
server/service/system/sys_operation_record.go

@@ -1,7 +1,7 @@
 package system
 
 import (
-	"server/dao"
+	"server/dao/system"
 	"server/model/common/request"
 	systemReq "server/model/system/request"
 )
@@ -14,7 +14,7 @@ import (
 
 type OperationRecordService struct{}
 
-func (operationRecordService *OperationRecordService) CreateSysOperationRecord(sysOperationRecord dao.SysOperationRecord) (err error) {
+func (operationRecordService *OperationRecordService) CreateSysOperationRecord(sysOperationRecord system.SysOperationRecord) (err error) {
 	return sysOperationRecord.CreateSysOperationRecord()
 }
 
@@ -26,7 +26,7 @@ func (operationRecordService *OperationRecordService) CreateSysOperationRecord(s
 //@return: err error
 
 func (operationRecordService *OperationRecordService) DeleteSysOperationRecordByIds(ids request.IdsReq) error {
-	return dao.DeleteSysOperationRecordByIds(ids.Ids)
+	return system.DeleteSysOperationRecordByIds(ids.Ids)
 }
 
 //@author: [granty1](https://github.com/granty1)
@@ -35,7 +35,7 @@ func (operationRecordService *OperationRecordService) DeleteSysOperationRecordBy
 //@param: sysOperationRecord model.SysOperationRecord
 //@return: err error
 
-func (operationRecordService *OperationRecordService) DeleteSysOperationRecord(sysOperationRecord dao.SysOperationRecord) error {
+func (operationRecordService *OperationRecordService) DeleteSysOperationRecord(sysOperationRecord system.SysOperationRecord) error {
 	return sysOperationRecord.DeleteSysOperationRecord()
 }
 
@@ -45,8 +45,8 @@ func (operationRecordService *OperationRecordService) DeleteSysOperationRecord(s
 //@param: id uint
 //@return: sysOperationRecord system.SysOperationRecord, err error
 
-func (operationRecordService *OperationRecordService) GetSysOperationRecord(id uint) (dao.SysOperationRecord, error) {
-	return dao.GetSysOperationRecord(id)
+func (operationRecordService *OperationRecordService) GetSysOperationRecord(id uint) (system.SysOperationRecord, error) {
+	return system.GetSysOperationRecord(id)
 }
 
 //@author: [granty1](https://github.com/granty1)

+ 23 - 23
server/service/system/sys_user.go

@@ -3,7 +3,7 @@ package system
 import (
 	"errors"
 	"fmt"
-	"server/dao"
+	"server/dao/system"
 	"time"
 
 	"github.com/gofrs/uuid/v5"
@@ -21,8 +21,8 @@ import (
 
 type UserService struct{}
 
-func (userService *UserService) Register(u dao.SysUser) (userInter dao.SysUser, err error) {
-	_, err = dao.QueryUserByUserName(u.Username)
+func (userService *UserService) Register(u system.SysUser) (userInter system.SysUser, err error) {
+	_, err = system.QueryUserByUserName(u.Username)
 	if !errors.Is(err, gorm.ErrRecordNotFound) { // 判断用户名是否注册
 		return userInter, errors.New("用户名已注册")
 	}
@@ -41,12 +41,12 @@ func (userService *UserService) Register(u dao.SysUser) (userInter dao.SysUser,
 //@param: u *model.SysUser
 //@return: err error, userInter *model.SysUser
 
-func (userService *UserService) Login(u *dao.SysUser) (userInter *dao.SysUser, err error) {
+func (userService *UserService) Login(u *system.SysUser) (userInter *system.SysUser, err error) {
 	if nil == global.GVA_DB {
 		return nil, fmt.Errorf("db not init")
 	}
 
-	user, err := dao.QueryUserAndAuthorityByUserName(u.Username)
+	user, err := system.QueryUserAndAuthorityByUserName(u.Username)
 
 	if err == nil {
 		if ok := utils.BcryptCheck(u.Password, user.Password); !ok {
@@ -63,8 +63,8 @@ func (userService *UserService) Login(u *dao.SysUser) (userInter *dao.SysUser, e
 //@param: u *model.SysUser, newPassword string
 //@return: userInter *model.SysUser,err error
 
-func (userService *UserService) ChangePassword(u *dao.SysUser, newPassword string) (userInter *dao.SysUser, err error) {
-	user, err := dao.QueryUserByUserId(u.ID)
+func (userService *UserService) ChangePassword(u *system.SysUser, newPassword string) (userInter *system.SysUser, err error) {
+	user, err := system.QueryUserByUserId(u.ID)
 	if err != nil {
 		return nil, err
 	}
@@ -87,7 +87,7 @@ func (userService *UserService) GetUserInfoList(info request.PageInfo) (list int
 	limit := info.PageSize
 	offset := info.PageSize * (info.Page - 1)
 
-	userList, total, err := dao.QueryUserInfoList(limit, offset)
+	userList, total, err := system.QueryUserInfoList(limit, offset)
 
 	return userList, total, err
 }
@@ -99,13 +99,13 @@ func (userService *UserService) GetUserInfoList(info request.PageInfo) (list int
 //@return: err error
 
 func (userService *UserService) SetUserAuthority(id uint, authorityId uint) (err error) {
-	_, assignErr := dao.QueryUserAuthority(id, authorityId)
+	_, assignErr := system.QueryUserAuthority(id, authorityId)
 
 	if errors.Is(assignErr, gorm.ErrRecordNotFound) {
 		return errors.New("该用户无此角色")
 	}
 
-	return dao.UpdateUserAuthority(id, authorityId)
+	return system.UpdateUserAuthority(id, authorityId)
 }
 
 //@author: [piexlmax](https://github.com/piexlmax)
@@ -115,7 +115,7 @@ func (userService *UserService) SetUserAuthority(id uint, authorityId uint) (err
 //@return: err error
 
 func (userService *UserService) SetUserAuthorities(id uint, authorityId uint) (err error) {
-	return dao.SetUserAuthorities(id, authorityId)
+	return system.SetUserAuthorities(id, authorityId)
 }
 
 //@author: [piexlmax](https://github.com/piexlmax)
@@ -125,7 +125,7 @@ func (userService *UserService) SetUserAuthorities(id uint, authorityId uint) (e
 //@return: err error
 
 func (userService *UserService) DeleteUser(id int) (err error) {
-	return dao.DeleteUser(id)
+	return system.DeleteUser(id)
 }
 
 //@author: [piexlmax](https://github.com/piexlmax)
@@ -134,7 +134,7 @@ func (userService *UserService) DeleteUser(id int) (err error) {
 //@param: reqUser model.SysUser
 //@return: err error, user model.SysUser
 
-func (userService *UserService) SetUserInfo(req dao.SysUser) error {
+func (userService *UserService) SetUserInfo(req system.SysUser) error {
 	req.UpdatedAt = time.Now()
 	return req.SetUserInfo()
 }
@@ -145,7 +145,7 @@ func (userService *UserService) SetUserInfo(req dao.SysUser) error {
 //@param: reqUser model.SysUser
 //@return: err error, user model.SysUser
 
-func (userService *UserService) SetSelfInfo(req dao.SysUser) error {
+func (userService *UserService) SetSelfInfo(req system.SysUser) error {
 	return req.SetUserInfoById()
 }
 
@@ -156,8 +156,8 @@ func (userService *UserService) SetSelfInfo(req dao.SysUser) error {
 //@param: uuid uuid.UUID
 //@return: err error, user system.SysUser
 
-func (userService *UserService) GetUserInfo(uuid uuid.UUID) (user dao.SysUser, err error) {
-	reqUser, err := dao.GetUserInfoByUUID(uuid)
+func (userService *UserService) GetUserInfo(uuid uuid.UUID) (user system.SysUser, err error) {
+	reqUser, err := system.GetUserInfoByUUID(uuid)
 	if err != nil {
 		return reqUser, err
 	}
@@ -171,8 +171,8 @@ func (userService *UserService) GetUserInfo(uuid uuid.UUID) (user dao.SysUser, e
 //@param: id int
 //@return: err error, user *model.SysUser
 
-func (userService *UserService) FindUserById(id int) (user *dao.SysUser, err error) {
-	u, err := dao.QueryUserByUserId(uint(id))
+func (userService *UserService) FindUserById(id int) (user *system.SysUser, err error) {
+	u, err := system.QueryUserByUserId(uint(id))
 	return &u, err
 }
 
@@ -182,14 +182,14 @@ func (userService *UserService) FindUserById(id int) (user *dao.SysUser, err err
 //@param: uuid string
 //@return: err error, user *model.SysUser
 
-func (userService *UserService) FindUserByUuid(uuidStr string) (user *dao.SysUser, err error) {
+func (userService *UserService) FindUserByUuid(uuidStr string) (user *system.SysUser, err error) {
 	id, err := uuid.FromString(uuidStr)
 	if err != nil {
 		fmt.Println("Error parsing UUID:", err)
 		return
 	}
 
-	u, err := dao.GetUserInfoByUUID(id)
+	u, err := system.GetUserInfoByUUID(id)
 	if err != nil {
 		return &u, errors.New("用户不存在")
 	}
@@ -204,7 +204,7 @@ func (userService *UserService) FindUserByUuid(uuidStr string) (user *dao.SysUse
 //@return: err error
 
 func (userService *UserService) ResetPassword(ID uint) error {
-	return dao.SysUser{
+	return system.SysUser{
 		GVA_MODEL: global.GVA_MODEL{
 			ID: ID,
 		},
@@ -213,7 +213,7 @@ func (userService *UserService) ResetPassword(ID uint) error {
 }
 
 // QueryAllUsers 查询所有用户
-func (userService *UserService) QueryAllUsers() (userList []dao.SysUser, err error) {
-	userList, err = dao.QueryAllUsers()
+func (userService *UserService) QueryAllUsers() (userList []system.SysUser, err error) {
+	userList, err = system.QueryAllUsers()
 	return userList, err
 }