#fb8ff
Back
2026/02/26
1 min read

Rule engine el規則轉換 (for cms)

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 等於