package com.nbport.zgwl.seal.dto;

import java.util.List;

/**
 * 签章平台API数据传输对象（DTO）
 *
 * 包含所有签章平台API的请求和响应数据结构
 * 统一管理在一个文件中，方便后续迁移和维护
 *
 * @author xiaofengzhou
 */
public class SealApiDTO {

    public static class SealResponse<T> {
        private boolean isSuccess;
        private String msg;
        private int code;
        private T data;

        public boolean isSuccess() {
            return isSuccess;
        }

        public void setSuccess(boolean success) {
            isSuccess = success;
        }

        public String getMsg() {
            return msg;
        }

        public void setMsg(String msg) {
            this.msg = msg;
        }

        public int getCode() {
            return code;
        }

        public void setCode(int code) {
            this.code = code;
        }

        public T getData() {
            return data;
        }

        public void setData(T data) {
            this.data = data;
        }
    }

    public static class TokenResponseData {
        private String access_token;
        private Integer expires_in;

        public String getAccess_token() {
            return access_token;
        }

        public void setAccess_token(String access_token) {
            this.access_token = access_token;
        }

        public Integer getExpires_in() {
            return expires_in;
        }

        public void setExpires_in(Integer expires_in) {
            this.expires_in = expires_in;
        }
    }

    public static class ContractStartData {
        private String contractId;
        private Long fileSize;
        private Integer imageWidth;
        private Integer imageHeight;
        private String pdfUrl;
        private List<String> pdfToImageList;

        public String getContractId() {
            return contractId;
        }

        public void setContractId(String contractId) {
            this.contractId = contractId;
        }

        public Long getFileSize() {
            return fileSize;
        }

        public void setFileSize(Long fileSize) {
            this.fileSize = fileSize;
        }

        public Integer getImageWidth() {
            return imageWidth;
        }

        public void setImageWidth(Integer imageWidth) {
            this.imageWidth = imageWidth;
        }

        public Integer getImageHeight() {
            return imageHeight;
        }

        public void setImageHeight(Integer imageHeight) {
            this.imageHeight = imageHeight;
        }

        public String getPdfUrl() {
            return pdfUrl;
        }

        public void setPdfUrl(String pdfUrl) {
            this.pdfUrl = pdfUrl;
        }

        public List<String> getPdfToImageList() {
            return pdfToImageList;
        }

        public void setPdfToImageList(List<String> pdfToImageList) {
            this.pdfToImageList = pdfToImageList;
        }
    }

    public static class QrCodeResponseData {
        private String requestId;
        private Integer expiresIn;
        private String qrCode;
        private String urlLink;

        public String getRequestId() {
            return requestId;
        }

        public void setRequestId(String requestId) {
            this.requestId = requestId;
        }

        public Integer getExpiresIn() {
            return expiresIn;
        }

        public void setExpiresIn(Integer expiresIn) {
            this.expiresIn = expiresIn;
        }

        public String getQrCode() {
            return qrCode;
        }

        public void setQrCode(String qrCode) {
            this.qrCode = qrCode;
        }

        public String getUrlLink() {
            return urlLink;
        }

        public void setUrlLink(String urlLink) {
            this.urlLink = urlLink;
        }
    }

    public static class SealConfigItem {
        private String sealId;
        private Float x;
        private Float y;
        private Double scale;
        private Integer pageNum;

        public String getSealId() {
            return sealId;
        }

        public void setSealId(String sealId) {
            this.sealId = sealId;
        }

        public Float getX() {
            return x;
        }

        public void setX(Float x) {
            this.x = x;
        }

        public Float getY() {
            return y;
        }

        public void setY(Float y) {
            this.y = y;
        }

        public Double getScale() {
            return scale;
        }

        public void setScale(Double scale) {
            this.scale = scale;
        }

        public Integer getPageNum() {
            return pageNum;
        }

        public void setPageNum(Integer pageNum) {
            this.pageNum = pageNum;
        }
    }

