You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.8 KiB
97 lines
2.8 KiB
package com.renchao;
|
|
|
|
import com.renchao.bean.Order;
|
|
import com.renchao.bean.User;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.kie.api.runtime.KieContainer;
|
|
import org.kie.api.runtime.KieSession;
|
|
import org.springframework.boot.test.context.SpringBootTest;
|
|
|
|
import javax.annotation.Resource;
|
|
import java.text.DateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 需求
|
|
* 计算额外积分金额 规则如下: 订单原价金额
|
|
* 100以下, 不加分
|
|
* 100-500 加100分
|
|
* 500-1000 加500分
|
|
* 1000 以上 加1000分
|
|
*/
|
|
@SpringBootTest
|
|
public class DroolsOrderTests {
|
|
@Resource
|
|
private KieContainer kieContainer;
|
|
|
|
|
|
@Test
|
|
public void droolsOrderTest() throws Exception {
|
|
KieSession kieSession = kieContainer.newKieSession();
|
|
List<Order> orderList = getInitData();
|
|
for (Order order: orderList) {
|
|
// 1-规则引擎处理逻辑
|
|
kieSession.insert(order);
|
|
kieSession.fireAllRules();
|
|
// 2-执行完规则后, 执行相关的逻辑
|
|
addScore(order);
|
|
}
|
|
kieSession.dispose();
|
|
}
|
|
|
|
|
|
|
|
private static void addScore(Order o){
|
|
System.out.println("用户" + o.getUser().getName() + "享受额外增加积分: " + o.getScore());
|
|
}
|
|
|
|
private static List<Order> getInitData() throws Exception {
|
|
List<Order> orderList = new ArrayList<>();
|
|
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
|
|
{
|
|
Order order = new Order();
|
|
order.setPrice(80);
|
|
order.setBookingDate(df.parse("2015-07-01"));
|
|
User user = new User();
|
|
user.setLevel(1);
|
|
user.setName("Name1");
|
|
order.setUser(user);
|
|
order.setScore(111);
|
|
orderList.add(order);
|
|
}
|
|
{
|
|
Order order = new Order();
|
|
order.setPrice(200);
|
|
order.setBookingDate(df.parse("2015-07-02"));
|
|
User user = new User();
|
|
user.setLevel(2);
|
|
user.setName("Name2");
|
|
order.setUser(user);
|
|
orderList.add(order);
|
|
}
|
|
{
|
|
Order order = new Order();
|
|
order.setPrice(800);
|
|
order.setBookingDate(df.parse("2015-07-03"));
|
|
User user = new User();
|
|
user.setLevel(3);
|
|
user.setName("Name3");
|
|
order.setUser(user);
|
|
orderList.add(order);
|
|
}
|
|
{
|
|
Order order = new Order();
|
|
order.setPrice(1500);
|
|
order.setBookingDate(df.parse("2015-07-04"));
|
|
User user = new User();
|
|
user.setLevel(4);
|
|
user.setName("Name4");
|
|
order.setUser(user);
|
|
orderList.add(order);
|
|
}
|
|
return orderList;
|
|
}
|
|
}
|