74 lines
2.2 KiB
Java
74 lines
2.2 KiB
Java
package com.ruoyi.promo.service;
|
|
|
|
import com.ruoyi.common.core.domain.R;
|
|
import com.ruoyi.promo.domain.entity.PromoCdkey;
|
|
import com.ruoyi.promo.domain.entity.PromoCdkeyRedeem;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* 推广CDKEY服务
|
|
*/
|
|
public interface PromoCdkeyService {
|
|
|
|
/**
|
|
* 生成CDKEY(仅主播账号可创建)
|
|
* @param creatorId 创建者ID
|
|
* @param creatorName 创建者名称
|
|
* @param form 表单参数
|
|
* @return 生成的CDKEY码列表
|
|
*/
|
|
R<List<String>> generateCdkeys(Long creatorId, String creatorName, Map<String, Object> form);
|
|
|
|
/**
|
|
* 获取创建记录列表(当前登录主播自己创建的)
|
|
* @param creatorId 创建者ID
|
|
* @param startDate 开始日期
|
|
* @param endDate 结束日期
|
|
* @param status 状态(0=进行中,1=已结束)
|
|
*/
|
|
List<PromoCdkey> getCdkeyList(Long creatorId, Date startDate, Date endDate, Integer status);
|
|
|
|
/**
|
|
* 获取兑换记录列表(当前主播创建的CDKEY被下级普通用户兑换的记录)
|
|
* @param creatorId CDKEY创建者ID
|
|
* @param startDate 开始日期
|
|
* @param endDate 结束日期
|
|
* @param redeemerName 兑换人名称
|
|
* @param cdkeyCode CDKEY码
|
|
*/
|
|
List<PromoCdkeyRedeem> getRedeemList(Long creatorId, Date startDate, Date endDate,
|
|
String redeemerName, String cdkeyCode);
|
|
|
|
/**
|
|
* 创建日报
|
|
*/
|
|
List<Map<String, Object>> getCreateDailyReport(Long creatorId, Date startDate, Date endDate);
|
|
|
|
/**
|
|
* 兑换日报
|
|
*/
|
|
List<Map<String, Object>> getRedeemDailyReport(Long creatorId, Date startDate, Date endDate);
|
|
|
|
/**
|
|
* 全局补齐已过期状态(定时任务使用)
|
|
* @return 受影响行数
|
|
*/
|
|
int markExpiredCdkeys();
|
|
|
|
/**
|
|
* 查询待退还的CDK:已结束(status=1)且未退还(refund_time IS NULL)
|
|
*/
|
|
List<PromoCdkey> selectRefundableCdkeys();
|
|
|
|
/**
|
|
* 对单个CDK执行精确退还(预扣总额 - 实际派发),金币与积分同额。
|
|
* 幂等:重复调用或已退还时返回 0。
|
|
* @return 本次实际退还金额
|
|
*/
|
|
BigDecimal refundOne(PromoCdkey cdkey);
|
|
}
|