补齐相关日志日志

This commit is contained in:
2026-09-16 00:23:49 +08:00
parent 8c2ea84939
commit b2e5eef3c8
39 changed files with 1576 additions and 176 deletions
+31 -3
View File
@@ -61,6 +61,7 @@ func (s *ClosetShareService) Create(ctx context.Context, userID int64, request *
case ShareTypeSnapshot:
ids, err := s.allUserClothesIDs(ctx, userID)
if err != nil {
slog.ErrorContext(ctx, "closet share create: list user clothes failed", "user_id", userID, "error", err)
return nil, errcode.DatabaseError
}
clothesIDs = ids
@@ -70,6 +71,11 @@ func (s *ClosetShareService) Create(ctx context.Context, userID int64, request *
// 2. 消耗衣柜分享每日额度。
if qerr := consumeDailyQuota(ctx, userID, QuotaTypeClosetShare, 1, "衣柜分享消耗"); qerr != nil {
if qerr == errcode.QuotaInsufficient {
slog.InfoContext(ctx, "closet share create: quota insufficient", "user_id", userID)
} else {
slog.ErrorContext(ctx, "closet share create: consume quota failed", "user_id", userID, "error", qerr)
}
return nil, qerr
}
@@ -89,6 +95,8 @@ func (s *ClosetShareService) Create(ctx context.Context, userID int64, request *
}
return nil
}); err != nil {
slog.ErrorContext(ctx, "closet share create: transaction failed",
"user_id", userID, "share_uuid", shareUUID, "error", err)
refundDailyQuota(ctx, userID, QuotaTypeClosetShare, 1)
return nil, errcode.DatabaseError
}
@@ -99,9 +107,13 @@ func (s *ClosetShareService) Create(ctx context.Context, userID int64, request *
AuditResult: AuditResultPass,
AuditTime: nowUnix(),
}); err != nil {
slog.WarnContext(ctx, "write closet audit log failed", "share_id", share.ID, "error", err)
slog.WarnContext(ctx, "write closet audit log failed",
"share_id", share.ID, "share_uuid", shareUUID, "error", err)
}
slog.InfoContext(ctx, "closet share created",
"user_id", userID, "share_uuid", shareUUID, "share_type", request.ShareType, "clothes_count", len(clothesIDs))
return &dto.ClosetShareCreateResponse{ShareUUID: shareUUID}, nil
}
@@ -115,6 +127,7 @@ func (s *ClosetShareService) Detail(ctx context.Context, userID int64, shareUUID
if isNotFound(err) {
return nil, errcode.ShareNotFound
}
slog.ErrorContext(ctx, "closet share detail: query share failed", "share_uuid", shareUUID, "error", err)
return nil, errcode.DatabaseError
}
@@ -129,7 +142,9 @@ func (s *ClosetShareService) Detail(ctx context.Context, userID int64, shareUUID
}
// 时间过期校验。
if share.ExpireTime > 0 && nowUnix() > share.ExpireTime {
_ = s.shareDao.ClosetShareUpdateStatus(ctx, shareUUID, ShareStatusExpired)
if uerr := s.shareDao.ClosetShareUpdateStatus(ctx, shareUUID, ShareStatusExpired); uerr != nil {
slog.WarnContext(ctx, "closet share detail: mark expired failed", "share_uuid", shareUUID, "error", uerr)
}
return nil, errcode.ShareExpired
}
@@ -137,7 +152,9 @@ func (s *ClosetShareService) Detail(ctx context.Context, userID int64, shareUUID
// 访问计数(访客计入)。
if !isOwner {
_, _ = redisdao.ClosetShareViewIncr(ctx, shareUUID)
if _, verr := redisdao.ClosetShareViewIncr(ctx, shareUUID); verr != nil {
slog.DebugContext(ctx, "closet share detail: incr view count failed", "share_uuid", shareUUID, "error", verr)
}
}
// 加载分享的衣物。
@@ -170,6 +187,9 @@ func (s *ClosetShareService) Detail(ctx context.Context, userID int64, shareUUID
if owner, oerr := s.userDao.UserGetByID(ctx, share.UserID); oerr == nil {
ownerName = owner.Username
ownerAvatar = upload.AvatarURL(owner.Avatar)
} else {
slog.DebugContext(ctx, "closet share detail: get owner info failed",
"share_uuid", shareUUID, "owner_id", share.UserID, "error", oerr)
}
return &dto.ClosetShareDetailResponse{
@@ -294,14 +314,21 @@ func (s *ClosetShareService) Cancel(ctx context.Context, userID int64, request *
if isNotFound(err) {
return nil, errcode.ShareNotFound
}
slog.ErrorContext(ctx, "closet share cancel: query share failed",
"share_uuid", request.ShareUUID, "user_id", userID, "error", err)
return nil, errcode.DatabaseError
}
if share.UserID != userID {
slog.InfoContext(ctx, "closet share cancel: permission denied",
"share_uuid", request.ShareUUID, "user_id", userID, "owner_id", share.UserID)
return nil, errcode.Forbidden
}
if err := s.shareDao.ClosetShareUpdateStatus(ctx, request.ShareUUID, ShareStatusCancelled); err != nil {
slog.ErrorContext(ctx, "closet share cancel: update status failed",
"share_uuid", request.ShareUUID, "user_id", userID, "error", err)
return nil, errcode.DatabaseError
}
slog.InfoContext(ctx, "closet share cancelled", "share_uuid", request.ShareUUID, "user_id", userID)
return &dto.CollectResponse{}, nil
}
@@ -321,6 +348,7 @@ func (s *ClosetShareService) resolveOwnedClothesIDs(ctx context.Context, userID
clothesList, err := s.clothesDao.ClothesGetByUUIDs(ctx, dedup)
if err != nil {
slog.ErrorContext(ctx, "closet share: query clothes failed", "user_id", userID, "error", err)
return nil, errcode.DatabaseError
}
byUUID := make(map[string]mysqlmodel.Clothes, len(clothesList))