zoukankan      html  css  js  c++  java
  • 「小程序JAVA实战」小程序的个人信息作品,收藏,关注(66)

    转自: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:基本操作,获取作品列表,关注列表,收藏列表

  • 相关阅读:
    Tips
    react
    Vue 双向绑定
    jQuery 学习笔记
    CC NOV17
    一种高效处理无修改区间或树上询问的数据结构(附代码)
    HNOI 2017
    PA2015
    bzoj 泛做
    GG
  • 原文地址:https://www.cnblogs.com/sharpest/p/10316611.html
Copyright © 2011-2022 走看看