package com.jeesharp.business.modules.marketing.api;

import com.jeesharp.business.modules.coupon.vo.CouponDemoVO;
import com.jeesharp.business.modules.coupon.vo.MemberCouponInfoVO;
import com.jeesharp.business.modules.coupon.vo.MemberCouponListVO;
import com.jeesharp.business.modules.marketing.coupon.dto.MarketingCouponReceiveDTO;
import com.jeesharp.business.modules.marketing.coupon.dto.MarketingCouponTenantQueryDTO;
import com.jeesharp.business.modules.marketing.coupon.dto.MarketingCouponVerifyDTO;
import com.jeesharp.business.modules.marketing.coupon.dto.MarketingCouponVerifyRecordsQueryDTO;
import com.jeesharp.business.modules.marketing.coupon.vo.MarketingCouponVerifyCodeVO;
import com.jeesharp.business.modules.marketing.coupon.vo.MarketingCouponVerifyResultVO;
import com.jeesharp.business.modules.marketing.couponVerifyLog.vo.MemberCouponVerifyLogListVO;
import com.jeesharp.business.modules.marketing.memberTenant.dto.MemberTenantJoinDTO;
import com.jeesharp.business.modules.marketing.memberTenant.vo.MemberTenantMobileVO;
import com.jeesharp.business.modules.marketing.tenant.vo.MarketingTenantLandingVO;
import com.jeesharp.framework.pojo.query.PageRespVO;

import java.util.List;
import java.util.Map;

/**
 * 会员营销移动端 API；由 {@code business-marketing-application} 实现，网关仅依赖本接口。
 *
 * @author jeesharp
 * @since 2026-06-25
 */
public interface MarketingMobileApi {

    MarketingTenantLandingVO resolveLandingByScene(String scene);

    MemberTenantMobileVO joinMemberTenant(String memberId, MemberTenantJoinDTO dto);

    List<MemberTenantMobileVO> listMyTenants(String memberId);

    List<MemberTenantMobileVO> listMyClerkTenants(String memberId);

    PageRespVO<CouponDemoVO> pageAvailableCoupons(String memberId, MarketingCouponTenantQueryDTO dto);

    Map<String, Object> receiveCoupon(String memberId, MarketingCouponReceiveDTO dto);

    PageRespVO<MemberCouponListVO> pageMyCoupons(String memberId, MarketingCouponTenantQueryDTO dto);

    MemberCouponInfoVO getCouponDetail(String memberId, String tenantCode, String memberCouponId);

    CouponDemoVO getCouponWalletDetail(String memberId, String tenantCode, String memberCouponId);

    MarketingCouponVerifyCodeVO createVerifyCode(String memberId, String tenantCode, String memberCouponId);

    MarketingCouponVerifyResultVO verifyCoupon(String operatorMemberId, MarketingCouponVerifyDTO dto);

    PageRespVO<MemberCouponVerifyLogListVO> pageVerifyRecords(String operatorMemberId, MarketingCouponVerifyRecordsQueryDTO dto);
}
