xiangpei
2025-05-22 0d9214d780c5093165f566f3e6f0c60f5d8aead7
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
package cn.lili.modules.promotion.service;
 
import cn.lili.common.enums.PromotionTypeEnum;
import cn.lili.common.vo.PageVO;
import cn.lili.modules.promotion.entity.dos.BasePromotions;
import cn.lili.modules.promotion.entity.dto.search.BasePromotionsSearchParams;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
 
import java.util.List;
 
/**
 * 抽象通用促销服务
 * 如需拓展原促销实体字段,新拓展类继承自促销实体即可
 *
 * @param <T> 促销类型,继承自促销基础类
 * @author paulG
 * @since 2021/11/18
 **/
public interface AbstractPromotionsService<T extends BasePromotions> extends IService<T> {
 
    /**
     * 通用促销保存
     * 调用顺序:
     * 1. initPromotion 初始化促销信息
     * 2. checkPromotions 检查促销参数
     * 3. save 保存促销信息
     * 4. updatePromotionGoods 更新促销商品信息
     * 5。 updateEsGoodsIndex 更新商品索引促销信息
     *
     * @param promotions 促销信息
     * @return 是否保存成功
     */
    boolean savePromotions(T promotions);
 
    /**
     * 通用促销更新
     * 调用顺序:
     * 1. checkStatus 检查促销状态
     * 2. checkPromotions 检查促销参数
     * 3. saveOrUpdate 保存促销信息
     * 4. updatePromotionGoods 更新促销商品信息
     * 5. updateEsGoodsIndex 更新商品索引促销信息
     *
     * @param promotions 促销信息
     * @return 是否更新成功
     */
    boolean updatePromotions(T promotions);
 
    /**
     * 更新促销状态
     * 如果要更新促销状态为关闭,startTime和endTime置为空即可
     *
     * @param ids       促销id集合
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 是否更新成功
     */
    boolean updateStatus(List<String> ids, Long startTime, Long endTime);
 
    /**
     * 移除促销活动
     *
     * @param ids 促销活动id集合
     * @return 是否移除成功
     */
    boolean removePromotions(List<String> ids);
 
    /**
     * 分页查询促销信息
     *
     * @param searchParams 查询参数,继承自继承促销查询参数
     * @param page         分页参数
     * @param <S>          继承自基础促销查询参数的促销查询参数
     * @return 分页促销信息
     */
    <S extends BasePromotionsSearchParams> IPage<T> pageFindAll(S searchParams, PageVO page);
 
    /**
     * 列表查询促销信息
     *
     * @param searchParams 查询参数,继承自继承促销查询参数
     * @param <S> 继承自基础促销查询参数的促销查询参数
     * @return 列表促销信息
     */
    <S extends BasePromotionsSearchParams> List<T> listFindAll(S searchParams);
 
    /**
     * 初始化促销字段
     *
     * @param promotions 促销实体
     */
    void initPromotion(T promotions);
 
    /**
     * 检查促销参数
     *
     * @param promotions 促销实体
     */
    void checkPromotions(T promotions);
 
    /**
     * 检查促销状态
     *
     * @param promotions 促销实体
     */
    void checkStatus(T promotions);
 
    /**
     * 更新促销商品信息
     *
     * @param promotions 促销实体
     * @return
     */
    boolean updatePromotionsGoods(T promotions);
 
    /**
     * 更新促销信息到商品索引
     *
     * @param promotions 促销实体
     */
    void updateEsGoodsIndex(T promotions);
 
    /**
     * 发送更新商品索引消息
     *
     * @param promotions 促销实体
     */
    void sendUpdateEsGoodsMsg(T promotions);
 
    /**
     * 当前促销类型
     *
     * @return 当前促销类型
     */
    PromotionTypeEnum getPromotionType();
 
    /**
     * 是否允许同一时间内存在相同的促销
     *
     * @return 是否允许同一时间内存在相同的促销
     */
    boolean allowExistSame();
 
}