package shop.alien.entity.store.dto;

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 打卡推荐 feeds 分页响应（与 Redis / 动态推荐一致采用 snake_case JSON）。
 * <p>
 * Redis Key：{@code clock_in:recommend:v15:{lifeUserId}}，{@code lifeUserId} 为 {@code life_user.id}；
 * 拉黑 / 点赞 / 商户维度关注等增量补丁见 alien-store {@code ClockInRecommendCacheService}（与动态推荐缓存并行维护）。
 * </p>
 * <p>
 * {@code blocked_id}：当前用户已拉黑商户的 {@code store_user.id}（仅用户拉黑商户场景写入缓存）。
 * </p>
 */
@Data
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
@ApiModel(description = "打卡推荐 feeds 分页响应")
public class LifeClockInFeedApiResponse {

    @ApiModelProperty("打卡条目列表")
    private List<LifeClockInFeedItemDto> list;

    @ApiModelProperty("过滤后总条数")
    private Integer total;

    @ApiModelProperty("当前页")
    private Integer page;

    @ApiModelProperty("每页条数")
    private Integer size;

    @ApiModelProperty("总页数")
    private Integer totalPages;

    @ApiModelProperty("接口耗时（秒）")
    private Double responseTimeS;

    @ApiModelProperty("当前用户已拉黑商户的 store_user.id")
    private List<Integer> blockedId;
}