    public static class PagingSealConfig {
        private String sealId;
        private Double scale;
        private Integer startPage;
        private Integer endPage;
        private Integer coordinateY;

        public String getSealId() {
            return sealId;
        }

        public void setSealId(String sealId) {
            this.sealId = sealId;
        }

        public Double getScale() {
            return scale;
        }

        public void setScale(Double scale) {
            this.scale = scale;
        }

        public Integer getStartPage() {
            return startPage;
        }

        public void setStartPage(Integer startPage) {
            this.startPage = startPage;
        }

        public Integer getEndPage() {
            return endPage;
        }

        public void setEndPage(Integer endPage) {
            this.endPage = endPage;
        }

        public Integer getCoordinateY() {
            return coordinateY;
        }

        public void setCoordinateY(Integer coordinateY) {
            this.coordinateY = coordinateY;
        }
    }

    public static class TimestampSealConfig {
        private String formatPattern;
        private Float x;
        private Float y;
        private Integer pageNum;
        private Double scale;
        private Integer width;
        private Integer height;

        public String getFormatPattern() {
            return formatPattern;
        }

        public void setFormatPattern(String formatPattern) {
            this.formatPattern = formatPattern;
        }

        public Float getX() {
            return x;
        }

        public void setX(Float x) {
            this.x = x;
        }

        public Float getY() {
            return y;
        }

        public void setY(Float y) {
            this.y = y;
        }

        public Integer getPageNum() {
            return pageNum;
        }

        public void setPageNum(Integer pageNum) {
            this.pageNum = pageNum;
        }

        public Double getScale() {
            return scale;
        }

        public void setScale(Double scale) {
            this.scale = scale;
        }

        public Integer getWidth() {
            return width;
        }

        public void setWidth(Integer width) {
            this.width = width;
        }

        public Integer getHeight() {
            return height;
        }

        public void setHeight(Integer height) {
            this.height = height;
        }
    }

    public static class SignatureResult {
        private String contractId;
        private String contractName;
        private Integer contractStatus;
        private String signatureId;
        private String signer;
        private String signatureTime;
        private List<SignatureItem> signatureList;

        public String getContractId() {
            return contractId;
        }

        public void setContractId(String contractId) {
            this.contractId = contractId;
        }

        public String getContractName() {
            return contractName;
        }

        public void setContractName(String contractName) {
            this.contractName = contractName;
        }

        public Integer getContractStatus() {
            return contractStatus;
        }

        public void setContractStatus(Integer contractStatus) {
            this.contractStatus = contractStatus;
        }

        public String getSignatureId() {
            return signatureId;
        }

        public void setSignatureId(String signatureId) {
            this.signatureId = signatureId;
        }

        public String getSigner() {
            return signer;
        }

        public void setSigner(String signer) {
            this.signer = signer;
        }

        public String getSignatureTime() {
            return signatureTime;
        }

        public void setSignatureTime(String signatureTime) {
            this.signatureTime = signatureTime;
        }

        public List<SignatureItem> getSignatureList() {
            return signatureList;
        }

        public void setSignatureList(List<SignatureItem> signatureList) {
            this.signatureList = signatureList;
        }
    }

    public static class SignatureItem {
        private String owner;
        private String signatureId;
        private String signer;
        private String signatureTime;

        public String getOwner() {
            return owner;
        }

        public void setOwner(String owner) {
            this.owner = owner;
        }

        public String getSignatureId() {
            return signatureId;
        }

        public void setSignatureId(String signatureId) {
            this.signatureId = signatureId;
        }

        public String getSigner() {
            return signer;
        }

        public void setSigner(String signer) {
            this.signer = signer;
        }

        public String getSignatureTime() {
            return signatureTime;
        }

        public void setSignatureTime(String signatureTime) {
            this.signatureTime = signatureTime;
        }
    }

    public static class SealInfo {
        private String sealId;
        private String sealName;
        private String pictureUrl;
        private Integer sealType;
        private String owner;

        public String getSealId() {
            return sealId;
        }

