115 lines
2.3 KiB
Go
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))
|
|
}
|