Files
2026-05-23 22:10:14 +08:00

131 lines
2.4 KiB
JavaScript

/*******************************************************************************
*
* Nx本地缓存管理
*
*
*
* 2021.12.10
******************************************************************************/
const CFG = require( "config" );
const NxObject = require( "nx.object" );
const Crypto = require( "cryptoHelper" );
const nxStorage = cc.Class( {
extends: NxObject,
name: "nxStorage",
sd: null,
// 初始化
initialize: function( _args ) {
// USPER
this._super( _args );
this.sd = cc.sys.localStorage;
nx.storage = this;
return true;
},
// 销毁
uninitialize: function() {
nx.storage = null;
// USPER
return this._super();
},
// 取值
get: function( _key, _def = "", _pri = false ) {
if( nx.dt.strEmpty( _key ) ) {
nx.logger.error( "[缓存]空键值" );
return _def;
}
let val = this.sd.getItem( this.skey( _key, _pri ) );
return Crypto.decrypt( val ) || _def;
},
// 取数
getNumber: function( _key, _def = 0, _pri = false ) {
let val = this.get( _key, _def, _pri );
let num = parseInt( val );
if( !nx.dt.numGood( num ) ) {
num = _def;
}
return num;
},
// 取对象
getObject: function( key, _pri ) {
return JSON.parse( this.get( key, "{}", _pri ) );
},
// 设值
set: function( _key, _value, _pri ) {
if( nx.dt.strEmpty( _key ) ) {
nx.logger.error( "[缓存]空键值" );
return;
}
let val = Crypto.encrypt( "" + _value );
this.sd.setItem( this.skey( _key, _pri ), val );
nx.logger.debug( "[缓存]更新:%s -> %s", _key, _value );
},
// 设对象
setObject: function( key, value, _pri ) {
this.set( key, JSON.stringify( value ), _pri );
},
// 删值
del: function( _key, _pri ) {
if( nx.dt.strEmpty( _key ) ) {
nx.logger.warn( "[缓存]空键值" );
return;
}
this.sd.removeItem( this.skey( _key, _pri ) );
nx.logger.debug( "[缓存]删除:%s", _key );
},
// 关键字组合
skey: function( _key, _pri ) {
// 是否私有
if( _pri ) {
let info = nx.bridge.vget( "curRole" );
if( info ) {
_key = nx.text.format( "%s.%s.%s", _key, info.srv_id, info.rid );
}
}
return cc.js.formatStr( "[%s]%s", this.prefix(), _key );
},
// 获取唯一前缀
prefix: function() {
let key = CFG.GName;
if( window.nx && nx.frame ) {
key = nx.frame.vget( "GUUID" );
}
return key || CFG.GName;
},
} );
// 模块导出
module.exports = nxStorage;