package com.yonge.cooleshow.biz.dal.dto.search;

import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
import com.yonge.cooleshow.common.enums.YesOrNoEnum;
import com.yonge.toolset.base.page.QueryInfo;
import com.yonge.toolset.base.util.StringUtil;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import org.apache.commons.lang3.StringUtils;

import java.util.List;

/**
 * Description 专辑查询
 *
 * @author: liujunchi
 * @date: 2022-03-31
 */
@ApiModel(value = "MusicAlbumSearch", description = "专辑列表查询")
public class MusicAlbumSearch extends QueryInfo{

    @ApiModelProperty("专辑编号/名称")
    private String idAndName;

    @ApiModelProperty("标签id，多个逗号隔开")
    private String albumTagIds;

    @ApiModelProperty(hidden = true)
    private List<Long> albumTagIdList;

    @ApiModelProperty("专辑状态0：停用，1：启用")
    private YesOrNoEnum albumStatus;

    @ApiModelProperty("登录用户id")
    private Long userId;
    
    @ApiModelProperty(value = "客户端 TEACHER/STUDENT")
    private String clientId;

    @ApiModelProperty(value = "是否审核时可见 （0:否  1：是）",hidden = true)
    private YesOrNoEnum auditVersion;

    @ApiModelProperty(value = "排序规则，1：按收藏人数倒叙",hidden = true)
    private Integer sortBy;

    @ApiModelProperty(value = "版本号")
    private String version;

    @ApiModelProperty(value = "平台")
    private String platform;

    @ApiModelProperty("声部id，多个逗号隔开")
    private String subjectIds;

    @ApiModelProperty("曲目ID")
    private Long musicId;

    @ApiModelProperty(value = "收费类型(FREE:免费;VIP:会员;CHARGE:单曲收费)")
    private ChargeTypeEnum paymentType;  //收费类型(0:免费;1:会员;2:单曲收费)

    @ApiModelProperty(hidden = true)
    private List<Long> subjectIdList;

    public ChargeTypeEnum getPaymentType() {
        return paymentType;
    }

    public void setPaymentType(ChargeTypeEnum paymentType) {
        this.paymentType = paymentType;
    }

    public Long getUserId() {
        return userId;
    }

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

    public String getSubjectIds() {
        return subjectIds;
    }

    public void setSubjectIds(String subjectIds) {
        this.subjectIds = subjectIds;
        if (StringUtils.isNotBlank(subjectIds)) {
            this.subjectIdList = StringUtil.toLongList(subjectIds);
        }
    }

    public List<Long> getSubjectIdList() {
        return subjectIdList;
    }

    public void setSubjectIdList(List<Long> subjectIdList) {
        this.subjectIdList = subjectIdList;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getPlatform() {
        return platform;
    }

    public void setPlatform(String platform) {
        this.platform = platform;
    }

    public String getIdAndName() {
        return idAndName;
    }

    public void setIdAndName(String idAndName) {
        this.idAndName = idAndName;
    }

    public String getAlbumTagIds() {
        return albumTagIds;
    }

    public void setAlbumTagIds(String albumTagIds) {
        this.albumTagIds = albumTagIds;
        if (StringUtils.isNotBlank(albumTagIds)) {
            this.albumTagIdList = StringUtil.toLongList(albumTagIds);
        }
    }

    public List<Long> getAlbumTagIdList() {
        return albumTagIdList;
    }

    public void setAlbumTagIdList(List<Long> albumTagIdList) {
        this.albumTagIdList = albumTagIdList;
    }

    public YesOrNoEnum getAlbumStatus() {
        return albumStatus;
    }

    public void setAlbumStatus(YesOrNoEnum albumStatus) {
        this.albumStatus = albumStatus;
    }

    public Integer getSortBy() {
        return sortBy;
    }

    public void setSortBy(Integer sortBy) {
        this.sortBy = sortBy;
    }

    public YesOrNoEnum getAuditVersion() {
        return auditVersion;
    }

    public void setAuditVersion(YesOrNoEnum auditVersion) {
        this.auditVersion = auditVersion;
    }

	public String getClientId() {
		return clientId;
	}

	public void setClientId(String clientId) {
		this.clientId = clientId;
	}

    public Long getMusicId() {
        return musicId;
    }

    public void setMusicId(Long musicId) {
        this.musicId = musicId;
    }
}
