<?php

namespace loyalsoft;

/**
 * 玩家相关字段
 * 组织方案: 前缀 user-uid  + 字段名称 -filedname
 * 分隔符: -
 * @version
 *          1.0.0 Created at 2017-4-6. by --gwang
 * @author gwang (mail@wanggangzero.cn)
 * @copyright ? 2017-4-6, SJZ LoyalSoft Corporation & gwang. All rights reserved.
 */
class MemKey_User {
//
// <editor-fold defaultstate="collapsed" desc="    辅助方法  ">
//

    /**
     * @return bool 是否使用短名称
     */
    private static function bUseShort() {
//        return true;  # 全部启用
        return match (PLAT) {
            Enum_Plat::dev_gwang => false, # dev时不使用
            default => true,
        };
    }

    /**
     * key前缀
     * @param int $zoneid 分区id
     * @param string $uid
     * @return string
     */
    private static function Key_($zoneid, $uid) {
        return self::bUseShort() ? 'u-' . $uid . '-' . $zoneid : 'user-' . $uid . '-zone' . $zoneid;
    }

// </editor-fold>
//
// <editor-fold defaultstate="collapsed" desc="    Union 玩家公共(不分区)数据    ">

    /**
     * [共享]获取玩家的分区记录(玩过哪些分区)
     * @param int $zoneid 分区id
     * @param string $uid
     * @return string json []
     */
    public static function Union_PlayedZoneInfo_normal($uid) {
        return self::bUseShort() ? 'u-' . $uid . '-z' : 'user-' . $uid . '-zoneinfo';
    }

    /**
     * [共享]玩家各区公共数据
     * @param string $uid
     * @return string json
     */
    public static function Union_PublicState_hash($uid) {
        return self::bUseShort() ? 'u-' . $uid . '-p' : 'user-' . $uid . '-public';
    }

// </editor-fold>
//

// <editor-fold defaultstate="collapsed" desc=" 最新的memkey">  
    /**
     * 玩家信息
     * @param int $zoneid 分区id
     * @param string $uid
     * @return string
     */
    public static function Info_hash($zoneid, $uid) {
        return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-g' : '-gameinfo');
    }
    
    
    
// </editor-fold>          
    /**
     * 玩家证书
     * @param int $zoneid 分区id
     * @param string $uid
     * @return string
     */
    public static function Sig($zoneid, $uid) {
        return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-sig' : '-sig');
    }

// <editor-fold defaultstate="collapsed" desc="    Mail 邮件    ">

    /**
     * 玩家邮件 - 当前的maxid
     * @param int $zoneid
     * @param strng $uid
     * @return string
     */
    public static function Mail_CurId_int($zoneid, $uid) {
        return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-m-ci' : '-mail-curid');
    }

    /**
     * 玩家邮件 - 已领取到的系统邮件id集合
     * @param int $zoneid
     * @param strng $uid
     * @return string
     */
    public static function Mail_SysRecord_set($zoneid, $uid) {
        return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-m-s' : '-mail-sysrecord');
    }

    /**
     * 玩家邮件 - 邮件列表
     * @param int $zoneid
     * @param strng $uid
     * @return string
     */
    public static function Mail_Queue_hash($zoneid, $uid) {
        return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-m-q' : '-mail-queue');
    }

// </editor-fold>

    /**
     * 支付流程中, 渠道支付服务器发过来的订单通知, 需要客户端主动请求服务端刷新到自己的账户中.
     * @param int $zoneid 分区id
     * @param string $uid
     * @return string
     */
    public static function PayOrders($zoneid, $uid) {
        return self::Key_($zoneid, $uid) . ( self::bUseShort() ? '-o' : '-orders');
    }

//
// <editor-fold defaultstate="collapsed" desc="  status data  ">

    /**
     * 客户端属性信息(@火山引擎)
     * @param type $zoneid
     * @param type $uid
     * @return type
     */
    public static function stat_volc_headers($zoneid, $uid) {
        return self::Key_($zoneid, $uid) . (self::bUseShort() ? "-s-cp" : "stat-clientProperties");
    }

    /**
     * 玩家抽奖数据
     * @param int $zoneid 分区id
     * @param string $uid
     * @return string
     */
    public static function stat_LotteryRecords($zoneid, $uid) {
        return self::Key_($zoneid, $uid) . ( self::bUseShort() ? '-s-l' : '-stat-lotterys');
    }

    /**
     * 玩家消费数据 - 商品购买量 (zset)
     * @param type $zoneid
     * @param type $uid
     * @return {
     *   id:times,
     *   id:times,...s
     *  }
     */
    public static function stat_Shopbuy_zset($zoneid, $uid) {
        return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-s-sb' : '-stat-shopbuy');
    }

    /**
     * 玩家消费数据 - 神秘商城商品购买量 (zsets)
     * @param type $zoneid
     * @param type $uid
     * @return type
     */
    public static function stat_SecretShopBuy_zset($zoneid, $uid) {
        return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-s-sb' : '-stat-shopbuy');
    }

    /**
     * 玩家消费数据 - 消费记录 (list)
     * @param type $zoneid
     * @param type $uid
     * @return type
     */
    public static function log_shopbuy_list($zoneid, $uid) {
        return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-l-sb' : "-log-shopbuy");
    }

    /**
     * 玩家消费数据 - 神秘商城消费记录 (list30)
     * @param type $zoneid
     * @param type $uid
     * @return type
     */
    public static function log_secretshopbuy_list($zoneid, $uid) {
        return self::Key_($zoneid, $uid) . (self::bUseShort() ? '-l-ssb' : "-log-secretshopbuy");
    }

// </editor-fold>
//
    // <editor-fold defaultstate="collapsed" desc="   临时/时效性数据   ">
    //

    /**
     * 玩家临时/时效性数据 - 战场奖励与计算串的MD5值
     * @param int $zoneid
     * @param string $uid
     */
    public static function temp_arenas_pre_reward_md5_str($zoneid, $uid) {
        return self::Key_($zoneid, $uid) . (self::bUseShort() ? "-t-aprwd5" : "-temp-arenasPreRewardMD5");
    }

    //
// </editor-fold>
}
