wzj-boot/ruoyi-admin/src/main/java/org/dromara/app/AppVlogController.java

196 lines
7.0 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package org.dromara.app;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.wzj.soopin.content.domain.bo.*;
import com.wzj.soopin.content.domain.po.MyLikedVlog;
import com.wzj.soopin.content.domain.po.Vlog;
import com.wzj.soopin.content.domain.vo.IndexVlogVO;
import com.wzj.soopin.content.service.IVlogPullService;
import com.wzj.soopin.content.service.VlogService;
import com.wzj.soopin.content.service.VlogUploadService;
import com.wzj.soopin.content.utils.PagedGridResult;
import com.wzj.soopin.content.utils.QcCloud;
import com.wzj.soopin.content.utils.RedisOperator;
import io.swagger.annotations.Api;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.mq.domain.MQMessage;
import org.dromara.common.mq.enums.MQMessageType;
import org.dromara.common.mq.enums.MessageActionEnum;
import org.dromara.common.mq.utils.MqUtil;
import org.dromara.common.redis.redis.RedisCache;
import org.dromara.common.satoken.utils.LoginHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.wzj.soopin.content.domain.base.BaseInfoProperties.*;
@Slf4j
@Api(tags = "VlogController 短视频相关业务功能的接口")
@RequestMapping("/app/vlog")
@RestController
@AllArgsConstructor
public class AppVlogController {
private final VlogService vlogService;
private final QcCloud qcCloud;
private final VlogUploadService vlogUploadService;
public final RedisCache cache;
private final IVlogPullService pullService;
@Tag(name = "首页视频列表")
@PostMapping("/indexList")
public R<Page<IndexVlogVO>> indexList(@RequestBody IndexListBO bo, @RequestBody Page page) {
Page<IndexVlogVO> pages = pullService.page(page);
return R.ok(pages);
}
@GetMapping("/detail/{vlogId}")
public R<Object> detail(@PathVariable String vlogId) {
return R.ok(vlogService.getVlogDetailById(vlogId));
}
@Tag(name = "我的私密视频列表")
@PostMapping("/myPrivateList")
public R<Page<IndexVlogVO>> myPrivateList(@RequestBody MyListBO bo, @RequestBody Page page) {
LoginUser loginUser = LoginHelper.getLoginUser();
if (loginUser == null) {
throw new ServiceException("用户未登录");
}
bo.setUserId(String.valueOf(loginUser.getUserId()));
Page<IndexVlogVO> pages = vlogService.queryMyVlogList(bo, page);
return R.ok(pages);
}
@Tag(name = "我点赞的视频列表")
@PostMapping("/myLikedList")
public R<Page<IndexVlogVO>> myLikedList(@RequestBody MyLikedVlogBO bo, @RequestBody Page page) {
Page<IndexVlogVO> pages = vlogService.getMyLikedVlogList(page);
return R.ok(pages);
}
@Tag(name = "我关注的人的视频列表")
@PostMapping("/followList")
public R<Page<IndexVlogVO>> followList(@RequestBody SimpleListBO bo, @RequestBody Page page) {
LoginUser loginUser = LoginHelper.getLoginUser();
if (loginUser == null) {
throw new ServiceException("用户未登录");
}
bo.setMyId(String.valueOf(loginUser.getUserId()));
Page<IndexVlogVO> pages = vlogService.getMyFollowVlogList(page);
return R.ok(pages);
}
@Tag(name = "好友视频列表")
@PostMapping("/friendList")
public R<Page<IndexVlogVO>> friendList(@RequestBody SimpleListBO bo, @RequestBody Page page) {
LoginUser loginUser = LoginHelper.getLoginUser();
if (loginUser == null) {
throw new ServiceException("用户未登录");
}
bo.setMyId(String.valueOf(loginUser.getUserId()));
Page<IndexVlogVO> pages = vlogService.getMyFriendVlogList(page);
return R.ok(pages);
}
@PostMapping("publish")
public R<Void> publish(@RequestBody VlogBO vlogBO) throws Exception {
LoginUser loginUser = LoginHelper.getLoginUser();
if (loginUser == null) {
throw new ServiceException("用户未登录");
}
vlogBO.setVlogerId(String.valueOf(loginUser.getUserId()));
String url = vlogBO.getUrl();
log.info("未审核视频地址:" + url);
String fileName = url.substring(url.lastIndexOf("/") + 1);
log.info("视频文件名称:" + fileName);
log.info("开始上传腾讯云点播:" + fileName);
String fileId = qcCloud.uploadViaTempFile(fileName);
log.info("视频发布ID:" + fileId);
vlogBO.setFileId(fileId);
// 删除minio文件
// MinIOUtils.removeFile(minIOConfig.getBucketName(),fileName);
// log.info("删除minio文件"+fileName);
// FIXME 校验VlogBO
vlogService.createVlog(vlogBO);
return R.ok();
}
@Tag(name = "我的公开视频列表")
@PostMapping("/myPublicList")
public R<Page<IndexVlogVO>> myPublicList(@RequestBody MyListBO bo, @RequestBody Page page) {
Page<IndexVlogVO> pages = vlogService.queryMyVlogList(bo, page);
return R.ok(pages);
}
@PostMapping("/like")
public R<Void> like(@RequestBody VlogBO vlogBO) {
LoginUser loginUser = LoginHelper.getLoginUser();
if (loginUser == null) {
throw new ServiceException("用户未登录");
}
String userId = String.valueOf(loginUser.getUserId());
String vlogId = vlogBO.getId();
vlogService.userLikeVlog(userId,vlogId );
return R.ok();
}
@PostMapping("/unlike")
public R<Void> unlike(@RequestBody VlogBO vlogBO) {
LoginUser loginUser = LoginHelper.getLoginUser();
if (loginUser == null) {
throw new ServiceException("用户未登录");
}
String userId = String.valueOf(loginUser.getUserId());
String vlogId = vlogBO.getId();
vlogService.userUnLikeVlog(userId, vlogId);
return R.ok();
}
@GetMapping("/read")
public R<Void> read(@RequestBody VlogBO vlogBO) {
LoginUser loginUser = LoginHelper.getLoginUser();
if (loginUser == null) {
throw new ServiceException("用户未登录");
}
vlogService.readVlog(loginUser.getUserId(), vlogBO.getId());
return R.ok();
}
@Tag(name = "手动触发缓存点赞最多视频")
@PostMapping("/cacheTopLikedVlogs")
public R<Void> cacheTopLikedVlogs(@RequestParam(defaultValue = "100") int limit) {
try {
// vlogService.cacheTopLikedVlogs(limit);
return R.ok();
} catch (Exception e) {
log.error("手动触发缓存点赞最多视频失败", e);
return R.fail("缓存失败: " + e.getMessage());
}
}
}