package com.doumee.service.business;
|
|
import com.doumee.core.douyin.dto.DouyinBaseResp;
|
import com.doumee.core.douyin.dto.DouyinBoundProduct;
|
import com.doumee.core.douyin.dto.DouyinCancelParam;
|
import com.doumee.core.douyin.dto.DouyinPrepareParam;
|
import com.doumee.core.douyin.dto.DouyinPrepareResp;
|
import com.doumee.core.douyin.dto.DouyinVerifyParam;
|
import com.doumee.core.model.PageData;
|
import com.doumee.core.model.PageWrap;
|
import com.doumee.dao.business.model.DouyinVerifyRecord;
|
import com.doumee.dao.business.vo.DouyinVerifyRecordPageVO;
|
|
/**
|
* 抖音券核销 Service 定义
|
*
|
* @author rk
|
* @date 2026/06/22
|
*/
|
public interface DouyinVerifyService {
|
|
/**
|
* 验券准备:扫码/输码 → 返回券列表 + verifyToken
|
*/
|
DouyinBaseResp<DouyinPrepareResp> prepare(DouyinPrepareParam param);
|
|
/**
|
* 验券(核销),并落核销记录
|
* @param operator 操作人ID(由调用端传入,web 端取登录会员ID)
|
*/
|
DouyinVerifyRecord verify(DouyinVerifyParam param, String operator);
|
|
/**
|
* 验券(核销),使用调用方已校验好的套餐绑定结果(scanVerify 核销前校验后调用)。
|
* <p>核销成功后直接用 boundProduct 开通套餐,不再重复查询商品/套餐。
|
* @param param 核销入参
|
* @param operator 操作人ID
|
* @param boundProduct 核销前已校验的抖音商品 + 本地套餐(scanVerify 传入)
|
*/
|
DouyinVerifyRecord verify(DouyinVerifyParam param, String operator, DouyinBoundProduct boundProduct);
|
|
/**
|
* 核销前校验:按 skuId 校验抖音商品在库且已绑定有效本地套餐。
|
* <p>scanVerify 在核销前调用,失败抛业务异常(券尚未核销,避免抖音已核销但本地未开卡的不一致)。
|
* @param skuId 核销券对应的抖音 SKU ID
|
* @return 抖音商品 + 绑定的本地套餐(供 verify 开卡复用)
|
*/
|
DouyinBoundProduct resolveBoundProduct(String skuId);
|
|
/**
|
* 撤销核销(核销后 1 小时内),更新记录撤销状态
|
* @param operator 操作人ID(由调用端传入,web 端取登录会员ID)
|
*/
|
DouyinVerifyRecord cancel(DouyinCancelParam param, String operator);
|
|
/**
|
* 按 discountMemberId 把套餐卡详情填到 record.packageInfo(scanVerify 展示用)。
|
* <p>无套餐卡ID或查不到时,packageInfo 置 null,不影响主流程。
|
*
|
* @param record 核销记录(含 discountMemberId)
|
*/
|
void fillPackageInfo(DouyinVerifyRecord record);
|
|
/**
|
* 核销记录分页(web 端小程序自用,简单分页)
|
*/
|
PageData<DouyinVerifyRecord> findPage(PageWrap<DouyinVerifyRecord> pageWrap);
|
|
/**
|
* 核销记录分页(管理端对外):LEFT JOIN discount_member/member/douyin_product,
|
* 带出订单编号、会员openid/手机号(脱敏)、团购商品名、抖音券名、类目、兑换人、状态文案。
|
* 查询条件:抖音券码、验券状态、撤销状态。
|
*/
|
PageData<DouyinVerifyRecordPageVO> findManagePage(PageWrap<DouyinVerifyRecordPageVO> pageWrap);
|
|
/**
|
* 核销记录详情
|
*/
|
DouyinVerifyRecord findById(String id);
|
}
|