package com.zm.order.tool.server.query;


import com.zm.order.tool.server.model.BasePageQuery;
import com.zm.order.tool.server.utils.JacksonUtils;

import java.util.Date;
import java.util.List;
import java.util.Objects;

/**
 * <p>
 *
 * </p>
 *
 * @author nianchang
 * @date 2024/01/04 2:29 下午
 */
public class SearchRefundQuery extends BasePageQuery {

    /**
     * 商家id
     */
    private Long sellerId;

    /**
     * 门店id
     */
    private Long storeId;

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 状态
     */
    private List<Integer> statusList;

    /**
     * 订单号
     */
    private String orderNo;

    /**
     * 订单号列表
     */
    private List<String> orderNoList;

    /**
     * 退款编号
     */
    private String refundNo;

    /**
     * 申请时间开始 毫秒
     */
    private Date applyAtStart;

    /**
     * 申请时间结束 毫秒
     */
    private Date applyAtEnd;

    /**
     * 订单来源
     */
    private Integer source;

    /**
     * 是否独立收款
     */
    private Integer isAlone;

    /**
     * 商家id集合
     */
    private List<Long> storeIdList;

    /**
     * 订单类型
     */
    private Integer orderType;

    /**
     * 订单子类型
     */
    private Integer orderSubType;

    /**
     * 买家手机号
     */
    private String mobile;

    /**
     * 退款单类型
     */
    private Integer refundType;

    /**
     * 退款方式
     *
     * 1-商家退款
     * 2-用户申请退款
     * 3-用户申请售后
     */
    private Integer refundWay;

    /**
     * 订单子类型列表
     */
    private List<Integer> orderSubTypeList;

    /**
     * 处理开始时间
     */
    private Date dealAtStart;

    /**
     * 处理结束时间
     */
    private Date dealAtEnd;

    /**
     * 退款单列表
     */
    private List<String> refundNoList;

    /**
     * 是否查询当天退款单标记
     */
    private Integer currentDayFlags;

    /**
     * 来源系统
     */
    private Integer fromSystem;

    /**
     * 复查状态
     */
    private Integer reviewStatus;

    /**
     * 退款级别
     */
    private Integer refundLevel;

    /**
     * 订单履约类型
     */
    private Integer performanceType;

    /**
     * 订单履约类型列表
     */
    private List<Integer> performanceTypeList;

    /**
     * 订单类型列表
     */
    private List<Integer> orderTypeList;

    /**
     * 来源列表
     */
    private List<Integer> sourceList;

    /**
     * 排除订单来源列表
     */
    private List<Integer> excludeSourceList;

    /**
     * 平台用户id
     */
    private Long platformUserId;

    /**
     * 平台商家id
     */
    private Long platformSellerId;

    /**
     * 平台用户id
     */
    private List<Long> platformUserIdList;

    /**
     * 删除标记
     */
    private List<Integer> deleteTypeList;

    /**
     * 根据id深度遍历
     *
     * 用于退款单导出场景
     */
    private Boolean searchAfter;

    /**
     * 深度遍历id
     */
    private Long lastId;

    /**
     * 查询大小，与searchAfter配合使用
     */
    private Integer size;

    /**
     * 是否返回total数量
     *
     * false-不返回
     */
    private Boolean respCount;

    /**
     * 商品订单来源
     * 0：门店
     * 1：商城
     */
    private Integer goodsOrderSource;

    /**
     * 集团id
     */
    private Long groupId;

    /**
     * 是否集团账号 0否；1是；
     */
    private Integer isGroup;

    /**
     * 来源单号
     */
    private String sourceNo;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 统计数量字段
     */
    private String amountField;

    /**
     * 假分页数量
     */
    private Integer fakePageSize;

    /**
     * 更新时间开始
     */
    private Date updatedAtStart;

    /**
     * 更新时间结束
     */
    private Date updatedAtEnd;

    /**
     * 导出类型
     */
    private Integer exportType;

    /**
     * 机构id
     */
    private Long orgId;

