转自:https://idig8.com/2018/09/25/xiaochengxujavashizhanxiaochengxudeweixinapicaidancaozuo66-2/

通过点击举报按钮,跳转到举报页面完成举报操作。

后台开发

获取发布人的userId,videoId,创建者的Id

  • controller

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.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.Users;
import com.idig8.pojo.UsersReport;
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{@Autowiredprivate 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, String fanId) {if (StringUtils.isBlank(userId)) {return JSONResult.errorMsg("用户id不能为空...");}Users user = userService.queryUserId(userId);UsersVO usersVO= new UsersVO();BeanUtils.copyProperties(user, usersVO);usersVO.setFollow(userService.queryIfFollow(userId, fanId));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);}@PostMapping("/beyourfans")public JSONResult beyourfans(String userId, String fanId) throws Exception {if (StringUtils.isBlank(userId) || StringUtils.isBlank(fanId)) {return JSONResult.errorMsg("");}userService.saveUserFanRelation(userId, fanId);return JSONResult.ok("关注成功...");}@PostMapping("/dontbeyourfans")public JSONResult dontbeyourfans(String userId, String fanId) throws Exception {if (StringUtils.isBlank(userId) || StringUtils.isBlank(fanId)) {return JSONResult.errorMsg("");}userService.deleteUserFanRelation(userId, fanId);return JSONResult.ok("取消关注成功...");}@PostMapping("/reportUser")public JSONResult reportUser(@RequestBody UsersReport usersReport) throws Exception {// 保存举报信息userService.reportUser(usersReport);return JSONResult.errorMsg("举报成功...有你平台变得更美好...");}}···* service
UserService.java
``` java
package com.idig8.service;import com.idig8.pojo.Users;
import com.idig8.pojo.UsersReport;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);/*** @Description: 增加用户和粉丝的关系*/public void saveUserFanRelation(String userId, String fanId);/*** @Description: 删除用户和粉丝的关系*/public void deleteUserFanRelation(String userId, String fanId);/*** @Description: 查询用户是否关注*/public boolean queryIfFollow(String userId, String fanId);/*** @Description: 举报用户*/public void reportUser(UsersReport userReport);}
  • service
    UserServiceImpl.java
package com.idig8.service.Impl;import java.util.Date;
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.UsersFansMapper;
import com.idig8.mapper.UsersLikeVideosMapper;
import com.idig8.mapper.UsersMapper;
import com.idig8.mapper.UsersReportMapper;
import com.idig8.pojo.Users;
import com.idig8.pojo.UsersFans;
import com.idig8.pojo.UsersLikeVideos;
import com.idig8.pojo.UsersReport;
import com.idig8.service.UserService;
import com.idig8.utils.MD5Utils;import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.entity.Example.Criteria;@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UsersMapper usersMapper;@Autowiredprivate UsersLikeVideosMapper usersLikeVideosMapper;@Autowiredprivate UsersMapper userMapper;@Autowiredprivate Sid sid;@Autowiredprivate UsersFansMapper usersFansMapper;@Autowiredprivate UsersReportMapper usersReportMapper;@Transactional(propagation =Propagation.SUPPORTS)@Overridepublic 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)@Overridepublic void saveUser(Users user) {String userId =sid.nextShort();user.setId(userId);usersMapper.insert(user);}@Transactional(propagation =Propagation.SUPPORTS)@Overridepublic 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 blocke.printStackTrace();}Users userOne =  usersMapper.selectOneByExample(queryExample);return userOne;}@Transactional(propagation =Propagation.REQUIRED)@Overridepublic 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)@Overridepublic 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)@Overridepublic 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)@Overridepublic 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<UsersLikeVideos> list = usersLikeVideosMapper.selectByExample(example);if (list != null && list.size() >0) {return true;}return false;}@Transactional(propagation = Propagation.REQUIRED)@Overridepublic void saveUserFanRelation(String userId, String fanId) {String relId = sid.nextShort();UsersFans userFan = new UsersFans();userFan.setId(relId);userFan.setUserId(userId);userFan.setFanId(fanId);usersFansMapper.insert(userFan);userMapper.addFansCount(userId);userMapper.addFollersCount(fanId);}@Transactional(propagation = Propagation.REQUIRED)@Overridepublic void deleteUserFanRelation(String userId, String fanId) {Example example = new Example(UsersFans.class);Criteria criteria = example.createCriteria();criteria.andEqualTo("userId", userId);criteria.andEqualTo("fanId", fanId);usersFansMapper.deleteByExample(example);userMapper.reduceFansCount(userId);userMapper.reduceFollersCount(fanId);}@Overridepublic boolean queryIfFollow(String userId, String fanId) {Example example = new Example(UsersFans.class);Criteria criteria = example.createCriteria();criteria.andEqualTo("userId", userId);criteria.andEqualTo("fanId", fanId);List<UsersFans> list = usersFansMapper.selectByExample(example);if (list != null && !list.isEmpty() && list.size() > 0) {return true;}return false;}@Transactional(propagation = Propagation.REQUIRED)@Overridepublic void reportUser(UsersReport userReport) {String urId = sid.nextShort();userReport.setId(urId);userReport.setCreateDate(new Date());usersReportMapper.insert(userReport);}}

小程序开发

  • videoInfo
    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.parseif (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,})}})}},showPublisher:function(){var me = this;var userInfo = app.getGlobalUserInfo();var videoInfo = me.data.videoInfo;var realUrl = '../mine/mine#publisherId@' + videoInfo.userId;if (userInfo.id == '' || userInfo.id == undefined) {wx.navigateTo({url: '../userLogin/userLogin?realUrl=' + realUrl,})} else {wx.navigateTo({url: '../mine/mine?publisherId=' + videoInfo.userId,})}},shareMe:function(){var me = this;var user = app.getGlobalUserInfo();wx.showActionSheet({itemList: ["下载到本地","举报用户","分享到好友"],success:function(res){if (res.tapIndex==0){} else if (res.tapIndex==1){// 举报var videoInfo = JSON.stringify(me.data.videoInfo);var realUrl = '../videoInfo/videoInfo#videoInfo@' + videoInfo;if (user == null || user == undefined || user == '') {wx.navigateTo({url: '../userLogin/userLogin?realUrl=' + realUrl,})} else {var publishUserId = me.data.videoInfo.userId;var videoId = me.data.videoInfo.id;var currentUserId = user.id;wx.navigateTo({url: '../report/report?videoId=' + videoId + "&publishUserId=" + publishUserId})}} else{}}})}
})
  • report
const app = getApp()Page({data: {reasonType: "请选择原因",reportReasonArray: app.reportReasonArray,publishUserId:"",videoId:""},onLoad:function(params) {var me = this;var videoId = params.videoId;var publishUserId = params.publishUserId;me.setData({publishUserId: publishUserId,videoId: videoId});},changeMe:function(e) {var me = this;var index = e.detail.value;var reasonType = app.reportReasonArray[index];me.setData({reasonType: reasonType});},submitReport:function(e) {var me = this;var reasonIndex = e.detail.value.reasonIndex;var reasonContent = e.detail.value.reasonContent;var user = app.getGlobalUserInfo();var currentUserId = user.id;if (reasonIndex == null || reasonIndex == '' || reasonIndex == undefined) {wx.showToast({title: '选择举报理由',icon: "none"})return;}var serverUrl = app.serverUrl;wx.request({url: serverUrl + '/user/reportUser',method: 'POST',data: {dealUserId: me.data.publishUserId,dealVideoId: me.data.videoId,title: app.reportReasonArray[reasonIndex],content:reasonContent,userid: currentUserId},header: {'content-type': 'application/json', // 默认值'headerUserId': user.id,'headerUserToken': user.userToken},success:function(res) {wx.showToast({title: res.data.msg,duration: 2000,icon: 'none',success: function() {wx.navigateBack();}})}})}})
<view><form bindsubmit='submitReport'><view class='container-reason'><label class='label'>举报理由:</label><picker name="reasonIndex" value="{{index}}" range="{{reportReasonArray}}" bindchange="changeMe"><view class="picker">{{reasonType}}</view></picker></view><view class='container-content'><label class='label'>举报描述(选填):</label><textarea name="reasonContent" class='content' placeholder='请详细说明举报原因...'></textarea></view><view class='container-tips'><image src='../../resource/images/report_face.png' class='report-face'></image>收到举报后,我们会在12小时内处理,感谢您的举报,互联网环境因你更美好!~~</view><view><button class="submitBtn" type="" form-type='submit'>提  交</button></view></form>
</view>
page {background-color: #0e0f1a;/* background-color: red; */
}.container-reason {display: flex;color: whitesmoke;padding: 15px;background-color: #161823;
}.label {/* margin-left: 15px; */margin-right: 15px;color: white;
}.container-content {margin-top: 10px;color: whitesmoke;padding: 15px;background-color: #161823;
}.content {margin-top: 10px;padding: 10px;color: white;background-color: #242630;width: 95%;
}.container-tips{padding: 25px;color: #56575e;font-size: 15px;
}.report-face{width:12px;height:13px;
}.submitBtn {width: 80%;margin-top: 10px;background-color: #fe2c55;color: white;
}
  • app.js
//app.js
App({serverUrl:"http://127.0.0.1:8081/",userInfo:null,setGlobalUserInfo:function(user){wx.setStorageSync("userInfo", user);},getGlobalUserInfo: function () {return wx.getStorageSync("userInfo");},reportReasonArray: ["色情低俗","政治敏感","涉嫌诈骗","辱骂谩骂","广告垃圾","诱导分享","引人不适","过于暴力","违法违纪","其它原因"]
})

PS:举报功能已经开发完毕,后面这几次很少语言描述,基本的业务逻辑想下就通了。

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

「小程序JAVA实战」小程序的举报功能开发(68)相关推荐

  1. 「小程序JAVA实战」 小程序远程调试(九)

    在开发javaweb应用的时候,如果遇见一个问题都会调试,debug,在火狐和谷歌浏览器的时候我们也可以使用断点的方式调试js,小程序可以吗?肯定是可以的!小程序的调试也可以在手机端进行远程调试.源码 ...

  2. multipartfile file java 怎么获取里面的属性_「小程序JAVA实战」小程序的举报功能开发(68)...

    通过点击举报按钮,跳转到举报页面完成举报操作. 后台开发 获取发布人的userId,videoId,创建者的Id controller UserController.java package com. ...

  3. 「小程序JAVA实战」小程序头像图片上传(下)(45)

    转自:https://idig8.com/2018/09/09/xiaochengxujavashizhanxiaochengxutouxiangtupianshangchuan44/ 接下来,我们应 ...

  4. miniui datagrid 隐藏列默认赋值_「小程序JAVA实战」 小程序默认加载的页面和生命周期(八)...

    小程序如何加载的呢?生命周期!源码:https://github.com/limingios/wxProgram.git 中的No.3 加载页面 小程序默认加载的pages中的第一个目录 不管你的名称 ...

  5. 「小程序JAVA实战」小程序的留言和评价功能(70)

    转自:https://idig8.com/2018/10/28/xiaochengxujavashizhanxiaochengxudeliuyanhepingjiagongneng69/ 目前小程序这 ...

  6. 「小程序JAVA实战」小程序的个人信息作品,收藏,关注(66)

    个人信息页面有一个tab(作品,收藏,关注)源码:https://github.com/limingios/wxProgram.git 中No.15和springboot 作品,收藏,关注的列表 Vi ...

  7. 「小程序JAVA实战」小程序我的个人信息页面开发(41)

    转自:https://idig8.com/2018/09/05/xiaochengxujavashizhanxiaochengxuwodegerenxinxiyemiankaifa40/ 已经完成了登 ...

  8. 「小程序JAVA实战」小程序的页面重定向(60)

    转自:https://idig8.com/2018/09/24/xiaochengxujavashizhanxiaochengxudeyemianzhongdingxiang59/ 在我们正常的浏览网 ...

  9. 小程序 video 控制器外观调整_「小程序JAVA实战」小程序视频组件与api介绍(51)...

    这次说下,小程序的视频组件,之前在说小程序基础的时候视频组件没说,现在说下.从属性和api都说下.https://github.com/limingios/wxProgram.git 中No.15 视 ...

最新文章

  1. 对git的使用日常问题及解决
  2. hihoCoder1040 矩形判断
  3. CH4402 小Z的袜子(莫队)
  4. Notepad++插件之ftp/sftp远程编辑功能,以及各种插件(转:http://blog.csdn.net/happy_wu/article/details/73302994)
  5. 应用于CDN的GSLB系统
  6. 微信小程序使用阿里图标
  7. 为什么喜欢软件工程专业_为什么我喜欢自由软件
  8. python __iter____next__
  9. The Economist经济学人是如何使用Go语言构建内容平台微服务架构的?
  10. [Link-Cut-Tree][BZOJ2002]弹飞绵羊
  11. Vue子组件调用父组件的方法
  12. 多个pdf怎么合并成一个pdf?
  13. ue4 迁移模型_UE4模型导入基础操作(MAX为例)
  14. 虚拟滚动实现(Vue)
  15. 使用DISM启用或禁用Windows功能
  16. FFMPEG:SPS和PPS
  17. synchronized 和 AQS
  18. c语言缓冲区溢出函数,示例C程序上的缓冲区溢出
  19. 红尘陌上雪,散落随花开
  20. [陈鹏导师精益项目实战]华东区电机企业精益生产项目第五期启动

热门文章

  1. Linux环境下的堆栈--调试C程序
  2. 提高C++性能的编程技术笔记:跟踪实例+测试代码
  3. matlab外部接口简介
  4. 【C++】Google Protocol Buffer(protobuf)详解(一)
  5. 【OpenCV】使用过的函数汇总
  6. python导入matplotlib出错_解决导入matplotlib的RuntimeError: Python is not installed as a framework....
  7. Java学习总结:50(扫描流:Scanner)
  8. 【java】Lombok的使用
  9. Java连接数据库 JDBC
  10. usb打印机命令_Hyper-V与你的虚拟机共享设备、USB设备