//======================================================
//函数名称:hwd_deductPoint
//返回类型:bool
//函数说明:扣点,计点模式可用.
//参数<1>:point,扣除点数,最小为1点
//参数<2>:remarks,扣点备注,管理可在后台查看,用户可在个人中心查看(请在"软件编辑"中开启"记录扣点日志")
//参数<3>:interval,扣点间隔(单位:秒),0为不限,即每次都扣点.大于零代表指定间隔内不重复扣点,例如1天只扣一次点,那么间隔就是86400秒,需在软件后台开启:记录扣点日志().
//特别说明:只有相同的point和remarks才会过滤,例如:hwd_deductPoint(1,"日费用",86400) 和 hwd_deductPoint(30,"月费用",2592000);这两个并不冲突,因为扣点数量和扣点备注均不同.
//======================================================
extern "C" HWD_API bool __stdcall hwd_deductPoint(int point, const char* remarks, int interval);
hwd_deductPoint(1,"备注",60);
护卫盾_扣点(1,"备注",60)
如果未开启记录扣点日志
则remarks和interval参数无效。每次调用该函数,均扣点。
如果已开启记录扣点日志
,则只有相同的数量和备注,才会校验interval。
扣点示例(已开启记录扣点日志
)下方演示了多项目穿插扣点。
扣点时间 | 扣除点数 | 扣点备注 | 扣点间隔 | 实际是否扣点 | 原因说明 |
---|---|---|---|---|---|
2020年9月25日12:00:00 | 5 | 日功能费用 | 86400 | 是 | 限制86400秒内不重复扣点,本次为首次扣点,所以会扣除 |
2020年9月25日14:00:00 | 5 | 日功能费用 | 86400 | 否 | 相同的点数与备注,且扣点间隔未超过86400秒,所以不会扣除 |
2020年9月25日16:00:00 | 5 | 日功能费用 | 86400 | 否 | 相同的点数与备注,且扣点间隔未超过86400秒,所以不会扣除 |
2020年9月25日17:00:00 | 1 | 日功能附加费用 | 86400 | 是 | 拥有不同的点数与备注,是新功能扣点,所以会扣除 |
2020年9月25日18:00:00 | 5 | 日功能费用 | 86400 | 否 | 相同的点数与备注,且扣点间隔未超过86400秒,所以不会扣除 |
2020年9月25日19:00:00 | 1 | 日功能附加费用 | 86400 | 否 | 相同的点数与备注,且扣点间隔未超过86400秒,所以不会扣除 |
2020年9月26日12:00:01 | 5 | 日功能费用 | 86400 | 是 | 虽然拥有相同的点数与备注,但间隔已超过86400秒,所以会扣除 |
2020年9月26日17:00:01 | 1 | 日功能附加费用 | 86400 | 是 | 虽然拥有相同的点数与备注,但间隔已超过86400秒,所以会扣除 |
记录扣点日志
用户群体比较计较的情况下,每一笔扣点都要看明细,如果开启记录扣点日志,用户可以在用户中心
查看历史扣点记录,消费更加清晰。
互斥体
扣点函数中的扣除点数
与扣点备注
为检测重复扣点的互斥体,如果两项均相同,则校验是否在扣点间隔内,在间隔内,说明没到扣点时间,不扣点
,如已超过间隔,则扣点
。常应用于不需要重复扣点的场景,例如24小时内使用某功能,不重复扣点,那么间隔就是86400秒。
例子前提:微博养号软件,三个功能,1.注册账号(扣5点),2.登录账号(每号24小时内扣2点),发文(扣2点)。
hwd_deductPoint(5,"注册扣点",0);
这里无需校验扣点间隔,执行一次扣5点。hwd_deductPoint(2,"登录扣点[操作的账号]",86400);
首次执行扣2点,24小时内同账号重复登陆,不重复扣点。hwd_deductPoint(2,"发文扣点",0);
这里无需校验扣点间隔,执行一次扣2点。登录扣点[操作的账号]
这里有个可变因素操作的账号
,使用此方法可以保证每个操作的账号为独立的互斥体。