    /**
     * 下单开始时间
     */
    private Date orderAtStart;

    /**
     * 下单结束时间
     */
    private Date orderAtEnd;

    /**
     * 支付类型
     */
    private List<Integer> payTypeList;

    /**
     * 导出人id
     */
    private Long exportPersonId;

    /**
     * 导出人
     */
    private String exportPerson;

    /**
     * 导出文件名前缀
     */
    private String prefixFileName;

    /**
     * 忽略SQL排序
     * null：排序
     * 1：不排序
     */
    private Integer ignoreSort;

    /**
     * 业务来源
     */
    private Integer bizType;

    /**
     * 业务来源列表
     */
    private List<Integer> bizTypeList;

    /**
     * 排除业务类型
     */
    private Integer excludeBizType;

    /**
     * 排除业务类型
     */
    private List<Integer> excludeBizTypeList;

    /**
     * 统计请求标记
     */
    private Boolean countRequest;

    public List<Integer> getExcludeBizTypeList() {
        return excludeBizTypeList;
    }

    public void setExcludeBizTypeList(List<Integer> excludeBizTypeList) {
        this.excludeBizTypeList = excludeBizTypeList;
    }

    public Boolean getCountRequest() {
        return countRequest;
    }

    public void setCountRequest(Boolean countRequest) {
        this.countRequest = countRequest;
    }

    public Long getGroupId() {
        return groupId;
    }

    public void setGroupId(Long groupId) {
        this.groupId = groupId;
    }

    public Integer getIsGroup() {
        return isGroup;
    }

    public void setIsGroup(Integer isGroup) {
        this.isGroup = isGroup;
    }

    public String getSourceNo() {
        return sourceNo;
    }

