feat: 添加数据库资产、命令拦截器、授权资产等功能,修复GitHub Actions工作流

This commit is contained in:
2026-04-18 07:44:18 +08:00
parent 6e2e2f9387
commit 3c217ab039
64 changed files with 3308 additions and 760 deletions
+103 -25
View File
@@ -1,7 +1,12 @@
package api
import (
"context"
"strconv"
"next-terminal/server/common/maps"
"next-terminal/server/model"
"next-terminal/server/repository"
"next-terminal/server/utils"
"github.com/labstack/echo/v4"
@@ -10,77 +15,150 @@ import (
type DepartmentApi struct{}
func (api DepartmentApi) AllEndpoint(c echo.Context) error {
return Success(c, []interface{}{})
items, err := repository.DepartmentRepository.FindAll(context.TODO())
if err != nil {
return err
}
return Success(c, items)
}
func (api DepartmentApi) PagingEndpoint(c echo.Context) error {
pageIndex, _ := strconv.Atoi(c.QueryParam("pageIndex"))
pageSize, _ := strconv.Atoi(c.QueryParam("pageSize"))
name := c.QueryParam("keyword")
order := c.QueryParam("order")
field := c.QueryParam("field")
items, total, err := repository.DepartmentRepository.Find(context.TODO(), pageIndex, pageSize, name, order, field)
if err != nil {
return err
}
departmentMap := make(map[string]model.Department)
allDepts, _ := repository.DepartmentRepository.FindAll(context.TODO())
for _, dept := range allDepts {
departmentMap[dept.ID] = dept
}
for i := range items {
if items[i].ParentId != "" {
if parent, ok := departmentMap[items[i].ParentId]; ok {
items[i].ParentName = parent.Name
}
}
userCount, _ := repository.UserDepartmentRepository.CountByDepartmentId(context.TODO(), items[i].ID)
items[i].UserCount = userCount
}
return Success(c, maps.Map{
"items": []interface{}{},
"total": 0,
"items": items,
"total": total,
})
}
func (api DepartmentApi) CreateEndpoint(c echo.Context) error {
var item map[string]interface{}
var item model.Department
if err := c.Bind(&item); err != nil {
return err
}
item["id"] = utils.LongUUID()
item.ID = utils.UUID()
if err := repository.DepartmentRepository.Create(context.TODO(), &item); err != nil {
return err
}
return Success(c, item)
}
func (api DepartmentApi) UpdateEndpoint(c echo.Context) error {
id := c.Param("id")
var item map[string]interface{}
var item model.Department
if err := c.Bind(&item); err != nil {
return err
}
item["id"] = id
item.ID = id
if err := repository.DepartmentRepository.UpdateById(context.TODO(), &item); err != nil {
return err
}
return Success(c, item)
}
func (api DepartmentApi) DeleteEndpoint(c echo.Context) error {
id := c.Param("id")
_ = id
count, err := repository.DepartmentRepository.CountByParentId(context.TODO(), id)
if err != nil {
return err
}
if count > 0 {
return Fail(c, -1, "该部门下存在子部门,无法删除")
}
userCount, err := repository.UserDepartmentRepository.CountByDepartmentId(context.TODO(), id)
if err != nil {
return err
}
if userCount > 0 {
return Fail(c, -1, "该部门下存在用户,无法删除")
}
if err := repository.DepartmentRepository.DeleteById(context.TODO(), id); err != nil {
return err
}
return Success(c, nil)
}
func (api DepartmentApi) GetEndpoint(c echo.Context) error {
id := c.Param("id")
_ = id
return Success(c, maps.Map{
"id": id,
"name": "Default",
"parentId": "",
})
item, err := repository.DepartmentRepository.FindById(context.TODO(), id)
if err != nil {
return err
}
return Success(c, item)
}
func (api DepartmentApi) GetTreeEndpoint(c echo.Context) error {
tree := []map[string]interface{}{
{
"title": "Default",
"key": "default",
"value": "default",
"children": []interface{}{},
},
departments, err := repository.DepartmentRepository.FindAll(context.TODO())
if err != nil {
return err
}
tree := repository.DepartmentRepository.BuildTree(departments)
return Success(c, tree)
}
func (api DepartmentApi) GetDepartmentUsersEndpoint(c echo.Context) error {
departmentId := c.Param("id")
_ = departmentId
return Success(c, []string{})
users, err := repository.UserDepartmentRepository.FindUsersByDepartmentId(context.TODO(), departmentId)
if err != nil {
return err
}
return Success(c, users)
}
func (api DepartmentApi) SetDepartmentUsersEndpoint(c echo.Context) error {
departmentId := c.Param("id")
_ = departmentId
var userIds []string
if err := c.Bind(&userIds); err != nil {
return err
}
if err := repository.UserDepartmentRepository.SaveDepartmentUsers(context.TODO(), departmentId, userIds); err != nil {
return err
}
return Success(c, nil)
}
func (api DepartmentApi) RemoveUsersFromDepartmentEndpoint(c echo.Context) error {
departmentId := c.Param("id")
_ = departmentId
var userIds []string
if err := c.Bind(&userIds); err != nil {
return err
}
if err := repository.UserDepartmentRepository.RemoveUsersFromDepartment(context.TODO(), departmentId, userIds); err != nil {
return err
}
return Success(c, nil)
}