lite-ts-value v11.93.21
代码
IDbValueService - 数值服务(工作单元)
const valueService: IDbValueService;
// 验证条件
const opt: ValueServiceCheckConditionsOption;
const res = await valueService.checkConditions(opt);
// res is bool
// 获取数量
const opt: ValueServiceGetCountOption;
const res = await valueService.getCount(opt);
// res = 数量
// 更新
const opt: ValueServiceUpdateOption;
await valueService.update(opt);- DbValueService
const nowTime: NowTimeBase;
const buildGetCountHandlerFunc: () => ValueHandlerBase;
const buildUpdateHandlerFunc: () => ValueHandlerBase;
const getOwnValueFunc: () => Promise<OwnValue>;
const valueService = new DbValueService(
项目编号,
buildGetCountHandlerFunc,
buildUpdateHandlerFunc,
nowTime,
getOwnValueFunc,
);IRewardService - 奖励服务
const rewardService: IRewardService;
// 获取结果
const opt: RewardServiceFindResultsOption;
const res = await rewardService.findResults(opt);
// 预览
const opt: RewardServicePreviewOption;
const res = await rewardService.preview(opt);IValueService - 数值服务
const valueService: IValueService;
// 验证条件
const res = await valueService.checkConditions(数值条件二维数组);
// res is bool
// 是否满足
const res = await valueService.checkEnough(数值数组);
// res is bool
// 获取数量
const res = await valueService.getCount(数值类型);
// res = 数量
// 获取当前时间戳
const res = await valueService.getNow();
// 更新
await valueService.update(数值数组);- ValueService - 数值服务
const getNowFunc: () => Promise<number>;
const getOwnValueFunc: () => Promise<OwnValue>;
const valueService: IValueService = new ValueService(getNowFunc, getOwnValueFunc);ValueHandlerBase - 数值处理器(责任链)
const handler: ValueHandlerBase;
// 处理
const value: Value;
const valueService: ValueService;
const uow: UnitOfWorkBase;
await handler.handle({
project: 项目编号,
value,
valueService,
uow,
});CheckNegativableValueHandler - 检测负值数值处理器
道具示例 - ValueTypeData
| value:number | text:string | negativable:bool |
|---|---|---|
| 编号 | 道具名 | 是否可负数 |
| 1 | 怪物出生纵坐标 | true |
const enumFactory: EnumFactoryBase;
const valueHandler: ValueHandlerBase = new CheckNegativableValueHandler(enumFactory);FilterReplaceableValueHandler - 过滤可替换数值处理器
道具示例 - ValueTypeData
| value:number | text:string | replaceable:bool |
|---|---|---|
| 编号 | 道具名 | 是否替换 |
| 1 | 上次登录时间 | true |
const enumFactory: EnumFactoryBase;
const valueHandler: ValueHandlerBase = new FilterReplaceableValueHandler(enumFactory);GetExpireOnValueHandler - 获取过期时间数值处理器
道具示例 - ValueTypeData
| value:number | text:string | expireOnValueType:number |
|---|---|---|
| 编号 | 道具名 | 过期时间 |
| 1 | xx过期时间 | |
| 2 | xx | xx过期时间 |
const enumFactory: EnumFactoryBase;
const valueHandler: ValueHandlerBase = new GetExpireOnValueHandler(enumFactory);GetRecoveryValueHandler - 获取恢复数值处理器
道具示例 - ValueTypeData
| value:number | text:string | recovery.countdownOnValueType:enum:config.ValueTypeData.text | recovery.interval:number | recovery.maxValueType:enum:config.ValueTypeData.text |
|---|---|---|---|---|
| 编号 | 道具名 | 上次恢复时间 | 恢复间隔(单位: s) | 恢复上限 |
| 1 | 上次恢复体力时间 | |||
| 2 | 体力上限 | |||
| 3 | 体力 | 上次恢复体力时间 | 6 | 体力上限 |
const enumFactory: EnumFactoryBase;
const valueHandler: ValueHandlerBase = new GetRecoveryValueHandler(enumFactory);GetResetValueHandler - 获取重置数值处理器
道具示例 - ValueTypeData
| value:number | text:string | reset.timeValueType:enum:config.ValueTypeData.text | reset.granularity:string | reset.countValueType:enum:config.ValueTypeData.text |
|---|---|---|---|---|
| 编号 | 道具名 | 对照时间 | 时间粒度 | 重置数量数值类型 |
| 1 | 排位赛挑战重置时间 | |||
| 2 | 排位赛最大挑战次数 | |||
| 3 | 今日排位赛挑战次数 | 排位赛挑战重置时间 | day | 排位赛最大挑战次数 |
const enumFactory: EnumFactoryBase;
const time: TimeBase;
const valueHandler: ValueHandlerBase = new GetResetValueHandler(time, enumFactory);SubjectValueHandler - 主题数值处理器
与IValueObserver配合使用
道具示例 - ValueTypeData
| value:number | text:string |
|---|---|
| 编号 | 道具名 |
| 1 | 金币 |
@ccclass('ModalPropValue')
export class ModalPropValue extends MvvmView<void> implements IValueObserver {
@ioc.Inject(SubjectValueHandler)
public valueSubjectHandler: SubjectValueHandler;
public async predicate(valueTypeData: ValueTypeData) {
return valueTypeData.value == 1;
}
public async notify() {
// 当金币变更时 该函数会被调用
}
protected async onActive() {
this.valueSubjectHandler.addObserver(this);
}
protected onDestroy() {
this.valueSubjectHandler.removeObserver(this);
}
}UpdateCountValueHandler - 更新数量数值处理器
const valueHandler: ValueHandlerBase = new UpdateCountValueHandler();UpdateDbValueHandler - 更新数据库数值服务
const dbFactory: DbFactoryBase;
const getEntryFunc: () => Promise<T>;
const dbOptions: DbOption[];
const valueHandler: ValueHandlerBase = new UpdateDbValueHandler(dbFactory, getEntryFunc, dbOptions);UpdateExpValueHandler - 更新表达式数值处理器
道具示例 - ValueTypeData
| value:number | text:string | exp.valueTypes:array:config.enum.ValueTypeData.text | exp.formula:string |
|---|---|---|---|
| 编号 | 道具名 | 表达式数值 | 表达式公式 |
| 1 | 总攻击力 | 基础攻击力*(等级+1) | |
| 2 | 基础攻击力 | 总攻击力 | (等级-1)*(等级+1) |
| 3 | 等级 | 基础攻击力 |
const enumFactory: EnumFactoryBase;
const valueHandler: ValueHandlerBase = new UpdateExpValueHandler(enumFactory);UpdateExpireOnValueHandler - 更新过期时间数值处理器
道具示例 - ValueTypeData
| value:number | text:string | expireOnValueType:enum:config.ValueTypeData.text |
|---|---|---|
| 编号 | 道具名 | 过期时间 |
| 1 | xx过期时间 | |
| 2 | xx | xx过期时间 |
const enumFactory: EnumFactoryBase;
const valueHandler: ValueHandlerBase = new UpdateExpireOnValueHandler(enumFactory);UpdateLogValueHandler - 更新日志数值处理器
const dbFactory: DbFactoryBase;
const stringGenerator: StringGeneratorBase;
const createEntryFunc: () => Partial<ValueLog>;
const dbOptions: DbOption[];
const valueHandler: ValueHandlerBase = new UpdateLogValueHandler(dbFactory, stringGenerator, createEntryFunc, dbOptions);UpdateNowValueHandler - 更新当前时间数值处理器
道具示例 - ValueTypeData
| value:number | text:string | now:granularity |
|---|---|---|
| 编号 | 道具名 | 当前时间粒度 |
| 1 | 登录时间 | s |
修改数值示例
| 数量 | 值 |
|---|---|
| 0 | 无效 |
| 1 | 当前时间 |
| -1 | 0 |
| <= 946656000 | 当前时间 - 其他值 |
| >946656000 | 数量 |
const enumFactory: EnumFactoryBase;
const nowTime: NowTimeBase;
const time: TimeBase;
const valueHandler: ValueHandlerBase = new UpdateNowValueHandler(nowTime, time, enumFactory);UpdateOpenValueHandler - 更新打开数值处理器
道具示例 - ValueTypeData
| value:number | text:string | open:Reward |
|---|---|---|
| 编号 | 道具名 | 打开奖励 |
| 1 | 新手礼包 | 支付余额*1*11支付余额*2*22支付余额*3*33 |
const rewardService: RewardService;
const enumFactory: EnumFactoryBase;
const valueHandler: ValueHandlerBase = new UpdateOpenValueHandler(rewardService, '场景', enumFactory);UpdateRecoveryValueHandler - 更新自动恢复数值处理器
道具示例 - ValueTypeData
| value:number | text:string | recovery.countdownOnValueType:enum:config.ValueTypeData.text | recovery.interval:number | recovery.maxValueType:enum:config.ValueTypeData.text |
|---|---|---|---|---|
| 编号 | 道具名 | 上次恢复时间 | 恢复间隔(单位: s) | 恢复上限 |
| 1 | 上次恢复体力时间 | |||
| 2 | 体力上限 | |||
| 3 | 体力 | 上次恢复体力时间 | 6 | 体力上限 |
const enumFactory: EnumFactoryBase;
const valueHandler: ValueHandlerBase = new UpdateRecoveryValueHandler(enumFactory);UpdateRemoteValueHandler - 远程更新数值处理器
道具示例 - ValueTypeData
| value:number | text:string | remote.route:string |
|---|---|---|
| 编号 | 道具名 | 路由 |
| 1 | 装备攻击力 | /growth/update-values |
const enumFactory: EnumFactoryBase;
const rpc: RpcBase;
const rpcBody: { [key: string]: any };
const valueHandler: ValueHandlerBase = new UpdateRemoteValueHandler(rpc, rpcBody, enumFactory);UpdateReplaceableValueHandler - 更新可替换数值处理器
道具示例 - ValueTypeData
| value:number | text:string | replaceable:bool |
|---|---|---|
| 编号 | 道具名 | 是否替换 |
| 1 | 第五赛季头像过期时间 |
const ownValue = {
1: 100
};
const enumFactory: EnumFactoryBase;
const valueHandler: ValueHandlerBase = new UpdateReplaceableValueHandler(enumFactory);UpdateResetValueHandler - 更新重置数值处理器
道具示例 - ValueTypeData
| value:number | text:string | reset.timeValueType:enum:config.ValueTypeData.text | reset.granularity:string | reset.fixedCount:number | reset.countValueType:enum:config.ValueTypeData.text |
|---|---|---|---|---|---|
| 编号 | 道具名 | 对照时间 | 时间粒度 | 重置数量 | 重置数量(数值类型) |
| 1 | 排位赛挑战重置时间 | ||||
| 3 | 今日排位赛挑战次数 | 排位赛挑战重置时间 | day | 4 | 排位赛挑战最大次数 |
const enumFactory: EnumFactoryBase;
const time: TimeBase;
const valueHandler: ValueHandlerBase = new UpdateResetValueHandler(time, enumFactory);UpdateRpcValueHandler - 更新数值服务(rpc)
const rpc: RpcBase;
const callOption: RpcCallOption<void>;
const valueHandler: ValueHandlerBase = new UpdateRpcValueHandler(rpc, callOption);UpdateSyncValueHandler - 更新同步数值处理器
| value:number | text:string | sync.valueTypes:array:enum.config.ValueTypeData.text | sync.negativeValueTypes:json | sync.positiveValueTypes:json |
|---|---|---|---|---|
| 编号 | 道具名 | 同步类型 | 负数同步类型 | 正数同步类型 |
| 1 | 商店充值 | 总充值 | ||
| 2 | 总充值 | |||
| 3 | 金币 | 消耗金币 | [5] | |
| 4 | 消耗金币 | |||
| 5 | 获得金币 |
const enumFactory: EnumFactoryBase;
const valueHandler: ValueHandlerBase = new UpdateSyncValueHandler(enumFactory);ValueConditionOp - 运算符号
| 运算符 | 示例 | 说明 |
|---|---|---|
| = | 金币=5 | 金币数量等于5 |
| >= | 金币>=5 | 金币数量大于等于5 |
| > | 金币>5 | 金币数量大于5 |
| <= | 金币<=5 | 金币数量小于等于5 |
| < | 金币<5 | 金币数量小于5 |
| %= | 登录次数%=503 | 登录次数对100取余后等于3 |
| %>= | 登录次数%>=503 | 登录次数对100取余后大于等于3 |
| %> | 登录次数%>503 | 登录次数对100取余后大于3 |
| %<= | 登录次数%<=503 | 登录次数对100取余后小于等于3 |
| %< | 登录次数%<503 | 登录次数对100取余后小于3 |
| now-diff= | 注册时间now-diff=86400 | 注册时间等于1天 |
| now-diff>= | 注册时间now-diff>=86400 | 注册时间大于等于1天 |
| now-diff> | 注册时间now-diff>86400 | 注册时间大于1天 |
| now-diff<= | 注册时间now-diff<=86400 | 注册时间小于等于1天 |
| now-diff< | 注册时间now-diff<86400 | 注册时间小于1天 |
| own= | 等级own=999 | 999为最大等级 等级等于最大等级 |
| own>= | 等级own>=999 | 999为最大等级 等级大于等于最大等级 |
| own> | 等级own>999 | 999为最大等级 等级大于最大等级 |
| own<= | 等级own<=999 | 999为最大等级 等级小于等于最大等级 |
| own< | 等级own<999 | 999为最大等级 等级小于最大等级 |
ValueType - 数值(道具)
| 编号 | 说明 |
|---|---|
| 1 | 当前时间 |
| 2 | 语言 |
| 3 | 货币 |
| 4 | 支付余额 |
| 5 | 注冊时间 |
| 6 | 登录时间 |
| 7 | 新手礼包领取时间 |
| 8 | 等级 |
| 9 | 登录天数 |
| 10 | 每日登录次数更新时间 |
| 11 | 每日登录次数 |
| 12 | 上次同步时间 |
| 13 | 每日在线时长 |
| 14 | 项目编号 |
| 15 | 区服编号 |
| 17 | 引导编号 |
| 18 | 头像 |
| 19 | 头像框 |
| 20 | 账号留存时间 |
| 21 | 渠道 |
| 22 | 总支付余额 |
| 23 | 游戏版本 |
| 24 | 省份 |
| 25 | 城市 |
| 26 | 新手礼包 |
| 27 | 联盟编号 |
| 28 | 会员等级 |
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago