9.8 KiB
-
internal/app/controller/user/user_controller.go(user.Controller)- 结构体改造:
- 移除
Controller结构体中的logger *logs.Logger成员。 - 新增
Ctx context.Context成员。
- 移除
- 构造函数改造 (
NewController):- 修改函数签名,移除
logger *logs.Logger参数,改为接收ctx context.Context。 - 将这个
Ctx赋值给Controller结构体的Ctx成员。
- 修改函数签名,移除
- 公共方法改造 (
CreateUser,Login,SendTestNotification):- 在每个方法入口处,从
echo.Context中提取request.Context()作为upstreamCtx。 - 使用
newCtx, logger := logs.Trace(upstreamCtx, c.Ctx, "MethodName")获取新的context.Context和logger实例。 - 将所有对
c.logger.Errorf和c.logger.Infof的调用替换为logger.Errorf和logger.Infof。 - 确保所有对
c.userService的调用都将newCtx作为第一个参数传递。
- 在每个方法入口处,从
- 结构体改造:
-
internal/app/controller/device/device_controller.go(device.Controller)- 结构体改造:
- 移除
Controller结构体中的logger *logs.Logger成员。 - 新增
Ctx context.Context成员。
- 移除
- 构造函数改造 (
NewController):- 修改函数签名,移除
logger *logs.Logger参数,改为接收ctx context.Context。 - 将这个
Ctx赋值给Controller结构体的Ctx成员。
- 修改函数签名,移除
- 公共方法改造 (
CreateDevice,GetDevice,ListDevices,UpdateDevice,DeleteDevice,ManualControl,CreateAreaController,GetAreaController,ListAreaControllers,UpdateAreaController,DeleteAreaController,CreateDeviceTemplate,GetDeviceTemplate,ListDeviceTemplates,UpdateDeviceTemplate,DeleteDeviceTemplate):- 在每个方法入口处,从
echo.Context中提取request.Context()作为upstreamCtx。 - 使用
newCtx, logger := logs.Trace(upstreamCtx, c.Ctx, "MethodName")获取新的context.Context和logger实例。 - 将所有对
c.logger.Errorf,c.logger.Warnf,c.logger.Infof的调用替换为logger.Errorf,logger.Warnf,logger.Infof。 - 确保所有对
c.deviceService的调用都将newCtx作为第一个参数传递。
- 在每个方法入口处,从
- 结构体改造:
-
internal/app/controller/plan/plan_controller.go(plan.Controller)- 结构体改造:
- 移除
Controller结构体中的logger *logs.Logger成员。 - 新增
Ctx context.Context成员。
- 移除
- 构造函数改造 (
NewController):- 修改函数签名,移除
logger *logs.Logger参数,改为接收ctx context.Context。 - 将这个
Ctx赋值给Controller结构体的Ctx成员。
- 修改函数签名,移除
- 公共方法改造 (
CreatePlan,GetPlan,ListPlans,UpdatePlan,DeletePlan,StartPlan,StopPlan):- 在每个方法入口处,从
echo.Context中提取request.Context()作为upstreamCtx。 - 使用
newCtx, logger := logs.Trace(upstreamCtx, c.Ctx, "MethodName")获取新的context.Context和logger实例。 - 将所有对
c.logger.Errorf和c.logger.Infof的调用替换为logger.Errorf和logger.Infof。 - 确保所有对
c.planService的调用都将newCtx作为第一个参数传递。
- 在每个方法入口处,从
- 结构体改造:
-
internal/app/controller/management/pig_farm_controller.go(management.PigFarmController)- 结构体改造:
- 移除
PigFarmController结构体中的logger *logs.Logger成员。 - 新增
Ctx context.Context成员。
- 移除
- 构造函数改造 (
NewPigFarmController):- 修改函数签名,移除
logger *logs.Logger参数,改为接收ctx context.Context。 - 将这个
Ctx赋值给PigFarmController结构体的Ctx成员。
- 修改函数签名,移除
- 公共方法改造 (
CreatePigHouse,GetPigHouse,ListPigHouses,UpdatePigHouse,DeletePigHouse,CreatePen,GetPen,ListPens,UpdatePen,DeletePen,UpdatePenStatus):- 在每个方法入口处,从
echo.Context中提取request.Context()作为upstreamCtx。 - 使用
newCtx, logger := logs.Trace(upstreamCtx, c.Ctx, "MethodName")获取新的context.Context和logger实例。 - 将所有对
c.logger.Errorf和c.logger.Infof的调用替换为logger.Errorf和logger.Infof。 - 确保所有对
c.service的调用都将newCtx作为第一个参数传递。
- 在每个方法入口处,从
- 结构体改造:
-
internal/app/controller/management/pig_batch_controller.go(management.PigBatchController)- 结构体改造:
- 移除
PigBatchController结构体中的logger *logs.Logger成员。 - 新增
Ctx context.Context成员。
- 移除
- 构造函数改造 (
NewPigBatchController):- 修改函数签名,移除
logger *logs.Logger参数,改为接收ctx context.Context。 - 将这个
Ctx赋值给PigBatchController结构体的Ctx成员。
- 修改函数签名,移除
- 公共方法改造 (
所有方法,例如
CreatePigBatch,GetPigBatch,UpdatePigBatch,DeletePigBatch,ListPigBatches,AssignEmptyPensToBatch,ReclassifyPenToNewBatch,RemoveEmptyPenFromBatch,MovePigsIntoPen):- 这些方法通过调用
controller_helpers.go中的handleAPIRequest...系列函数来处理请求。 - 确保传递给
handleAPIRequest...系列函数的serviceExecutor匿名函数,其签名与controller_helpers.go改造后期望的签名一致(即接收context.Context作为第一个参数)。 - 在
serviceExecutor匿名函数内部,将接收到的context.Context传递给c.service的相应方法。
- 这些方法通过调用
- 结构体改造:
-
internal/app/controller/management/controller_helpers.go- 修改
mapAndSendError函数中的c.logger.Errorf调用,改为从echo.Context中提取context.Context,并使用logs.Trace或logs.GetLogger获取logger实例进行日志记录。 - 检查其他函数是否直接或间接依赖
*PigBatchController的logger成员,并进行相应改造。
- 修改
-
internal/app/controller/management/pig_batch_trade_controller.go(management.PigBatchController)- 修改
NewController函数,移除logger参数,改为接收Ctx context.Context。 - 移除
Controller结构体中的logger成员,改为保存Ctx。 - 所有公共方法: 接收
echo.Context的方法,需要从中提取request.Context()作为upstreamCtx。
- 修改
-
internal/app/controller/management/pig_batch_health_controller.go(management.PigBatchController)- 修改
NewController函数,移除logger参数,改为接收Ctx context.Context。 - 移除
Controller结构体中的logger成员,改为保存Ctx。 - 所有公共方法: 接收
echo.Context的方法,需要从中提取request.Context()作为upstreamCtx。
- 修改
-
internal/app/controller/management/pig_batch_transfer_controller.go(management.PigBatchController)- 修改
NewController函数,移除logger参数,改为接收Ctx context.Context。 - 移除
Controller结构体中的logger成员,改为保存Ctx。 - 所有公共方法: 接收
echo.Context的方法,需要从中提取request.Context()作为upstreamCtx。
- 修改
-
internal/app/controller/monitor/monitor_controller.go(monitor.Controller)- 结构体改造:
- 移除
Controller结构体中的logger *logs.Logger成员。 - 新增
Ctx context.Context成员。
- 移除
- 构造函数改造 (
NewController):- 修改函数签名,移除
logger *logs.Logger参数,改为接收ctx context.Context。 - 将这个
Ctx赋值给Controller结构体的Ctx成员。
- 修改函数签名,移除
- 公共方法改造 (
所有方法,例如
ListSensorData,ListDeviceCommandLogs,ListPlanExecutionLogs,ListTaskExecutionLogs,ListPendingCollections,ListUserActionLogs,ListRawMaterialPurchases,ListRawMaterialStockLogs,ListFeedUsageRecords,ListMedicationLogs,ListPigBatchLogs,ListWeighingBatches,ListWeighingRecords,ListPigTransferLogs,ListPigSickLogs,ListPigPurchases,ListPigSales,ListNotifications):- 在每个方法入口处,从
echo.Context中提取request.Context()作为upstreamCtx。 - 使用
newCtx, logger := logs.Trace(upstreamCtx, c.Ctx, actionType)获取新的context.Context和logger实例(actionType为方法内部定义的常量)。 - 将所有对
c.logger.Errorf,c.logger.Warnf,c.logger.Infof的调用替换为logger.Errorf,logger.Warnf,logger.Infof。 - 确保所有对
c.monitorService的调用都将newCtx作为第一个参数传递。
- 在每个方法入口处,从
- 结构体改造:
-
internal/app/controller/response.go- 修改
SendSuccessWithAudit和SendErrorWithAudit函数签名,使其接收ctx context.Context作为第一个参数。 - 在
setAuditDetails函数中,如果需要,从传入的context.Context中提取调用链信息,并将其添加到审计信息中。
- 修改
-
internal/app/controller/auth_utils.go- 检查
GetOperatorIDFromContext和GetOperatorFromContext函数,确保它们能够正确地从echo.Context中获取request.Context(),并从中提取用户信息。
- 检查