package cn.lili.modules.promotion.entity.dto.search; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.modules.promotion.entity.enums.CouponGetEnum; import cn.lili.modules.promotion.entity.enums.CouponTypeEnum; import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; import java.util.Date; /** * 会员优惠券查询通用类 * * @author paulG * @since 2020/8/14 **/ @EqualsAndHashCode(callSuper = true) @Data public class MemberCouponSearchParams extends BasePromotionsSearchParams implements Serializable { private static final long serialVersionUID = 4566880169478260409L; private static final String PRICE_COLUMN = "price"; @ApiModelProperty(value = "优惠券id") private String couponId; @ApiModelProperty(value = "优惠券名称") private String couponName; @ApiModelProperty(value = "会员id") private String memberId; @ApiModelProperty(value = "会员名称") private String memberName; /** * POINT("打折"), PRICE("减免现金"); * * @see CouponTypeEnum */ @ApiModelProperty(value = "活动类型") private String couponType; /** * @see PromotionsScopeTypeEnum */ @ApiModelProperty(value = "关联范围类型") private String scopeType; @ApiModelProperty(value = "范围关联的id") private String scopeId; @ApiModelProperty(value = "面额,可以为范围,如10_1000") private String price; /** * @see CouponGetEnum */ @ApiModelProperty(value = "优惠券类型,分为免费领取和活动赠送") private String getType; /** * @see MemberCouponStatusEnum */ @ApiModelProperty(value = "会员优惠券状态") private String memberCouponStatus; @ApiModelProperty(value = "消费门槛") private Double consumeThreshold; @Override public QueryWrapper queryWrapper() { QueryWrapper queryWrapper = super.queryWrapper(); queryWrapper.eq(CharSequenceUtil.isNotEmpty(couponId), "coupon_id", couponId); queryWrapper.like(CharSequenceUtil.isNotEmpty(couponName), "coupon_name", couponName); queryWrapper.like(CharSequenceUtil.isNotEmpty(memberName), "member_name", memberName); if (CharSequenceUtil.isNotEmpty(couponType)) { queryWrapper.eq("coupon_type", CouponTypeEnum.valueOf(couponType).name()); } if (memberId != null) { queryWrapper.eq("member_id", memberId); } if (CharSequenceUtil.isNotEmpty(scopeId)) { queryWrapper.eq("scope_id", scopeId); } if (CharSequenceUtil.isNotEmpty(scopeType)) { queryWrapper.eq("scope_type", PromotionsScopeTypeEnum.valueOf(scopeType).name()); } if (CharSequenceUtil.isNotEmpty(getType)) { queryWrapper.eq("get_type", CouponGetEnum.valueOf(getType).name()); } if (CharSequenceUtil.isNotEmpty(memberCouponStatus)) { queryWrapper.eq("member_coupon_status", MemberCouponStatusEnum.valueOf(memberCouponStatus).name()); } if (CharSequenceUtil.isNotEmpty(price)) { String[] s = price.split("_"); if (s.length > 1) { queryWrapper.between(PRICE_COLUMN, s[0], s[1]); } else { queryWrapper.ge(PRICE_COLUMN, s[0]); } } if (this.getStartTime() != null) { queryWrapper.ge("start_time", new Date(this.getEndTime())); } if (this.getEndTime() != null) { queryWrapper.le("end_time", new Date(this.getEndTime())); } queryWrapper.eq("delete_flag", false); queryWrapper.orderByDesc("create_time"); return queryWrapper; } }