怎样实现小程序的举报功能?
这篇文章主要为大家详细介绍了实现小程序的举报功能的方法,文中示例代码介绍的非常详细,零基础也能参考此文章,感兴趣的小伙伴们可以参考一下。
后台开发
获取发布人的userId,videoId,创建者的Id
controller
UserController.java
packagecom.idig8.controller;importorg.apache.commons.lang3.StringUtils;importorg.springframework.beans.BeanUtils;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importorg.springframework.web.multipart.MultipartFile;importcom.idig8.pojo.Users;importcom.idig8.pojo.UsersReport;importcom.idig8.pojo.vo.PublisherVideo;importcom.idig8.pojo.vo.UsersVO;importcom.idig8.service.UserService;importcom.idig8.utils.JSONResult;importcom.idig8.utils.file.FileUtil;importio.swagger.annotations.Api;importio.swagger.annotations.ApiImplicitParam;importio.swagger.annotations.ApiImplicitParams;importio.swagger.annotations.ApiOperation;importio.swagger.annotations.ApiParam;@RestController@Api(value="用户接口",tags={"用户的controller"})@RequestMapping(value="/user")publicclassUserControllerextendsBasicController{@AutowiredprivateUserServiceuserService;@Value("${server.file.path}")privateStringfileSpace;@ApiOperation(value="用户上传头像",notes="用户上传头像的接口")@ApiImplicitParams({@ApiImplicitParam(name="userId",value="用户id",required=true,dataType="String",paramType="query"),})@PostMapping(value="/uploadFace",headers="content-type=multipart/form-data")publicJSONResultuploadFace(StringuserId,@ApiParam(value="图片",required=true)MultipartFilefile){if(StringUtils.isBlank(userId)){returnJSONResult.errorMsg("用户id不能为空...");}//文件保存的命名空间StringfileName=file.getOriginalFilename();//保存到数据库中的相对路径Stringpath="";try{path=FileUtil.uploadFile(file.getBytes(),fileSpace,fileName);}catch(Exceptione){e.getStackTrace();returnJSONResult.errorMsg(e.getMessage());}Usersuser=newUsers();user.setId(userId);user.setFaceImage(path);userService.updateUser(user);returnJSONResult.ok(path);}@ApiOperation(value="通过用户Id获取用户信息",notes="通过用户Id获取用户信息的接口")@ApiImplicitParam(name="userId",value="用户id",required=true,dataType="String",paramType="query")@PostMapping("/queryByUserId")publicJSONResultqueryByUserId(StringuserId,StringfanId){if(StringUtils.isBlank(userId)){returnJSONResult.errorMsg("用户id不能为空...");}Usersuser=userService.queryUserId(userId);UsersVOusersVO=newUsersVO();BeanUtils.copyProperties(user,usersVO);usersVO.setFollow(userService.queryIfFollow(userId,fanId));returnJSONResult.ok(usersVO);}@PostMapping("/queryPublisher")publicJSONResultqueryPublisher(StringloginUserId,StringvideoId,StringpublishUserId)throwsException{if(StringUtils.isBlank(publishUserId)){returnJSONResult.errorMsg("");}//1.查询视频发布者的信息UsersuserInfo=userService.queryUserInfo(publishUserId);UsersVOpublisher=newUsersVO();BeanUtils.copyProperties(userInfo,publisher);//2.查询当前登录者和视频的点赞关系booleanuserLikeVideo=userService.isUserLikeVideo(loginUserId,videoId);PublisherVideobean=newPublisherVideo();bean.setPublisher(publisher);bean.setUserLikeVideo(userLikeVideo);returnJSONResult.ok(bean);}@PostMapping("/beyourfans")publicJSONResultbeyourfans(StringuserId,StringfanId)throwsException{if(StringUtils.isBlank(userId)||StringUtils.isBlank(fanId)){returnJSONResult.errorMsg("");}userService.saveUserFanRelation(userId,fanId);returnJSONResult.ok("关注成功...");}@PostMapping("/dontbeyourfans")publicJSONResultdontbeyourfans(StringuserId,StringfanId)throwsException{if(StringUtils.isBlank(userId)||StringUtils.isBlank(fanId)){returnJSONResult.errorMsg("");}userService.deleteUserFanRelation(userId,fanId);returnJSONResult.ok("取消关注成功...");}@PostMapping("/reportUser")publicJSONResultreportUser(@RequestBodyUsersReportusersReport)throwsException{//保存举报信息userService.reportUser(usersReport);returnJSONResult.errorMsg("举报成功...有你平台变得更美好...");}}···*serviceUserService.java```javapackagecom.idig8.service;importcom.idig8.pojo.Users;importcom.idig8.pojo.UsersReport;publicinterfaceUserService{/***判断用户名是否存在*@paramusername*@return*/publicbooleanqueryUsernameIsExist(Stringusername);/***保存用户*@paramuser*@return*/publicvoidsaveUser(Usersuser);/***查询用户对象*@paramusername*@return*/publicUsersqueryUserIsExist(Usersuser);/***更新对象*@paramusername*@return*/publicvoidupdateUser(Usersuser);/***userId查询用户对象*@paramusername*@return*/publicUsersqueryUserId(StringuserId);/***查询用户信息*/publicUsersqueryUserInfo(StringuserId);/***查询用户是否喜欢点赞视频*/publicbooleanisUserLikeVideo(StringuserId,StringvideoId);/***@Description:增加用户和粉丝的关系*/publicvoidsaveUserFanRelation(StringuserId,StringfanId);/***@Description:删除用户和粉丝的关系*/publicvoiddeleteUserFanRelation(StringuserId,StringfanId);/***@Description:查询用户是否关注*/publicbooleanqueryIfFollow(StringuserId,StringfanId);/***@Description:举报用户*/publicvoidreportUser(UsersReportuserReport);}
service UserServiceImpl.java
packagecom.idig8.service.Impl;importjava.util.Date;importjava.util.List;importorg.apache.commons.lang3.StringUtils;importorg.n3r.idworker.Sid;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importorg.springframework.transaction.annotation.Propagation;importorg.springframework.transaction.annotation.Transactional;importcom.idig8.mapper.UsersFansMapper;importcom.idig8.mapper.UsersLikeVideosMapper;importcom.idig8.mapper.UsersMapper;importcom.idig8.mapper.UsersReportMapper;importcom.idig8.pojo.Users;importcom.idig8.pojo.UsersFans;importcom.idig8.pojo.UsersLikeVideos;importcom.idig8.pojo.UsersReport;importcom.idig8.service.UserService;importcom.idig8.utils.MD5Utils;importtk.mybatis.mapper.entity.Example;importtk.mybatis.mapper.entity.Example.Criteria;@ServicepublicclassUserServiceImplimplementsUserService{@AutowiredprivateUsersMapperusersMapper;@AutowiredprivateUsersLikeVideosMapperusersLikeVideosMapper;@AutowiredprivateUsersMapperuserMapper;@AutowiredprivateSidsid;@AutowiredprivateUsersFansMapperusersFansMapper;@AutowiredprivateUsersReportMapperusersReportMapper;@Transactional(propagation=Propagation.SUPPORTS)@OverridepublicbooleanqueryUsernameIsExist(Stringusername){Usersuser=newUsers();user.setUsername(username);Usersresult=usersMapper.selectOne(user);returnresult==null?false:true;}@Transactional(propagation=Propagation.REQUIRED)@OverridepublicvoidsaveUser(Usersuser){StringuserId=sid.nextShort();user.setId(userId);usersMapper.insert(user);}@Transactional(propagation=Propagation.SUPPORTS)@OverridepublicUsersqueryUserIsExist(Usersuser){ExamplequeryExample=newExample(Users.class);Criteriacriteria=queryExample.createCriteria();criteria.andEqualTo("username",user.getUsername());try{criteria.andEqualTo("password",MD5Utils.getMD5Str(user.getPassword()));}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}UsersuserOne=usersMapper.selectOneByExample(queryExample);returnuserOne;}@Transactional(propagation=Propagation.REQUIRED)@OverridepublicvoidupdateUser(Usersuser){ExampleuserExample=newExample(Users.class);Criteriacriteria=userExample.createCriteria();criteria.andEqualTo("id",user.getId());usersMapper.updateByExampleSelective(user,userExample);}@Transactional(propagation=Propagation.SUPPORTS)@OverridepublicUsersqueryUserId(StringuserId){ExamplequeryExample=newExample(Users.class);Criteriacriteria=queryExample.createCriteria();criteria.andEqualTo("id",userId);UsersuserOne=usersMapper.selectOneByExample(queryExample);returnuserOne;}@Transactional(propagation=Propagation.SUPPORTS)@OverridepublicUsersqueryUserInfo(StringuserId){ExampleuserExample=newExample(Users.class);Criteriacriteria=userExample.createCriteria();criteria.andEqualTo("id",userId);Usersuser=userMapper.selectOneByExample(userExample);returnuser;}@Transactional(propagation=Propagation.SUPPORTS)@OverridepublicbooleanisUserLikeVideo(StringuserId,StringvideoId){if(StringUtils.isBlank(userId)||StringUtils.isBlank(videoId)){returnfalse;}Exampleexample=newExample(UsersLikeVideos.class);Criteriacriteria=example.createCriteria();criteria.andEqualTo("userId",userId);criteria.andEqualTo("videoId",videoId);List<UsersLikeVideos>list=usersLikeVideosMapper.selectByExample(example);if(list!=null&&list.size()>0){returntrue;}returnfalse;}@Transactional(propagation=Propagation.REQUIRED)@OverridepublicvoidsaveUserFanRelation(StringuserId,StringfanId){StringrelId=sid.nextShort();UsersFansuserFan=newUsersFans();userFan.setId(relId);userFan.setUserId(userId);userFan.setFanId(fanId);usersFansMapper.insert(userFan);userMapper.addFansCount(userId);userMapper.addFollersCount(fanId);}@Transactional(propagation=Propagation.REQUIRED)@OverridepublicvoiddeleteUserFanRelation(StringuserId,StringfanId){Exampleexample=newExample(UsersFans.class);Criteriacriteria=example.createCriteria();criteria.andEqualTo("userId",userId);criteria.andEqualTo("fanId",fanId);usersFansMapper.deleteByExample(example);userMapper.reduceFansCount(userId);userMapper.reduceFollersCount(fanId);}@OverridepublicbooleanqueryIfFollow(StringuserId,StringfanId){Exampleexample=newExample(UsersFans.class);Criteriacriteria=example.createCriteria();criteria.andEqualTo("userId",userId);criteria.andEqualTo("fanId",fanId);List<UsersFans>list=usersFansMapper.selectByExample(example);if(list!=null&&!list.isEmpty()&&list.size()>0){returntrue;}returnfalse;}@Transactional(propagation=Propagation.REQUIRED)@OverridepublicvoidreportUser(UsersReportuserReport){StringurId=sid.nextShort();userReport.setId(urId);userReport.setCreateDate(newDate());usersReportMapper.insert(userReport);}}
小程序开发
videoInfo videoInfo.js
varvideoUtils=require('../../utils/videoUtils.js')constapp=getApp()Page({data:{cover:'cover',videoContext:"",videoInfo:{},videId:'',src:'',userLikeVideo:false,serverUrl:'',publisher:[]},showSearch:function(){wx.navigateTo({url:'../videoSearch/videoSearch',})},onLoad:function(params){varme=this;me.videoContext=wx.createVideoContext('myVideo',me);varvideoInfo=JSON.parse(params.videoInfo);varvideoWidth=videoInfo.videoWidth;varvideoHeight=videoInfo.videoHeight;varcover='cover';if(videoWidth>videoHeight){cover='';}me.setData({videId:videoInfo.id,src:app.serverUrl+videoInfo.videoPath,videoInfo:videoInfo,cover:cover})varserverUrl=app.serverUrl;varuser=app.getGlobalUserInfo();varloginUserId="";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);varpublisher=res.data.data.publisher;varuserLikeVideo=res.data.data.userLikeVideo;me.setData({serverUrl:serverUrl,publisher:publisher,userLikeVideo:userLikeVideo});}})},showIndex:function(){wx.redirectTo({url:'../index/index',})},onShow:function(){varme=this;me.videoContext.play();},onHide:function(){varme=this;me.videoContext.pause();},upload:function(){varme=this;varuserInfo=app.getGlobalUserInfo();varvideoInfo=JSON.stringify(me.data.videoInfo);varrealUrl='../videoInfo/videoInfo#videoInfo@'+videoInfo;if(userInfo.id==''||userInfo.id==undefined){wx.navigateTo({url:'../userLogin/userLogin?realUrl='+realUrl,})}else{videoUtils.uploadVideo();}},showMine:function(){varme=this;varuserInfo=app.getGlobalUserInfo();varvideoInfo=JSON.parseif(userInfo.id==''||userInfo.id==undefined){wx.navigateTo({url:'../userLogin/userLogin',})}else{wx.navigateTo({url:'../mine/mine',})}},likeVideoOrNot:function(){varme=this;varuserInfo=app.getGlobalUserInfo();varvideoInfoStr=JSON.stringify(me.data.videoInfo);varrealUrl='../videoInfo/videoInfo#videoInfo@'+videoInfoStr;if(userInfo.id==''||userInfo.id==undefined){wx.navigateTo({url:'../userLogin/userLogin?realUrl='+realUrl,})}else{varvideoInfo=me.data.videoInfo;varuserLikeVideo=me.data.userLikeVideo;varurl="/video/userLike?userId="+userInfo.id+"&videoId="+videoInfo.id+"&videoCreaterId="+userLikeVideo.userId;if(userLikeVideo){varurl="/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(){varme=this;varuserInfo=app.getGlobalUserInfo();varvideoInfo=me.data.videoInfo;varrealUrl='../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(){varme=this;varuser=app.getGlobalUserInfo();wx.showActionSheet({itemList:["下载到本地","举报用户","分享到好友"],success:function(res){if(res.tapIndex==0){}elseif(res.tapIndex==1){//举报varvideoInfo=JSON.stringify(me.data.videoInfo);varrealUrl='../videoInfo/videoInfo#videoInfo@'+videoInfo;if(user==null||user==undefined||user==''){wx.navigateTo({url:'../userLogin/userLogin?realUrl='+realUrl,})}else{varpublishUserId=me.data.videoInfo.userId;varvideoId=me.data.videoInfo.id;varcurrentUserId=user.id;wx.navigateTo({url:'../report/report?videoId='+videoId+"&publishUserId="+publishUserId})}}else{}}})}})
report
constapp=getApp()Page({data:{reasonType:"请选择原因",reportReasonArray:app.reportReasonArray,publishUserId:"",videoId:""},onLoad:function(params){varme=this;varvideoId=params.videoId;varpublishUserId=params.publishUserId;me.setData({publishUserId:publishUserId,videoId:videoId});},changeMe:function(e){varme=this;varindex=e.detail.value;varreasonType=app.reportReasonArray[index];me.setData({reasonType:reasonType});},submitReport:function(e){varme=this;varreasonIndex=e.detail.value.reasonIndex;varreasonContent=e.detail.value.reasonContent;varuser=app.getGlobalUserInfo();varcurrentUserId=user.id;if(reasonIndex==null||reasonIndex==''||reasonIndex==undefined){wx.showToast({title:'选择举报理由',icon:"none"})return;}varserverUrl=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><formbindsubmit='submitReport'><viewclass='container-reason'><labelclass='label'>举报理由:</label><pickername="reasonIndex"value="{{index}}"range="{{reportReasonArray}}"bindchange="changeMe"><viewclass="picker">{{reasonType}}</view></picker></view><viewclass='container-content'><labelclass='label'>举报描述(选填):</label><textareaname="reasonContent"class='content'placeholder='请详细说明举报原因...'></textarea></view><viewclass='container-tips'><imagesrc='../../resource/images/report_face.png'class='report-face'></image>收到举报后,我们会在12小时内处理,感谢您的举报,互联网环境因你更美好!~~</view><view><buttonclass="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.jsApp({serverUrl:"http://127.0.0.1:8081/",userInfo:null,setGlobalUserInfo:function(user){wx.setStorageSync("userInfo",user);},getGlobalUserInfo:function(){returnwx.getStorageSync("userInfo");},reportReasonArray:["色情低俗","政治敏感","涉嫌诈骗","辱骂谩骂","广告垃圾","诱导分享","引人不适","过于暴力","违法违纪","其它原因"]})
看完上述内容,你们掌握实现小程序的举报功能的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。