将状态码改成自定义码
This commit is contained in:
		| @@ -2,7 +2,6 @@ package device | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"errors" | 	"errors" | ||||||
| 	"net/http" |  | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"time" | 	"time" | ||||||
| @@ -112,7 +111,7 @@ func (c *Controller) CreateDevice(ctx *gin.Context) { | |||||||
| 	var req CreateDeviceRequest | 	var req CreateDeviceRequest | ||||||
| 	if err := ctx.ShouldBindJSON(&req); err != nil { | 	if err := ctx.ShouldBindJSON(&req); err != nil { | ||||||
| 		c.logger.Errorf("创建设备: 参数绑定失败: %v", err) | 		c.logger.Errorf("创建设备: 参数绑定失败: %v", err) | ||||||
| 		controller.SendErrorResponse(ctx, http.StatusBadRequest, err.Error()) | 		controller.SendErrorResponse(ctx, controller.CodeBadRequest, err.Error()) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -127,11 +126,11 @@ func (c *Controller) CreateDevice(ctx *gin.Context) { | |||||||
|  |  | ||||||
| 	if err := c.repo.Create(device); err != nil { | 	if err := c.repo.Create(device); err != nil { | ||||||
| 		c.logger.Errorf("创建设备: 数据库操作失败: %v", err) | 		c.logger.Errorf("创建设备: 数据库操作失败: %v", err) | ||||||
| 		controller.SendErrorResponse(ctx, http.StatusInternalServerError, "创建设备失败") | 		controller.SendErrorResponse(ctx, controller.CodeInternalError, "创建设备失败") | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	controller.SendResponse(ctx, http.StatusCreated, "设备创建成功", newDeviceResponse(device)) | 	controller.SendResponse(ctx, controller.CodeCreated, "设备创建成功", newDeviceResponse(device)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetDevice godoc | // GetDevice godoc | ||||||
| @@ -149,19 +148,19 @@ func (c *Controller) GetDevice(ctx *gin.Context) { | |||||||
| 	device, err := c.repo.FindByIDString(deviceID) | 	device, err := c.repo.FindByIDString(deviceID) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		if errors.Is(err, gorm.ErrRecordNotFound) { | 		if errors.Is(err, gorm.ErrRecordNotFound) { | ||||||
| 			controller.SendErrorResponse(ctx, http.StatusNotFound, "设备未找到") | 			controller.SendErrorResponse(ctx, controller.CodeNotFound, "设备未找到") | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| 		if strings.Contains(err.Error(), "无效的设备ID格式") { | 		if strings.Contains(err.Error(), "无效的设备ID格式") { | ||||||
| 			controller.SendErrorResponse(ctx, http.StatusBadRequest, err.Error()) | 			controller.SendErrorResponse(ctx, controller.CodeBadRequest, err.Error()) | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| 		c.logger.Errorf("获取设备: 数据库操作失败: %v", err) | 		c.logger.Errorf("获取设备: 数据库操作失败: %v", err) | ||||||
| 		controller.SendErrorResponse(ctx, http.StatusInternalServerError, "获取设备信息失败") | 		controller.SendErrorResponse(ctx, controller.CodeInternalError, "获取设备信息失败") | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	controller.SendResponse(ctx, http.StatusOK, "获取设备信息成功", newDeviceResponse(device)) | 	controller.SendResponse(ctx, controller.CodeSuccess, "获取设备信息成功", newDeviceResponse(device)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // ListDevices godoc | // ListDevices godoc | ||||||
| @@ -176,11 +175,11 @@ func (c *Controller) ListDevices(ctx *gin.Context) { | |||||||
| 	devices, err := c.repo.ListAll() | 	devices, err := c.repo.ListAll() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		c.logger.Errorf("获取设备列表: 数据库操作失败: %v", err) | 		c.logger.Errorf("获取设备列表: 数据库操作失败: %v", err) | ||||||
| 		controller.SendErrorResponse(ctx, http.StatusInternalServerError, "获取设备列表失败") | 		controller.SendErrorResponse(ctx, controller.CodeInternalError, "获取设备列表失败") | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	controller.SendResponse(ctx, http.StatusOK, "获取设备列表成功", newListDeviceResponse(devices)) | 	controller.SendResponse(ctx, controller.CodeSuccess, "获取设备列表成功", newListDeviceResponse(devices)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // UpdateDevice godoc | // UpdateDevice godoc | ||||||
| @@ -201,15 +200,15 @@ func (c *Controller) UpdateDevice(ctx *gin.Context) { | |||||||
| 	existingDevice, err := c.repo.FindByIDString(deviceID) | 	existingDevice, err := c.repo.FindByIDString(deviceID) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		if errors.Is(err, gorm.ErrRecordNotFound) { | 		if errors.Is(err, gorm.ErrRecordNotFound) { | ||||||
| 			controller.SendErrorResponse(ctx, http.StatusNotFound, "设备未找到") | 			controller.SendErrorResponse(ctx, controller.CodeNotFound, "设备未找到") | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| 		if strings.Contains(err.Error(), "无效的设备ID格式") { | 		if strings.Contains(err.Error(), "无效的设备ID格式") { | ||||||
| 			controller.SendErrorResponse(ctx, http.StatusBadRequest, err.Error()) | 			controller.SendErrorResponse(ctx, controller.CodeBadRequest, err.Error()) | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| 		c.logger.Errorf("更新设备: 查找设备失败: %v", err) | 		c.logger.Errorf("更新设备: 查找设备失败: %v", err) | ||||||
| 		controller.SendErrorResponse(ctx, http.StatusInternalServerError, "更新设备失败") | 		controller.SendErrorResponse(ctx, controller.CodeInternalError, "更新设备失败") | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -217,7 +216,7 @@ func (c *Controller) UpdateDevice(ctx *gin.Context) { | |||||||
| 	var req UpdateDeviceRequest | 	var req UpdateDeviceRequest | ||||||
| 	if err := ctx.ShouldBindJSON(&req); err != nil { | 	if err := ctx.ShouldBindJSON(&req); err != nil { | ||||||
| 		c.logger.Errorf("更新设备: 参数绑定失败: %v", err) | 		c.logger.Errorf("更新设备: 参数绑定失败: %v", err) | ||||||
| 		controller.SendErrorResponse(ctx, http.StatusBadRequest, err.Error()) | 		controller.SendErrorResponse(ctx, controller.CodeBadRequest, err.Error()) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -232,11 +231,11 @@ func (c *Controller) UpdateDevice(ctx *gin.Context) { | |||||||
| 	// 4. 将修改后的 existingDevice 对象保存回数据库 | 	// 4. 将修改后的 existingDevice 对象保存回数据库 | ||||||
| 	if err := c.repo.Update(existingDevice); err != nil { | 	if err := c.repo.Update(existingDevice); err != nil { | ||||||
| 		c.logger.Errorf("更新设备: 数据库操作失败: %v", err) | 		c.logger.Errorf("更新设备: 数据库操作失败: %v", err) | ||||||
| 		controller.SendErrorResponse(ctx, http.StatusInternalServerError, "更新设备失败") | 		controller.SendErrorResponse(ctx, controller.CodeInternalError, "更新设备失败") | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	controller.SendResponse(ctx, http.StatusOK, "设备更新成功", newDeviceResponse(existingDevice)) | 	controller.SendResponse(ctx, controller.CodeSuccess, "设备更新成功", newDeviceResponse(existingDevice)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // DeleteDevice godoc | // DeleteDevice godoc | ||||||
| @@ -254,15 +253,15 @@ func (c *Controller) DeleteDevice(ctx *gin.Context) { | |||||||
| 	// 我们需要先将字符串ID转换为uint,因为Delete方法需要uint类型 | 	// 我们需要先将字符串ID转换为uint,因为Delete方法需要uint类型 | ||||||
| 	idUint, err := strconv.ParseUint(deviceID, 10, 64) | 	idUint, err := strconv.ParseUint(deviceID, 10, 64) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		controller.SendErrorResponse(ctx, http.StatusBadRequest, "无效的设备ID格式") | 		controller.SendErrorResponse(ctx, controller.CodeBadRequest, "无效的设备ID格式") | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if err := c.repo.Delete(uint(idUint)); err != nil { | 	if err := c.repo.Delete(uint(idUint)); err != nil { | ||||||
| 		c.logger.Errorf("删除设备: 数据库操作失败: %v", err) | 		c.logger.Errorf("删除设备: 数据库操作失败: %v", err) | ||||||
| 		controller.SendErrorResponse(ctx, http.StatusInternalServerError, "删除设备失败") | 		controller.SendErrorResponse(ctx, controller.CodeInternalError, "删除设备失败") | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	controller.SendResponse(ctx, http.StatusOK, "设备删除成功", nil) | 	controller.SendResponse(ctx, controller.CodeSuccess, "设备删除成功", nil) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,8 +1,6 @@ | |||||||
| package plan | package plan | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"net/http" |  | ||||||
|  |  | ||||||
| 	"git.huangwc.com/pig/pig-farm-controller/internal/app/controller" | 	"git.huangwc.com/pig/pig-farm-controller/internal/app/controller" | ||||||
| 	"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs" | 	"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs" | ||||||
| 	"git.huangwc.com/pig/pig-farm-controller/internal/infra/repository" | 	"git.huangwc.com/pig/pig-farm-controller/internal/infra/repository" | ||||||
| @@ -72,7 +70,7 @@ func NewController(logger *logs.Logger, planRepo repository.PlanRepository) *Con | |||||||
| func (pc *Controller) CreatePlan(c *gin.Context) { | func (pc *Controller) CreatePlan(c *gin.Context) { | ||||||
| 	// 占位符:此处应调用服务层或仓库层来创建计划 | 	// 占位符:此处应调用服务层或仓库层来创建计划 | ||||||
| 	pc.logger.Infof("收到创建计划请求 (占位符)") | 	pc.logger.Infof("收到创建计划请求 (占位符)") | ||||||
| 	controller.SendResponse(c, http.StatusCreated, "创建计划接口占位符", PlanResponse{ID: 0, Name: "占位计划"}) | 	controller.SendResponse(c, controller.CodeCreated, "创建计划接口占位符", PlanResponse{ID: 0, Name: "占位计划"}) | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetPlan godoc | // GetPlan godoc | ||||||
| @@ -87,7 +85,7 @@ func (pc *Controller) CreatePlan(c *gin.Context) { | |||||||
| func (pc *Controller) GetPlan(c *gin.Context) { | func (pc *Controller) GetPlan(c *gin.Context) { | ||||||
| 	// 占位符:此处应调用服务层或仓库层来获取计划 | 	// 占位符:此处应调用服务层或仓库层来获取计划 | ||||||
| 	pc.logger.Infof("收到获取计划 (占位符)") | 	pc.logger.Infof("收到获取计划 (占位符)") | ||||||
| 	controller.SendResponse(c, http.StatusOK, "获取计划接口占位符", ListPlansResponse{Plans: []PlanResponse{}, Total: 0}) | 	controller.SendResponse(c, controller.CodeSuccess, "获取计划接口占位符", ListPlansResponse{Plans: []PlanResponse{}, Total: 0}) | ||||||
|  |  | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -102,7 +100,7 @@ func (pc *Controller) GetPlan(c *gin.Context) { | |||||||
| func (pc *Controller) ListPlans(c *gin.Context) { | func (pc *Controller) ListPlans(c *gin.Context) { | ||||||
| 	// 占位符:此处应调用服务层或仓库层来获取计划列表 | 	// 占位符:此处应调用服务层或仓库层来获取计划列表 | ||||||
| 	pc.logger.Infof("收到获取计划列表请求 (占位符)") | 	pc.logger.Infof("收到获取计划列表请求 (占位符)") | ||||||
| 	controller.SendResponse(c, http.StatusOK, "获取计划列表接口占位符", ListPlansResponse{Plans: []PlanResponse{}, Total: 0}) | 	controller.SendResponse(c, controller.CodeSuccess, "获取计划列表接口占位符", ListPlansResponse{Plans: []PlanResponse{}, Total: 0}) | ||||||
| } | } | ||||||
|  |  | ||||||
| // UpdatePlan godoc | // UpdatePlan godoc | ||||||
| @@ -119,7 +117,7 @@ func (pc *Controller) ListPlans(c *gin.Context) { | |||||||
| func (pc *Controller) UpdatePlan(c *gin.Context) { | func (pc *Controller) UpdatePlan(c *gin.Context) { | ||||||
| 	// 占位符:此处应调用服务层或仓库层来更新计划 | 	// 占位符:此处应调用服务层或仓库层来更新计划 | ||||||
| 	pc.logger.Infof("收到更新计划请求 (占位符)") | 	pc.logger.Infof("收到更新计划请求 (占位符)") | ||||||
| 	controller.SendResponse(c, http.StatusOK, "更新计划接口占位符", PlanResponse{ID: 0, Name: "占位计划"}) | 	controller.SendResponse(c, controller.CodeSuccess, "更新计划接口占位符", PlanResponse{ID: 0, Name: "占位计划"}) | ||||||
| } | } | ||||||
|  |  | ||||||
| // DeletePlan godoc | // DeletePlan godoc | ||||||
| @@ -134,7 +132,7 @@ func (pc *Controller) UpdatePlan(c *gin.Context) { | |||||||
| func (pc *Controller) DeletePlan(c *gin.Context) { | func (pc *Controller) DeletePlan(c *gin.Context) { | ||||||
| 	// 占位符:此处应调用服务层或仓库层来删除计划 | 	// 占位符:此处应调用服务层或仓库层来删除计划 | ||||||
| 	pc.logger.Infof("收到删除计划请求 (占位符)") | 	pc.logger.Infof("收到删除计划请求 (占位符)") | ||||||
| 	controller.SendResponse(c, http.StatusOK, "删除计划接口占位符", nil) | 	controller.SendResponse(c, controller.CodeSuccess, "删除计划接口占位符", nil) | ||||||
| } | } | ||||||
|  |  | ||||||
| // StartPlan godoc | // StartPlan godoc | ||||||
| @@ -149,7 +147,7 @@ func (pc *Controller) DeletePlan(c *gin.Context) { | |||||||
| func (pc *Controller) StartPlan(c *gin.Context) { | func (pc *Controller) StartPlan(c *gin.Context) { | ||||||
| 	// 占位符:此处应调用服务层或仓库层来启动计划 | 	// 占位符:此处应调用服务层或仓库层来启动计划 | ||||||
| 	pc.logger.Infof("收到启动计划请求 (占位符)") | 	pc.logger.Infof("收到启动计划请求 (占位符)") | ||||||
| 	controller.SendResponse(c, http.StatusOK, "启动计划接口占位符", nil) | 	controller.SendResponse(c, controller.CodeSuccess, "启动计划接口占位符", nil) | ||||||
| } | } | ||||||
|  |  | ||||||
| // StopPlan godoc | // StopPlan godoc | ||||||
| @@ -164,5 +162,5 @@ func (pc *Controller) StartPlan(c *gin.Context) { | |||||||
| func (pc *Controller) StopPlan(c *gin.Context) { | func (pc *Controller) StopPlan(c *gin.Context) { | ||||||
| 	// 占位符:此处应调用服务层或仓库层来停止计划 | 	// 占位符:此处应调用服务层或仓库层来停止计划 | ||||||
| 	pc.logger.Infof("收到停止计划请求 (占位符)") | 	pc.logger.Infof("收到停止计划请求 (占位符)") | ||||||
| 	controller.SendResponse(c, http.StatusOK, "停止计划接口占位符", nil) | 	controller.SendResponse(c, controller.CodeSuccess, "停止计划接口占位符", nil) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -7,6 +7,23 @@ import ( | |||||||
| 	"github.com/gin-gonic/gin" | 	"github.com/gin-gonic/gin" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | // --- 业务状态码 --- | ||||||
|  | const ( | ||||||
|  | 	// 成功状态码 (2000-2999) | ||||||
|  | 	CodeSuccess = 2000 // 操作成功 | ||||||
|  | 	CodeCreated = 2001 // 创建成功 | ||||||
|  |  | ||||||
|  | 	// 客户端错误状态码 (4000-4999) | ||||||
|  | 	CodeBadRequest   = 4000 // 请求参数错误 | ||||||
|  | 	CodeUnauthorized = 4001 // 未授权 | ||||||
|  | 	CodeNotFound     = 4004 // 资源未找到 | ||||||
|  | 	CodeConflict     = 4009 // 资源冲突 | ||||||
|  |  | ||||||
|  | 	// 服务器错误状态码 (5000-5999) | ||||||
|  | 	CodeInternalError      = 5000 // 服务器内部错误 | ||||||
|  | 	CodeServiceUnavailable = 5003 // 服务不可用 | ||||||
|  | ) | ||||||
|  |  | ||||||
| // --- 通用响应结构 --- | // --- 通用响应结构 --- | ||||||
|  |  | ||||||
| // Response 定义统一的API响应结构体 | // Response 定义统一的API响应结构体 | ||||||
|   | |||||||
| @@ -1,8 +1,6 @@ | |||||||
| package user | package user | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"net/http" |  | ||||||
|  |  | ||||||
| 	"git.huangwc.com/pig/pig-farm-controller/internal/app/controller" | 	"git.huangwc.com/pig/pig-farm-controller/internal/app/controller" | ||||||
| 	"git.huangwc.com/pig/pig-farm-controller/internal/app/service/token" | 	"git.huangwc.com/pig/pig-farm-controller/internal/app/service/token" | ||||||
| 	"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs" | 	"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs" | ||||||
| @@ -67,7 +65,7 @@ func (c *Controller) CreateUser(ctx *gin.Context) { | |||||||
| 	var req CreateUserRequest | 	var req CreateUserRequest | ||||||
| 	if err := ctx.ShouldBindJSON(&req); err != nil { | 	if err := ctx.ShouldBindJSON(&req); err != nil { | ||||||
| 		c.logger.Errorf("创建用户: 参数绑定失败: %v", err) | 		c.logger.Errorf("创建用户: 参数绑定失败: %v", err) | ||||||
| 		controller.SendErrorResponse(ctx, http.StatusBadRequest, err.Error()) | 		controller.SendErrorResponse(ctx, controller.CodeBadRequest, err.Error()) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -82,16 +80,16 @@ func (c *Controller) CreateUser(ctx *gin.Context) { | |||||||
| 		// 尝试查询用户,以判断是否是用户名重复导致的错误 | 		// 尝试查询用户,以判断是否是用户名重复导致的错误 | ||||||
| 		_, findErr := c.userRepo.FindByUsername(req.Username) | 		_, findErr := c.userRepo.FindByUsername(req.Username) | ||||||
| 		if findErr == nil { // 如果能找到用户,说明是用户名重复 | 		if findErr == nil { // 如果能找到用户,说明是用户名重复 | ||||||
| 			controller.SendErrorResponse(ctx, http.StatusConflict, "用户名已存在") | 			controller.SendErrorResponse(ctx, controller.CodeConflict, "用户名已存在") | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		// 其他创建失败的情况 | 		// 其他创建失败的情况 | ||||||
| 		controller.SendErrorResponse(ctx, http.StatusInternalServerError, "创建用户失败") | 		controller.SendErrorResponse(ctx, controller.CodeInternalError, "创建用户失败") | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	controller.SendResponse(ctx, http.StatusCreated, "用户创建成功", CreateUserResponse{ | 	controller.SendResponse(ctx, controller.CodeCreated, "用户创建成功", CreateUserResponse{ | ||||||
| 		Username: user.Username, | 		Username: user.Username, | ||||||
| 		ID:       user.ID, | 		ID:       user.ID, | ||||||
| 	}) | 	}) | ||||||
| @@ -111,23 +109,23 @@ func (c *Controller) Login(ctx *gin.Context) { | |||||||
| 	var req LoginRequest | 	var req LoginRequest | ||||||
| 	if err := ctx.ShouldBindJSON(&req); err != nil { | 	if err := ctx.ShouldBindJSON(&req); err != nil { | ||||||
| 		c.logger.Errorf("登录: 参数绑定失败: %v", err) | 		c.logger.Errorf("登录: 参数绑定失败: %v", err) | ||||||
| 		controller.SendErrorResponse(ctx, http.StatusBadRequest, err.Error()) | 		controller.SendErrorResponse(ctx, controller.CodeBadRequest, err.Error()) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	user, err := c.userRepo.FindByUsername(req.Username) | 	user, err := c.userRepo.FindByUsername(req.Username) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		if err == gorm.ErrRecordNotFound { | 		if err == gorm.ErrRecordNotFound { | ||||||
| 			controller.SendErrorResponse(ctx, http.StatusUnauthorized, "用户名或密码不正确") | 			controller.SendErrorResponse(ctx, controller.CodeUnauthorized, "用户名或密码不正确") | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| 		c.logger.Errorf("登录: 查询用户失败: %v", err) | 		c.logger.Errorf("登录: 查询用户失败: %v", err) | ||||||
| 		controller.SendErrorResponse(ctx, http.StatusInternalServerError, "登录失败") | 		controller.SendErrorResponse(ctx, controller.CodeInternalError, "登录失败") | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if !user.CheckPassword(req.Password) { | 	if !user.CheckPassword(req.Password) { | ||||||
| 		controller.SendErrorResponse(ctx, http.StatusUnauthorized, "用户名或密码不正确") | 		controller.SendErrorResponse(ctx, controller.CodeUnauthorized, "用户名或密码不正确") | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -135,11 +133,11 @@ func (c *Controller) Login(ctx *gin.Context) { | |||||||
| 	tokenString, err := c.tokenService.GenerateToken(user.ID) | 	tokenString, err := c.tokenService.GenerateToken(user.ID) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		c.logger.Errorf("登录: 生成令牌失败: %v", err) | 		c.logger.Errorf("登录: 生成令牌失败: %v", err) | ||||||
| 		controller.SendErrorResponse(ctx, http.StatusInternalServerError, "登录失败,无法生成认证信息") | 		controller.SendErrorResponse(ctx, controller.CodeInternalError, "登录失败,无法生成认证信息") | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	controller.SendResponse(ctx, http.StatusOK, "登录成功", LoginResponse{ | 	controller.SendResponse(ctx, controller.CodeSuccess, "登录成功", LoginResponse{ | ||||||
| 		Username: user.Username, | 		Username: user.Username, | ||||||
| 		ID:       user.ID, | 		ID:       user.ID, | ||||||
| 		Token:    tokenString, | 		Token:    tokenString, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user