## 函数名称
hwd_deductPoint();
## 易语言模块
护卫盾_扣点();
## 函数说明
扣点,计点模式可用.只有相同的point和remarks才会过滤,例如:hwd_deductPoint(1,"日费用",86400)和hwd_deductPoint(30,"月费用",2592000);这两个并不冲突,因为扣点数量和扣点备注均不同.
## 参数列表
| 参数名称 | 参数类型 | 参数说明 |
| ------------ | ------------ | ------------ |
| point | int | 扣除点数,最小为1点 |
| remarks | const char * | 扣点备注,管理可在后台查看,用户可在个人中心查看(请在"软件编辑"中开启"记录扣点日志") |
| interval | int | 扣点间隔(单位:秒),0为不限,即每次都扣点.大于零代表指定间隔内不重复扣点,例如1天只扣一次点,那么间隔就是86400秒,需在软件后台开启:记录扣点日志(). |
## 函数原型
```
///
/// 扣点,计点模式可用.只有相同的point和remarks才会过滤,例如:hwd_deductPoint(1,"日费用",86400)和hwd_deductPoint(30,"月费用",2592000);这两个并不冲突,因为扣点数量和扣点备注均不同.
///
///
扣除点数,最小为1点
///
扣点备注,管理可在后台查看,用户可在个人中心查看(请在"软件编辑"中开启"记录扣点日志")
///
扣点间隔(单位:秒),0为不限,即每次都扣点.大于零代表指定间隔内不重复扣点,例如1天只扣一次点,那么间隔就是86400秒,需在软件后台开启:记录扣点日志().
///
HWD_LIBRARY_API hwd_deductPoint (int point, const char * remarks, int interval);
```
## 状态码
| 状态码 | 状态提示内容 |
| ------------ | ------------ |
| 224 | 扣点账户不存在. |
| 225 | 点数不足,扣点失败. |
| 226 | 扣点失败,未知原因,请联系客服. |
## 附加说明
- 如果未开启`记录扣点日志`则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点)。
1. 每注册一个账号`hwd_deductPoint(5,"注册扣点",0);`这里无需校验扣点间隔,执行一次扣5点。
2. 每登录一个账号`hwd_deductPoint(2,"登录扣点[操作的账号]",86400);`首次执行扣2点,24小时内同账号重复登陆,不重复扣点。
3. 每发布一条博文`hwd_deductPoint(2,"发文扣点",0);`这里无需校验扣点间隔,执行一次扣2点。
4. ps.第2步使用的互斥体为`登录扣点[操作的账号]`这里有个可变因素`操作的账号`,使用此方法可以保证每个操作的账号为独立的互斥体。