2025-07-02 14:51:23 +08:00

115 lines
2.3 KiB
Go

package system
import (
"errors"
"net/http"
"management/internal/erpserver/model/system/request"
v1 "management/internal/erpserver/service/v1"
"management/internal/pkg/gin/gu"
"management/internal/pkg/sqldb"
"github.com/drhin/logger"
"github.com/gin-gonic/gin"
)
type UserApp struct {
log *logger.Logger
userService v1.UserService
roleService v1.RoleService
departmentService v1.DepartmentService
}
func NewUserApp(
log *logger.Logger,
userService v1.UserService,
roleService v1.RoleService,
departmentService v1.DepartmentService,
) *UserApp {
return &UserApp{
log: log,
userService: userService,
roleService: roleService,
departmentService: departmentService,
}
}
func (a *UserApp) Create(c *gin.Context) {
var req request.CreateAndUpdateUser
if err := c.ShouldBindJSON(&req); err != nil {
gu.ValidatorErrors(c, err)
return
}
if err := a.userService.Create(c, &req); err != nil {
if errors.Is(err, sqldb.ErrDBDuplicatedEntry) {
gu.FailedWithCode(c, http.StatusConflict, "用户已存在")
return
}
gu.Failed(c, err.Error())
return
}
gu.Ok(c, "添加成功")
}
func (a *UserApp) Update(c *gin.Context) {
var id request.GetUserID
if err := c.ShouldBindUri(&id); err != nil {
gu.ValidatorErrors(c, err)
return
}
var req request.CreateAndUpdateUser
if err := c.ShouldBindJSON(&req); err != nil {
gu.ValidatorErrors(c, err)
return
}
req.ID = &id.ID
if err := a.userService.Update(c, &req); err != nil {
gu.Failed(c, err.Error())
return
}
gu.Ok(c, "更新成功")
}
func (a *UserApp) Get(c *gin.Context) {
var id request.GetUserID
if err := c.ShouldBindUri(&id); err != nil {
gu.ValidatorErrors(c, err)
return
}
user, err := a.userService.Get(c, id.ID)
if err != nil {
if errors.Is(err, sqldb.ErrDBNotFound) {
gu.FailedWithCode(c, http.StatusNotFound, "用户不存在")
return
}
gu.Failed(c, err.Error())
return
}
gu.Ok(c, user)
}
func (a *UserApp) List(c *gin.Context) {
var req request.ListUser
if err := c.ShouldBindQuery(&req); err != nil {
gu.ValidatorErrors(c, err)
return
}
res, count, err := a.userService.List(c, req)
if err != nil {
gu.Failed(c, err.Error())
return
}
gu.Ok(c, gu.NewPageData(count, req.PageID, req.PageSize, res))
}