119 lines
2.8 KiB
JavaScript
119 lines
2.8 KiB
JavaScript
"use strict";
|
|
cc._RF.push(module, '2334b7QbQ5I2ZwxOl+jHz/i', 'nx.storage');
|
|
// Scripts/nx/kernel/nx.storage.js
|
|
|
|
"use strict";
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Nx本地缓存管理
|
|
*
|
|
*
|
|
*
|
|
* 2021.12.10
|
|
******************************************************************************/
|
|
|
|
var CFG = require("config");
|
|
var NxObject = require("nx.object");
|
|
var Crypto = require("cryptoHelper");
|
|
var nxStorage = cc.Class({
|
|
"extends": NxObject,
|
|
name: "nxStorage",
|
|
sd: null,
|
|
// 初始化
|
|
initialize: function initialize(_args) {
|
|
// USPER
|
|
this._super(_args);
|
|
this.sd = cc.sys.localStorage;
|
|
nx.storage = this;
|
|
return true;
|
|
},
|
|
// 销毁
|
|
uninitialize: function uninitialize() {
|
|
nx.storage = null;
|
|
|
|
// USPER
|
|
return this._super();
|
|
},
|
|
// 取值
|
|
get: function get(_key, _def, _pri) {
|
|
if (_def === void 0) {
|
|
_def = "";
|
|
}
|
|
if (_pri === void 0) {
|
|
_pri = false;
|
|
}
|
|
if (nx.dt.strEmpty(_key)) {
|
|
nx.logger.error("[缓存]空键值");
|
|
return _def;
|
|
}
|
|
var val = this.sd.getItem(this.skey(_key, _pri));
|
|
return Crypto.decrypt(val) || _def;
|
|
},
|
|
// 取数
|
|
getNumber: function getNumber(_key, _def, _pri) {
|
|
if (_def === void 0) {
|
|
_def = 0;
|
|
}
|
|
if (_pri === void 0) {
|
|
_pri = false;
|
|
}
|
|
var val = this.get(_key, _def, _pri);
|
|
var num = parseInt(val);
|
|
if (!nx.dt.numGood(num)) {
|
|
num = _def;
|
|
}
|
|
return num;
|
|
},
|
|
// 取对象
|
|
getObject: function getObject(key, _pri) {
|
|
return JSON.parse(this.get(key, "{}", _pri));
|
|
},
|
|
// 设值
|
|
set: function set(_key, _value, _pri) {
|
|
if (nx.dt.strEmpty(_key)) {
|
|
nx.logger.error("[缓存]空键值");
|
|
return;
|
|
}
|
|
var val = Crypto.encrypt("" + _value);
|
|
this.sd.setItem(this.skey(_key, _pri), val);
|
|
nx.logger.debug("[缓存]更新:%s -> %s", _key, _value);
|
|
},
|
|
// 设对象
|
|
setObject: function setObject(key, value, _pri) {
|
|
this.set(key, JSON.stringify(value), _pri);
|
|
},
|
|
// 删值
|
|
del: function del(_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 skey(_key, _pri) {
|
|
// 是否私有
|
|
if (_pri) {
|
|
var 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 prefix() {
|
|
var key = CFG.GName;
|
|
if (window.nx && nx.frame) {
|
|
key = nx.frame.vget("GUUID");
|
|
}
|
|
return key || CFG.GName;
|
|
}
|
|
});
|
|
|
|
// 模块导出
|
|
module.exports = nxStorage;
|
|
|
|
cc._RF.pop(); |