// 主应用类
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class OrderServiceApplication {
public static void main(String[JiAOYu.HUoCheNGrM.CN/jy/19694.html
] args) {
SpringApplication.run(OrderServiceApplication.class, args);
}
}
// Feign客户端接口
@FeignClient(name = "product-service", fallback = ProductFallback.class)
public interface JiAOYu.HUoCheNGrM.CN/jy/19693.html
ProductClient {
@GetMapping("/products/{id}")
Product getProduct(@PathVariable Long id);
}
// REST控制器
@RestController
@RequestMapping("/orders")
public class JiAOYu.HUoCheNGrM.CN/jy/19692.html
OrderController {
private final OrderService orderService;
@Autowired
public OrderController(OrderService orderService) {
this.orderService = orderService;
}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public Order JiAOYu.HUoCheNGrM.CN/jy/19691.html
createOrder(@RequestBody OrderRequest request) {
return orderService.createOrder(request);
}
@GetMapping("/{id}")
public Order getOrder(@PathVariable Long id) {
return orderService.getOrder(id);
}
}
// 服务层实现
@Service
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService {
private final JiAOYu.HUoCheNGrM.CN/jy/19690.html
OrderRepository orderRepository;
private final ProductClient productClient;
@Transactional
public Order createOrder(OrderRequest request) {
Product product = productClient.getProduct(request.getProductId());
Order order = Order.builder()
.customerId(request.getCustomerId())
.productId(product.getId())
.amount(request.getQuantity() * product.getPrice())
.status(OrderStatus.CREATED)
.build();
return orderRepository.save(order);
}
}
// 配置类
@Configuration
public class AppConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Bean
public Sampler alwaysSampler() {
return Sampler.ALWAYS_SAMPLE; // Sleuth分布式跟踪
}
}