@bravf
2018-03-30T05:44:01.000000Z
字数 1304
阅读 659
未分类
| ID | 人 | 锁 | 门 | 钥匙 | 钥匙类型 | 开始时间 | 结束时间 | 权限类型 | 是否禁用 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | eric | A_a | A | a-b-c | 临时 | 18-3-30 12:00 | 18-3-30 13:00 | in | false |
| 2 | eric | A_a | A | b-c-d | 临时 | 18-3-30 14:00 | 18-3-30 15:00 | in | false |
| 3 | lucy | B_a | B | A-B-C | 长期 | 18-3-30 00:00 | 19-3-30 00:00 | in | false |
| 4 | lucy | B_a | B | - | - | 18-3-30 12:00 | 18-3-30 14:00 | ex | false |
1、每行数据表示一个人对一个锁在一段时间里的开锁权限
2、权限类型包括可开锁、不可开锁
3、如果是可开锁类型,则需要有钥匙
4、钥匙有【临时、长期】类型
5、权限可以被【禁用、恢复】和删除
function canOpen(user, lockId, dateTime){var userLockList = select * from Table.UseLock where user=lucy and lock=B_a// 如果没有记录,则开不了门if (!userLockList.length){return false}// 从后往后查记录for (var i=userLocList.length-1, o; i>=0; i--){var o = userLockList[i]// 如果在区间内if (isSpan(dateTime, o)){if (o.useType === 'in'){return true}else {return false}}}return false}canOpen('lucy', 'B_a', Date('2018-03-30 12:25:05'))
Url: /useLock/add
Input:
1、user
2、lockId
3、doorId
3、startDateTime
4、endDateTime
5、useType
Output:
{
success: true or false
}
Url: /useLock/canOpen
Input:
1、user
2、lockId
3、dateTime
Output:
{
success: true or false,
data: {
canOpen: true or false,
key: 'xxxx',
keyType: ''
}
}
每次的权限调整都增加新的记录项,当进行权限校验时,从后往前对比所有记录项,从而得到相应结果。