package cn.lili.modules.goods.entity.dto; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.vo.PageVO; import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.*; import java.util.Arrays; import java.util.List; /** * 商品查询条件 * * @author pikachu * @since 2020-02-24 19:27:20 */ @EqualsAndHashCode(callSuper = true) @Data @Builder @NoArgsConstructor @AllArgsConstructor public class GoodsSearchParams extends PageVO { private static final long serialVersionUID = 2544015852728566887L; @ApiModelProperty(value = "商品编号") private String goodsId; @ApiModelProperty(value = "商品名称") private String goodsName; @ApiModelProperty(value = "商品编号") private String id; @ApiModelProperty(value = "商品编号") private List ids; @ApiModelProperty(value = "商家ID") private String storeId; @ApiModelProperty(value = "卖家名字") private String storeName; @ApiModelProperty(value = "价格,可以为范围,如10_1000") private String price; @ApiModelProperty(value = "分类path") private String categoryPath; @ApiModelProperty(value = "店铺分类id") private String storeCategoryPath; @ApiModelProperty(value = "是否自营") private Boolean selfOperated; /** * @see GoodsStatusEnum */ @ApiModelProperty(value = "上下架状态") private String marketEnable; /** * @see GoodsAuthEnum */ @ApiModelProperty(value = "审核状态") private String authFlag; @ApiModelProperty(value = "库存数量") private Integer leQuantity; @ApiModelProperty(value = "库存数量") private Integer geQuantity; @ApiModelProperty(value = "是否为推荐商品") private Boolean recommend; /** * @see cn.lili.modules.goods.entity.enums.GoodsTypeEnum */ @ApiModelProperty(value = "商品类型") private String goodsType; /** * @see cn.lili.modules.goods.entity.enums.GoodsSalesModeEnum */ @ApiModelProperty(value = "销售模式", required = true) private String salesModel; @ApiModelProperty(value = "预警库存") private Boolean alertQuantity; public QueryWrapper queryWrapper() { QueryWrapper queryWrapper = new QueryWrapper<>(); if (CharSequenceUtil.isNotEmpty(goodsId)) { queryWrapper.eq("goods_id", goodsId); } if (CharSequenceUtil.isNotEmpty(goodsName)) { queryWrapper.like("goods_name", goodsName); } if (CharSequenceUtil.isNotEmpty(id)) { queryWrapper.in("id", Arrays.asList(id.split(","))); } if (CollUtil.isNotEmpty(ids)) { queryWrapper.in("id", ids); } if (CharSequenceUtil.isNotEmpty(storeId)) { queryWrapper.eq("store_id", storeId); } if (CharSequenceUtil.isNotEmpty(storeName)) { queryWrapper.like("store_name", storeName); } if (CharSequenceUtil.isNotEmpty(categoryPath)) { queryWrapper.like("category_path", categoryPath); } if (CharSequenceUtil.isNotEmpty(storeCategoryPath)) { queryWrapper.like("store_category_path", storeCategoryPath); } if (selfOperated != null) { queryWrapper.eq("self_operated", selfOperated); } if (CharSequenceUtil.isNotEmpty(marketEnable)) { queryWrapper.eq("market_enable", marketEnable); } if (CharSequenceUtil.isNotEmpty(authFlag)) { queryWrapper.eq("auth_flag", authFlag); } if (leQuantity != null) { queryWrapper.le("quantity", leQuantity); } if (geQuantity != null) { queryWrapper.gt("quantity", geQuantity); } if (recommend != null) { queryWrapper.le("recommend", recommend); } if (CharSequenceUtil.isNotEmpty(goodsType)) { queryWrapper.eq("goods_type", goodsType); } if (CharSequenceUtil.isNotEmpty(salesModel)) { queryWrapper.eq("sales_model", salesModel); } if(alertQuantity != null && alertQuantity){ queryWrapper.apply("quantity <= alert_quantity"); queryWrapper.ge("alert_quantity", 0); } queryWrapper.in(CollUtil.isNotEmpty(ids), "id", ids); queryWrapper.eq("delete_flag", false); this.betweenWrapper(queryWrapper); return queryWrapper; } private void betweenWrapper(QueryWrapper queryWrapper) { if (CharSequenceUtil.isNotEmpty(price)) { String[] s = price.split("_"); if (s.length > 1) { queryWrapper.between("price", s[0], s[1]); } else { queryWrapper.ge("price", s[0]); } } } }