远程调用的前提是开启了服务发现,将服务注册到服务中心:
导入依赖:
<!-- 服务调用feign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<scope>provided </scope>
</dependency>
被调用的方法:
@RestController
@RequestMapping("/api/product")
public class ProductInnnerController {
// 根据分类的id获取分类信息
@GetMapping("/inner/getcategory/{categoryId}")
public Category getCategory(@PathVariable Long categoryId){
return categoryService.getById(categoryId);
}
// 根据skuid获取sku信息
@GetMapping("/inner/getSkuInfo/{skuId}")
public SkuInfo getbyid(@PathVariable Long skuId){
return skuInfoService.getById(skuId);
}
}
将方法注册到feign中:
@FeignClient(value = "service-product")
public interface ProductFeignClient {
//根据skuId获取sku信息
@GetMapping("/api/product/inner/getSkuInfoVo/{skuId}")
public SkuInfoVo getSkuInfoVo(@PathVariable Long skuId);
//根据分类id获取分类信息
@GetMapping("/api/product/inner/findAllCategoryList")
List<Category> findAllCategoryList();
}
在另一个模块中进行调用:
@Slf4j
@Service
public class SkuServiceImpl implements SkuService {
@Resource
private ProductFeignClient productFeignClient;
@Autowired
private SkuRepository skuRepository;
/**
* 上架商品列表
* @param skuId
*/
@Override
public void upperSku(Long skuId) {
log.info("upperSku:"+skuId);
SkuEs skuEs = new SkuEs();
//查询sku信息
SkuInfo skuInfo = productFeignClient.getSkuInfo(skuId);
if(null == skuInfo) return;
// 查询分类
Category category = productFeignClient.getCategory(skuInfo.getCategoryId());
if (category != null) {
skuEs.setCategoryId(category.getId());
skuEs.setCategoryName(category.getName());
}
skuEs.setId(skuInfo.getId());
skuEs.setKeyword(skuInfo.getSkuName()+","+skuEs.getCategoryName());
skuEs.setWareId(skuInfo.getWareId());
skuEs.setIsNewPerson(skuInfo.getIsNewPerson());
skuEs.setImgUrl(skuInfo.getImgUrl());
skuEs.setTitle(skuInfo.getSkuName());
if(skuInfo.getSkuType() == SkuType.COMMON.getCode()) {
skuEs.setSkuType(0);
skuEs.setPrice(skuInfo.getPrice().doubleValue());
skuEs.setStock(skuInfo.getStock());
skuEs.setSale(skuInfo.getSale());
skuEs.setPerLimit(skuInfo.getPerLimit());
} else {
//TODO 待完善-秒杀商品
}
SkuEs save = skuRepository.save(skuEs);
log.info("upperSku:"+ JSON.toJSONString(save));
}
}