博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
「小程序JAVA实战」小程序的视频展示页面初始化(63)
阅读量:5907 次
发布时间:2019-06-19

本文共 13503 字,大约阅读时间需要 45 分钟。

转自:https://idig8.com/2018/09/24/xiaochengxujavashizhanxiaochengxudeshipinzhanshiyemianchushihua62/

进入列表详情,展示点赞状态用户的名称,头像名称。源码:https://github.com/limingios/wxProgram.git 中No.15和springboot

后台开发

拦截器,不拦截获取视频初始化信息。游客可以直接观看。通过用户id,视频id,视频创建id获取是否点赞视频,并获取创建者的信息。

  • 拦截器

 

package com.idig8;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import com.idig8.controller.interceptor.MiniInterceptor;@Configurationpublic class WebMvcConfig extends WebMvcConfigurerAdapter {    @Value("${server.file.path}")    private String fileSpace;    @Override    public void addResourceHandlers(ResourceHandlerRegistry registry) {        //资源的路径.swagger2的资源.所在的目录,        registry.addResourceHandler("/**")        .addResourceLocations("classpath:/META-INF/resources/")        .addResourceLocations("file:"+fileSpace);    }    @Bean    public MiniInterceptor miniInterceptor() {        return new MiniInterceptor();    }    @Override    public void addInterceptors(InterceptorRegistry registry) {        registry.addInterceptor(miniInterceptor()).addPathPatterns("/user/**")                       .addPathPatterns("/video/upload", "/video/uploadCover","/video/userLike","/video/userUnLike")                                                  .addPathPatterns("/bgm/**")                                                  .excludePathPatterns("/user/queryPublisher");        super.addInterceptors(registry);    }}

UserController.java

package com.idig8.controller;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.BeanUtils;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.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.multipart.MultipartFile;import com.idig8.pojo.Users;import com.idig8.pojo.vo.PublisherVideo;import com.idig8.pojo.vo.UsersVO;import com.idig8.service.UserService;import com.idig8.utils.JSONResult;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(value = "/user")public class UserController extends BasicController{    @Autowired    private UserService userService;    @Value("${server.file.path}")    private String fileSpace;    @ApiOperation(value="用户上传头像",notes="用户上传头像的接口")    @ApiImplicitParams({        @ApiImplicitParam(name="userId",value="用户id",required=true,dataType="String",paramType="query"),    })    @PostMapping(value="/uploadFace",headers="content-type=multipart/form-data")    public JSONResult uploadFace(String userId,@ApiParam(value="图片",required=true) MultipartFile file) {        if (StringUtils.isBlank(userId)) {            return JSONResult.errorMsg("用户id不能为空...");        }        // 文件保存的命名空间        String fileName = file.getOriginalFilename();        // 保存到数据库中的相对路径        String path = "";         try {             path = FileUtil.uploadFile(file.getBytes(), fileSpace, fileName);            } catch (Exception e) {                e.getStackTrace();                return JSONResult.errorMsg(e.getMessage());            }         Users user = new Users();         user.setId(userId);         user.setFaceImage(path);         userService.updateUser(user);        return JSONResult.ok(path);    }    @ApiOperation(value="通过用户Id获取用户信息",notes="通过用户Id获取用户信息的接口")    @ApiImplicitParam(name="userId",value="用户id",required=true,dataType="String",paramType="query")    @PostMapping("/queryByUserId")    public JSONResult queryByUserId(String userId) {        if (StringUtils.isBlank(userId)) {            return JSONResult.errorMsg("用户id不能为空...");        }        Users user = userService.queryUserId(userId);        UsersVO usersVO= new UsersVO();        BeanUtils.copyProperties(user, usersVO);        return JSONResult.ok(usersVO);    }    @PostMapping("/queryPublisher")    public JSONResult queryPublisher(String loginUserId, String videoId,             String publishUserId) throws Exception {        if (StringUtils.isBlank(publishUserId)) {            return JSONResult.errorMsg("");        }        // 1. 查询视频发布者的信息        Users userInfo = userService.queryUserInfo(publishUserId);        UsersVO publisher = new UsersVO();        BeanUtils.copyProperties(userInfo, publisher);        // 2. 查询当前登录者和视频的点赞关系        boolean userLikeVideo = userService.isUserLikeVideo(loginUserId, videoId);        PublisherVideo bean = new PublisherVideo();        bean.setPublisher(publisher);           bean.setUserLikeVideo(userLikeVideo);        return JSONResult.ok(bean);    }}

  • service 和 serviceImp
package com.idig8.service;import com.idig8.pojo.Users;public interface UserService {    /**     * 判断用户名是否存在     * @param username     * @return     */    public boolean queryUsernameIsExist(String username);    /**     * 保存用户     * @param user     * @return     */    public void saveUser(Users user);    /**     * 查询用户对象     * @param username     * @return     */    public Users queryUserIsExist(Users user);    /**     * 更新对象     * @param username     * @return     */    public void updateUser(Users user);    /**     * userId查询用户对象     * @param username     * @return     */    public Users queryUserId(String userId);    /**     * 查询用户信息     */    public Users queryUserInfo(String userId);    /**     * 查询用户是否喜欢点赞视频     */    public boolean isUserLikeVideo(String userId, String videoId);}
package com.idig8.service.Impl;import java.util.List;import org.apache.commons.lang3.StringUtils;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.idig8.mapper.UsersLikeVideosMapper;import com.idig8.mapper.UsersMapper;import com.idig8.pojo.Users;import com.idig8.pojo.UsersLikeVideos;import com.idig8.service.UserService;import com.idig8.utils.MD5Utils;import tk.mybatis.mapper.entity.Example;import tk.mybatis.mapper.entity.Example.Criteria;@Servicepublic class UserServiceImpl implements UserService {    @Autowired    private UsersMapper usersMapper;    @Autowired    private UsersLikeVideosMapper usersLikeVideosMapper;    @Autowired    private UsersMapper userMapper;    @Autowired    private Sid sid;    @Transactional(propagation =Propagation.SUPPORTS)    @Override    public boolean queryUsernameIsExist(String username) {        Users user = new Users();        user.setUsername(username);        Users result = usersMapper.selectOne(user);        return result==null? false:true;    }    @Transactional(propagation =Propagation.REQUIRED)    @Override    public void saveUser(Users user) {        String userId =sid.nextShort();        user.setId(userId);        usersMapper.insert(user);    }    @Transactional(propagation =Propagation.SUPPORTS)    @Override    public Users queryUserIsExist(Users user) {        Example queryExample = new Example(Users.class);        Criteria criteria = queryExample.createCriteria();        criteria.andEqualTo("username",user.getUsername());        try {            criteria.andEqualTo("password",MD5Utils.getMD5Str(user.getPassword()));        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        Users userOne =  usersMapper.selectOneByExample(queryExample);        return userOne;    }    @Transactional(propagation =Propagation.REQUIRED)    @Override    public void updateUser(Users user) {        Example userExample = new Example(Users.class);        Criteria criteria = userExample.createCriteria();        criteria.andEqualTo("id", user.getId());        usersMapper.updateByExampleSelective(user, userExample);    }    @Transactional(propagation =Propagation.SUPPORTS)    @Override    public Users queryUserId(String userId){        Example queryExample = new Example(Users.class);        Criteria criteria = queryExample.createCriteria();        criteria.andEqualTo("id",userId);        Users userOne =  usersMapper.selectOneByExample(queryExample);        return userOne;    }    @Transactional(propagation = Propagation.SUPPORTS)    @Override    public Users queryUserInfo(String userId) {        Example userExample = new Example(Users.class);        Criteria criteria = userExample.createCriteria();        criteria.andEqualTo("id", userId);        Users user = userMapper.selectOneByExample(userExample);        return user;    }    @Transactional(propagation = Propagation.SUPPORTS)    @Override    public boolean isUserLikeVideo(String userId, String videoId) {        if (StringUtils.isBlank(userId) || StringUtils.isBlank(videoId)) {            return false;        }        Example example = new Example(UsersLikeVideos.class);        Criteria criteria = example.createCriteria();        criteria.andEqualTo("userId", userId);        criteria.andEqualTo("videoId", videoId);        List
list = usersLikeVideosMapper.selectByExample(example); if (list != null && list.size() >0) { return true; } return false; }}

小程序修改

  • videoInfo.js
var videoUtils = require('../../utils/videoUtils.js')const app = getApp()Page({  data: {    cover:'cover',    videoContext:"",    videoInfo:{},    videId:'',    src:'',    userLikeVideo:false,    serverUrl:'',    publisher:[]  },  showSearch:function(){    wx.navigateTo({      url: '../videoSearch/videoSearch',    })  },  onLoad:function(params){    var me = this;    me.videoContext = wx.createVideoContext('myVideo', me);    var videoInfo = JSON.parse(params.videoInfo);    var videoWidth = videoInfo.videoWidth;    var videoHeight = videoInfo.videoHeight;    var cover = 'cover';    if (videoWidth > videoHeight){      cover = '';    }    me.setData({      videId: videoInfo.id,      src: app.serverUrl + videoInfo.videoPath,      videoInfo: videoInfo,      cover: cover    })    var serverUrl = app.serverUrl;    var user = app.getGlobalUserInfo();    var loginUserId = "";    if (user != null && user != undefined && user != '') {      loginUserId = user.id;    }    wx.request({      url: serverUrl + '/user/queryPublisher?loginUserId=' + loginUserId + "&videoId=" + videoInfo.id + "&publishUserId=" + videoInfo.userId,      method: 'POST',      success: function (res) {        console.log(res.data);        var publisher = res.data.data.publisher;        var userLikeVideo = res.data.data.userLikeVideo;        me.setData({          serverUrl: serverUrl,          publisher: publisher,          userLikeVideo: userLikeVideo        });      }    })  },  showIndex:function(){    wx.redirectTo({      url: '../index/index',    })  },  onShow:function(){    var me = this;    me.videoContext.play();  },  onHide:function(){    var me = this;    me.videoContext.pause();  },  upload:function(){    var me = this;    var userInfo = app.getGlobalUserInfo();    var videoInfo = JSON.stringify(me.data.videoInfo);    var realUrl = '../videoInfo/videoInfo#videoInfo@' + videoInfo;    if (userInfo.id == '' || userInfo.id == undefined) {      wx.navigateTo({        url: '../userLogin/userLogin?realUrl=' + realUrl,      })    } else {      videoUtils.uploadVideo();    }  },  showMine: function () {    var me = this;    var userInfo = app.getGlobalUserInfo();    var videoInfo = JSON.parse    if (userInfo.id == '' || userInfo.id == undefined){      wx.navigateTo({        url: '../userLogin/userLogin',      })    }else{      wx.navigateTo({        url: '../mine/mine',      })    }  },  likeVideoOrNot: function () {    var me = this;    var userInfo = app.getGlobalUserInfo();    var videoInfoStr = JSON.stringify(me.data.videoInfo);    var realUrl = '../videoInfo/videoInfo#videoInfo@' + videoInfoStr;    if (userInfo.id == '' || userInfo.id == undefined) {      wx.navigateTo({        url: '../userLogin/userLogin?realUrl=' + realUrl,      })    } else {      var videoInfo = me.data.videoInfo;      var userLikeVideo = me.data.userLikeVideo;      var url = "/video/userLike?userId=" + userInfo.id + "&videoId=" + videoInfo.id + "&videoCreaterId=" + userLikeVideo.userId;      if (userLikeVideo){        var url = "/video/userUnLike?userId=" + userInfo.id + "&videoId=" + videoInfo.id + "&videoCreaterId=" + userLikeVideo.userId;      }      wx.showLoading({        title: '....',      })      wx.request({        url: app.serverUrl + url,        method: "POST",        header: {          'content-type': 'application/json', // 默认值          'headerUserId': userInfo.id,          'headerUserToken': userInfo.userToken        },        success: function (res) {          wx.hideLoading();          me.setData({            userLikeVideo: !userLikeVideo,          })        }      })    }  }})

PS:拦截器excludePathPatterns可以不拦截,分析业务,那些需要登录后才可以获得,那些不需要登录就可以看到。

转载于:https://www.cnblogs.com/sharpest/p/10316492.html

你可能感兴趣的文章
CentOS7+CDH5.14.0安装CDH错误排查: HiveServer2 该角色的进程已退出。该角色的预期状态为已启动...
查看>>
The Oregon Trail 俄勒冈之旅
查看>>
Excel VBA连接MySql 数据库获取数据
查看>>
Developing a Service Provider using Java API(Service Provider Interface)(转)
查看>>
oschina程序开发
查看>>
“正在注册字体”问题解决
查看>>
iOS开发-OpenGL ES入门教程1
查看>>
Java 设计模式专栏
查看>>
使用ASP.NET Atlas SortBehavior实现客户端排序
查看>>
图像滤镜处理算法:灰度、黑白、底片、浮雕
查看>>
Office文档出错的几种原因与解决方法
查看>>
正则表达式 学习笔记1.1
查看>>
AssetBundle进阶内存优化(Unity 4.x)
查看>>
《从零开始学Swift》学习笔记(Day 40)——析构函数
查看>>
Exchange2003-2010迁移系列之十,Exchange证书攻略
查看>>
extmail集群的邮件负载均衡方案 [lvs dns postfix]
查看>>
更改UIView的背景
查看>>
APUE第15章学习扎记之程序的存储区布局试验
查看>>
ubuntu升级16.04 inter idea 中文输入法无效
查看>>
三目运算判断jsp脚本里面的值
查看>>