如图所示,我最近做的一个授权业务.抽象后就是图片中的有向图. A,B,C等表示人.A->B 表示 A给B授权.A->B旁边的字符串1_10 表示A给B分配的权限时间是从1号开始到10号结束. B旁边方框中字符串表示B实际拥有某项权限的起止时间.整副图只表示一项权限的授权过程.(一项权限对应一副图)
业务要求是授权路径不能形成闭环,就是说A给B授权,B就不能给A授权. 所以这个图不会形成圈.现在我要让A取消B的授权.通过递归,我能删除A->B,并且判断还要不要继续往下删除(比如要不要删除B->D,因为有C->B,所以就不需要继续往下删除).删除A->B后,同时纠正B拥有该权限的起止时间.(通过判断有没有指向B的路径可以计算出来)但是从B开始的之后的路径上数据,有点不好做了.删除A->B后,B的起止时间就是2_11.正常情况 B->D分配的权限时间应该也要改成2_5. 不知道有什么好的办法吗