48 lines
1.9 KiB
C#
48 lines
1.9 KiB
C#
using System.Collections.Generic;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace LiveForum.IService.Flowers
|
||
{
|
||
/// <summary>
|
||
/// 送花服务接口
|
||
/// </summary>
|
||
public interface IFlowerService
|
||
{
|
||
/// <summary>
|
||
/// 检查是否可以送花(1小时限制检查,优先Redis)
|
||
/// </summary>
|
||
/// <param name="userId">用户ID</param>
|
||
/// <param name="targetType">目标类型:Streamer(主播)/Post(帖子)</param>
|
||
/// <param name="targetId">目标ID</param>
|
||
/// <returns>是否可以送花</returns>
|
||
Task<bool> CanSendFlowerAsync(long userId, string targetType, long targetId);
|
||
|
||
/// <summary>
|
||
/// 获取花数(优先Redis,再查数据库)
|
||
/// </summary>
|
||
/// <param name="targetType">目标类型:Streamer(主播)/Post(帖子)</param>
|
||
/// <param name="targetId">目标ID</param>
|
||
/// <returns>花数</returns>
|
||
Task<int> GetFlowerCountAsync(string targetType, long targetId);
|
||
|
||
/// <summary>
|
||
/// 批量查询花数(仅Post类型)
|
||
/// </summary>
|
||
/// <param name="targetType">目标类型:Streamer(主播)/Post(帖子)</param>
|
||
/// <param name="targetIds">目标ID列表</param>
|
||
/// <returns>目标ID到花数的映射</returns>
|
||
Task<Dictionary<long, int>> BatchGetFlowerCountAsync(string targetType, List<long> targetIds);
|
||
|
||
/// <summary>
|
||
/// 执行送花操作(Redis+队列)
|
||
/// </summary>
|
||
/// <param name="userId">用户ID</param>
|
||
/// <param name="targetType">目标类型:Streamer(主播)/Post(帖子)</param>
|
||
/// <param name="targetId">目标ID</param>
|
||
/// <param name="receiverId">接收者ID(用于消息通知)</param>
|
||
/// <returns>是否操作成功</returns>
|
||
Task<bool> SendFlowerAsync(long userId, string targetType, long targetId, long receiverId);
|
||
}
|
||
}
|
||
|