首先说一下我们的推送流程吧。我们的推送不是实时的主动的推送给用户,而是用户登录后(刷新页面)以调接口的方式实时的拉取内容。
先上图:
用UML图解释下上面标签的含义:
由于推送标签具有层级性,同一分支的同一层级是或的关系,如产品用户,营销伙伴和金蝶员工是或的关系
产品用户和用户角色是&的关系
将内容标签转化为js eval()可以执行的表达式类型如:
( ( ‘IS_LICENSE‘==‘1‘ && ( (0=<PRODUCT_SERVICE_END_DATE && PRODUCT_SERVICE_END_DATE=<1)) && ( ( ‘CATEGORY_CODE‘==‘C04‘ && ( ( ‘SERIES‘==‘S069‘) || ( ‘SERIES‘==‘S036‘ && ( ( ‘PATCH_VERSION‘==‘7.3.1116.1‘) || ( ‘PATCH_VERSION‘==‘7.3.1150.7‘) ) ) || ( ‘SERIES‘==‘S037‘ && ( ‘PATCH_VERSION‘==‘7.3.1199.6‘) ) ) ) || ( ‘CATEGORY_CODE‘==‘C05‘ && ( ( ‘SERIES‘==‘S039‘) || ( ‘SERIES‘==‘S065‘) || ( ‘SERIES‘==‘S064‘) ) ) ) && ( ‘JOB‘==‘finance‘ || ‘JOB‘==‘SYSTEM_ADMIN‘) ) ) && ( ( ‘TIDS‘==‘14794480‘) )
然后将用户的标签replace里面的用户标签,如用户标签产品用户的属性IS_LICENSE=1,替换后变成 ‘1’==‘1’ ,js自动判定为true
原文:https://www.cnblogs.com/weixuehai/p/13590131.html