    public void setSourceNo(String sourceNo) {
        this.sourceNo = sourceNo;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getAmountField() {
        return amountField;
    }

    public void setAmountField(String amountField) {
        this.amountField = amountField;
    }

    public Integer getFakePageSize() {
        return fakePageSize;
    }

    public void setFakePageSize(Integer fakePageSize) {
        this.fakePageSize = fakePageSize;
    }

    public Date getUpdatedAtStart() {
        return updatedAtStart;
    }

    public void setUpdatedAtStart(Date updatedAtStart) {
        this.updatedAtStart = updatedAtStart;
    }

    public Date getUpdatedAtEnd() {
        return updatedAtEnd;
    }

    public void setUpdatedAtEnd(Date updatedAtEnd) {
        this.updatedAtEnd = updatedAtEnd;
    }

    public Integer getExportType() {
        return exportType;
    }

    public void setExportType(Integer exportType) {
        this.exportType = exportType;
    }

    public Long getOrgId() {
        return orgId;
    }

    public void setOrgId(Long orgId) {
        this.orgId = orgId;
    }

    public Date getOrderAtStart() {
        return orderAtStart;
    }

    public void setOrderAtStart(Date orderAtStart) {
        this.orderAtStart = orderAtStart;
    }

    public Date getOrderAtEnd() {
        return orderAtEnd;
    }

    public void setOrderAtEnd(Date orderAtEnd) {
        this.orderAtEnd = orderAtEnd;
    }

    public List<Integer> getPayTypeList() {
        return payTypeList;
    }

    public void setPayTypeList(List<Integer> payTypeList) {
        this.payTypeList = payTypeList;
    }

    public Long getExportPersonId() {
        return exportPersonId;
    }

    public void setExportPersonId(Long exportPersonId) {
        this.exportPersonId = exportPersonId;
    }

    public String getExportPerson() {
        return exportPerson;
    }

    public void setExportPerson(String exportPerson) {
        this.exportPerson = exportPerson;
    }

    public String getPrefixFileName() {
        return prefixFileName;
    }

    public void setPrefixFileName(String prefixFileName) {
        this.prefixFileName = prefixFileName;
    }

    public Integer getIgnoreSort() {
        return ignoreSort;
    }

    public void setIgnoreSort(Integer ignoreSort) {
        this.ignoreSort = ignoreSort;
    }

    public Integer getBizType() {
        return bizType;
    }

    public void setBizType(Integer bizType) {
        this.bizType = bizType;
    }

    public List<Integer> getBizTypeList() {
        return bizTypeList;
    }

    public void setBizTypeList(List<Integer> bizTypeList) {
        this.bizTypeList = bizTypeList;
    }

    public Integer getExcludeBizType() {
        return excludeBizType;
    }

    public void setExcludeBizType(Integer excludeBizType) {
        this.excludeBizType = excludeBizType;
    }

    public Integer getGoodsOrderSource() {
        return goodsOrderSource;
    }

    public void setGoodsOrderSource(Integer goodsOrderSource) {
        this.goodsOrderSource = goodsOrderSource;
    }

    public List<Integer> getDeleteTypeList() {
        return deleteTypeList;
    }

    public void setDeleteTypeList(List<Integer> deleteTypeList) {
        this.deleteTypeList = deleteTypeList;
    }

    public Long getLastId() {
        return lastId;
    }

    public void setLastId(Long lastId) {
        this.lastId = lastId;
    }

    public Long getSellerId() {
        return sellerId;
    }

    public void setSellerId(Long sellerId) {
        this.sellerId = sellerId;
    }

    public Long getStoreId() {
        return storeId;
    }

    public void setStoreId(Long storeId) {
        this.storeId = storeId;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public List<Integer> getStatusList() {
        return statusList;
    }

    public void setStatusList(List<Integer> statusList) {
        this.statusList = statusList;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public List<String> getOrderNoList() {
        return orderNoList;
    }

    public void setOrderNoList(List<String> orderNoList) {
        this.orderNoList = orderNoList;
    }

    public String getRefundNo() {
        return refundNo;
    }

    public void setRefundNo(String refundNo) {
        this.refundNo = refundNo;
    }

    public Date getApplyAtStart() {
        return applyAtStart;
    }

    public void setApplyAtStart(Date applyAtStart) {
        this.applyAtStart = applyAtStart;
    }

    public Date getApplyAtEnd() {
        return applyAtEnd;
    }

    public void setApplyAtEnd(Date applyAtEnd) {
        this.applyAtEnd = applyAtEnd;
    }

    public Integer getSource() {
        return source;
    }

    public void setSource(Integer source) {
        this.source = source;
    }

    public Integer getIsAlone() {
        return isAlone;
    }

    public void setIsAlone(Integer isAlone) {
        this.isAlone = isAlone;
    }

    public List<Long> getStoreIdList() {
        return storeIdList;
    }

    public void setStoreIdList(List<Long> storeIdList) {
        this.storeIdList = storeIdList;
    }

    public Integer getOrderType() {
        return orderType;
    }

    public void setOrderType(Integer orderType) {
        this.orderType = orderType;
    }

    public Integer getOrderSubType() {
        return orderSubType;
    }

    public void setOrderSubType(Integer orderSubType) {
        this.orderSubType = orderSubType;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public Integer getRefundType() {
        return refundType;
    }

    public void setRefundType(Integer refundType) {
        this.refundType = refundType;
    }

    public Integer getRefundWay() {
        return refundWay;
    }

    public void setRefundWay(Integer refundWay) {
        this.refundWay = refundWay;
    }

    public List<Integer> getOrderSubTypeList() {
        return orderSubTypeList;
    }

    public void setOrderSubTypeList(List<Integer> orderSubTypeList) {
        this.orderSubTypeList = orderSubTypeList;
    }

    public Date getDealAtStart() {
        return dealAtStart;
    }

    public void setDealAtStart(Date dealAtStart) {
        this.dealAtStart = dealAtStart;
    }

    public Date getDealAtEnd() {
        return dealAtEnd;
    }

    public void setDealAtEnd(Date dealAtEnd) {
        this.dealAtEnd = dealAtEnd;
    }

    public List<String> getRefundNoList() {
        return refundNoList;
    }

    public void setRefundNoList(List<String> refundNoList) {
        this.refundNoList = refundNoList;
    }

    public Integer getCurrentDayFlags() {
        return currentDayFlags;
    }

    public void setCurrentDayFlags(Integer currentDayFlags) {
        this.currentDayFlags = currentDayFlags;
    }

    public Integer getFromSystem() {
        return fromSystem;
    }

    public void setFromSystem(Integer fromSystem) {
        this.fromSystem = fromSystem;
    }

    public Integer getReviewStatus() {
        return reviewStatus;
    }

    public void setReviewStatus(Integer reviewStatus) {
        this.reviewStatus = reviewStatus;
    }

    public Integer getRefundLevel() {
        return refundLevel;
    }

    public void setRefundLevel(Integer refundLevel) {
        this.refundLevel = refundLevel;
    }

    public Integer getPerformanceType() {
        return performanceType;
    }

    public void setPerformanceType(Integer performanceType) {
        this.performanceType = performanceType;
    }

    public List<Integer> getPerformanceTypeList() {
        return performanceTypeList;
    }

    public void setPerformanceTypeList(List<Integer> performanceTypeList) {
        this.performanceTypeList = performanceTypeList;
    }

    public List<Integer> getOrderTypeList() {
        return orderTypeList;
    }

    public void setOrderTypeList(List<Integer> orderTypeList) {
        this.orderTypeList = orderTypeList;
    }

    public List<Integer> getSourceList() {
        return sourceList;
    }

    public void setSourceList(List<Integer> sourceList) {
        this.sourceList = sourceList;
    }

    public List<Integer> getExcludeSourceList() {
        return excludeSourceList;
    }

    public void setExcludeSourceList(List<Integer> excludeSourceList) {
        this.excludeSourceList = excludeSourceList;
    }

    public Long getPlatformUserId() {
        return platformUserId;
    }

    public void setPlatformUserId(Long platformUserId) {
        this.platformUserId = platformUserId;
    }

    public Long getPlatformSellerId() {
        return platformSellerId;
    }

    public void setPlatformSellerId(Long platformSellerId) {
        this.platformSellerId = platformSellerId;
    }

    public List<Long> getPlatformUserIdList() {
        return platformUserIdList;
    }

    public void setPlatformUserIdList(List<Long> platformUserIdList) {
        this.platformUserIdList = platformUserIdList;
    }

    public Boolean getSearchAfter() {
        return searchAfter;
    }

    public void setSearchAfter(Boolean searchAfter) {
        this.searchAfter = searchAfter;
    }

    public Integer getSize() {
        return size;
    }

    public void setSize(Integer size) {
        this.size = size;
    }

    public Boolean getRespCount() {
        return respCount;
    }

    public void setRespCount(Boolean respCount) {
        this.respCount = respCount;
    }

    public int hashCode() {
        return Objects.hash(sellerId, storeId, userId, statusList, orderNo, orderNoList, refundNo, applyAtStart, applyAtEnd,
                source, isAlone, storeIdList, orderType, orderSubType, mobile, refundType, refundWay, orderSubTypeList,
                dealAtStart, dealAtEnd, refundNoList, currentDayFlags, fromSystem, reviewStatus, refundLevel,
                performanceType, performanceTypeList, orderTypeList, sourceList, excludeSourceList, platformUserId,
                platformSellerId, platformUserIdList, deleteTypeList, searchAfter, lastId, size, respCount, goodsOrderSource,
                groupId, isGroup, sourceNo, status, amountField, fakePageSize, updatedAtStart, updatedAtEnd, exportType, orgId,
                orderAtStart, orderAtEnd, payTypeList, exportPersonId, exportPerson, prefixFileName, ignoreSort, bizType,
                bizTypeList, excludeBizType, countRequest);
    }

    public String countKey() {
        return "search_refund_count" + ":" + sellerId + ":" + this.hashCode();
    }

    @Override
    public String toString() {
        return JacksonUtils.toJsonString(this);
    }
}
