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

import org.apache.commons.lang3.StringUtils;

import cn.com.ty.lift.ud.userInfo.mapper.entity.UserInfoEntity;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

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

    /**
     * 品牌id
     */
    @ApiModelProperty("品牌id")
    private Long brandId;

    /**
     * 用户昵称
     */
    @ApiModelProperty("用户昵称")
    private String name;

    /**
     * 用户手机号
     */
    @ApiModelProperty("用户手机号")
    private String mobile;

    /**
     * 真实姓名
     */
    @ApiModelProperty("真实姓名")
    private String realName;

    /**
     * 专家等级
     */
    @ApiModelProperty("专家等级")
    private Integer expertLevel;

    @ApiModelProperty("状态")
    private Integer statuz;

    @ApiModelProperty("是否是专家 0否1是")
    private Integer expertFlag;

    @ApiModelProperty("是否上线：1上线、0离线")
    private Integer onlineStatus;

    @ApiModelProperty("专家审核 1通过 0驳回2待审核")
    private Integer applyFlag;

    /**
     * 平台认证专家 0特邀专家 1普通专家
     */
    @ApiModelProperty("平台认证专家 0特邀专家1普通专家")
    private Integer platformInvitedFlag;

    @ApiModelProperty("删除标志 1 已删除，0 未删除")
    private Integer deleteFlag;

    @ApiModelProperty("公司id")
    private Integer maintenanceCompanyId;
    @ApiModelProperty("公司名称")
    private String maintenanceCompanyName;

    /**
     * 显示昵称/姓名 1：显示昵称 2：显示真实姓名
     */
    @ApiModelProperty("显示昵称/姓名 1：显示昵称   2：显示真实姓名")
    private Integer showWhichName;

    /**
     * 会员标志 1非会员 2 会员 3 超级会员
     */
    @ApiModelProperty("会员标志 1非会员  2 会员 3 超级会员")
    private Integer vipFlag;

    /**
     * app角色ID
     */
    @ApiModelProperty("app角色ID")
    private Long userLevel;
    
    @ApiModelProperty("lat")
    private Double lat;
    
    @ApiModelProperty("lng")
    private Double lng;

    /**
     * 查询条件
     * 
     * @return
     */
    @Override
    public Wrapper condition() {
        QueryWrapper<UserInfoEntity> query = new QueryWrapper<>();
        if (StringUtils.isNotBlank(name)) {
            query.like("a.name", name);
        }
        if (StringUtils.isNotBlank(maintenanceCompanyName)) {
            query.like("company.name", maintenanceCompanyName);
        }
        if (StringUtils.isNotBlank(mobile)) {
            query.like("a.mobile", mobile);
        }
        if (StringUtils.isNotBlank(realName)) {
            query.like("a.real_name", realName);
        }
        if (null != applyFlag) {
            query.eq("a.apply_flag", applyFlag);
        }
        if (null != platformInvitedFlag) {
            query.eq("a.platform_invited_flag", platformInvitedFlag);
        }
        if (null != expertFlag) {
            query.eq("b.expert_flag", expertFlag);
        }
        if (null != onlineStatus) {
            query.eq("b.online_status", onlineStatus);
        }
        if (null != expertLevel) {
            query.eq("a.expert_level", expertLevel);
        }
        if (null != maintenanceCompanyId) {
            query.eq("a.maintenance_company_id", maintenanceCompanyId);
        }
        if (null != userLevel) {
            query.eq("a.user_level", userLevel);
        }
        if (null != userId) {
            query.ne("a.user_id", userId);
        }
        if (null != vipFlag) {
            query.eq("a.vip_flag", vipFlag);
        }
        if (null != statuz) {
            query.eq("a.statuz", statuz);
        }
        if (null != deleteFlag) {
            query.eq("a.delete_flag", deleteFlag);
        }
        query.eq("1", 1);
        if (null != getSort()) {
            if (getSort().getOrder().indexOf("asc") != -1 || getSort().getOrder().indexOf("ASC") != -1) {
                query.orderByAsc("a." + getSort().getOrderBy());
            } else {
                query.orderByDesc("a." + getSort().getOrderBy());
            }
        } else {
            query.orderByAsc("a.platform_invited_flag").orderByDesc("a.create_time");
        }
        return query;
    }

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

}
