zxl
2025-05-14 522bbf4639f164ff49c51d6fd57e7dcf557d195c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package cn.lili.modules.promotion.entity.dto.search;
 
import cn.hutool.core.text.CharSequenceUtil;
import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum;
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
import cn.lili.modules.promotion.tools.PromotionTools;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
 
import java.util.Arrays;
import java.util.Date;
 
/**
 * @author paulG
 * @since 2021/11/18
 **/
@Data
public class BasePromotionsSearchParams {
 
    @ApiModelProperty(value = "活动id")
    private String id;
 
    @ApiModelProperty(value = "活动开始时间")
    private Long startTime;
 
    @ApiModelProperty(value = "活动结束时间")
    private Long endTime;
 
    /**
     * @see PromotionsStatusEnum
     */
    @ApiModelProperty(value = "活动状态 如需同时判断多个活动状态','分割")
    private String promotionStatus;
 
    /**
     * @see PromotionsScopeTypeEnum
     */
    @ApiModelProperty(value = "关联范围类型")
    private String scopeType;
 
    @ApiModelProperty(value = "店铺编号 如有多个','分割")
    private String storeId;
 
    public <T> QueryWrapper<T> queryWrapper() {
        QueryWrapper<T> queryWrapper = this.baseQueryWrapper();
 
        if (CharSequenceUtil.isNotEmpty(promotionStatus)) {
            queryWrapper.and(i -> {
                for (String status : promotionStatus.split(",")) {
                    i.or(PromotionTools.queryPromotionStatus(PromotionsStatusEnum.valueOf(status)));
                }
            });
        }
        return queryWrapper;
    }
 
    public <T> QueryWrapper<T> baseQueryWrapper() {
        QueryWrapper<T> queryWrapper = new QueryWrapper<>();
 
        if (CharSequenceUtil.isNotEmpty(id)) {
            queryWrapper.eq("id", id);
        }
        if (startTime != null) {
            queryWrapper.ge("start_time", new Date(startTime));
        }
        if (endTime != null) {
            queryWrapper.le("end_time", new Date(endTime));
        }
        if (CharSequenceUtil.isNotEmpty(scopeType)) {
            queryWrapper.eq("scope_type", scopeType);
        }
        if (CharSequenceUtil.isNotEmpty(storeId)) {
            if ("store".equals(storeId)) {
                queryWrapper.ne("store_id", PromotionTools.PLATFORM_ID);
            } else {
                queryWrapper.in("store_id", Arrays.asList(storeId.split(",")));
            }
        }
        queryWrapper.eq("delete_flag", false);
        return queryWrapper;
    }
 
 
}