引入依赖
<!--服务调用-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
在启动类上添加注解@EnableFeignClients
@SpringBootApplication
//加上这个扫描包注解之后才能将common里面的swaager配置类扫描进来
@ComponentScan(basePackages = {"com.hjh"})
//nacos注册
@EnableDiscoveryClient
@EnableFeignClients
public class EduApplication {
public static void main(String[] args) {
SpringApplication.run(EduApplication.class, args);
}
}
在消费者方新建一个接口
@FeignClient("service-vod")
@Component
public interface VodClient {
//定义调用的方法路径
//根据视频id删除阿里云视频
//@PathVariable("id")这里的id必须写,不会报错
@DeleteMapping("/eduvod/video/removeAlyVideo/{id}")
public R removeAlyVideo(@PathVariable("id") String id);
//删除多个阿里云视频的方法
//参数多个视频id List videoIdList
@DeleteMapping("/eduvod/video/delete-batch")
public R deleteBatch(@RequestParam("videoIdList") List<String> videoIdList);
}
在需要调用的service处注入vodClient对象
@Service
public class EduVideoServiceImpl extends ServiceImpl<EduVideoMapper, EduVideo> implements EduVideoService {
//注入vodClient
@Autowired
private VodClient vodClient;
//1 根据课程id删除小节
@Override
public void removeVideoByCourseId(String courseId) {
//1 根据课程id查询课程所有的视频id
QueryWrapper<EduVideo> wrapperVideo = new QueryWrapper<>();
wrapperVideo.eq("course_id",courseId);
wrapperVideo.select("video_source_id");
List<EduVideo> eduVideoList = baseMapper.selectList(wrapperVideo);
// List<EduVideo>变成List<String>
List<String> videoIds = new ArrayList<>();
for (int i = 0; i < eduVideoList.size(); i++) {
EduVideo eduVideo = eduVideoList.get(i);
String videoSourceId = eduVideo.getVideoSourceId();
if(!StringUtils.isEmpty(videoSourceId)) {
//放到videoIds集合里面
videoIds.add(videoSourceId);
}
}
//根据多个视频id删除多个视频
if(videoIds.size()>0) {
vodClient.deleteBatch(videoIds);
}
QueryWrapper<EduVideo> wrapper = new QueryWrapper<>();
wrapper.eq("course_id",courseId);
baseMapper.delete(wrapper);
}
}