package com.zanxiang.game.module.sdk.pojo.dto;

import com.zanxiang.module.util.JsonUtil;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.logging.log4j.util.Strings;

/**
 * @author : lingfeng
 * @time : 2023-01-03
 * @description : 游戏小程序信息
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class GameAppletDTO {

    /**
     * 主键
     */
    private Long id;

    /**
     * 游戏id
     */
    private Long gameId;

    /**
     * 小程序appId
     */
    private String appId;

    /**
     * 小程序原始id
     */
    private String ghId;

    /**
     * 小程序名称
     */
    private String appName;

    /**
     * 小程序密钥
     */
    private String appSecret;

    /**
     * 类型,1 : 小程序, 2 : 公众号
     */
    private Integer type;

    /**
     * 米大师配置
     */
    private String miPayConfig;

    /**
     * 消息推送配置
     */
    private String msgConfig;

    /**
     * 分享标题
     */
    private String shareTitle;

    /**
     * 分享路径
     */
    private String sharePath;

    /**
     * 分享图片
     */
    private String shareImg;

    /**
     * 客服气泡标题
     */
    private String showCardTitle;

    /**
     * 客服气泡图片
     */
    private String showCardImg;


    /**
     * 获取米大师支付配置Bean
     *
     * @return {@link MiPayConfigBean}
     */
    public MiPayConfigBean getMiPayConfigBean() {
        if (Strings.isBlank(this.miPayConfig)) {
            return null;
        }
        return JsonUtil.toObj(this.miPayConfig, GameAppletDTO.MiPayConfigBean.class);
    }

    /**
     * 获取小游戏消息推送配置Bean
     *
     * @return {@link MsgConfigBean}
     */
    public MsgConfigBean getMsgConfigBean() {
        if (Strings.isBlank(this.msgConfig)) {
            return null;
        }
        return JsonUtil.toObj(this.msgConfig, GameAppletDTO.MsgConfigBean.class);
    }

    @Data
    public static class MiPayConfigBean {

        /**
         * 米大师支付应用id
         */
        private String appId;

        /**
         * 米大师现网AppKey
         */
        private String appKey;

        /**
         * 米大师沙箱AppKey
         */
        private String appKeyDev;

        /**
         * 兑换比例
         */
        private Integer scale;
    }

    @Data
    public static class MsgConfigBean {

        /**
         * 消息推送token
         */
        private String msgPushToken;

        /**
         * 消息推送加密密钥
         */
        private String msgPushAesKey;
    }
}
