@freelog/freelog-cg-collection 1.0.12 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,41 +1,42 @@
1
- FOR NODE
2
-
3
- lockupDays = 10
4
-
5
- Initial:
6
- let startTime = Time.Now()
7
- Event.Void() -> Auth[startTime = startTime]
8
-
9
- // 更新结算时间,此状态是合约生效期
10
- Auth{active}[startTime]:
11
- let limitTime = Time.NextMonth(contextArgs.startTime)
12
- Event.Time.Schedule(dateTime = limitTime) -> S1[startTime = contextArgs.startTime, limitTime = limitTime]
13
-
14
- // 结算阶段
15
- S1{active}[startTime, limitTime]:
16
- let count = Query.ResourceService.CountOfUpdates({"subject":policy.subject, "startTime":contextArgs.startTime, "limitTime":contextArgs.limitTime})
17
- Event.Void(count less 20) -> S2[startTime = contextArgs.startTime, limitTime = contextArgs.limitTime]
18
- Event.Void(count greaterOrEqual 20) -> S3
19
-
20
- // 一档结算
21
- S2{active}[startTime, limitTime]:
22
- let sumAmounts = Query.TransatcionService.AmountsSum({"subject":xxx, "startTime":contextArgs.startTime, "limitTime":contextArgs.limitTime})
23
- let debt = 1000 + Kit.Min(5000, (sumAmounts - 1000) * 0.05)
24
- // elemsNum 参数表示支付时选取的资源个数,如果是0则表示选取的是单品或者集合全体
25
- Event.Transaction.Pay(amount = debt, elemsNum = 0) -> Auth[startTime = contextArgs.limitTime]
26
- // 支付缓冲
27
- Event.Time.Schedule(dateTime = Time.AddTime(contextArgs.limitTime, lockupDays, "day")) -> Lockup[limitTime = contextArgs.limitTime, debt = debt]
28
-
29
- // 二档结算
30
- S3{active}[startTime, limitTime]:
31
- let sumAmounts = Query.TransatcionService.AmountsSum({"subject":xxx, "startTime":contextArgs.startTime, "limitTime":contextArgs.limitTime})
32
- let debt = 3000 + Kit.Min(8000, (sumAmounts - 3000) * 0.08)
33
- Event.Transaction.Pay(amount = debt, elemsNum = 0) -> Auth[startTime = contextArgs.limitTime]
34
- // 支付缓冲
35
- Event.Time.Schedule(dateTime = Time.AddTime(contextArgs.limitTime, lockupDays, "day")) -> Lockup[limitTime = contextArgs.limitTime, debt = debt]
36
-
37
- // 锁定期不给授权
38
- Lockup[limitTime, debt]:
39
- let sumAmounts = Query.TransatcionService.AmountsSum({"subject":xxx, "startTime":contextArgs.limitTime, "limitTime":Time.AddTime(contextArgs.limitTime, lockupDays, "day")})
40
- let debt = contextArgs.debt + sumAmounts * 0.5
41
- Event.Transaction.Pay(amount = debt, elemsNum = 0) -> Auth[startTime = Time.Now()]
1
+ // 所有人都可以签该策略,所以身份信息不在签约时判定,下面的echoSubject = echoSubject可以不写,因为它需要和labels一起使用,来判断某用户组是否有某标签
2
+ FOR USER(echoSubject = echoSubject)
3
+
4
+ echoSubject <- Entity.Echo.<连载小说的会员>
5
+
6
+ unitPrice <- 1
7
+
8
+ setUnlocked = []
9
+
10
+ setTemp = []
11
+
12
+ setFree = []
13
+
14
+ Initial None:
15
+ let labels = Query.EchoService.Labels(subject = echoSubject, licensee = contract.licensee)
16
+ Event.Void("vip1" in labels) -> AUTH_MEMBER
17
+ Event.Void(not ("vip1" in labels)) -> AUTH_VIP1
18
+
19
+ AUTH_MEMBER Partial{setUnlocked, setTemp}:
20
+ Event.Transaction.Pay(amount = unitPrice, elemsNum = 1) -> AUTH_MEMBER{fun.addElements(setUnlocked, contract.licenseeSelectedElems, false)}
21
+ Event.Transaction.Pay(amount = unitPrice * 10 * 0.8, elemsNum = 10) -> AUTH_MEMBER{fun.addElements(setUnlocked, contract.licenseeSelectedElems, false)}
22
+ Event.Custom.AcceptEvent({"title":"MembershipChange", "subject":echoSubject, "label":"vip1"}) -> AUTH_VIP1
23
+
24
+ Event.Custom.WatchAD(elemsNum = 1) -> AUTH_MEMBER{fun.addElements(setTemp, contract.licenseeSelectedElems, false)}
25
+ Event.Time.Schedule(Time.AddTime(Time.GetTime(Time.Now(), "day"), 1, "day")) -> AUTH_MEMBER{fun.clearElems(setTemp)}
26
+
27
+ AUTH_VIP1 Partial{setUnlocked, setTemp, setFree}:
28
+ Event.Transaction.Pay(amount = unitPrice * 0.75, elemsNum = 1) -> AUTH_VIP1{fun.addElements(setUnlocked, contract.licenseeSelectedElems, false)}
29
+ Event.Transaction.Pay(amount = unitPrice * 10 * 0.6, elemsNum = 10) -> AUTH_VIP1{fun.addElements(setUnlocked, contract.licenseeSelectedElems, false)}
30
+ Event.Custom.AcceptEvent({"title":"MembershipChange", "subject":echoSubject, "label":"member"}) -> AUTH_MEMBER
31
+
32
+ Event.Custom.WatchAD(elemsNum = 1) -> AUTH_VIP1{fun.addElements(setTemp, contract.licenseeSelectedElems, false)}
33
+ Event.Time.Schedule(Time.AddTime(Time.GetTime(Time.Now(), "day"), 1, "day")) -> AUTH_VIP1{fun.clearElems(setTemp)}
34
+
35
+ Event.Transaction.Pay(amount = 0, elemsNum = 1) -> FREE_UNLOCK_ROUTE[elems:contract.licenseeSelectedElems]
36
+ Event.Time.Schedule(Time.AddTime(Time.GetTime(Time.Now(), "month"), 1, "month")) -> AUTH_VIP1{fun.clearElems(setFree)}
37
+
38
+ // 一个中间态来实现if-else的功能
39
+ FREE_UNLOCK_ROUTE None[elems]:
40
+ let freeUnlockedSize = Kit.Array.Size(setFree)
41
+ Event.Void(freeUnlockedSize < 4) -> AUTH_VIP1{fun.addElements(setFree, contextArgs.elems, false)}
42
+ Event.Void(freeUnlockedSize >= 4) -> AUTH_VIP1