feat(backend): Improve tag management and media resource access

This commit is contained in:
2026-04-22 16:43:40 +08:00
parent 9820d2f020
commit a6ae978ed0
13 changed files with 216 additions and 18 deletions
@@ -119,4 +119,60 @@ public class ContentManageController {
@PathVariable Long categoryId) {
return contentFeignClient.deleteCategory(categoryId, internalServiceToken);
}
/**
* 获取标签分页
*/
@PreAuthorize("hasAuthority('tag:manage')")
@GetMapping("/tag/page")
public Result<Page<Object>> getTagPage(
@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "size", defaultValue = "10") Integer size,
@RequestParam(value = "keyword", required = false) String keyword) {
return contentFeignClient.getTagPage(page, size, keyword);
}
/**
* 添加标签
*/
@OperationLog("添加标签")
@PreAuthorize("hasAuthority('tag:manage')")
@PostMapping("/tag")
public Result<Void> addTag(@RequestBody Object tag, jakarta.servlet.http.HttpServletRequest request) {
Object adminId = request.getAttribute("adminId");
Object username = request.getAttribute("username");
return contentFeignClient.addTag(
tag,
internalServiceToken,
String.valueOf(adminId instanceof Long ? adminId : 0L),
String.valueOf(username == null ? "admin" : username)
);
}
/**
* 更新标签
*/
@OperationLog("更新标签")
@PreAuthorize("hasAuthority('tag:manage')")
@PutMapping("/tag")
public Result<Void> updateTag(@RequestBody Object tag, jakarta.servlet.http.HttpServletRequest request) {
Object adminId = request.getAttribute("adminId");
Object username = request.getAttribute("username");
return contentFeignClient.updateTag(
tag,
internalServiceToken,
String.valueOf(adminId instanceof Long ? adminId : 0L),
String.valueOf(username == null ? "admin" : username)
);
}
/**
* 删除标签
*/
@OperationLog("删除标签")
@PreAuthorize("hasAuthority('tag:manage')")
@DeleteMapping("/tag/{tagId}")
public Result<Void> deleteTag(@PathVariable Long tagId) {
return contentFeignClient.deleteTag(tagId, internalServiceToken);
}
}
@@ -73,6 +73,28 @@ public interface ContentFeignClient {
Result<Void> deleteCategory(@PathVariable("categoryId") Long categoryId,
@RequestHeader("X-Internal-Token") String internalToken);
@GetMapping("/content/tag/page")
Result<Page<Object>> getTagPage(
@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(value = "keyword", required = false) String keyword);
@PostMapping("/content/tag")
Result<Void> addTag(@RequestBody Object tag,
@RequestHeader("X-Internal-Token") String internalToken,
@RequestHeader("userId") String userId,
@RequestHeader("username") String username);
@PutMapping("/content/tag")
Result<Void> updateTag(@RequestBody Object tag,
@RequestHeader("X-Internal-Token") String internalToken,
@RequestHeader("userId") String userId,
@RequestHeader("username") String username);
@DeleteMapping("/content/tag/{tagId}")
Result<Void> deleteTag(@PathVariable("tagId") Long tagId,
@RequestHeader("X-Internal-Token") String internalToken);
@GetMapping("/content/video/admin/stats")
Result<Object> getVideoStats(@RequestHeader("X-Internal-Token") String internalToken);
}
@@ -58,6 +58,26 @@ public class ContentFeignClientFallbackFactory implements FallbackFactory<Conten
return Result.error("删除分类失败:服务不可用");
}
@Override
public Result<Page<Object>> getTagPage(Integer pageNum, Integer pageSize, String keyword) {
return Result.error("获取标签列表失败:服务不可用");
}
@Override
public Result<Void> addTag(Object tag, String internalToken, String userId, String username) {
return Result.error("添加标签失败:服务不可用");
}
@Override
public Result<Void> updateTag(Object tag, String internalToken, String userId, String username) {
return Result.error("更新标签失败:服务不可用");
}
@Override
public Result<Void> deleteTag(Long tagId, String internalToken) {
return Result.error("删除标签失败:服务不可用");
}
@Override
public Result<Object> getVideoStats(String internalToken) {
return Result.error("获取视频统计失败:服务不可用");