package com.yonge.cooleshow.biz.dal.service;


import java.util.List;

/**
 * Created by Eric.Shang on 2022/10/9.
 */
public interface RedisCacheService {

    /**
     * 缓存Key对象
     *
     * @param cacheKey  Key模板
     * @param arguments 参数信息
     * @return String
     */
    String getCacheKey(String cacheKey, Object... arguments);

    /**
     * 订单分布式锁
     *
     * @param orderNo 订单编号
     * @return String
     */
    String getPaymentCacheKey(String orderNo);

    /**
     * 用户下单请求锁定
     *
     * @param userId 用户Id
     * @return String
     */
    String getExecuteOrderCacheKey(String userId);

    /**
     * 缓存用户支付配置
     *
     * @param userId 用户Id
     * @param config 支付配置信息
     */
    void saveUserPaymentConfig(String userId, String orderType, String config);

    /**
     * 获取用户订单支付配置
     *
     * @param userId 用户Id
     * @return String
     */
    String getUserPaymentConfig(String userId, String orderType);

    /**
     * 删除用户支付配置
     *
     * @param userId 用户Id
     */
    void deleteUserPaymentConfig(String userId, String orderType);

    /**
     * 用户下单配置
     *
     * @param userId 用户Id
     * @param config 下单配置信息
     */
    void saveUserOrderConfig(String userId, String orderType, String config);

    /**
     * 用户下单金额分账配置
     *
     * @param subOrderNo 用户Id
     * @param config 下单配置信息
     */
    void saveUserAccountConfig(String subOrderNo, String config);

    /**
     * 查询用户下单配置
     *
     * @param userId 用户Id
     * @return String
     */
    String getUserOrderConfig(String userId, String orderType);

    /**
     * 用户下单金额分账配置
     *
     * @param subOrderNo 订单详情号
     */
    String getUserAccountConfig(String subOrderNo);

    /**
     * 删除用户下单配置
     *
     * @param userId 用户Id
     */
    void deleteUserOrderConfig(String userId, String orderType);

}