package com.slodon.b2b2c.vo.statistics;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;

/**
 * admin首页概况实时统计vo
 */
@Data
public class AdminPresentIndexVO {
    /**
     * 待办事项
     */
    @Data
    public static class AdminWaitDeal {
        @ApiModelProperty("待审核店铺数")
        private Integer auditStoreNum;

        @ApiModelProperty("待审核商品数")
        private Integer auditGoodsNum;

        @ApiModelProperty("站点待审核商品数")
        private Integer webSiteAuditGoodsNum;

        @ApiModelProperty("待审核品牌数")
        private Integer auditBrandNum;

        @ApiModelProperty("站点待审核品牌数")
        private Integer webSiteAuditBrandNum;

        @ApiModelProperty("站点待审核店铺数")
        private Integer webSiteAuditStoreNum;

        @ApiModelProperty("待确认退款数")
        private Integer confirmReturnNum;

        @ApiModelProperty("待处理结算单数")
        private Integer dealBillNum;

        @ApiModelProperty("待分配询盘")
        private Integer enquiryToBeAssignNum;

        @ApiModelProperty("站点待分配询盘")
        private Integer webSiteEnquiryToBeAssignNum;
    }

    /**
     * 今日交易概况
     */
    @Data
    @NoArgsConstructor
    public static class AdminTradeInfo {
        public AdminTradeInfo(AdminPresentDataVO adminPresentDataVO) {
            this.statsTime = adminPresentDataVO.getStatsTime();
            this.orderSubmitNum = adminPresentDataVO.getPlatformTodaySummary().getOrderSubmitNum();
            this.orderSubmitAmount = adminPresentDataVO.getPlatformTodaySummary().getOrderSubmitAmount();
            this.orderPayNum = adminPresentDataVO.getPlatformTodaySummary().getOrderPayNum();
            this.orderPayAmount = adminPresentDataVO.getPlatformTodaySummary().getOrderPayAmount();
        }

        @ApiModelProperty("更新时间")
        private Date statsTime;

        @ApiModelProperty("下单数")
        private Integer orderSubmitNum;

        @ApiModelProperty("下单金额")
        private BigDecimal orderSubmitAmount;

        @ApiModelProperty("支付订单数")
        private Integer orderPayNum;

        @ApiModelProperty("支付金额")
        private BigDecimal orderPayAmount;
    }

    /**
     * 今日流量概况
     */
    @Data
    @NoArgsConstructor
    public static class AdminViewInfo {
        public AdminViewInfo(AdminPresentDataVO adminPresentDataVO) {
            this.statsTime = adminPresentDataVO.getStatsTime();
            this.visitorNum = adminPresentDataVO.getPlatformTodaySummary().getVisitorNum();
            this.viewNum = adminPresentDataVO.getPlatformTodaySummary().getViewNum();
            this.goodsVisitorNum = adminPresentDataVO.getPlatformTodaySummary().getGoodsVisitorNum();
            this.goodsViewNum = adminPresentDataVO.getPlatformTodaySummary().getGoodsViewNum();
        }

        @ApiModelProperty("更新时间")
        private Date statsTime;

        @ApiModelProperty("访客数")
        private Integer visitorNum;

        @ApiModelProperty("浏览量")
        private Integer viewNum;

        @ApiModelProperty("商品访客数")
        private Integer goodsVisitorNum;

        @ApiModelProperty("商品浏览量")
        private Integer goodsViewNum;
    }

    /**
     * 今日商品概况
     */
    @Data
    @NoArgsConstructor
    public static class AdminGoodsInfo {
        public AdminGoodsInfo(AdminPresentDataVO adminPresentDataVO) {
            this.statsTime = adminPresentDataVO.getStatsTime();
            this.goodsTotalNum = adminPresentDataVO.getPlatformSummary().getGoodsTotalNum();
            this.newGoodsNum = adminPresentDataVO.getPlatformTodaySummary().getNewGoodsNum();
            this.shelfGoodsNum = adminPresentDataVO.getPlatformSummary().getShelfGoodsNum();
            this.saleGoodsNum = adminPresentDataVO.getPlatformSummary().getWebSiteSaleGoodsNum() ;
        }

        @ApiModelProperty("更新时间")
        private Date statsTime;

        @ApiModelProperty("商品总数")
        private Integer goodsTotalNum;

        @ApiModelProperty("新增商品数")
        private Integer newGoodsNum;

        @ApiModelProperty("下架商品数")
        private Integer shelfGoodsNum;

        @ApiModelProperty("在售商品总数")
        private Integer saleGoodsNum;

        @ApiModelProperty("站点在售商品总数")
        private Integer webSiteSaleGoodsNum;

    }

    /**
     * 今日用户概况
     */
    @Data
    @NoArgsConstructor
    public static class AdminUserInfo {
        public AdminUserInfo(AdminPresentDataVO adminPresentDataVO) {
            this.statsTime = adminPresentDataVO.getStatsTime();
            this.memberNum = adminPresentDataVO.getPlatformSummary().getWebSiteMemberNum();
            this.storeNum = adminPresentDataVO.getPlatformSummary().getStoreNum();
            this.newMemberNum = adminPresentDataVO.getPlatformTodaySummary().getNewMemberNum();
            this.newStoreNum = adminPresentDataVO.getPlatformTodaySummary().getNewStoreNum();
        }

        @ApiModelProperty("更新时间")
        private Date statsTime;

        @ApiModelProperty("会员总数")
        private Integer memberNum;

        @ApiModelProperty("店铺总数")
        private Integer storeNum;

        @ApiModelProperty("新增会员数")
        private Integer newMemberNum;

        @ApiModelProperty("新增店铺数")
        private Integer newStoreNum;
    }

    /**
     * 今日询盘概况
     */
    @Data
    @NoArgsConstructor
    public static class AdminEnquiryInfo {
        public AdminEnquiryInfo(AdminPresentDataVO.PlatformEnquiryTodayInfo platformEnquiryTodayInfo) {
            this.statsTime = platformEnquiryTodayInfo.getStatsTime();
            this.enquiryTotalNum = platformEnquiryTodayInfo.getEnquiryTotalNum();
            this.enquiryNewNum = platformEnquiryTodayInfo.getEnquiryNewNum();
            this.validInquiryNum = platformEnquiryTodayInfo.getValidInquiryNum();
            this.enquiryToBeAssignNum = platformEnquiryTodayInfo.getEnquiryToBeAssignNum();
        }

        @ApiModelProperty("询盘总数")
        private Integer enquiryTotalNum;

        @ApiModelProperty("新增询盘")
        private Integer enquiryNewNum;

        @ApiModelProperty("有效询盘")
        private Integer validInquiryNum;

        @ApiModelProperty("待分配询盘")
        private Integer enquiryToBeAssignNum;

        @ApiModelProperty("更新时间")
        private Date statsTime;
    }

}
