package com.example.server.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.domain.Order;
import com.example.domain.Product;
import com.example.server.feign.IProductFeignService;
import com.example.server.mapper.OrderMapper;
import com.example.server.service.OrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
@Slf4j
@Service
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
// @Autowired
// private RestTemplate restTemplate;
@Autowired
private DiscoveryClient discoveryClient;
@Autowired
private IProductFeignService productFeignService;
@Override
public Order createOrder(Long pid, Long uid) {
Order order = new Order();
//商品
//方案1:通过restTemplate方式
//String url = "http://localhost:8081/products/" + pid;
//Product product = restTemplate.getForObject(url, Product.class);
//方案2:使用注册中心api方式-discoveryClient
//List<ServiceInstance> instances = discoveryClient.getInstances("product-service");
//ServiceInstance instance = instances.get(0); //当前只有一个
//String host = instance.getHost();
//int port = instance.getPort();
//String url = "http://" + host + ":" + port + "/products/" + pid;
//Product product = restTemplate.getForObject(url, Product.class);
//方案3:使用注册中心api方式-discoveryClient--带负载均衡
// List<ServiceInstance> instances = discoveryClient.getInstances("product-service");
// int index = new Random().nextInt(instances.size());
// ServiceInstance instance = instances.get(index);
// String host = instance.getHost();
// int port = instance.getPort();
// String url = "http://" + host + ":" + port + "/products/" + pid;
// System.out.println("从nacos中获取的url地址:" + url);
// Product product = restTemplate.getForObject(url, Product.class);
//方案4:使用服务名称来发起请求,Ribbon将自动选择一个可用的实例
// String productServiceUrl = "http://product-service/products/" + pid;
// // 使用 RestTemplate 发起HTTP请求
// Product product = restTemplate.getForObject(productServiceUrl, Product.class);
log.info("2>>请求进入OrderServiceImpl.createOrder:准备进行下订单-查询商品信息前");
//方案5:使用Feign接口的方式--负载均衡
Product product = productFeignService.get(pid);
log.info("4>>请求进入OrderServiceImpl.createOrder:准备进行下订单-查询商品信息后");
//商品
order.setPid(pid);
order.setProductPrice(product.getPrice());
order.setProductName(product.getName());
//用户相关
order.setUid(uid);
order.setUsername("sadw");
order.setNumber(100);
//getBaseMapper().insert(order)
super.save(order);
log.info("5>>请求进入OrderServiceImpl.createOrder:下订单完成");
return order;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
以电商项目为线索,快速掌握 JDK17 + springboot3 + springcloud Alibaba 专栏源码。 2 技术选型 JDK17 持久层: MyBatis-Plus 数据库: MySQL5.7 其他: SpringCloud Alibaba 技术栈 服务注册与发现:Nacos 分布式事务:Seata 网关:Spring Cloud Gateway 服务调用:OpenFeign 鉴权:Spring Authorization Server 、Oauth2.1 消息队列:rocketmq 限流、熔断:sentinel 链路追踪:Micrometer Tracing 接口文档:knife4j 3 模块设计 — shop-parent 父工程 — shop-product-api 商品微服务api 【存放商品实体】 — shop-product-server 商品微服务 【端口:808x】 — shop-order-api 订单微服务api 【存放订单实体】 — shop-order-server 订单
资源推荐
资源详情
资源评论
收起资源包目录
shop-parent.zip (85个子文件)
shop-parent
shop-order-server
pom.xml 4KB
src
test
java
com
example
server
ShopOrderServerApplicationTests.java 241B
main
resources
application.yml 2KB
java
com
example
server
mapper
OrderMapper.java 192B
BusinessMapper.java 197B
controller
HotSpotController.java 548B
SentinelController.java 1015B
BusinessController.java 963B
FallBackController.java 1KB
TraceController.java 657B
OrderController.java 774B
AuthController.java 501B
AnnoController.java 1KB
utils
RequestOriginParserDefinition.java 677B
feign
fallback
ProductFeignFallBack.java 501B
IProductSeataFeignService.java 653B
IProductFeignService.java 527B
service
TraceService.java 109B
OrderService.java 240B
impl
BusinessServiceImpl.java 2KB
OrderServiceImpl.java 4KB
TraceServiceImpl.java 470B
BusinessService.java 243B
ShopOrderServerApplication.java 951B
exception
ResultData.java 284B
ExceptionHandlerPage.java 2KB
config
SwaggerConfiguration.java 1KB
.gitignore 428B
pom.xml 3KB
LICENSE 11KB
.git
index 10KB
HEAD 23B
refs
heads
master 41B
tags
remotes
origin
HEAD 32B
objects
pack
pack-994b7788d3085936983cc85819e2cb07359a70c1.idx 11KB
pack-994b7788d3085936983cc85819e2cb07359a70c1.pack 97KB
info
description 73B
packed-refs 114B
info
exclude 240B
logs
HEAD 179B
refs
heads
master 179B
remotes
origin
HEAD 179B
hooks
post-update.sample 189B
prepare-commit-msg.sample 1KB
commit-msg.sample 896B
pre-receive.sample 544B
update.sample 4KB
pre-commit.sample 2KB
pre-rebase.sample 5KB
applypatch-msg.sample 478B
fsmonitor-watchman.sample 5KB
push-to-checkout.sample 3KB
pre-applypatch.sample 424B
pre-push.sample 1KB
pre-merge-commit.sample 416B
config 305B
shop-gateway
pom.xml 2KB
src
main
resources
application.yml 2KB
java
com
example
gateway
filters
TimeGatewayFilterFactory.java 1KB
TimeGatewayFilterParam.java 380B
AuthGlobalFilter.java 2KB
TimeGatewayFilter.java 3KB
ShopGatewayApplication.java 445B
config
CorsConfig.java 945B
GatewayConfiguration.java 2KB
.gitignore 428B
shop-order-api
pom.xml 987B
src
main
java
com
example
domain
Order.java 760B
.gitignore 432B
.gitignore 432B
shop-product-api
pom.xml 1KB
src
main
java
com
example
domain
Product.java 615B
.gitignore 432B
shop-product-server
pom.xml 3KB
src
test
java
com
example
server
ShopProductServerApplicationTests.java 243B
main
resources
bootstrap.yml 360B
java
com
example
server
mapper
ProductMapper.java 198B
ShopProductServerApplication.java 548B
controller
ProductController.java 1KB
TestController.java 525B
NacosConfigController.java 767B
service
ProductService.java 238B
impl
ProductServiceImpl.java 1KB
config
SwaggerConfiguration.java 1KB
.gitignore 432B
共 85 条
- 1
资源评论
云上凯歌
- 粉丝: 34
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功