226 lines
7.9 KiB
Java
226 lines
7.9 KiB
Java
package com.imooc.controller;
|
||
|
||
import com.imooc.base.BaseInfoProperties;
|
||
import com.imooc.bo.VlogBO;
|
||
import com.imooc.enums.YesOrNo;
|
||
import com.imooc.grace.result.GraceJSONResult;
|
||
import com.imooc.service.VlogService;
|
||
import com.imooc.utils.PagedGridResult;
|
||
import io.swagger.annotations.Api;
|
||
import lombok.extern.slf4j.Slf4j;
|
||
import org.apache.commons.lang3.StringUtils;
|
||
import org.springframework.beans.factory.annotation.Autowired;
|
||
import org.springframework.beans.factory.annotation.Value;
|
||
import org.springframework.cloud.context.config.annotation.RefreshScope;
|
||
import org.springframework.web.bind.annotation.*;
|
||
|
||
@Slf4j
|
||
@Api(tags = "VlogController 短视频相关业务功能的接口")
|
||
@RequestMapping("vlog")
|
||
@RestController
|
||
@RefreshScope
|
||
public class VlogController extends BaseInfoProperties {
|
||
|
||
@Autowired
|
||
private VlogService vlogService;
|
||
|
||
@PostMapping("publish")
|
||
public GraceJSONResult publish(@RequestBody VlogBO vlogBO) {
|
||
// FIXME 作业,校验VlogBO
|
||
vlogService.createVlog(vlogBO);
|
||
return GraceJSONResult.ok();
|
||
}
|
||
|
||
@GetMapping("indexList")
|
||
public GraceJSONResult indexList(@RequestParam(defaultValue = "") String userId,
|
||
@RequestParam(defaultValue = "") String search,
|
||
@RequestParam Integer page,
|
||
@RequestParam Integer pageSize) {
|
||
|
||
if (page == null) {
|
||
page = COMMON_START_PAGE;
|
||
}
|
||
if (pageSize == null) {
|
||
pageSize = COMMON_PAGE_SIZE;
|
||
}
|
||
|
||
PagedGridResult gridResult = vlogService.getIndexVlogList(userId, search, page, pageSize);
|
||
return GraceJSONResult.ok(gridResult);
|
||
}
|
||
|
||
@GetMapping("detail")
|
||
public GraceJSONResult detail(@RequestParam(defaultValue = "") String userId,
|
||
@RequestParam String vlogId) {
|
||
return GraceJSONResult.ok(vlogService.getVlogDetailById(userId, vlogId));
|
||
}
|
||
|
||
|
||
@PostMapping("changeToPrivate")
|
||
public GraceJSONResult changeToPrivate(@RequestParam String userId,
|
||
@RequestParam String vlogId) {
|
||
vlogService.changeToPrivateOrPublic(userId,
|
||
vlogId,
|
||
YesOrNo.YES.type);
|
||
return GraceJSONResult.ok();
|
||
}
|
||
|
||
@PostMapping("changeToPublic")
|
||
public GraceJSONResult changeToPublic(@RequestParam String userId,
|
||
@RequestParam String vlogId) {
|
||
vlogService.changeToPrivateOrPublic(userId,
|
||
vlogId,
|
||
YesOrNo.NO.type);
|
||
return GraceJSONResult.ok();
|
||
}
|
||
|
||
|
||
|
||
@GetMapping("myPublicList")
|
||
public GraceJSONResult myPublicList(@RequestParam String userId,
|
||
@RequestParam Integer page,
|
||
@RequestParam Integer pageSize) {
|
||
|
||
if (page == null) {
|
||
page = COMMON_START_PAGE;
|
||
}
|
||
if (pageSize == null) {
|
||
pageSize = COMMON_PAGE_SIZE;
|
||
}
|
||
|
||
PagedGridResult gridResult = vlogService.queryMyVlogList(userId,
|
||
page,
|
||
pageSize,
|
||
YesOrNo.NO.type);
|
||
return GraceJSONResult.ok(gridResult);
|
||
}
|
||
|
||
@GetMapping("myPrivateList")
|
||
public GraceJSONResult myPrivateList(@RequestParam String userId,
|
||
@RequestParam Integer page,
|
||
@RequestParam Integer pageSize) {
|
||
|
||
if (page == null) {
|
||
page = COMMON_START_PAGE;
|
||
}
|
||
if (pageSize == null) {
|
||
pageSize = COMMON_PAGE_SIZE;
|
||
}
|
||
|
||
PagedGridResult gridResult = vlogService.queryMyVlogList(userId,
|
||
page,
|
||
pageSize,
|
||
YesOrNo.YES.type);
|
||
return GraceJSONResult.ok(gridResult);
|
||
}
|
||
|
||
@GetMapping("myLikedList")
|
||
public GraceJSONResult myLikedList(@RequestParam String userId,
|
||
@RequestParam Integer page,
|
||
@RequestParam Integer pageSize) {
|
||
|
||
if (page == null) {
|
||
page = COMMON_START_PAGE;
|
||
}
|
||
if (pageSize == null) {
|
||
pageSize = COMMON_PAGE_SIZE;
|
||
}
|
||
|
||
PagedGridResult gridResult = vlogService.getMyLikedVlogList(userId,
|
||
page,
|
||
pageSize);
|
||
return GraceJSONResult.ok(gridResult);
|
||
}
|
||
|
||
@Value(("${nacos.counts}"))
|
||
private Integer nacosConuts;
|
||
|
||
|
||
@PostMapping("like")
|
||
public GraceJSONResult like(@RequestParam String userId,
|
||
@RequestParam String vlogerId,
|
||
@RequestParam String vlogId) {
|
||
|
||
// 我点赞的视频,关联关系保存到数据库
|
||
vlogService.userLikeVlog(userId, vlogId);
|
||
|
||
// 点赞后,视频和视频发布者的获赞都会 +1
|
||
redis.increment(REDIS_VLOGER_BE_LIKED_COUNTS + ":" + vlogerId, 1);
|
||
redis.increment(REDIS_VLOG_BE_LIKED_COUNTS + ":" + vlogId, 1);
|
||
|
||
// 我点赞的视频,需要在redis中保存关联关系
|
||
redis.set(REDIS_USER_LIKE_VLOG + ":" + userId + ":" + vlogId, "1");
|
||
|
||
log.info("nacosConuts="+nacosConuts);
|
||
|
||
String countsStr = redis.get(REDIS_VLOG_BE_LIKED_COUNTS + ":" + vlogId);
|
||
Integer counts=0;
|
||
if (StringUtils.isNotBlank(countsStr)){
|
||
|
||
counts=Integer.valueOf(countsStr);
|
||
if (counts>=nacosConuts){
|
||
|
||
vlogService.flushCounts(vlogId, counts);
|
||
}
|
||
}
|
||
|
||
return GraceJSONResult.ok();
|
||
}
|
||
|
||
|
||
@PostMapping("unlike")
|
||
public GraceJSONResult unlike(@RequestParam String userId,
|
||
@RequestParam String vlogerId,
|
||
@RequestParam String vlogId) {
|
||
|
||
// 我取消点赞的视频,关联关系删除
|
||
vlogService.userUnLikeVlog(userId, vlogId);
|
||
|
||
redis.decrement(REDIS_VLOGER_BE_LIKED_COUNTS + ":" + vlogerId, 1);
|
||
redis.decrement(REDIS_VLOG_BE_LIKED_COUNTS + ":" + vlogId, 1);
|
||
redis.del(REDIS_USER_LIKE_VLOG + ":" + userId + ":" + vlogId);
|
||
|
||
return GraceJSONResult.ok();
|
||
}
|
||
|
||
@PostMapping("totalLikedCounts")
|
||
public GraceJSONResult totalLikedCounts(@RequestParam String vlogId) {
|
||
return GraceJSONResult.ok(vlogService.getVlogBeLikedCounts(vlogId));
|
||
}
|
||
|
||
@GetMapping("followList")
|
||
public GraceJSONResult followList(@RequestParam String myId,
|
||
@RequestParam Integer page,
|
||
@RequestParam Integer pageSize) {
|
||
|
||
if (page == null) {
|
||
page = COMMON_START_PAGE;
|
||
}
|
||
if (pageSize == null) {
|
||
pageSize = COMMON_PAGE_SIZE;
|
||
}
|
||
|
||
PagedGridResult gridResult = vlogService.getMyFollowVlogList(myId,
|
||
page,
|
||
pageSize);
|
||
return GraceJSONResult.ok(gridResult);
|
||
}
|
||
|
||
@GetMapping("friendList")
|
||
public GraceJSONResult friendList(@RequestParam String myId,
|
||
@RequestParam Integer page,
|
||
@RequestParam Integer pageSize) {
|
||
|
||
if (page == null) {
|
||
page = COMMON_START_PAGE;
|
||
}
|
||
if (pageSize == null) {
|
||
pageSize = COMMON_PAGE_SIZE;
|
||
}
|
||
|
||
PagedGridResult gridResult = vlogService.getMyFriendVlogList(myId,
|
||
page,
|
||
pageSize);
|
||
return GraceJSONResult.ok(gridResult);
|
||
}
|
||
}
|