package com.gxwebsoft.shop.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.util.HashMap;
import java.util.List;

/**
 * 应用信息
 * 专门用于前端展示，只包含前端需要的字段
 *
 * @author WebSoft
 * @since 2025-01-12
 */
@Data
@Schema(description = "应用信息视图对象")
public class ShopVo implements Serializable {

    @Schema(description = "站点ID")
    private Integer websiteId;

    @Schema(description = "站点名称")
    private String websiteName;

    @Schema(description = "站点编号")
    private String websiteCode;

    @Schema(description = "应用介绍")
    private String description;

    @Schema(description = "网站关键词")
    private String keywords;

    @Schema(description = "小程序二维码")
    private String mpQrCode;

    @Schema(description = "标题")
    private String title;

    @Schema(description = "LOGO")
    private String logo;

    @Schema(description = "图标(favicon/应用卡图标)，对应 cms_website.website_icon")
    private String icon;

    @Schema(description = "品牌图标(应用卡/分享图标)，对应 cms_website.website_avatar，与 icon 用途分离；JSON 键名用 avatar 以对齐前端")
    private String avatar;

    @Schema(description = "域名")
    private String domain;

    @Schema(description = "后台管理地址")
    private String adminUrl;

    @Schema(description = "API地址")
    private String apiUrl;

    @Schema(description = "运行状态 0未开通 1正常 2维护中 3违规关停")
    private Integer running;

    @Schema(description = "应用版本 10免费版 20授权版 30永久授权")
    private Integer version;

    @Schema(description = "服务到期时间")
    private String expirationTime;

    @Schema(description = "创建时间")
    private String createTime;

    @Schema(description = "是否到期 -1已过期 1未过期")
    private Integer expired;

    @Schema(description = "剩余天数")
    private Long expiredDays;

    @Schema(description = "即将过期 0否 1是")
    private Integer soon;

    @Schema(description = "状态图标")
    private String statusIcon;

    @Schema(description = "状态文本")
    private String statusText;

    @Schema(description = "网站配置")
    private Object config;

    @Schema(description = "服务器时间信息")
    private HashMap<String, Object> serverTime;

    @Schema(description = "顶部导航")
    private List<MenuVo> topNavs;

    @Schema(description = "底部导航")
    private List<MenuVo> bottomNavs;

    @Schema(description = "网站设置")
    private Object setting;

    @Schema(description = "应用ID")
    private Integer appId;

    @Schema(description = "应用名称")
    private String appName;

    @Schema(description = "应用编号")
    private String appCode;

    @Schema(description = "模板ID(cms_template.id，1~6，对应前端 template-XX)，由后台模板选择器选用写入")
    private Integer templateId;
}
