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;

/**
 * 动态列表单项（与下游 snake_case JSON 字段对齐）。
 * <p>
 * 互动字段：{@code is_like}/{@code dianzan_count}；关系字段（商户维度）：{@code is_follow_me}/{@code is_follow_this}；
 * {@code fans_count} 为关联门店 {@code phone_id} 侧粉丝数。
 * </p>
 */
@Data
@NoArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
@ApiModel(description = "动态 feeds 列表项")
public class LifeDynamicsFeedItemDto {

    @ApiModelProperty("动态ID")
    private Integer id;

    @ApiModelProperty("商户 phone_id")
    private String phoneId;

    @ApiModelProperty("标题")
    private String title;

    @ApiModelProperty("正文")
    private String context;

    @ApiModelProperty("媒体原串（可逗号多资源）")
    private String imagePath;

    @ApiModelProperty("拆分后的 URL 数组")
    private List<String> imagePathList;

    @ApiModelProperty("封面（空串表示无）")
    private String coverImage;

    @ApiModelProperty("经度,纬度")
    private String address;

    @ApiModelProperty("地址详情")
    private String addressContext;

    @ApiModelProperty("地点名")
    private String addressName;

    @ApiModelProperty("省市区")
    private String addressProvince;

    @ApiModelProperty("浏览数")
    private Integer liulanCount;

    @ApiModelProperty(value = "点赞总数（int）。累计点赞条数，来源于动态表 life_user_dynamics.dianzan_count", example = "0")
    private Integer dianzanCount;

    @ApiModelProperty("评论数")
    private Integer commentCount;

    @ApiModelProperty("转发数")
    private Integer transferCount;

    @ApiModelProperty("实际浏览")
    private Integer realityCount;

    @ApiModelProperty(value = "对方粉丝数（int，可为 null）。与关联门店 phone_id（商户维度）对应的粉丝量")
    private Integer fansCount;

    @ApiModelProperty("1 动态 2 商家社区")
    private String type;

    @ApiModelProperty("动态推荐类型，接口固定可为 null")
    private String dynamicsType;

    @ApiModelProperty("0 非草稿")
    private Integer draft;

    @ApiModelProperty("0 未删")
    private Integer deleteFlag;

    @ApiModelProperty("启用状态")
    private Integer enableStatus;

    @ApiModelProperty("置顶状态")
    private Integer topStatus;

    @ApiModelProperty("置顶时间（原样字符串，精度不一）")
    private String topTime;

    @ApiModelProperty("0 未审 1 审中 2 完成")
    private Integer checkFlag;

    @ApiModelProperty("AI 审核任务 ID")
    private String aiTaskId;

    @ApiModelProperty("审核失败原因")
    private String reason;

    @ApiModelProperty("创建时间（原样字符串）")
    private String createdTime;

    @ApiModelProperty("更新时间（原样字符串）")
    private String updatedTime;

    @ApiModelProperty("创建人 ID")
    private Integer createdUserId;

    @ApiModelProperty("修改人 ID")
    private Integer updatedUserId;

    @ApiModelProperty("达人 ID")
    private Integer expertId;

    @ApiModelProperty("业务 ID")
    private Integer businessId;

    @ApiModelProperty("0/1 是否达人")
    private String isExpert;

    @ApiModelProperty("未实现时可恒为 null")
    private String isBlack;

    @ApiModelProperty(value = "商户维度：对方（门店侧）是否关注我。0-未关注；1-已关注（JSON: is_follow_me）")
    private String isFollowMe;

    @ApiModelProperty(value = "商户维度：我是否关注对方（门店商家）。0-未关注；1-已关注（JSON: is_follow_this）")
    private String isFollowThis;

    @ApiModelProperty(value = "当前用户是否点赞本条动态。0-未点赞；1-已点赞（JSON: is_like）")
    private String isLike;

    @ApiModelProperty("store_info.id")
    private String storeId;

    @ApiModelProperty("store_user.id")
    private String storeOrUserId;

    @ApiModelProperty("门店账号名")
    private String userName;

    @ApiModelProperty("门店头像 URL")
    private String userImage;

    @ApiModelProperty("店名")
    private String storeName;

    @ApiModelProperty("简介")
    private String storeBlurb;

    @ApiModelProperty("店铺评分")
    private Double scoreAvg;

    @ApiModelProperty("经营板块")
    private String businessSection;

    @ApiModelProperty("评价数（字符串）")
    private String ratingCount;

    @ApiModelProperty("经营种类")
    private String businessTypeName;

    @ApiModelProperty("未使用")
    private String userType;
}
