Rule engine el規則轉換 (for cms).md
41 additions, 145 deletions
| ... | ... | @@ -125,39 +125,45 @@ |
| 125 | -activity_type: | |
| 126 | -* * 兌換點數 EXCHANGE_POINT | |
| 127 | - * 兌換票券 EXCHANGE_VOUCHER | |
| 128 | - * 核銷 REDEEM | |
| 129 | - * 登入 LOGIN | |
| 130 | - * mgm MGM | |
| 131 | - * 第三方 THIRD_PARTY | |
| 125 | + | Level | Key | Data type | Required | Field name | Description / Example | | |
| 126 | +| ---| ---| ---| ---| ---| --- | | |
| 127 | +| 1 | chainType | String | true | chain type | | | |
| 128 | +| 1 | chainId | String | true | activitytype + rule_engine_flow.pkid | ex. EXCHANGE_VOUCHER_0001 | | |
| 129 | +| 1 | id | String | false | rule_engine_flow.pkid | | | |
| 130 | +| 1 | elDatas | jsonArray | true | el expression | | | |
| 131 | +| 2 | sub_id | String | true | MISSION_SUB_SETTING.id | | | |
| 132 | +| 2 | content | String | true | el content | | | |
| 133 | + | |
| 132 | 134 | "success": true, |
| 133 | 135 | "errorCode": null, |
| 134 | 136 | "message": null, |
| 135 | 137 | "values": { |
| 136 | - "CHAIN_TYPE":"MISSION", | |
| 137 | - "CHAIN_ID":"EXCHANGE_VOUCHER_0001", | |
| 138 | - "ID":"0001", | |
| 139 | - "content": "SER( | |
| 140 | - VERIFY001, | |
| 141 | - AND( | |
| 142 | - SER(SERIAL_ID, IN).DATA('{"sub_id": '001', 'value': '["1", "2"]'}')), | |
| 143 | - SER(PRODUCT_NAME, IN).DATA('{"sub_id": '002', 'value': '["星巴克 150 元券", "威秀電影票"]'}')), | |
| 144 | - AND( | |
| 145 | - OR( | |
| 138 | + "chainType":"MISSION", | |
| 139 | + "chainId":"EXCHANGE_VOUCHER_0001", | |
| 140 | + "id":"0001", | |
| 141 | + "elDatas":[ | |
| 142 | + { | |
| 143 | + "sub_id":"001", | |
| 144 | + "content":"SER(SERIAL_ID, IN).DATA('{"sub_id":'001','value':'["1","2","3","4","5","6","7","8","9","10"]'}')" | |
| 145 | + }, | |
| 146 | + { | |
| 147 | + "sub_id":"002", | |
| 148 | + "content":"SER(PRODUCT_NAME, IN).DATA('{"sub_id": '002', 'value': '["星巴克 150 元券", "威秀電影票"]'}')" | |
| 149 | + }, | |
| 150 | + { | |
| 151 | + "sub_id":"003", | |
| 152 | + "content":"OR( | |
| 146 | 153 | SER(PRODUCT_NAME, LIKE).DATA('{"sub_id": '003', 'value': '["現金券"]'}')), |
| 147 | 154 | SER(PRODUCT_NAME, LIKE).DATA('{"sub_id": '003', 'value': '["抵用券"]'}') |
| 148 | 155 | ), |
| 149 | - SER(total_cub_points, gt).DATA('{"sub_id": '003', 'value': '["500"]'}') | |
| 150 | - ) | |
| 151 | - ) | |
| 152 | - )" | |
| 156 | + SER(total_cub_points, gt).DATA('{"sub_id": '003', 'value': '["500"]'}')" | |
| 153 | 157 | } |
| 158 | + ] | |
| 159 | +} | |
| 154 | 160 | "errorCode": null, |
| 155 | 161 | "message": null, |
| 156 | 162 | "values": { |
| 157 | - "CHAIN_TYPE":"MISSION", | |
| 158 | - "CHAIN_ID":"EXCHANGE_VOUCHER_0001", | |
| 159 | - "ID":"0001", | |
| 160 | - "content": "SER( | |
| 161 | - VERIFY001, | |
| 162 | - AND(VOUCHER) | |
| 163 | -).DATA'{"sub_id": '004', 'value': null}' " | |
| 164 | -} | |
| 165 | -``` | |
| 166 | - | |
| 167 | -多個子任務,其中一個任務為『兌換任意票券3張』,沒有設定任何條件限制 | |
| 168 | - | |
| 169 | -```json | |
| 170 | - request: | |
| 163 | + "chainType":"MISSION", | |
| 164 | + "chainId":"EXCHANGE_VOUCHER_0001", | |
| 165 | + "id":"0001", | |
| 166 | + "elDatas":[ | |
| 171 | - "content": { | |
| 172 | - "logic": "and", | |
| 173 | - "rules": [ | |
| 174 | - { | |
| 175 | 167 | "sub_id": "001", |
| 176 | - "activity_type":"exchange_voucher", | |
| 177 | - "field": "serial_id", | |
| 178 | - "operator": "in", | |
| 179 | - "values": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] | |
| 180 | - }, | |
| 181 | - { | |
| 182 | - "sub_id": "002", | |
| 183 | - "activity_type":"exchange_voucher", | |
| 184 | - "field": "product_name", | |
| 185 | - "operator": "in", | |
| 186 | - "values": ["星巴克 150 元券", "威秀電影票"] | |
| 187 | - }, | |
| 188 | - { | |
| 189 | - "sub_id": "003", | |
| 190 | - "activity_type":"exchange_voucher", | |
| 191 | - "logic": "and", | |
| 192 | - "rules": [ | |
| 193 | - { | |
| 194 | - "logic": "or", | |
| 195 | - "rules": [ | |
| 196 | - { | |
| 197 | - "field": "product_name", | |
| 198 | - "operator": "like", | |
| 199 | - "values": ["現金券"] | |
| 200 | - }, | |
| 201 | - { | |
| 202 | - "field": "product_name", | |
| 203 | - "operator": "like", | |
| 204 | - "values":["抵用券"] | |
| 168 | + "content":"SER(SERIAL_ID, IN).DATA('{"sub_id":'001','value':'["1","2","3","4","5","6","7","8","9","10"]'}')" | |
| 205 | 169 | } |
| 206 | - ] | |
| 207 | - }, | |
| 208 | - { | |
| 209 | - "field": "total_cub_points", | |
| 210 | - "operator": "gt", | |
| 211 | - "values": ["500"] | |
| 212 | 170 | } |
| 213 | - ] | |
| 214 | - }, | |
| 215 | - { | |
| 216 | - "sub_id": "004", | |
| 217 | - "activity_type":"exchange_voucher", | |
| 218 | - "field": null, | |
| 219 | - "operator": null, | |
| 220 | - "values":null | |
| 221 | - } | |
| 222 | - ] | |
| 223 | - } | |
| 224 | - } | |
| 225 | - | |
| 226 | - | |
| 227 | -2. | |
| 228 | -response: | |
| 229 | -{ | |
| 230 | - "success": true, | |
| 231 | - "errorCode": null, | |
| 232 | - "message": null, | |
| 233 | - "values": { | |
| 234 | - "CHAIN_TYPE":"MISSION", | |
| 235 | - "CHAIN_ID":"EXCHANGE_VOUCHER_0001", | |
| 236 | - "ID":"0001", | |
| 237 | - "content": "SER( | |
| 238 | - VERIFY001, | |
| 239 | - AND( | |
| 240 | - SER(SERIAL_ID, IN).TAG(["1", "2"]), | |
| 241 | - SER(PRODUCT_NAME, IN).TAG("星巴克 150 元券", "威秀電影票"), | |
| 242 | - AND( | |
| 243 | - OR( | |
| 244 | - SER(PRODUCT_NAME, LIKE).TAG("現金券"), | |
| 245 | - SER(PRODUCT_NAME, LIKE).TAG("抵用券") | |
| 246 | - ), | |
| 247 | - SER(total_cub_points, gt).TAG("500") | |
| 248 | - ), | |
| 249 | - VOUCHER.DATA'{"sub_id": '004', 'value': null}' | |
| 250 | - ) | |
| 251 | -)" | |
| 252 | -} | |
| 253 | - | |
| 254 | - | |
| 255 | -```json | |
| 256 | -{ | |
| 257 | - "success": true, | |
| 258 | - "errorCode": null, | |
| 259 | - "message": null, | |
| 260 | - "values": { | |
| 261 | - "CHAIN_TYPE":"MISSION", | |
| 262 | - "CHAIN_ID":"EXCHANGE_VOUCHER_0001", | |
| 263 | - "ID":"0001", | |
| 264 | - "contents": [{ | |
| 265 | -"subId": "sub001", | |
| 266 | -"el": "SER( | |
| 267 | - VERIFY001, | |
| 268 | - AND( | |
| 269 | - SER(SERIAL_ID, IN).TAG(["1", "2"]), | |
| 270 | - SER(PRODUCT_NAME, IN).TAG("星巴克 150 元券", "威秀電影票"), | |
| 271 | - AND( | |
| 272 | - OR( | |
| 273 | - SER(PRODUCT_NAME, LIKE).TAG("現金券"), | |
| 274 | - SER(PRODUCT_NAME, LIKE).TAG("抵用券") | |
| 275 | - ), | |
| 276 | - SER(total_cub_points, gt).TAG("500") | |
| 277 | - ), | |
| 278 | - VOUCHER.DATA'{"sub_id": '004', 'value': null}' | |
| 279 | - ) | |
| 280 | -)" | |
| 281 | -}] | |
| 282 | -} | |
| 283 | - ``` | |
| 171 | + # | |
| 172 | + | |
| 173 | +# operator 會用到的有這些: | |
| 174 | +* in 完全相符 | |
| 175 | +* like 包含 | |
| 176 | +* not_like (品牌關鍵字、品名關鍵字),not_in (指定票券、指定品牌) 不包含 | |
| 177 | +* ge 大於等於 | |
| 178 | +* le 小於等於 | |
| 179 | +* eq 等於 |