主要项目工程接口 !!!!!
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.PageUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.dubbo.config.annotation.Service;
import com.mongodb.client.result.DeleteResult;
import com.tanhua.dubbo.server.enums.IdType;
import com.tanhua.dubbo.server.pojo.FollowUser;
import com.tanhua.dubbo.server.pojo.Video;
import com.tanhua.dubbo.server.service.IdService;
import com.tanhua.dubbo.server.vo.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.redis.core.RedisTemplate;
import java.util.ArrayList;
import java.util.List;
/*
* 小视频API 接口 实现类
* */
@Service(version = "1.0.0") //开启dubbo service服务
@Slf4j
public class VideoApiImpl implements VideoApi {
private static final String VIDEO_FOLLOW_USER_KEY_PREFIX = "VIDEO_FOLLOW_USER_";
@Autowired
private IdService idService;
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
private RedisTemplate redisTemplate;
/*发布小视频方法
* */
@Override
public String saveVideo(Video video) {
try {
//校验
if(!ObjectUtil.isAllNotEmpty(video.getUserId(), video.getPicUrl(),
video.getVideoUrl())){
return null;
}
//设置id
video.setId(ObjectId.get());
video.setVid(this.idService.createId(IdType.VIDEO));
//发布时间
video.setCreated(System.currentTimeMillis());
//保存到Mongodb中
this.mongoTemplate.save(video);
return video.getId().toHexString();
} catch (Exception e) {
log.error("⼩视频发布失败~ video = " + video, e);
}
return null;
}
/*
* 小视频 列表实现类
* 作用 从数据库查询多个小视频
* 在客户端页面 以列表格式 批量展示小视频
* */
@Override
public PageInfo 小视频 API 核心 字段
/*
* 发布小视频功能 的 实体类 与 mongodb的 collection video关联
* */
private static final long serialVersionUID = -3136732836884933873L;
private ObjectId id; //主键id
private Long vid; //⾃增⻓id
private Long userId;
private String text; //⽂字
private String picUrl; //视频封⾯⽂件
private String videoUrl; //视频⽂件
private Long created; //创建时间
private Integer seeType; // 谁可以看,1-公开,2-私密,3-部分可⻅,4-不给谁看
private List seeList; //部分可⻅的列表
private List notSeeList; //不给谁看的列表
private String longitude; //经度
private String latitude; //纬度
private String locationName; //位置名称
} 小视频 APP 端 API
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class VideoVo {
/*
* 实现小视频功能 API 接口 实体类
* */
private String id;
private Long userId;
private String avatar; //头像
private String nickname; //昵称
private String cover; //封⾯
private String videoUrl; //视频URL
private String signature; //签名
private Integer likeCount; //点赞数量
private Integer hasLiked; //是否已赞(1是,0否)
private Integer hasFocus; //是是否关注 (1是,0否)
private Integer commentCount; //评论数量
} | 留言与评论(共有 0 条评论) “” |