package cn.com.ty.lift.ud.userCoupon.controller.query;

import java.math.BigDecimal;

import org.apache.commons.lang3.StringUtils;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import cn.com.ty.lift.ud.common.BasePageQuery;
import cn.com.ty.lift.ud.userCoupon.mapper.entity.UserCoupon;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 用户卡券 查询条件
 * 
 * @author Xson
 * @date 2020-05-12
 */
@Data
@ApiModel(description = "用户卡券 查询条件")
public final class UserCouponQuery extends BasePageQuery {

    /**
     * 用户
     */
    @ApiModelProperty("用户")
     private Long userId;

    /**
     * 订单
     */
    @ApiModelProperty("订单")
     private Long orderId;

    /**
     * 卡券
     */
    @ApiModelProperty("卡券")
     private Long couponId;

    /**
     * 是否使用 0:已失效1:可使用
     */
    @ApiModelProperty("是否使用 0:已失效1:可使用")
     private Integer usedFlag;

    /**
     * 订单编号
     */
    @ApiModelProperty("订单编号")
     private String orderNo;

    /**
     * 类型 1:折扣卷2:红包
     */
    @ApiModelProperty("类型 1:折扣卷2:红包")
     private Integer type;
    
    /**
	 * 订单金额
	 */
	@ApiModelProperty("订单金额")
	private BigDecimal amount;
	
	/**
     * 使用范围 1:出诊问诊2:题库3:视频
     */
    @ApiModelProperty("使用范围 0:全场通用1:出诊问诊2:题库3:视频")
    private Integer scenario;

    /**
     * 查询条件
     * @return
     */
    @Override
    public Wrapper condition() {
        QueryWrapper<UserCoupon> query = new QueryWrapper<>();
        if (StringUtils.isNotBlank(orderNo)) {
            query.like("uc.order_no", orderNo);
        }
        if(null != amount) {
        	query.le("c.full_reduction", amount);
        }
        if(null != scenario) {
            query.eq("c.scenario", scenario);
        }
        if(null != userId) {
        	query.eq("uc.user_id", userId);
        }
        if(null != orderId) {
        	query.eq("uc.order_id", orderId);
        }
        if(null != couponId) {
        	query.eq("uc.coupon_id", couponId);
        }
        if(null != usedFlag) {
        	query.eq("uc.used_flag", usedFlag);
        }
        if(null != type) {
        	query.eq("c.type", type);
        }
        query.eq("1",1);
        if (null != getSort()) {
            if (getSort().getOrder().indexOf("asc") != -1 || getSort().getOrder().indexOf("ASC") != -1) {
                query.orderByAsc("uc." + getSort().getOrderBy());
            } else {
                query.orderByDesc("uc." + getSort().getOrderBy());
            }
        }
        return query;
    }

    /**
     * 分页条件
     * @return
     */
    @Override
    public IPage page() {
        Page<UserCoupon> page = new Page<>(getPageNum(), getPageSize());
        return page;
    }

}

