diff --git a/chopperbot-barrage/src/main/java/org/example/api/BarrageModuleApi.java b/chopperbot-barrage/src/main/java/org/example/api/BarrageModuleApi.java deleted file mode 100644 index 43fd9a2..0000000 --- a/chopperbot-barrage/src/main/java/org/example/api/BarrageModuleApi.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.example.api; - -import org.example.config.BarrageScoreConfig; -import org.example.pojo.Anchor; - -import java.util.List; - -/** - * @Description - * @Author welsir - * @Date 2023/8/2 22:51 - */ -public class BarrageModuleApi { - -// public static void updateAnchorBarrageScore(String roomId, String plathForm, List anchorList){ -// BarrageScoreConfig.setAnchorConfig(roomId,plathForm,anchorList); -// } - -} diff --git a/chopperbot-barrage/src/main/java/org/example/controller/BarrageController.java b/chopperbot-barrage/src/main/java/org/example/controller/BarrageScoreCurveController.java similarity index 72% rename from chopperbot-barrage/src/main/java/org/example/controller/BarrageController.java rename to chopperbot-barrage/src/main/java/org/example/controller/BarrageScoreCurveController.java index 3935da6..caa02fb 100644 --- a/chopperbot-barrage/src/main/java/org/example/controller/BarrageController.java +++ b/chopperbot-barrage/src/main/java/org/example/controller/BarrageScoreCurveController.java @@ -17,20 +17,20 @@ import java.util.Map; * @date 2023/10/13 17:52 **/ @RestController -@RequestMapping("/barrage") -public class BarrageController { +@RequestMapping("/barrage/barrageScoreCurve") +@CheckPlugin(needPlugin = {PluginName.BARRAGE_SCORE_CURVE_PLUGIN}) +public class BarrageScoreCurveController { @Resource BarrageService barrageService; - @CheckPlugin(needPlugin = {PluginName.BARRAGE_SCORE_CURVE_PLUGIN}) - @GetMapping("/barrageScoreCurve/curveList") + + @GetMapping("/curveList") public Result curveVOList(){ return Result.success(Map.of("list",barrageService.barrageScoreCurvePluginApi().curveVOList())); } - @CheckPlugin(needPlugin = {PluginName.BARRAGE_SCORE_CURVE_PLUGIN}) - @GetMapping("/barrageScoreCurve/generate") + @GetMapping("/generate") public Result generateCurve(@RequestParam(required = false) String filePath,@RequestParam(required = false) String liver){ if(!StringUtils.hasText(filePath)){ filePath = "E:\\Project\\ChopperBot\\config\\Barrage\\online\\huya\\Uzi_2023-10-18 21_22_57.json"; @@ -43,36 +43,30 @@ public class BarrageController { return Result.success(Map.of("curve",barrageCurveVO)); } - @CheckPlugin(needPlugin = {PluginName.BARRAGE_SCORE_CURVE_PLUGIN}) - @GetMapping("/barrageScoreCurve/keywords") + @GetMapping("/keywords") public Result getKeyWords(@RequestParam(required = false) String liver) { return Result.success(Map.of("list", barrageService.barrageScoreCurvePluginApi().getKeyWords(liver))); } - @CheckPlugin(needPlugin = {PluginName.BARRAGE_SCORE_CURVE_PLUGIN}) - @GetMapping("/barrageScoreCurve/delete") + @GetMapping("/delete") public Result deleteKeyWords(@RequestParam String liver,@RequestParam String keyWord) { return Result.success(Map.of("success", barrageService.barrageScoreCurvePluginApi().deleteKeyWord(liver,keyWord))); } - - @CheckPlugin(needPlugin = {PluginName.BARRAGE_SCORE_CURVE_PLUGIN}) - @PostMapping("/barrageScoreCurve/add") + @PostMapping("/add") public Result addKeyWords(@RequestBody LiverKeyword keyword) { return Result.success(Map.of("success", barrageService.barrageScoreCurvePluginApi().addKeyWord(keyword))); } - @CheckPlugin(needPlugin = {PluginName.BARRAGE_SCORE_CURVE_PLUGIN}) - @PostMapping("/barrageScoreCurve/update") + @PostMapping("/update") public Result updateKeyWords(@RequestBody LiverKeyword keyword) { return Result.success(Map.of("success", barrageService.barrageScoreCurvePluginApi().updateKeyWord(keyword))); } - @CheckPlugin(needPlugin = {PluginName.BARRAGE_SCORE_CURVE_PLUGIN}) - @GetMapping("/barrageScoreCurve/setting") + @GetMapping("/setting") public Result getSetting(){ return Result.success(Map.of("curve",barrageService.barrageScoreCurvePluginApi().getSetting())); } diff --git a/chopperbot-common/src/main/java/org/example/plugin/annotation/CheckPlugin.java b/chopperbot-common/src/main/java/org/example/plugin/annotation/CheckPlugin.java index 371da59..2384f03 100644 --- a/chopperbot-common/src/main/java/org/example/plugin/annotation/CheckPlugin.java +++ b/chopperbot-common/src/main/java/org/example/plugin/annotation/CheckPlugin.java @@ -10,7 +10,7 @@ import java.lang.annotation.Target; * api需要哪些插件的注解 */ @Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) +@Target({ElementType.METHOD,ElementType.TYPE}) public @interface CheckPlugin { String[] needPlugin() default {}; diff --git a/chopperbot-console/src/main/java/org/example/config/WebMvcConfig.java b/chopperbot-console/src/main/java/org/example/config/WebMvcConfig.java index a1268a2..6b1c128 100644 --- a/chopperbot-console/src/main/java/org/example/config/WebMvcConfig.java +++ b/chopperbot-console/src/main/java/org/example/config/WebMvcConfig.java @@ -1,5 +1,7 @@ package org.example.config; +import org.example.interceptor.ApiPrefixInterceptor; +import org.example.interceptor.PluginCheckInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; @@ -15,10 +17,14 @@ public class WebMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(apiPrefixInterceptor()); + registry.addInterceptor(checkInterceptor()); } @Bean public ApiPrefixInterceptor apiPrefixInterceptor() { return new ApiPrefixInterceptor(); } + + @Bean + public PluginCheckInterceptor checkInterceptor() {return new PluginCheckInterceptor();} } diff --git a/chopperbot-console/src/main/java/org/example/controller/HotController.java b/chopperbot-console/src/main/java/org/example/controller/HotController.java deleted file mode 100644 index 877265b..0000000 --- a/chopperbot-console/src/main/java/org/example/controller/HotController.java +++ /dev/null @@ -1,192 +0,0 @@ -package org.example.controller; - -import com.genius.assistant.common.Result; -import org.example.api.HotModuleApi; -import org.example.bean.*; -import org.example.bean.hotmodule.HotModuleList; -import org.example.constpool.ConstPool; -import org.example.constpool.PluginName; -import org.example.core.HotModuleDataCenter; -import org.example.core.guard.Guard; -import org.example.plugin.annotation.CheckPlugin; -import org.example.service.FocusLiverService; -import org.example.service.HotModuleService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import java.util.List; -import java.util.Map; - -/** - * @author Genius - * @date 2023/07/21 17:13 - **/ -@RestController -@RequestMapping("/hot") -public class HotController { - - @Autowired - HotModuleService hotModuleService; - - @CheckPlugin(needPlugin = {PluginName.HOT_GUARD_PLUGIN}) - @GetMapping("/hotLive/live") - public Result getAllHotLive(@RequestParam(defaultValue = "0") int latest,@RequestParam String platform){ - List lives = hotModuleService.hotModuleApi().getHotLiveList(platform); - if(lives==null){ - return Result.error("403","暂无该数据"); - } - return Result.success(Map.of("list",lives)); - } - - @CheckPlugin(needPlugin = {PluginName.HOT_GUARD_PLUGIN}) - @GetMapping("/hotLive/module") - public Result getAllHotModule(@RequestParam(defaultValue = "0") int latest,@RequestParam String platform){ - HotModuleList hotModuleList = hotModuleService.hotModuleApi().getAllHotModule(platform); - if(hotModuleList==null||hotModuleList.getHotModuleList()==null){ - return Result.error("403","暂无该数据"); - } - return Result.success(Map.of("list",hotModuleList.getHotModuleList())); - } - - @CheckPlugin(needPlugin = {PluginName.HOT_GUARD_PLUGIN}) - @GetMapping("/hotLive/modelLive") - public Result getHotModuleLives(@RequestParam String moduleId,@RequestParam String platform){ - HotModule moduleHotLives = hotModuleService.hotModuleApi().getModuleList(platform, moduleId); - if(moduleHotLives==null||moduleHotLives.getHotLives()==null){ - return Result.error("403","暂无该数据"); - } - return Result.success(Map.of("list",moduleHotLives.getHotLives())); - } - - @CheckPlugin(needPlugin = {PluginName.HOT_GUARD_PLUGIN}) - @GetMapping("/hotGuard/setting") - public Result getHotGuardSetting(){ - List allSettings = hotModuleService.hotModuleGuardApi().getAllSettings(); - return Result.success( - Map.of("list",allSettings) - ); - } - - @CheckPlugin(needPlugin = {PluginName.HOT_GUARD_PLUGIN}) - @PostMapping("/hotGuard/update") - public Result updateHotGuardSetting(@RequestBody HotModuleSetting setting){ - boolean b = hotModuleService.hotModuleGuardApi().changeSetting(setting); - return Result.success( - Map.of("success",b) - ); - } - - @CheckPlugin(needPlugin = {PluginName.HOT_GUARD_PLUGIN}) - @GetMapping("/hotGuard/guard") - public Result hotGuards(){ - List guards = hotModuleService.hotModuleGuardApi().getGuards(); - return Result.success( - Map.of("list",guards) - ); - } - - @CheckPlugin(needPlugin = {PluginName.HOT_LIVER_FOLLOWER}) - @GetMapping("/liveFollow/list") - public Result followList(){ - List focusLivers = hotModuleService.liverFollowApi().allFocusLivers(); - return Result.success( - Map.of("list",focusLivers) - ); - } - - @CheckPlugin(needPlugin = {PluginName.HOT_LIVER_FOLLOWER}) - @PostMapping("/liveFollow/add") - public Result addFocus(@RequestBody FocusLiver focusLiver){ - boolean follow = hotModuleService.liverFollowApi().follow(focusLiver); - return Result.success( - Map.of("success",follow) - ); - } - - @CheckPlugin(needPlugin = {PluginName.HOT_LIVER_FOLLOWER}) - @GetMapping("/liveFollow/delete") - public Result deleteFocus(@RequestParam String platform,@RequestParam String liver){ - boolean delete = hotModuleService.liverFollowApi().unFollow(platform,liver); - return Result.success( - Map.of("success",delete) - ); - } - - @CheckPlugin(needPlugin = {PluginName.HOT_LIVER_FOLLOWER}) - @GetMapping("/liveFollow/changeSetting") - public Result changeLiverFollowSetting(@RequestParam(required = false) Integer focusLive, - @RequestParam(required = false) Integer focusBarrage, - @RequestParam(required = false) Long checkTime){ - hotModuleService.liverFollowApi().changeSetting( - Map.of("focusLive",focusLive, - "focusBarrage",focusBarrage, - "checkTime",checkTime - ) - ); - return Result.success( - Map.of("success",true) - ); - } - - @CheckPlugin(needPlugin = {PluginName.HOT_LIVER_FOLLOWER}) - @GetMapping("/liveFollow/setting") - public Result changeLiverFollowSetting(){ - return Result.success( - Map.of("setting",hotModuleService.liverFollowApi().getSetting()) - ); - } - - @CheckPlugin(needPlugin = {PluginName.HOT_RECOMMENDATION_PLUGIN}) - @GetMapping("/hotRecommendation/list") - public Result getFollowDogs(){ - return Result.success( - Map.of( - "list",hotModuleService.heatRecommendApi().getFollowDog() - ) - ); - } - @CheckPlugin(needPlugin = {PluginName.HOT_RECOMMENDATION_PLUGIN}) - @PostMapping("/hotRecommendation/add") - public Result addFollowDogs(@RequestBody FollowDog dog){ - dog.setId(null); - - boolean success = hotModuleService.heatRecommendApi().addFollowDog(dog); - if(success){ - return Result.success( - Map.of("add",dog) - ); - }else{ - return Result.error("403","添加失败"); - } - } - - - - @CheckPlugin(needPlugin = {PluginName.HOT_RECOMMENDATION_PLUGIN}) - @PostMapping("/hotRecommendation/update") - public Result updateFollowDogs(@RequestBody FollowDog dog){ - boolean success = hotModuleService.heatRecommendApi().updateFollowDog(dog); - return Result.success( - Map.of("success",success) - ); - } - - @CheckPlugin(needPlugin = {PluginName.HOT_RECOMMENDATION_PLUGIN}) - @GetMapping("/hotRecommendation/delete") - public Result addFollowDogs(@RequestParam String dogId,@RequestParam String platform){ - boolean success = hotModuleService.heatRecommendApi().deleteFollowDog(dogId,platform); - return Result.success( - Map.of("success",success) - ); - } - - @CheckPlugin(needPlugin = {PluginName.HOT_RECOMMENDATION_PLUGIN}) - @GetMapping("/hotRecommendation/open") - public Result openFollowDogs(@RequestParam String platform,@RequestParam Boolean isOpen){ - boolean success = hotModuleService.heatRecommendApi().openPlatformFollowDog(platform,isOpen); - return Result.success( - Map.of("success",success) - ); - } -} diff --git a/chopperbot-console/src/main/java/org/example/config/ApiPrefixInterceptor.java b/chopperbot-console/src/main/java/org/example/interceptor/ApiPrefixInterceptor.java similarity index 96% rename from chopperbot-console/src/main/java/org/example/config/ApiPrefixInterceptor.java rename to chopperbot-console/src/main/java/org/example/interceptor/ApiPrefixInterceptor.java index 261cc02..8398f88 100644 --- a/chopperbot-console/src/main/java/org/example/config/ApiPrefixInterceptor.java +++ b/chopperbot-console/src/main/java/org/example/interceptor/ApiPrefixInterceptor.java @@ -1,4 +1,4 @@ -package org.example.config; +package org.example.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; diff --git a/chopperbot-console/src/main/java/org/example/interceptor/PluginCheckInterceptor.java b/chopperbot-console/src/main/java/org/example/interceptor/PluginCheckInterceptor.java new file mode 100644 index 0000000..0686d56 --- /dev/null +++ b/chopperbot-console/src/main/java/org/example/interceptor/PluginCheckInterceptor.java @@ -0,0 +1,32 @@ +package org.example.interceptor; + +import org.example.exception.plugin.PluginNotRegisterException; +import org.example.init.InitPluginRegister; +import org.example.plugin.annotation.CheckPlugin; +import org.springframework.stereotype.Component; +import org.springframework.web.method.HandlerMethod; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Component +public class PluginCheckInterceptor implements HandlerInterceptor { + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + if (handler instanceof HandlerMethod) { + HandlerMethod handlerMethod = (HandlerMethod) handler; + CheckPlugin checkPlugin = handlerMethod.getBeanType().getAnnotation(CheckPlugin.class); + + if (checkPlugin != null) { + for (String plugin: checkPlugin.needPlugin()) { + if(!InitPluginRegister.isRegister(plugin)){ + throw new PluginNotRegisterException(checkPlugin.needPlugin()); + } + } + } + } + return true; + } +} diff --git a/chopperbot-hot/src/main/java/org/example/controller/HotGuardController.java b/chopperbot-hot/src/main/java/org/example/controller/HotGuardController.java new file mode 100644 index 0000000..3708fc5 --- /dev/null +++ b/chopperbot-hot/src/main/java/org/example/controller/HotGuardController.java @@ -0,0 +1,49 @@ +package org.example.controller; + +import com.genius.assistant.common.Result; +import org.example.api.HotModuleGuardApi; +import org.example.bean.GuardVO; +import org.example.bean.HotModuleSetting; +import org.example.constpool.PluginName; +import org.example.plugin.annotation.CheckPlugin; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +/** + * 热门守卫插件接口 + */ +@RestController +@RequestMapping("/hot/hotGuard") +@CheckPlugin(needPlugin = {PluginName.HOT_GUARD_PLUGIN}) +public class HotGuardController { + + @Resource + private HotModuleGuardApi hotModuleGuardApi; + + @GetMapping("/setting") + public Result getHotGuardSetting(){ + List allSettings = hotModuleGuardApi.getAllSettings(); + return Result.success( + Map.of("list",allSettings) + ); + } + + @PostMapping("/update") + public Result updateHotGuardSetting(@RequestBody HotModuleSetting setting){ + boolean b = hotModuleGuardApi.changeSetting(setting); + return Result.success( + Map.of("success",b) + ); + } + + @GetMapping("/guard") + public Result hotGuards(){ + List guards = hotModuleGuardApi.getGuards(); + return Result.success( + Map.of("list",guards) + ); + } +} diff --git a/chopperbot-hot/src/main/java/org/example/controller/HotModuleController.java b/chopperbot-hot/src/main/java/org/example/controller/HotModuleController.java new file mode 100644 index 0000000..866a4c0 --- /dev/null +++ b/chopperbot-hot/src/main/java/org/example/controller/HotModuleController.java @@ -0,0 +1,56 @@ +package org.example.controller; + +import com.genius.assistant.common.Result; +import org.example.api.HotModuleApi; +import org.example.bean.HotModule; +import org.example.bean.Live; +import org.example.bean.hotmodule.HotModuleList; +import org.example.constpool.PluginName; +import org.example.plugin.annotation.CheckPlugin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +/** + * 热门模块插件接口 + */ +@RestController +@RequestMapping("/hot/hotLive") +@CheckPlugin(needPlugin = {PluginName.HOT_GUARD_PLUGIN}) +public class HotModuleController { + + @Resource + HotModuleApi hotModuleApi; + + @GetMapping("/live") + public Result getAllHotLive(@RequestParam(defaultValue = "0") int latest, @RequestParam String platform){ + List lives = hotModuleApi.getHotLiveList(platform); + if(lives==null){ + return Result.error("403","暂无该数据"); + } + return Result.success(Map.of("list",lives)); + } + + @GetMapping("/module") + public Result getAllHotModule(@RequestParam(defaultValue = "0") int latest,@RequestParam String platform){ + HotModuleList hotModuleList = hotModuleApi.getAllHotModule(platform); + if(hotModuleList==null||hotModuleList.getHotModuleList()==null){ + return Result.error("403","暂无该数据"); + } + return Result.success(Map.of("list",hotModuleList.getHotModuleList())); + } + + @GetMapping("/modelLive") + public Result getHotModuleLives(@RequestParam String moduleId,@RequestParam String platform){ + HotModule moduleHotLives = hotModuleApi.getModuleList(platform, moduleId); + if(moduleHotLives==null||moduleHotLives.getHotLives()==null){ + return Result.error("403","暂无该数据"); + } + return Result.success(Map.of("list",moduleHotLives.getHotLives())); + } +} diff --git a/chopperbot-hot/src/main/java/org/example/controller/HotRecommendationController.java b/chopperbot-hot/src/main/java/org/example/controller/HotRecommendationController.java new file mode 100644 index 0000000..bb471d0 --- /dev/null +++ b/chopperbot-hot/src/main/java/org/example/controller/HotRecommendationController.java @@ -0,0 +1,67 @@ +package org.example.controller; + +import com.genius.assistant.common.Result; +import org.example.api.HeatRecommendApi; +import org.example.bean.FollowDog; +import org.example.constpool.PluginName; +import org.example.plugin.annotation.CheckPlugin; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.Map; + +@RestController +@RequestMapping("/hot/hotRecommendation") +@CheckPlugin(needPlugin =PluginName.HOT_RECOMMENDATION_PLUGIN) +public class HotRecommendationController { + + @Resource + private HeatRecommendApi heatRecommendApi; + + @GetMapping("/list") + public Result getFollowDogs(){ + return Result.success( + Map.of( + "list",heatRecommendApi.getFollowDog() + ) + ); + } + + @PostMapping("/add") + public Result addFollowDogs(@RequestBody FollowDog dog){ + dog.setId(null); + + boolean success = heatRecommendApi.addFollowDog(dog); + if(success){ + return Result.success( + Map.of("add",dog) + ); + }else{ + return Result.error("403","添加失败"); + } + } + + @PostMapping("/update") + public Result updateFollowDogs(@RequestBody FollowDog dog){ + boolean success = heatRecommendApi.updateFollowDog(dog); + return Result.success( + Map.of("success",success) + ); + } + + @GetMapping("/delete") + public Result addFollowDogs(@RequestParam String dogId, @RequestParam String platform){ + boolean success = heatRecommendApi.deleteFollowDog(dogId,platform); + return Result.success( + Map.of("success",success) + ); + } + + @GetMapping("/open") + public Result openFollowDogs(@RequestParam String platform,@RequestParam Boolean isOpen){ + boolean success = heatRecommendApi.openPlatformFollowDog(platform,isOpen); + return Result.success( + Map.of("success",success) + ); + } +} diff --git a/chopperbot-hot/src/main/java/org/example/controller/LiveFollowController.java b/chopperbot-hot/src/main/java/org/example/controller/LiveFollowController.java new file mode 100644 index 0000000..15b98a8 --- /dev/null +++ b/chopperbot-hot/src/main/java/org/example/controller/LiveFollowController.java @@ -0,0 +1,68 @@ +package org.example.controller; + + +import com.genius.assistant.common.Result; +import org.example.api.LiverFollowApi; +import org.example.bean.FocusLiver; +import org.example.constpool.PluginName; +import org.example.plugin.annotation.CheckPlugin; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/hot/liveFollow") +@CheckPlugin(needPlugin = {PluginName.HOT_LIVER_FOLLOWER}) +public class LiveFollowController { + + @Resource + private LiverFollowApi liverFollowApi; + + @GetMapping("/list") + public Result followList(){ + List focusLivers = liverFollowApi.allFocusLivers(); + return Result.success( + Map.of("list",focusLivers) + ); + } + + @PostMapping("/add") + public Result addFocus(@RequestBody FocusLiver focusLiver){ + boolean follow = liverFollowApi.follow(focusLiver); + return Result.success( + Map.of("success",follow) + ); + } + + @GetMapping("/delete") + public Result deleteFocus(@RequestParam String platform,@RequestParam String liver){ + boolean delete = liverFollowApi.unFollow(platform,liver); + return Result.success( + Map.of("success",delete) + ); + } + + @GetMapping("/changeSetting") + public Result changeLiverFollowSetting(@RequestParam(required = false) Integer focusLive, + @RequestParam(required = false) Integer focusBarrage, + @RequestParam(required = false) Long checkTime){ + liverFollowApi.changeSetting( + Map.of("focusLive",focusLive, + "focusBarrage",focusBarrage, + "checkTime",checkTime + ) + ); + return Result.success( + Map.of("success",true) + ); + } + + @GetMapping("/setting") + public Result changeLiverFollowSetting(){ + return Result.success( + Map.of("setting",liverFollowApi.getSetting()) + ); + } +}