将状态码改成自定义码

This commit is contained in:
2025-09-14 13:23:16 +08:00
parent b0ce191aff
commit b3322fe367
4 changed files with 52 additions and 40 deletions

View File

@@ -2,7 +2,6 @@ package device
import (
"errors"
"net/http"
"strconv"
"strings"
"time"
@@ -112,7 +111,7 @@ func (c *Controller) CreateDevice(ctx *gin.Context) {
var req CreateDeviceRequest
if err := ctx.ShouldBindJSON(&req); err != nil {
c.logger.Errorf("创建设备: 参数绑定失败: %v", err)
controller.SendErrorResponse(ctx, http.StatusBadRequest, err.Error())
controller.SendErrorResponse(ctx, controller.CodeBadRequest, err.Error())
return
}
@@ -127,11 +126,11 @@ func (c *Controller) CreateDevice(ctx *gin.Context) {
if err := c.repo.Create(device); err != nil {
c.logger.Errorf("创建设备: 数据库操作失败: %v", err)
controller.SendErrorResponse(ctx, http.StatusInternalServerError, "创建设备失败")
controller.SendErrorResponse(ctx, controller.CodeInternalError, "创建设备失败")
return
}
controller.SendResponse(ctx, http.StatusCreated, "设备创建成功", newDeviceResponse(device))
controller.SendResponse(ctx, controller.CodeCreated, "设备创建成功", newDeviceResponse(device))
}
// GetDevice godoc
@@ -149,19 +148,19 @@ func (c *Controller) GetDevice(ctx *gin.Context) {
device, err := c.repo.FindByIDString(deviceID)
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
controller.SendErrorResponse(ctx, http.StatusNotFound, "设备未找到")
controller.SendErrorResponse(ctx, controller.CodeNotFound, "设备未找到")
return
}
if strings.Contains(err.Error(), "无效的设备ID格式") {
controller.SendErrorResponse(ctx, http.StatusBadRequest, err.Error())
controller.SendErrorResponse(ctx, controller.CodeBadRequest, err.Error())
return
}
c.logger.Errorf("获取设备: 数据库操作失败: %v", err)
controller.SendErrorResponse(ctx, http.StatusInternalServerError, "获取设备信息失败")
controller.SendErrorResponse(ctx, controller.CodeInternalError, "获取设备信息失败")
return
}
controller.SendResponse(ctx, http.StatusOK, "获取设备信息成功", newDeviceResponse(device))
controller.SendResponse(ctx, controller.CodeSuccess, "获取设备信息成功", newDeviceResponse(device))
}
// ListDevices godoc
@@ -176,11 +175,11 @@ func (c *Controller) ListDevices(ctx *gin.Context) {
devices, err := c.repo.ListAll()
if err != nil {
c.logger.Errorf("获取设备列表: 数据库操作失败: %v", err)
controller.SendErrorResponse(ctx, http.StatusInternalServerError, "获取设备列表失败")
controller.SendErrorResponse(ctx, controller.CodeInternalError, "获取设备列表失败")
return
}
controller.SendResponse(ctx, http.StatusOK, "获取设备列表成功", newListDeviceResponse(devices))
controller.SendResponse(ctx, controller.CodeSuccess, "获取设备列表成功", newListDeviceResponse(devices))
}
// UpdateDevice godoc
@@ -201,15 +200,15 @@ func (c *Controller) UpdateDevice(ctx *gin.Context) {
existingDevice, err := c.repo.FindByIDString(deviceID)
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
controller.SendErrorResponse(ctx, http.StatusNotFound, "设备未找到")
controller.SendErrorResponse(ctx, controller.CodeNotFound, "设备未找到")
return
}
if strings.Contains(err.Error(), "无效的设备ID格式") {
controller.SendErrorResponse(ctx, http.StatusBadRequest, err.Error())
controller.SendErrorResponse(ctx, controller.CodeBadRequest, err.Error())
return
}
c.logger.Errorf("更新设备: 查找设备失败: %v", err)
controller.SendErrorResponse(ctx, http.StatusInternalServerError, "更新设备失败")
controller.SendErrorResponse(ctx, controller.CodeInternalError, "更新设备失败")
return
}
@@ -217,7 +216,7 @@ func (c *Controller) UpdateDevice(ctx *gin.Context) {
var req UpdateDeviceRequest
if err := ctx.ShouldBindJSON(&req); err != nil {
c.logger.Errorf("更新设备: 参数绑定失败: %v", err)
controller.SendErrorResponse(ctx, http.StatusBadRequest, err.Error())
controller.SendErrorResponse(ctx, controller.CodeBadRequest, err.Error())
return
}
@@ -232,11 +231,11 @@ func (c *Controller) UpdateDevice(ctx *gin.Context) {
// 4. 将修改后的 existingDevice 对象保存回数据库
if err := c.repo.Update(existingDevice); err != nil {
c.logger.Errorf("更新设备: 数据库操作失败: %v", err)
controller.SendErrorResponse(ctx, http.StatusInternalServerError, "更新设备失败")
controller.SendErrorResponse(ctx, controller.CodeInternalError, "更新设备失败")
return
}
controller.SendResponse(ctx, http.StatusOK, "设备更新成功", newDeviceResponse(existingDevice))
controller.SendResponse(ctx, controller.CodeSuccess, "设备更新成功", newDeviceResponse(existingDevice))
}
// DeleteDevice godoc
@@ -254,15 +253,15 @@ func (c *Controller) DeleteDevice(ctx *gin.Context) {
// 我们需要先将字符串ID转换为uint因为Delete方法需要uint类型
idUint, err := strconv.ParseUint(deviceID, 10, 64)
if err != nil {
controller.SendErrorResponse(ctx, http.StatusBadRequest, "无效的设备ID格式")
controller.SendErrorResponse(ctx, controller.CodeBadRequest, "无效的设备ID格式")
return
}
if err := c.repo.Delete(uint(idUint)); err != nil {
c.logger.Errorf("删除设备: 数据库操作失败: %v", err)
controller.SendErrorResponse(ctx, http.StatusInternalServerError, "删除设备失败")
controller.SendErrorResponse(ctx, controller.CodeInternalError, "删除设备失败")
return
}
controller.SendResponse(ctx, http.StatusOK, "设备删除成功", nil)
controller.SendResponse(ctx, controller.CodeSuccess, "设备删除成功", nil)
}