转自:https://idig8.com/2018/09/24/xiaochengxujavashizhanxiaochengxudegerenxinxizuopinshoucangguanzhu65/
个人信息页面有一个tab(作品,收藏,关注)源码:https://github.com/limingios/wxProgram.git 中No.15和springboot
作品,收藏,关注的列表
VideoController.java
package com.idig8.controller;
import java.io.File;
import java.util.Date;
import java.util.UUID;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.idig8.pojo.Bgm;
import com.idig8.pojo.Videos;
import com.idig8.service.BgmService;
import com.idig8.service.VideoService;
import com.idig8.utils.FetchVideoCover;
import com.idig8.utils.JSONResult;
import com.idig8.utils.MergeVideoMp3;
import com.idig8.utils.PagedResult;
import com.idig8.utils.enums.VideoStatusEnum;
import com.idig8.utils.file.FileUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@RestController
@Api(value="视频相关业务的接口", tags= {"视频相关业务的controller"})
@RequestMapping("/video")
public class VideoController extends BasicController {
@Autowired
private BgmService bgmService;
@Autowired
private VideoService videosService;
@Value("${server.file.path}")
private String fileSpace;
@Value("${server.ffmpeg.path}")
private String ffmpegexe;
@ApiOperation(value="上传视频", notes="上传视频的接口")
@ApiImplicitParams({
@ApiImplicitParam(name="userId", value="用户id", required=true,
dataType="String", paramType="form"),
@ApiImplicitParam(name="bgmId", value="背景音乐id", required=false,
dataType="String", paramType="form"),
@ApiImplicitParam(name="videoSeconds", value="背景音乐播放长度", required=true,
dataType="String", paramType="form"),
@ApiImplicitParam(name="videoWidth", value="视频宽度", required=true,
dataType="String", paramType="form"),
@ApiImplicitParam(name="videoHeight", value="视频高度", required=true,
dataType="String", paramType="form"),
@ApiImplicitParam(name="desc", value="视频描述", required=false,
dataType="String", paramType="form")
})
@PostMapping(value="/upload", headers="content-type=multipart/form-data")
public JSONResult upload(String userId,
String bgmId, double videoSeconds,
int videoWidth, int videoHeight,
String desc,
@ApiParam(value="短视频", required=true)
MultipartFile file) throws Exception {
if (StringUtils.isBlank(userId)) {
return JSONResult.errorMsg("用户id不能为空...");
}
// 文件保存的命名空间
String fileName = file.getOriginalFilename();
// 保存到数据库中的相对路径
String path = "";
String videOutPath = "";
String ImagePath = "";
try {
path = FileUtil.uploadFile(file.getBytes(), fileSpace, fileName);
} catch (Exception e) {
e.getStackTrace();
return JSONResult.errorMsg(e.getMessage());
}
if(StringUtils.isNotBlank(bgmId)){
Bgm bgm = bgmService.queryBgmById(bgmId);
String mp3BgmPath = fileSpace + bgm.getPath();
MergeVideoMp3 mergeVideoMp3 = new MergeVideoMp3(ffmpegexe);
String videOutPathName = UUID.randomUUID().toString()+".mp4";
File targetFile = new File(fileSpace + userId);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
videOutPath = "/"+userId+"/"+videOutPathName;
String videoInput = fileSpace +path;
mergeVideoMp3.convertor(videoInput, mp3BgmPath, videoSeconds, fileSpace +videOutPath);
}else{
videOutPath = path;
}
ImagePath = "/"+userId+"/"+UUID.randomUUID().toString()+".jpg";;
FetchVideoCover fetchVideoCover = new FetchVideoCover(ffmpegexe);
fetchVideoCover.getCover(fileSpace +videOutPath, fileSpace +ImagePath);
Videos videos = new Videos();
videos.setAudioId(bgmId);
videos.setCreateTime(new Date());
videos.setVideoDesc(desc);
videos.setId(UUID.randomUUID().toString());
videos.setUserId(userId);
videos.setVideoHeight(videoHeight);
videos.setVideoWidth(videoWidth);
videos.setVideoPath(videOutPath);
videos.setCoverPath(ImagePath);
videos.setStatus(VideoStatusEnum.SUCCESS.value);
videosService.saveVideo(videos);
return JSONResult.ok(path);
}
@PostMapping(value="/showAll")
@ApiOperation(value="视频列表", notes="分页的视频列表")
public JSONResult showAll(@RequestBody Videos video,Integer isSaveRecord,
Integer page) throws Exception {
if(page == null){
page = 1;
}
PagedResult result = videosService.getAllVideos(video,isSaveRecord,page, PAGE_SIZE);
return JSONResult.ok(result);
}
@PostMapping(value="/userLike")
@ApiOperation(value="热搜词列表", notes="热搜词列表")
public JSONResult userLike(String userId,String videoId,String videoCreaterId) throws Exception {
videosService.userLikeVideo(userId, videoId, videoCreaterId);
return JSONResult.ok();
}
@PostMapping(value="/userUnLike")
public JSONResult userUnLike(String userId,String videoId,String videoCreaterId) throws Exception {
videosService.userUnLikeVideo(userId, videoId, videoCreaterId);
return JSONResult.ok();
}
@PostMapping(value="/hot")
public JSONResult upload() throws Exception {
return JSONResult.ok(videosService.gethostList());
}
@PostMapping(value="/showMyLike")
public JSONResult showMyLike(String userId,Integer page,Integer pageSize) throws Exception {
if(StringUtils.isBlank(userId)){
return JSONResult.ok();
}
if(page == null){
page = 1;
}
if(pageSize == null){
pageSize = PAGE_SIZE;
}
PagedResult videoList = videosService.queryMyLikeVideos(userId,page,pageSize);
return JSONResult.ok(videoList);
}
@PostMapping(value="/showMyFollow")
public JSONResult showMyFollow(String userId,Integer page,Integer pageSize) throws Exception {
if(StringUtils.isBlank(userId)){
return JSONResult.ok();
}
if(page == null){
page = 1;
}
if(pageSize == null){
pageSize = PAGE_SIZE;
}
PagedResult videoList = videosService.queryMyFollowVideos(userId,page,pageSize);
return JSONResult.ok(videoList);
}
}
VideoService.java
package com.idig8.service;
import java.util.List;
import com.idig8.pojo.Videos;
import com.idig8.utils.PagedResult;
public interface VideoService {
/**
* 保存视频信息
* @param Id
* @return
*/
public String saveVideo(Videos video);
/**
* 分析查询视频列表
* @param video
* @param isSaveRecord
* @param page
* @param pageSize
* @return
*/
public PagedResult getAllVideos(Videos video,Integer isSaveRecord,Integer page,Integer pageSize);
/**
* 获取热搜词列表
* @return
*/
public List<String> gethostList();
public void userLikeVideo(String userId,String videoId,String videoCreaterId);
public void userUnLikeVideo(String userId,String videoId,String videoCreaterId);
public PagedResult queryMyLikeVideos(String userId,Integer page,Integer pageSize);
public PagedResult queryMyFollowVideos(String userId,Integer page,Integer pageSize);
}
VideoServiceImpl.java
package com.idig8.service.Impl;
import java.util.List;
import org.n3r.idworker.Sid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.idig8.mapper.SearchRecordsMapper;
import com.idig8.mapper.UsersLikeVideosMapper;
import com.idig8.mapper.UsersMapper;
import com.idig8.mapper.VideosMapper;
import com.idig8.mapper.VideosUsersMapper;
import com.idig8.pojo.SearchRecords;
import com.idig8.pojo.UsersLikeVideos;
import com.idig8.pojo.Videos;
import com.idig8.pojo.vo.VideosVO;
import com.idig8.service.VideoService;
import com.idig8.utils.PagedResult;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.entity.Example.Criteria;
@Service
public class VideoServiceImpl implements VideoService {
@Autowired
private VideosMapper videosMapper;
@Autowired
private UsersMapper usersMapper;
@Autowired
private VideosUsersMapper videosUsersMapper;
@Autowired
private SearchRecordsMapper searchRecordsMapper;
@Autowired
private UsersLikeVideosMapper usersLikeVideosMapper;
@Autowired
private Sid sid;
@Transactional(propagation = Propagation.REQUIRED)
public String saveVideo(Videos video) {
String id = sid.nextShort();
video.setId(id);
videosMapper.insertSelective(video);
return id;
}
@Override
@Transactional(propagation = Propagation.REQUIRED)
public PagedResult getAllVideos(Videos video, Integer isSaveRecord, Integer page, Integer pageSize) {
String desc = video.getVideoDesc();
String userId = video.getUserId();
if (isSaveRecord != null && isSaveRecord == 1) {
SearchRecords record = new SearchRecords();
String recordId = sid.nextShort();
record.setId(recordId);
record.setContent(desc);
searchRecordsMapper.insert(record);
}
PageHelper.startPage(page, pageSize);
List<VideosVO> list = videosUsersMapper.queryAllVideos(desc,userId);
PageInfo<VideosVO> pageList = new PageInfo<>(list);
PagedResult result = new PagedResult();
result.setPage(page);
result.setTotal(pageList.getPages());
result.setRows(list);
result.setRecords(pageList.getTotal());
return result;
}
@Transactional(propagation = Propagation.SUPPORTS)
@Override
public List<String> gethostList() {
return searchRecordsMapper.gethotList();
}
@Override
public void userLikeVideo(String userId, String videoId, String videoCreaterId) {
// 1.保存用戶和视频的关联关系
String likeId = sid.nextShort();
UsersLikeVideos usersLikeVideos = new UsersLikeVideos();
usersLikeVideos.setId(likeId);
usersLikeVideos.setUserId(userId);
usersLikeVideos.setVideoId(videoId);
usersLikeVideosMapper.insert(usersLikeVideos);
// 2.视频喜欢的累加
videosUsersMapper.addVideoLikeCount(videoId);
// 3. 用户喜欢的累加
usersMapper.addReceiveLikeCount(userId);
}
@Override
public void userUnLikeVideo(String userId, String videoId, String videoCreaterId) {
Example example = new Example(UsersLikeVideos.class);
Criteria criteria = example.createCriteria();
criteria.andEqualTo("userId", userId);
criteria.andEqualTo("videoId", videoId);
usersLikeVideosMapper.deleteByExample(example);
// 2.视频喜欢的累减
videosUsersMapper.reduceVideoLikeCount(videoId);
// 3. 用户喜欢的累减
usersMapper.reduceReceiveLikeCount(userId);
}
@Override
public PagedResult queryMyLikeVideos(String userId, Integer page, Integer pageSize) {
PageHelper.startPage(page,pageSize);
List<VideosVO> list = videosUsersMapper.queryMyLikeVideos(userId);
PageInfo<VideosVO> pageList = new PageInfo<>(list);
PagedResult pagedResult = new PagedResult();
pagedResult.setTotal(pageList.getPages());
pagedResult.setRows(list);
pagedResult.setPage(page);
pagedResult.setRecords(pageList.getTotal());
return pagedResult;
}
@Override
public PagedResult queryMyFollowVideos(String userId, Integer page, Integer pageSize) {
PageHelper.startPage(page,pageSize);
List<VideosVO> list = videosUsersMapper.queryMyFollowVideos(userId);
PageInfo<VideosVO> pageList = new PageInfo<>(list);
PagedResult pagedResult = new PagedResult();
pagedResult.setTotal(pageList.getPages());
pagedResult.setRows(list);
pagedResult.setPage(page);
pagedResult.setRecords(pageList.getTotal());
return pagedResult;
}
}
VideosUsersMapper.java
package com.idig8.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.idig8.pojo.vo.VideosVO;
import com.idig8.utils.MyMapper;
public interface VideosUsersMapper extends MyMapper<VideosVO> {
public List<VideosVO> queryAllVideos(@Param("videoDesc") String videoDesc,@Param("userId")String userId);
public void addVideoLikeCount(String videoId);
public void reduceVideoLikeCount(String videoId);
public List<VideosVO> queryMyLikeVideos(String userId);
public List<VideosVO> queryMyFollowVideos(String userId);
}
VideosUserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.idig8.mapper.VideosUsersMapper" >
<resultMap id="BaseResultMap" type="com.idig8.pojo.vo.VideosVO" >
<!--
WARNING - @mbg.generated
-->
<id column="id" property="id" jdbcType="VARCHAR" />
<result column="user_id" property="userId" jdbcType="VARCHAR" />
<result column="audio_id" property="audioId" jdbcType="VARCHAR" />
<result column="video_desc" property="videoDesc" jdbcType="VARCHAR" />
<result column="video_path" property="videoPath" jdbcType="VARCHAR" />
<result column="video_seconds" property="videoSeconds" jdbcType="REAL" />
<result column="video_width" property="videoWidth" jdbcType="INTEGER" />
<result column="video_height" property="videoHeight" jdbcType="INTEGER" />
<result column="cover_path" property="coverPath" jdbcType="VARCHAR" />
<result column="like_counts" property="likeCounts" jdbcType="BIGINT" />
<result column="status" property="status" jdbcType="INTEGER" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="username" property="username" jdbcType="VARCHAR" />
<result column="face_image" property="faceImage" jdbcType="VARCHAR" />
<result column="nickname" property="nickname" jdbcType="VARCHAR" />
</resultMap>
<select id="queryAllVideos" resultMap="BaseResultMap" parameterType="String">
select v.*,u.face_image,u.username,u.nickname from videos v
left join users u on v.user_id = u.id
where
1 = 1
<if test="videoDesc !=null and videoDesc != ‘‘ ">
and v.video_desc like ‘%${videoDesc}%‘
</if>
<if test="userId !=null and userId != ‘‘ ">
and v.user_id = #{userId}
</if>
and v.status = 1
order by v.create_time
</select>
<update id="addVideoLikeCount" parameterType="String">
update videos set like_counts=like_counts+1 where id=#{videoId}
</update>
<update id="reduceVideoLikeCount" parameterType="String">
update videos set like_counts=like_counts-1 where id=#{videoId}
</update>
<select id="queryMyLikeVideos" resultMap="BaseResultMap" parameterType="String">
select v.*,u.face_image as face_image,u.nickname as nickname from videos v
left join users u on v.user_id = u.id
where
v.id in (select ulv.video_id from users_like_videos ulv where ulv.user_id = #{userId})
and v.status = 1
order by v.create_time desc
</select>
<select id="queryMyFollowVideos" resultMap="BaseResultMap" parameterType="String">
select v.*,u.face_image as face_image,u.nickname as nickname from videos v
left join users u on v.user_id = u.id
where
v.id in (select uf.user_id from users_fans uf where uf.fan_id = #{userId})
and v.status = 1
order by v.create_time desc
</select>
</mapper>
小程序开发
mine.js
// pages/mine/mine.js
const app = getApp()
var videoUtils = require(‘../../utils/videoUtils.js‘)
Page({
/**
* 页面的初始数据
*/
data: {
faceImage: "../../resource/images/noneface.png",
nickname: "昵称",
fansCounts: 0,
followCounts: 0,
receiveLikeCounts: 0,
isMe:true,
isFollow:false,
publisherId: ‘‘,
videoSelClass: "video-info",
isSelectedWork: "video-info-selected",
isSelectedLike: "",
isSelectedFollow: "",
myVideoList: [],
myVideoPage: 1,
myVideoTotal: 1,
likeVideoList: [],
likeVideoPage: 1,
likeVideoTotal: 1,
followVideoList: [],
followVideoPage: 1,
followVideoTotal: 1,
myWorkFalg: false,
myLikesFalg: true,
myFollowFalg: true
},
/**
* 用户注销
*/
logout: function(e) {
var user = app.getGlobalUserInfo();
wx.showLoading({
title: ‘正在注销中。。。‘
});
wx.request({
url: app.serverUrl + "/logout?userId=" + user.id,
method: "POST",
header: {
‘content-type‘: ‘application/json‘ // 默认值
},
success: function(res) {
console.log(res.data);
var status = res.data.status;
wx.hideLoading();
if (status == 200) {
wx.showToast({
title: "用户注销成功~!",
icon: ‘none‘,
duration: 3000
})
// app.userInfo = null;
wx.removeStorageSync("userInfo");
wx.redirectTo({
url: ‘../userRegister/userRegister‘,
})
} else if (status == 500) {
wx.showToast({
title: res.data.msg,
icon: ‘none‘,
duration: 3000
})
}
}
})
},
followMe: function (e) {
var me = this;
var user = app.getGlobalUserInfo();
var userId = user.id;
var publisherId = me.data.publisherId;
var followType = e.currentTarget.dataset.followtype;
// 1:关注 0:取消关注
var url = ‘‘;
if (followType == ‘1‘) {
url = ‘/user/beyourfans?userId=‘ + publisherId + ‘&fanId=‘ + userId;
} else {
url = ‘/user/dontbeyourfans?userId=‘ + publisherId + ‘&fanId=‘ + userId;
}
wx.showLoading();
wx.request({
url: app.serverUrl + url,
method: ‘POST‘,
header: {
‘content-type‘: ‘application/json‘, // 默认值
‘headerUserId‘: user.id,
‘headerUserToken‘: user.userToken
},
success: function () {
wx.hideLoading();
if (followType == ‘1‘) {
me.setData({
isFollow: true,
fansCounts: ++me.data.fansCounts
})
} else {
me.setData({
isFollow: false,
fansCounts: --me.data.fansCounts
})
}
}
})
},
/**
* 头像上传
*/
uploadFace: function(e) {
// var user = app.userInfo;
var user = app.getGlobalUserInfo();
var me = this;
wx.chooseImage({
count: 1, // 默认9
sizeType: [‘compressed‘], // 可以指定是原图还是压缩图,默认二者都有
sourceType: [‘album‘, ‘camera‘], // 可以指定来源是相册还是相机,默认二者都有
success: function(res) {
// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
var tempFilePaths = res.tempFilePaths
if (tempFilePaths.length > 0) {
console.log(tempFilePaths[0]);
wx.uploadFile({
url: app.serverUrl + "/user/uploadFace?userId=" + user.id, //仅为示例,非真实的接口地址
filePath: tempFilePaths[0],
name: ‘file‘,
success: function(res) {
var data = JSON.parse(res.data);
console.log(data);
wx.hideLoading();
if (data.status == 200) {
wx.showToast({
title: "用户上传成功~!",
icon: ‘none‘,
duration: 3000
})
me.setData({
faceUrl: app.serverUrl + data.data
})
} else if (data.status == 500) {
wx.showToast({
title: data.msg,
icon: ‘none‘,
duration: 3000
})
}
}
})
}
}
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function(params) {
var me = this;
var userInfo = app.getGlobalUserInfo();
var publisherId = params.publisherId;
var userId = userInfo.id;
if (publisherId != null && publisherId != ‘‘ && publisherId!=undefined){
userId = publisherId;
me.setData({
isMe:false,
publisherId: publisherId,
})
}
wx.showLoading({
title: ‘正在获取用户信息。。。‘
});
wx.request({
url: app.serverUrl + "/user/queryByUserId?userId=" + userId + "&fanId" + userInfo.id,
method: "POST",
header: {
‘content-type‘: ‘application/json‘, // 默认值
‘headerUserId‘: userInfo.id,
‘headerUserToken‘: userInfo.userToken
},
success: function(res) {
console.log(res.data);
var status = res.data.status;
if (status == 200) {
var userInfo = res.data.data;
wx.hideLoading();
var faceImage = me.data.faceUrl;
if (userInfo.faceImage != null && userInfo.faceImage != ‘‘ && userInfo.faceImage != undefined) {
faceImage = app.serverUrl + userInfo.faceImage;
}
me.setData({
faceImage: faceImage,
fansCounts: userInfo.fansCounts,
followCounts: userInfo.followCounts,
receiveLikeCounts: userInfo.receiveLikeCounts,
nickname: userInfo.nickname,
isFollow: userInfo.follow
})
me.getMyVideoList(1)
} else if (status == 502){
wx.showToast({
title: res.data.msg,
duration:3000,
icon:‘none‘,
complete:function(){
wx.removeStorageSync("userInfo");
wx.navigateTo({
url: ‘../userLogin/userLogin‘,
})
}
})
}
}
})
},
uploadVideo: function(e) {
videoUtils.uploadVideo();
},
doSelectWork: function () {
this.setData({
isSelectedWork: "video-info-selected",
isSelectedLike: "",
isSelectedFollow: "",
myWorkFalg: false,
myLikesFalg: true,
myFollowFalg: true,
myVideoList: [],
myVideoPage: 1,
myVideoTotal: 1,
likeVideoList: [],
likeVideoPage: 1,
likeVideoTotal: 1,
followVideoList: [],
followVideoPage: 1,
followVideoTotal: 1
});
this.getMyVideoList(1);
},
doSelectLike: function () {
this.setData({
isSelectedWork: "",
isSelectedLike: "video-info-selected",
isSelectedFollow: "",
myWorkFalg: true,
myLikesFalg: false,
myFollowFalg: true,
myVideoList: [],
myVideoPage: 1,
myVideoTotal: 1,
likeVideoList: [],
likeVideoPage: 1,
likeVideoTotal: 1,
followVideoList: [],
followVideoPage: 1,
followVideoTotal: 1
});
this.getMyLikesList(1);
},
doSelectFollow: function () {
this.setData({
isSelectedWork: "",
isSelectedLike: "",
isSelectedFollow: "video-info-selected",
myWorkFalg: true,
myLikesFalg: true,
myFollowFalg: false,
myVideoList: [],
myVideoPage: 1,
myVideoTotal: 1,
likeVideoList: [],
likeVideoPage: 1,
likeVideoTotal: 1,
followVideoList: [],
followVideoPage: 1,
followVideoTotal: 1
});
this.getMyFollowList(1)
},
getMyVideoList: function (page) {
var me = this;
// 查询视频信息
wx.showLoading();
// 调用后端
var serverUrl = app.serverUrl;
wx.request({
url: serverUrl + ‘/video/showAll/?page=‘ + page + ‘&pageSize=6‘,
method: "POST",
data: {
userId: me.data.userId
},
header: {
‘content-type‘: ‘application/json‘ // 默认值
},
success: function (res) {
console.log(res.data);
var myVideoList = res.data.data.rows;
wx.hideLoading();
var newVideoList = me.data.myVideoList;
me.setData({
myVideoPage: page,
myVideoList: newVideoList.concat(myVideoList),
myVideoTotal: res.data.data.total,
serverUrl: app.serverUrl
});
}
})
},
getMyLikesList: function (page) {
var me = this;
var userId = me.data.userId;
// 查询视频信息
wx.showLoading();
// 调用后端
var serverUrl = app.serverUrl;
wx.request({
url: serverUrl + ‘/video/showMyLike/?userId=‘ + userId + ‘&page=‘ + page + ‘&pageSize=6‘,
method: "POST",
header: {
‘content-type‘: ‘application/json‘ // 默认值
},
success: function (res) {
console.log(res.data);
var likeVideoList = res.data.data.rows;
wx.hideLoading();
var newVideoList = me.data.likeVideoList;
me.setData({
likeVideoPage: page,
likeVideoList: newVideoList.concat(likeVideoList),
likeVideoTotal: res.data.data.total,
serverUrl: app.serverUrl
});
}
})
},
getMyFollowList: function (page) {
var me = this;
var userId = me.data.userId;
// 查询视频信息
wx.showLoading();
// 调用后端
var serverUrl = app.serverUrl;
wx.request({
url: serverUrl + ‘/video/showMyFollow/?userId=‘ + userId + ‘&page=‘ + page + ‘&pageSize=6‘,
method: "POST",
header: {
‘content-type‘: ‘application/json‘ // 默认值
},
success: function (res) {
console.log(res.data);
var followVideoList = res.data.data.rows;
wx.hideLoading();
var newVideoList = me.data.followVideoList;
me.setData({
followVideoPage: page,
followVideoList: newVideoList.concat(followVideoList),
followVideoTotal: res.data.data.total,
serverUrl: app.serverUrl
});
}
})
},
// 点击跳转到视频详情页面
showVideo: function (e) {
console.log(e);
var myWorkFalg = this.data.myWorkFalg;
var myLikesFalg = this.data.myLikesFalg;
var myFollowFalg = this.data.myFollowFalg;
if (!myWorkFalg) {
var videoList = this.data.myVideoList;
} else if (!myLikesFalg) {
var videoList = this.data.likeVideoList;
} else if (!myFollowFalg) {
var videoList = this.data.followVideoList;
}
var arrindex = e.target.dataset.arrindex;
var videoInfo = JSON.stringify(videoList[arrindex]);
wx.redirectTo({
url: ‘../videoinfo/videoinfo?videoInfo=‘ + videoInfo
})
},
// 到底部后触发加载
onReachBottom: function () {
var myWorkFalg = this.data.myWorkFalg;
var myLikesFalg = this.data.myLikesFalg;
var myFollowFalg = this.data.myFollowFalg;
if (!myWorkFalg) {
var currentPage = this.data.myVideoPage;
var totalPage = this.data.myVideoTotal;
// 获取总页数进行判断,如果当前页数和总页数相等,则不分页
if (currentPage === totalPage) {
wx.showToast({
title: ‘已经没有视频啦...‘,
icon: "none"
});
return;
}
var page = currentPage + 1;
this.getMyVideoList(page);
} else if (!myLikesFalg) {
var currentPage = this.data.likeVideoPage;
var totalPage = this.data.myLikesTotal;
// 获取总页数进行判断,如果当前页数和总页数相等,则不分页
if (currentPage === totalPage) {
wx.showToast({
title: ‘已经没有视频啦...‘,
icon: "none"
});
return;
}
var page = currentPage + 1;
this.getMyLikesList(page);
} else if (!myFollowFalg) {
var currentPage = this.data.followVideoPage;
var totalPage = this.data.followVideoTotal;
// 获取总页数进行判断,如果当前页数和总页数相等,则不分页
if (currentPage === totalPage) {
wx.showToast({
title: ‘已经没有视频啦...‘,
icon: "none"
});
return;
}
var page = currentPage + 1;
this.getMyFollowList(page);
}
}
})
mine.wxml
<view>
<view class=‘container‘>
<image src="{{faceImage}}" class="face" bindtap=‘uploadFace‘></image>
<label class=‘nickname‘>{{nickname}}</label>
<block wx:if=‘{{isMe}}‘>
<button size=‘mini‘ class=‘primary‘ bindtap=‘uploadVideo‘> 上传作品</button>
<button size=‘mini‘ type=‘‘ class=‘logout‘ bindtap=‘logout‘>注销</button>
</block>
<block wx:if=‘{{!isMe}}‘>
<block wx:if=‘{{isFollow}}‘>
<button size=‘mini‘ type=‘‘ class=‘follow‘ data-followType=‘0‘ bindtap=‘followMe‘>已关注</button>
</block>
<block wx:if=‘{{!isFollow}}‘>
<button size=‘mini‘ type=‘primary‘ class=‘follow‘ data-followType=‘1‘ bindtap=‘followMe‘>关注我</button>
</block>
</block>
<view class=‘container-row‘>
<label class=‘info-items‘>{{fansCounts}} 粉丝</label>
<label class=‘info-items‘>{{followCounts}} 关注</label>
<label class=‘info-items‘>{{receiveLikeCounts}} 获赞</label>
</view>
</view>
</view>
<view class="line"></view>
<view class=‘container-video‘>
<!-- 发布过的作品 -->
<view class=‘{{videoSelClass}} {{isSelectedWork}}‘ bindtap=‘doSelectWork‘>作品</view>
<!-- 收藏的点赞的视频 -->
<view class=‘{{videoSelClass}} {{isSelectedLike}}‘ bindtap=‘doSelectLike‘>收藏</view>
<!-- 用户关注过人发表的视频 -->
<view class=‘{{videoSelClass}} {{isSelectedFollow}}‘ bindtap=‘doSelectFollow‘>关注</view>
</view>
<view class=‘container-video-list‘>
<view hidden=‘{{myWorkFalg}}‘>
<block wx:for="{{myVideoList}}">
<image src=‘{{serverUrl}}{{item.coverPath}}‘ class=‘videoImage‘ mode="aspectFill" bindtap=‘showVideo‘ data-arrindex=‘{{index}}‘></image>
</block>
</view>
<view hidden=‘{{myLikesFalg}}‘>
<block wx:for="{{likeVideoList}}">
<image src=‘{{serverUrl}}{{item.coverPath}}‘ class=‘videoImage‘ mode="aspectFill" bindtap=‘showVideo‘ data-arrindex=‘{{index}}‘></image>
</block>
</view>
<view hidden=‘{{myFollowFalg}}‘>
<block wx:for="{{followVideoList}}">
<image src=‘{{serverUrl}}{{item.coverPath}}‘ class=‘videoImage‘ mode="aspectFill" bindtap=‘showVideo‘ data-arrindex=‘{{index}}‘></image>
</block>
</view>
</view>
PS:基本操作,获取作品列表,关注列表,收藏列表