服务调用openfeign

一添加依赖
   <!--服务调用-->
       <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

二在需要调用的模块中加入被调用模块的接口

package com.atguigu.eduservice.client;

import com.atguigu.commonutils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;

@Component
@FeignClient(name = "service-vod",fallback = VodFileDegradeFeignClient.class)
public interface VodeClient {

    @DeleteMapping("/eduvod/video/removeAlyVideo/{id}") //加上其完全路径
    public R removeAlyVideo(@PathVariable("id") String id); //@PathVariable注解一定要加上参数名称“id",否则报错
}

三注入接口,进行方法调用

@RestController
@RequestMapping("/eduservice/video")
@CrossOrigin
public class EduVideoController {

    @Autowired
    private EduVideoService videoService;
    @Autowired
    private VodeClient vodeClient;

    //添加小节
    @PostMapping("addVideo")
    public R addVideo(@RequestBody EduVideo eduVideo) {
        videoService.save(eduVideo);
        return R.ok();
    }

    //删除小节
    // TODO 后面这个方法需要完善:删除小节时候,同时把里面视频删除
    @DeleteMapping("{id}")
    public R deleteVideo(@PathVariable String id) {//根据小结id找到视频id
        EduVideo eduVideo = videoService.getById(id);
        String videoSourceId = eduVideo.getVideoSourceId();
        if (!StringUtils.isEmpty(videoSourceId)){
            R result = vodeClient.removeAlyVideo(videoSourceId);//删除视频
            if (result.getCode() == 20001){
                throw new GuliException(20001,"删除视频失败,荣斗气。。。。。。。");
            }
        }
        videoService.removeById(id);//删除小结
        return R.ok();
    }

    //修改小节 TODO

}

 

posted @ 2020-07-15 09:59  learnNoob  阅读(172)  评论(0编辑  收藏  举报