        public void setSealId(String sealId) {
            this.sealId = sealId;
        }

        public String getSealName() {
            return sealName;
        }

        public void setSealName(String sealName) {
            this.sealName = sealName;
        }

        public String getPictureUrl() {
            return pictureUrl;
        }

        public void setPictureUrl(String pictureUrl) {
            this.pictureUrl = pictureUrl;
        }

        public Integer getSealType() {
            return sealType;
        }

        public void setSealType(Integer sealType) {
            this.sealType = sealType;
        }

        public String getOwner() {
            return owner;
        }

        public void setOwner(String owner) {
            this.owner = owner;
        }
    }

    public static class ContractDetail {
        private String contractId;
        private String contractName;
        private Integer status;
        private String statusName;
        private String startTime;
        private Integer fileSize;
        private List<SignatureItem> signatureList;
        private Integer imageWidth;
        private Integer imageHeight;
        private String pdfUrl;
        private List<String> pdfToImageList;
        private String downloadUrl;

        public String getContractId() {
            return contractId;
        }

        public void setContractId(String contractId) {
            this.contractId = contractId;
        }

        public String getContractName() {
            return contractName;
        }

        public void setContractName(String contractName) {
            this.contractName = contractName;
        }

        public Integer getStatus() {
            return status;
        }

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

        public String getStatusName() {
            return statusName;
        }

        public void setStatusName(String statusName) {
            this.statusName = statusName;
        }

        public String getStartTime() {
            return startTime;
        }

        public void setStartTime(String startTime) {
            this.startTime = startTime;
        }

        public Integer getFileSize() {
            return fileSize;
        }

        public void setFileSize(Integer fileSize) {
            this.fileSize = fileSize;
        }

        public List<SignatureItem> getSignatureList() {
            return signatureList;
        }

        public void setSignatureList(List<SignatureItem> signatureList) {
            this.signatureList = signatureList;
        }

        public Integer getImageWidth() {
            return imageWidth;
        }

        public void setImageWidth(Integer imageWidth) {
            this.imageWidth = imageWidth;
        }

        public Integer getImageHeight() {
            return imageHeight;
        }

        public void setImageHeight(Integer imageHeight) {
            this.imageHeight = imageHeight;
        }

        public String getPdfUrl() {
            return pdfUrl;
        }

        public void setPdfUrl(String pdfUrl) {
            this.pdfUrl = pdfUrl;
        }

        public List<String> getPdfToImageList() {
            return pdfToImageList;
        }

        public void setPdfToImageList(List<String> pdfToImageList) {
            this.pdfToImageList = pdfToImageList;
        }

        public String getDownloadUrl() {
            return downloadUrl;
        }

        public void setDownloadUrl(String downloadUrl) {
            this.downloadUrl = downloadUrl;
        }
    }

    public static class SignerIdData {
        private String signerId;

        public String getSignerId() {
            return signerId;
        }

        public void setSignerId(String signerId) {
            this.signerId = signerId;
        }
    }

    public static class UserInfoData {
        private String name;
        private String mobile;
        private String code;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getMobile() {
            return mobile;
        }

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

        public String getCode() {
            return code;
        }

        public void setCode(String code) {
            this.code = code;
        }
    }

    public static class LoginCallbackData {
        private String requestId;
        private String accountId;
        private String accountType;
        private String username;
        private String entName;
        private String entCode;

        public String getRequestId() {
            return requestId;
        }

        public void setRequestId(String requestId) {
            this.requestId = requestId;
        }

        public String getAccountId() {
            return accountId;
        }

        public void setAccountId(String accountId) {
            this.accountId = accountId;
        }

        public String getAccountType() {
            return accountType;
        }

        public void setAccountType(String accountType) {
            this.accountType = accountType;
        }

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }

        public String getEntName() {
            return entName;
        }

        public void setEntName(String entName) {
            this.entName = entName;
        }

        public String getEntCode() {
            return entCode;
        }

