Skip to content

Commit

Permalink
第18章
Browse files Browse the repository at this point in the history
  • Loading branch information
benwang6 committed Dec 7, 2019
1 parent 4a8a65f commit 1b15e48
Show file tree
Hide file tree
Showing 8 changed files with 162 additions and 13 deletions.
14 changes: 14 additions & 0 deletions sp04-orderservice/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,20 @@
spring-cloud-starter-netflix-eureka-client
</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>
spring-cloud-starter-netflix-hystrix
</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
package cn.tedu.sp04;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;

@EnableDiscoveryClient
@SpringBootApplication
//@EnableDiscoveryClient
//@SpringBootApplication

@EnableFeignClients
@SpringCloudApplication
public class Sp04OrderserviceApplication {

public static void main(String[] args) {
SpringApplication.run(Sp04OrderserviceApplication.class, args);
}

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package cn.tedu.sp04.order.feignclient;

import java.util.List;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import cn.tedu.sp01.pojo.Item;
import cn.tedu.web.util.JsonResult;

@FeignClient(name="item-service", fallback = ItemFeignServiceFB.class)
public interface ItemFeignService {
@GetMapping("/{orderId}")
JsonResult<List<Item>> getItems(@PathVariable String orderId);

@PostMapping("/decreaseNumber")
JsonResult decreaseNumber(@RequestBody List<Item> items);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package cn.tedu.sp04.order.feignclient;

import java.util.Arrays;
import java.util.List;

import org.springframework.stereotype.Component;

import cn.tedu.sp01.pojo.Item;
import cn.tedu.web.util.JsonResult;

@Component
public class ItemFeignServiceFB implements ItemFeignService {

@Override
public JsonResult<List<Item>> getItems(String orderId) {
if(Math.random()<0.5) {
return JsonResult.ok().data(

Arrays.asList(new Item[] {
new Item(1,"缓存aaa",2),
new Item(2,"缓存bbb",1),
new Item(3,"缓存ccc",3),
new Item(4,"缓存ddd",1),
new Item(5,"缓存eee",5)
})

);
}
return JsonResult.err("无法获取订单商品列表");
}

@Override
public JsonResult decreaseNumber(List<Item> items) {
return JsonResult.err("无法修改商品库存");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package cn.tedu.sp04.order.feignclient;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;

import cn.tedu.sp01.pojo.User;
import cn.tedu.web.util.JsonResult;

@FeignClient(name="user-service", fallback = UserFeignServiceFB.class)
public interface UserFeignService {
@GetMapping("/{userId}")
JsonResult<User> getUser(@PathVariable Integer userId);

@GetMapping("/{userId}/score")
JsonResult addScore(@PathVariable Integer userId, @RequestParam Integer score);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package cn.tedu.sp04.order.feignclient;

import org.springframework.stereotype.Component;

import cn.tedu.sp01.pojo.User;
import cn.tedu.web.util.JsonResult;

@Component
public class UserFeignServiceFB implements UserFeignService {

@Override
public JsonResult<User> getUser(Integer userId) {
if(Math.random()<0.4) {
return JsonResult.ok(new User(userId, "缓存name"+userId, "缓存pwd"+userId));
}
return JsonResult.err("无法获取用户信息");
}

@Override
public JsonResult addScore(Integer userId, Integer score) {
return JsonResult.err("无法增加用户积分");
}

}
Original file line number Diff line number Diff line change
@@ -1,29 +1,53 @@
package cn.tedu.sp04.order.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.tedu.sp01.pojo.Item;
import cn.tedu.sp01.pojo.Order;
import cn.tedu.sp01.pojo.User;
import cn.tedu.sp01.service.OrderService;
import cn.tedu.sp04.order.feignclient.ItemFeignService;
import cn.tedu.sp04.order.feignclient.UserFeignService;
import cn.tedu.web.util.JsonResult;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@Service
public class OrderServiceImpl implements OrderService {

@Autowired
private ItemFeignService itemService;
@Autowired
private UserFeignService userService;

@Override
public Order getOrder(String orderId) {
//TODO: 调用user-service获取用户信息
//TODO: 调用item-service获取商品信息
//调用user-service获取用户信息
JsonResult<User> user = userService.getUser(7);

//调用item-service获取商品信息
JsonResult<List<Item>> items = itemService.getItems(orderId);


Order order = new Order();
order.setId(orderId);
order.setUser(user.getData());
order.setItems(items.getData());
return order;
}

@Override
public void addOrder(Order order) {
//TODO: 调用item-service减少商品库存
//TODO: 调用user-service增加用户积分
//调用item-service减少商品库存
itemService.decreaseNumber(order.getItems());

//调用user-service增加用户积分
userService.addScore(order.getUser().getId(), 100);

log.info("保存订单:"+order);
}

Expand Down
15 changes: 12 additions & 3 deletions sp04-orderservice/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,19 @@ spring:
name: order-service

server:
port: 8201

port: 8201

eureka:
client:
service-url:
defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka
defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka

feign:
hystrix:
enabled: true

management:
endpoints:
web:
exposure:
include: hystrix.stream

0 comments on commit 1b15e48

Please sign in to comment.