创建批次时插入一条记录

This commit is contained in:
2025-10-05 18:28:16 +08:00
parent 9c35372720
commit 2aa0f09079
9 changed files with 145 additions and 26 deletions

View File

@@ -0,0 +1,47 @@
package controller
import (
"errors"
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
"github.com/gin-gonic/gin"
)
var (
// ErrUserNotFoundInContext 表示在 gin.Context 中未找到用户信息。
ErrUserNotFoundInContext = errors.New("context中未找到用户信息")
// ErrInvalidUserType 表示从 gin.Context 中获取的用户信息类型不正确。
ErrInvalidUserType = errors.New("context中用户信息类型不正确")
)
// GetOperatorIDFromContext 从 gin.Context 中提取操作者ID。
// 假设操作者ID是由 AuthMiddleware 存储到 context 中的 *models.User 对象的 ID 字段。
func GetOperatorIDFromContext(c *gin.Context) (uint, error) {
userVal, exists := c.Get(models.ContextUserKey.String())
if !exists {
return 0, ErrUserNotFoundInContext
}
user, ok := userVal.(*models.User)
if !ok {
return 0, ErrInvalidUserType
}
return user.ID, nil
}
// GetOperatorFromContext 从 gin.Context 中提取操作者。
// 假设操作者是由 AuthMiddleware 存储到 context 中的 *models.User 对象的 字段。
func GetOperatorFromContext(c *gin.Context) (*models.User, error) {
userVal, exists := c.Get(models.ContextUserKey.String())
if !exists {
return nil, ErrUserNotFoundInContext
}
user, ok := userVal.(*models.User)
if !ok {
return nil, ErrInvalidUserType
}
return user, nil
}

View File

@@ -45,7 +45,9 @@ func (c *PigBatchController) CreatePigBatch(ctx *gin.Context) {
return
}
respDTO, err := c.service.CreatePigBatch(&req)
userID, err := controller.GetOperatorIDFromContext(ctx)
respDTO, err := c.service.CreatePigBatch(userID, &req)
if err != nil {
c.logger.Errorf("%s: 业务逻辑失败: %v", action, err)
controller.SendErrorWithAudit(ctx, controller.CodeInternalError, "创建猪批次失败", action, "业务逻辑失败", req)