        public void setEntCode(String entCode) {
            this.entCode = entCode;
        }
    }

    public static class SignCallbackData {
        private String contractId;
        private String contractName;
        private Integer contractStatus;
        private String signer;
        private String signerId;
        private String requestId;

        public String getContractId() {
            return contractId;
        }

        public void setContractId(String contractId) {
            this.contractId = contractId;
        }

        public String getContractName() {
            return contractName;
        }

        public void setContractName(String contractName) {
            this.contractName = contractName;
        }

        public Integer getContractStatus() {
            return contractStatus;
        }

        public void setContractStatus(Integer contractStatus) {
            this.contractStatus = contractStatus;
        }

        public String getSigner() {
            return signer;
        }

        public void setSigner(String signer) {
            this.signer = signer;
        }

        public String getSignerId() {
            return signerId;
        }

        public void setSignerId(String signerId) {
            this.signerId = signerId;
        }

        public String getRequestId() {
            return requestId;
        }

        public void setRequestId(String requestId) {
            this.requestId = requestId;
        }
    }

    public static class TrusteeshipCallbackData {
        private String requestId;
        private List<TrusteeshipSealItem> sealList;
        private String signer;
        private String signerId;

        public String getRequestId() {
            return requestId;
        }

        public void setRequestId(String requestId) {
            this.requestId = requestId;
        }

        public List<TrusteeshipSealItem> getSealList() {
            return sealList;
        }

        public void setSealList(List<TrusteeshipSealItem> sealList) {
            this.sealList = sealList;
        }

        public String getSigner() {
            return signer;
        }

        public void setSigner(String signer) {
            this.signer = signer;
        }

        public String getSignerId() {
            return signerId;
        }

        public void setSignerId(String signerId) {
            this.signerId = signerId;
        }
    }

    public static class TrusteeshipSealItem {
        private String sealId;
        private String sealName;
        private String entName;
        private String pictureUrl;
        private String owner;
        private String ownerSubAccountId;
        private Integer sealType;

        public String getSealId() {
            return sealId;
        }

        public void setSealId(String sealId) {
            this.sealId = sealId;
        }

        public String getSealName() {
            return sealName;
        }

        public void setSealName(String sealName) {
            this.sealName = sealName;
        }

        public String getEntName() {
            return entName;
        }

        public void setEntName(String entName) {
            this.entName = entName;
        }

        public String getPictureUrl() {
            return pictureUrl;
        }

        public void setPictureUrl(String pictureUrl) {
            this.pictureUrl = pictureUrl;
        }

        public String getOwner() {
            return owner;
        }

        public void setOwner(String owner) {
            this.owner = owner;
        }

        public String getOwnerSubAccountId() {
            return ownerSubAccountId;
        }

        public void setOwnerSubAccountId(String ownerSubAccountId) {
            this.ownerSubAccountId = ownerSubAccountId;
        }

        public Integer getSealType() {
            return sealType;
        }

        public void setSealType(Integer sealType) {
            this.sealType = sealType;
        }
    }

    public static class SignQrCodeCallbackData {
        private String requestId;
        private String accountId;
        private String accountType;
        private String username;
        private String entName;
        private String entCode;
        private String signatureValue;

        public String getRequestId() {
            return requestId;
        }

        public void setRequestId(String requestId) {
            this.requestId = requestId;
        }

        public String getAccountId() {
            return accountId;
        }

        public void setAccountId(String accountId) {
            this.accountId = accountId;
        }

        public String getAccountType() {
            return accountType;
        }

        public void setAccountType(String accountType) {
            this.accountType = accountType;
        }

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }

        public String getEntName() {
            return entName;
        }

        public void setEntName(String entName) {
            this.entName = entName;
        }

        public String getEntCode() {
            return entCode;
        }

        public void setEntCode(String entCode) {
            this.entCode = entCode;
        }

        public String getSignatureValue() {
            return signatureValue;
        }

        public void setSignatureValue(String signatureValue) {
            this.signatureValue = signatureValue;
        }
    }
}
