记录任务下发历史和接收是否成功

This commit is contained in:
2025-09-25 00:17:01 +08:00
parent 6b931648dc
commit e2e21601f4
7 changed files with 161 additions and 29 deletions

View File

@@ -0,0 +1,52 @@
package repository
import (
"time"
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
"gorm.io/gorm"
)
// DeviceCommandLogRepository 定义了设备下行命令历史记录的数据访问接口
type DeviceCommandLogRepository interface {
Create(record *models.DeviceCommandLog) error
FindByMessageID(messageID string) (*models.DeviceCommandLog, error)
// UpdateAcknowledgedAt 用于更新指定 MessageID 的下行命令记录的确认时间及接收成功状态。
// AcknowledgedAt 和 ReceivedSuccess 字段会被更新。
UpdateAcknowledgedAt(messageID string, acknowledgedAt time.Time, receivedSuccess bool) error
}
// gormDeviceCommandLogRepository 是 DeviceCommandLogRepository 接口的 GORM 实现
type gormDeviceCommandLogRepository struct {
db *gorm.DB
}
// NewGormDeviceCommandLogRepository 创建一个新的 DeviceCommandLogRepository GORM 实现
func NewGormDeviceCommandLogRepository(db *gorm.DB) DeviceCommandLogRepository {
return &gormDeviceCommandLogRepository{db: db}
}
// Create 实现 DeviceCommandLogRepository 接口的 Create 方法
func (r *gormDeviceCommandLogRepository) Create(record *models.DeviceCommandLog) error {
return r.db.Create(record).Error
}
// FindByMessageID 实现 DeviceCommandLogRepository 接口的 FindByMessageID 方法
func (r *gormDeviceCommandLogRepository) FindByMessageID(messageID string) (*models.DeviceCommandLog, error) {
var record models.DeviceCommandLog
if err := r.db.Where("message_id = ?", messageID).First(&record).Error; err != nil {
return nil, err
}
return &record, nil
}
// UpdateAcknowledgedAt 实现 DeviceCommandLogRepository 接口的 UpdateAcknowledgedAt 方法
func (r *gormDeviceCommandLogRepository) UpdateAcknowledgedAt(messageID string, acknowledgedAt time.Time, receivedSuccess bool) error {
// 使用 Updates 方法更新指定字段
return r.db.Model(&models.DeviceCommandLog{}).
Where("message_id = ?", messageID).
Updates(map[string]interface{}{
"acknowledged_at": acknowledgedAt,
"received_success": receivedSuccess,
}).Error
}