Merge branch 'feat/1.4.0/badge' into test

This commit is contained in:
LinkinStars
2024-09-04 10:08:34 +08:00
2 changed files with 37 additions and 17 deletions
@@ -163,9 +163,7 @@ func (ns *NotificationService) countAllReviewAmount(ctx context.Context, req *sc
}
func (ns *NotificationService) ClearRedDot(ctx context.Context, req *schema.NotificationClearRequest) (*schema.RedDot, error) {
key := fmt.Sprintf(constant.RedDotCacheKey, req.NotificationType, req.UserID)
_ = ns.data.Cache.Del(ctx, key)
_ = ns.notificationCommon.DeleteRedDot(ctx, req.UserID, schema.NotificationType[req.NotificationType])
resp := &schema.GetRedDot{}
_ = copier.Copy(resp, req)
return ns.GetRedDot(ctx, resp)
@@ -203,19 +201,7 @@ func (ns *NotificationService) ClearIDUnRead(ctx context.Context, userID string,
log.Errorf("remove badge award alert cache failed: %v", err)
}
amount, err := ns.notificationRepo.CountNotificationByUser(ctx, &entity.Notification{
UserID: userID,
Type: notificationInfo.Type,
IsRead: schema.NotificationNotRead,
Status: schema.NotificationStatusNormal,
})
if err != nil {
log.Errorf("count notification failed: %v", err)
return nil
}
if amount == 0 {
_ = ns.notificationCommon.DeleteRedDot(ctx, userID, notificationInfo.Type)
}
_ = ns.notificationCommon.DecreaseRedDot(ctx, userID, notificationInfo.Type)
return nil
}
@@ -220,10 +220,44 @@ func (ns *NotificationCommon) addRedDot(ctx context.Context, userID string, noti
} else {
key = fmt.Sprintf(constant.RedDotCacheKey, constant.NotificationTypeAchievement, userID)
}
err := ns.data.Cache.SetInt64(ctx, key, 1, constant.RedDotCacheTime)
_, exist, err := ns.data.Cache.GetInt64(ctx, key)
if err != nil {
return errors.InternalServer(reason.UnknownError).WithError(err).WithStack()
}
if exist {
if _, err := ns.data.Cache.Increase(ctx, key, 1); err != nil {
return errors.InternalServer(reason.UnknownError).WithError(err).WithStack()
}
return nil
}
err = ns.data.Cache.SetInt64(ctx, key, 1, constant.RedDotCacheTime)
if err != nil {
return errors.InternalServer(reason.UnknownError).WithError(err).WithStack()
}
return nil
}
func (ns *NotificationCommon) DecreaseRedDot(ctx context.Context, userID string, notificationType int) error {
var key string
if notificationType == schema.NotificationTypeInbox {
key = fmt.Sprintf(constant.RedDotCacheKey, constant.NotificationTypeInbox, userID)
} else {
key = fmt.Sprintf(constant.RedDotCacheKey, constant.NotificationTypeAchievement, userID)
}
_, exist, err := ns.data.Cache.GetInt64(ctx, key)
if err != nil {
return errors.InternalServer(reason.UnknownError).WithError(err).WithStack()
}
if !exist {
return nil
}
res, err := ns.data.Cache.Decrease(ctx, key, 1)
if err != nil {
return errors.InternalServer(reason.UnknownError).WithError(err).WithStack()
}
if res <= 0 {
return ns.DeleteRedDot(ctx, userID, notificationType)
}
return nil
}