liujie
2026-05-08 0426a6e77ad62134685d7541b2410198de3e716f
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
package com.ruoyi.other.service;
 
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.other.api.domain.TExchangeCodePackage;
import com.ruoyi.other.api.dto.ExchangeCodeBindDTO;
import com.ruoyi.other.api.dto.ExchangeCodeConsumeDTO;
import com.ruoyi.other.api.dto.ExchangeCodePackageSaveDTO;
import com.ruoyi.other.api.dto.ExchangeCodeUseRecordQuery;
import com.ruoyi.other.api.domain.TExchangeCodeUseRecord;
import com.ruoyi.other.api.vo.ExchangeCodeBindResultVO;
import com.ruoyi.other.api.vo.ExchangeCodeConsumeResultVO;
import com.ruoyi.other.api.vo.ExchangeCodePackageDetailVO;
import com.ruoyi.other.query.ExchangeCodeBatchInvalidDTO;
import com.ruoyi.other.query.ExchangeCodeDetailQuery;
import com.ruoyi.other.query.ExchangeCodePackageQuery;
import com.ruoyi.other.vo.ExchangeCodeBatchInvalidResultVO;
import com.ruoyi.other.vo.ExchangeCodeDetailVO;
 
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
public interface TExchangeCodePackageService extends IService<TExchangeCodePackage> {
 
    /**
     * 分页查询兑换码卡包列表。
     *
     * @param query 查询条件
     * @return 卡包分页结果
     */
    PageInfo<TExchangeCodePackage> pageList(ExchangeCodePackageQuery query);
 
    /**
     * 新增兑换码卡包。
     *
     * @param dto 卡包保存参数
     */
    void savePackage(ExchangeCodePackageSaveDTO dto);
 
    /**
     * 编辑兑换码卡包。
     *
     * @param dto 卡包保存参数
     */
    void updatePackage(ExchangeCodePackageSaveDTO dto);
 
    /**
     * 更新兑换码卡包启用状态。
     *
     * @param id 卡包ID
     * @param status 启用状态
     */
    void updatePackageStatus(Long id, Integer status);
 
    /**
     * 刷新所有已过领取截止日期的兑换码卡包未绑定兑换码状态。
     */
    void refreshExpiredPackageCodes();
 
    /**
     * 删除兑换码卡包。
     *
     * @param ids 卡包ID,多个ID用英文逗号分隔
     */
    void deletePackage(String ids);
 
    /**
     * 查询兑换码卡包详情。
     *
     * @param id 卡包ID
     * @return 卡包详情
     */
    ExchangeCodePackageDetailVO getDetail(Long id);
 
    /**
     * 分页查询兑换码明细。
     *
     * @param query 查询条件
     * @return 兑换码明细分页结果
     */
    PageInfo<ExchangeCodeDetailVO> codePage(ExchangeCodeDetailQuery query);
 
    /**
     * 导出兑换码明细。
     *
     * @param query 查询条件
     * @return 兑换码明细导出数据
     */
    List<ExchangeCodeDetailVO> exportCodes(ExchangeCodeDetailQuery query);
 
    /**
     * 批量失效兑换码。
     *
     * @param dto 失效参数
     * @return 失效结果
     */
    ExchangeCodeBatchInvalidResultVO batchInvalidate(ExchangeCodeBatchInvalidDTO dto);
 
    /**
     * 查询可下载二维码的兑换码列表。
     *
     * @param packageId 卡包ID
     * @param onlyUnbound 是否只查询未绑定兑换码
     * @return 可下载二维码的兑换码列表
     */
    List<ExchangeCodeDetailVO> listDownloadableCodes(Long packageId, boolean onlyUnbound);
 
    /**
     * 查询兑换码明细。
     *
     * @param id 兑换码明细ID
     * @return 兑换码明细
     */
    ExchangeCodeDetailVO getCodeDetail(Long id);
 
    /**
     * 绑定兑换码。
     *
     * @param dto 绑定参数
     * @param userId 用户ID
     * @param phone 手机号
     * @return 绑定结果
     */
    ExchangeCodeBindResultVO bindExchangeCode(ExchangeCodeBindDTO dto, Long userId, String phone);
 
    /**
     * 查询用户兑换码余额映射。
     *
     * @param userIds 用户ID集合
     * @return 用户余额映射
     */
    Map<Long, java.math.BigDecimal> getUserExchangeCodeBalanceMap(List<Long> userIds);
 
    /**
     * 扣减用户兑换码余额。
     *
     * @param dto 扣减参数
     * @return 扣减结果
     */
    ExchangeCodeConsumeResultVO consumeBalance(ExchangeCodeConsumeDTO dto);
 
    /**
     * 退款返还用户兑换码余额。
     *
     * @param dto 退款参数
     * @return 退款结果
     */
    ExchangeCodeConsumeResultVO refundBalance(ExchangeCodeConsumeDTO dto);
 
    /**
     * 分页查询兑换码余额流水。
     *
     * @param query 查询条件
     * @return 流水分页结果
     */
    Page<TExchangeCodeUseRecord> useRecordPage(ExchangeCodeUseRecordQuery query);
 
    /**
     * 查询兑换码余额流水详情。
     *
     * @param id 流水ID
     * @param userId 用户ID
     * @return 流水详情
     */
    TExchangeCodeUseRecord useRecordDetail(Long id, Long userId);
}