Files
afis-recall/src/main/java/com/wabestway/recall/web/RecallController.java
T
2023-03-28 10:29:36 +08:00

105 lines
4.4 KiB
Java

package com.wabestway.recall.web;
import com.wabestway.recall.model.Order;
import com.wabestway.recall.model.Record;
import com.wabestway.recall.model.ResObj;
import com.wabestway.recall.repository.OrderRepository;
import com.wabestway.recall.repository.RecordRepository;
import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.util.UUID;
@RestController
@RequestMapping("/track")
public class RecallController {
private final RecordRepository recordRepository;
private final OrderRepository orderRepository;
public RecallController(RecordRepository recordRepository, OrderRepository orderRepository) {
this.recordRepository = recordRepository;
this.orderRepository = orderRepository;
}
@GetMapping
public Flux<Record> getAllUsers() {
return recordRepository.findAll();
}
@PostMapping("/save")
public Mono<ResObj> save(@RequestBody Record record) {
if (record.getOrderId() != null && !record.getOrderId().isEmpty()) {
Mono<Order> order = orderRepository.findByOrderId(record.getOrderId());
order.hasElement().subscribe(exit -> {
if (!exit) {
if (record.getTraceId() != null && !record.getTraceId().isEmpty()) {
Mono<Order> tcOrder = orderRepository.findByTraceId(record.getTraceId());
tcOrder.filter(to -> to.getId() != null).flatMap(to -> {
to.setOrderId(record.getOrderId());
if (record.isLast()) {
to.setComplete("1");
}
return orderRepository.save(to);
}).subscribe();
} else {
record.setTraceId(UUID.randomUUID().toString().replace("-", ""));
Order forder = new Order();
forder.setOrderId(record.getOrderId());
forder.setTraceId(record.getTraceId());
forder.setProductCode(record.getProductCode());
forder.setProductName(record.getProductName());
forder.setCreateAt(System.currentTimeMillis());
forder.setAppKey(record.getAppKey());
forder.setArchived("0");
forder.setComplete("0");
forder.setHolderName("王五");
forder.setHolderPhone("18515064530");
forder.setSupplierName("阳光保险");
forder.setStartDate("2023-01-01");
forder.setEndDate("2035-01-01");
if (record.isLast()) {
forder.setComplete("1");
}
orderRepository.save(forder).subscribe();
}
} else {
order.subscribe(to -> {
if (record.isLast()) {
to.setComplete("1");
orderRepository.save(to).subscribe();
}
});
}
});
} else {
if (record.getTraceId() == null || record.getTraceId().isEmpty()) {
record.setTraceId(UUID.randomUUID().toString().replace("-", ""));
Order order = new Order();
order.setTraceId(record.getTraceId());
order.setProductCode(record.getProductCode());
order.setProductName(record.getProductName());
order.setCreateAt(System.currentTimeMillis());
order.setAppKey(record.getAppKey());
order.setArchived("0");
order.setComplete("0");
order.setHolderName("王五");
order.setHolderPhone("18515064530");
order.setSupplierName("阳光保险");
order.setStartDate("2023-01-01");
order.setEndDate("2035-01-01");
if (record.isLast()) {
order.setComplete("1");
}
orderRepository.save(order).subscribe();
}
}
record.setCreateAt(System.currentTimeMillis());
return recordRepository.save(record).flatMap(ss -> {
ss.setEvents(null);
return Mono.just(ResObj.ok(ss));
});
}
}