package com.czg.third.wechat.dto.req.entry.business.sales;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * 进件-经营场景
 * @author yjjie
 * @date 2025/12/26 14:07
 */
@Data
@Accessors(chain = true)
public class WechatEntrySalesInfoReqDto {

    /**
     * 【必填】
     * 经营场景类型
     * 1、请勾选实际售卖商品/提供服务场景（至少一项），以便为你开通需要的支付权限；
     * 2、建议只勾选目前必须的场景，以便尽快通过入驻审核，其他支付权限可在入驻后再根据实际需要发起申请
     * 可选取值
     * SALES_SCENES_STORE:  线下场所
     * SALES_SCENES_MP:  服务号与公众号
     * SALES_SCENES_MINI_PROGRAM:  小程序
     * SALES_SCENES_WEB:  互联网网站
     * SALES_SCENES_APP:  App
     * SALES_SCENES_WEWORK:  企业微信
     */
    @JSONField(name = "sales_scenes_type")
    private List<String> salesScenesType;

    /**
     * 【选填】
     * 线下场所场景
     * 1、审核通过后，服务商可帮商户发起付款码支付、JSAPI支付；
     * 2、当"经营场景类型"选择"SALES_SCENES_STORE"，该场景资料【必填】。
     */
    @JSONField(name = "biz_store_info")
    private WechatEntryStoreInfoReqDto bizStoreInfo;

    /**
     * 【选填】
     * 服务号或公众号场景
     * 1、审核通过后，服务商可帮商家发起JSAPI支付；
     * 2、当"经营场景类型"选择"SALES_SCENES_MP"，该场景资料【必填】。
     */
    @JSONField(name = "mp_info")
    private WechatEntryMpInfoReqDto mpInfo;

    /**
     * 【选填】
     * 小程序场景
     * 1、审核通过后，服务商可帮商家发起JSAPI支付；
     * 2、当"经营场景类型"选择"SALES_SCENES_MINI_PROGRAM"，该场景资料必填。
     */
    @JSONField(name = "mini_program_info")
    private WechatEntryMiniProgramReqDto miniProgramInfo;

    /**
     * 【选填】
     * App场景
     * 1、审核通过后，服务商可帮商家发起App支付；
     * 2、当"经营场景类型"选择"SALES_SCENES_APP"，该场景资料必填。
     */
    @JSONField(name = "app_info")
    private WechatEntryAppInfoReqDto appInfo;

    /**
     * 【选填】
     * 互联网网站场景
     * 1、审核通过后，服务商可帮商家发起JSAPI支付；
     * 2、当"经营场景类型"选择"SALES_SCENES_WEB"，该场景资料必填。
     */
    @JSONField(name = "web_info")
    private WechatEntryWebInfoReqDto webInfo;

    /**
     * 【选填】
     * 企业微信场景
     * 1、审核通过后，服务商可帮商家发起JSAPI支付；
     * 2、当"经营场景类型"选择"SALES_SCENES_WEWORK"，该场景资料必填。
     */
    @JSONField(name = "wework_info")
    private WechatEntryWeworkInfoReqDto weworkInfo;
}
