All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m31s
57 lines
2.4 KiB
Go
57 lines
2.4 KiB
Go
package iot_card_import
|
|
|
|
import (
|
|
"context"
|
|
"strconv"
|
|
|
|
"gorm.io/gorm"
|
|
|
|
infraAudit "github.com/break/junhong_cmp_fiber/internal/infrastructure/audit"
|
|
"github.com/break/junhong_cmp_fiber/internal/model"
|
|
"github.com/break/junhong_cmp_fiber/pkg/auditfailure"
|
|
"github.com/break/junhong_cmp_fiber/pkg/constants"
|
|
"github.com/break/junhong_cmp_fiber/pkg/middleware"
|
|
)
|
|
|
|
func (s *Service) writeImportTaskAudit(ctx context.Context, tx *gorm.DB, task *model.IotCardImportTask, before, after map[string]any, result, phase, errorCode, errorSummary string) error {
|
|
return s.auditWriter.WriteTask(ctx, tx, infraAudit.TaskInput{
|
|
EventID: infraAudit.TaskEventID(constants.AuditResourceIotCardImportTask, task.ID, phase),
|
|
ActionCode: constants.AuditActionIotCardImportTaskCreated, Summary: "创建 IoT 卡导入任务",
|
|
TaskID: task.ID, TaskNo: task.TaskNo,
|
|
Actor: infraAudit.ActorInput{
|
|
Kind: constants.AuditActorAccount, ID: strconv.FormatUint(uint64(middleware.GetUserIDFromContext(ctx)), 10),
|
|
Name: middleware.GetUsernameFromContext(ctx),
|
|
},
|
|
Source: constants.AuditSourceAdminAPI, ScopeType: constants.AuditScopePlatform,
|
|
Result: result, ErrorCode: errorCode, ErrorSummary: errorSummary,
|
|
IdentitySnapshot: map[string]any{
|
|
"id": task.ID, "task_no": task.TaskNo, "file_name": task.FileName,
|
|
"carrier_id": task.CarrierID, "carrier_name": task.CarrierName, "batch_no": task.BatchNo,
|
|
"card_category": task.CardCategory, "realname_policy": task.RealnamePolicy,
|
|
},
|
|
BeforeData: before, AfterData: after,
|
|
})
|
|
}
|
|
|
|
func (s *Service) recordImportTaskAudit(ctx context.Context, task *model.IotCardImportTask, before, after map[string]any, result, phase string, errorCode int, summary string) {
|
|
if s == nil || s.db == nil || s.auditWriter == nil || task == nil || task.TaskNo == "" {
|
|
return
|
|
}
|
|
code := strconv.Itoa(errorCode)
|
|
if err := s.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
|
return s.writeImportTaskAudit(ctx, tx, task, before, after, result, phase, code, summary)
|
|
}); err != nil {
|
|
auditfailure.RecordSecondaryWriteFailure(constants.AuditActionIotCardImportTaskCreated, task.TaskNo, "", task.TaskNo, code, err)
|
|
}
|
|
}
|
|
|
|
func importTaskState(task *model.IotCardImportTask) map[string]any {
|
|
if task == nil {
|
|
return nil
|
|
}
|
|
return map[string]any{
|
|
"status": task.Status, "total_count": task.TotalCount, "success_count": task.SuccessCount,
|
|
"skip_count": task.SkipCount, "fail_count": task.FailCount,
|
|
}
|
|
}
|