这篇文章将为大家详细讲解有关如何搭建微信小程序活动管理系统,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
1.玩家进入到小程序,筛选查看适合参与的活动,选择活动报名,系统根据报名用户的"信誉值"自动判断报名成功与否, 游戏结束后可对参与同期游戏的玩家进行评价,评价好坏决定玩家的信誉值.
2.商户创建游戏活动提交审核,审核通过后等待玩家报名,发起游戏.
3.管理员审核商户提交的游戏活动,管理商户帐号
jdk 8
intellij idea
tomcat 8.5.40
mysql 5.7
微信开发者工具
springboot2.1
quartz
thymeleaf
alibaba 连接池
swagger
mybatis
不同角色登录显示不同的菜单页面
自定义底部导航栏,不同身份显示不同的tabbar,登录后根据设置的角色类型显示不同的导航栏
活动状态与报名状态关联
添加定时任务,根据设置的活动时间判断改变活动状态的同时,查询绑定该活动的报名记录,修改相应的状态
信誉值筛选
设定初始信誉值,根据评价好坏修改信誉值,报名人数超过活动人数,筛选信誉值高的玩家开始游戏,信誉值低的玩家自动出局
首页
玩家-活动列表
玩家-我的活动
玩家-活动详情
玩家-评价
玩家-个人中心
店家-创建活动
店家-活动管理
店家-个人中心
管理员-活动审核
管理员-帐号管理
管理员-创建店铺
swagger接口
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver druid: url: jdbc:mysql://localhost:3306/board_game?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: root123
spring: thymeleaf: mode: HTML encoding: utf-8
活动模块
@ApiOperation(value = "新增活动",response = AjaxResult.class) @PostMapping("/add") public AjaxResult addSave(ActivityAddReq activityReq) { Store store=storeService.selectStoreByUserId(activityReq.getBoosId());//查询店铺id if(store==null){ return AjaxResult.error("店铺不存在"); } Activity activity=new Activity(); BeanUtils.copyProperties(activityReq,activity); activity.setStatus(-1); //活动待审核 activity.setCityId(store.getCityId()); //获取店铺所在城市 activity.setAddress(store.getAddress()); //获取店铺所在地址 activity.setBoosId(activityReq.getBoosId()); return toAjax(activityService.insertActivity(activity)); } @ApiOperation(value = "审核活动",response = AjaxResult.class) @PostMapping( "/audit") public AjaxResult audit(ActivityAuditReq req) { Activity activity=new Activity(); activity.setId(req.getId()); activity.setStatus(req.getStatus()); //设置审核状态 return toAjax(activityService.updateActivity(activity)); }
活动报名模块
@ApiOperation(value = "活动报名",response = AjaxResult.class) @PostMapping( "/sign") public AjaxResult sign(SignUpReq signUpReq) { Activity activity= activityService.selectActivityById(signUpReq.getActivityId()); if(activity==null){ return AjaxResult.error("活动不存在"); }else if(!activity.getStatus().equals(0)){ //活动未开始才能报名--不需要判断时间,时间能控制活动状态 return AjaxResult.error("活动状态不正常"); } SignUp search=new SignUp(); search.setUserId(signUpReq.getUserId()); search.setActivityId(signUpReq.getActivityId()); List<SignUp> list=signUpService.selectSignUpList(search); if(list.size()>0){ return AjaxResult.error("该活动您已经报名,请忽重复报名"); } SignUp signUp=new SignUp(); BeanUtils.copyProperties(signUpReq,signUp); signUp.setAddTime(DateUtils.getTime()); signUp.setStatus(0); signUpService.insertSignUp(signUp); activity.setsNum(activity.getsNum()+1); return toAjax(activityService.updateActivity(activity)); } @ApiOperation(value = "取消报名",response = AjaxResult.class) @PostMapping( "/cancelSign") public AjaxResult cancelSign(SignUpReq signUpReq) { Activity activity= activityService.selectActivityById(signUpReq.getActivityId()); if(activity==null){ return AjaxResult.error("活动不存在"); } SignUp search=new SignUp(); search.setUserId(signUpReq.getUserId()); search.setActivityId(signUpReq.getActivityId()); List<SignUp> list=signUpService.selectSignUpList(search); if(list.size()==0){ return AjaxResult.error("该活动您未报名,取消失败"); } SignUp signUp=list.get(0); signUp.setStatus(3); signUpService.updateSignUpByAId(signUp); activity.setsNum(activity.getsNum()-1); return toAjax(activityService.updateActivity(activity)); }
活动结束后用户信誉值计算
//根据活动参与玩家对彼此评价做出信誉值计算 @ApiOperation(value = "活动结束-玩家评论",response = ActivityVo.class) @PostMapping( "/playComment") public AjaxResult playComment(CommentReq req) { try{ GameUser gameUser=gameUserService.selectGameUserById(req.getUserId()); if(gameUser==null){ return AjaxResult.error("评论失败,评论人信息不存在"); } gameUser=gameUserService.selectGameUserById(req.getCommentId()); if(gameUser==null){ return AjaxResult.error("评论失败,被评论人信息不存在"); } ActivityComment activityComment=new ActivityComment(); activityComment.setUserId(req.getUserId()); activityComment.setActivityId(req.getActivityId()); activityComment.setCommentId(req.getCommentId()); List<ActivityComment> list=activityCommentService.selectActivityCommentList(activityComment); if(list.size()>0){ return AjaxResult.error("评论失败,已经评论过,请忽重复评论"); } BeanUtils.copyProperties(req,activityComment); activityComment.setCalculate(1); //设置成没有计算过 activityCommentService.insertActivityComment(activityComment);//添加评论记录 //扣分规则:一个玩家在一局游戏里被>=1玩家负面评价,就会扣分,迟到扣5分,缺席扣10分,不遵守游戏规则扣2分 整体印象 10分 //如果评论次数坏印象大于1次,累积计算评论值 int reputationValue=gameUser.getReputation(); //原来的信誉值 //迟到扣除5分 if(req.getBelate()==1){ reputationValue=reputationValue-5; }else{ reputationValue=reputationValue+5; } //缺席扣除10分 if(req.getAbsent()==1){ reputationValue=reputationValue-10; }else{ reputationValue=reputationValue+10; } //不遵守游戏规则扣2分 if(req.getAbsent()==1){ reputationValue=reputationValue-2; }else{ reputationValue=reputationValue+2; } //整体印象 1分 if(req.getAbsent()==1){ reputationValue=reputationValue-1; }else{ reputationValue=reputationValue+1; } gameUser.setReputation(reputationValue); //最终更新被评论人的信誉值 gameUserService.updateGameUser(gameUser); //更新数据 return AjaxResult.success("评价成功"); }catch (Exception e){ e.printStackTrace(); return AjaxResult.error("评价失败,系统异常"); } }
活动开始与结束任务调度 ,同时筛选出信誉值高者用户入局活动中
public void activityTask() { List<Activity> list = activityService.getListByNoEnd(); if (list.size() > 0) { for (Activity activity : list) { String startTime = activity.getStartTime();//开始时间 String endTime = activity.getEndTime(); //结束时间 if (activity.getStatus() == 0) { //未开始的活动 if (DateUtils.isGreater(startTime) && !DateUtils.isGreater(endTime)) { //报名人数大于活动人数,则活动正常开始 if(activity.getsNum()>=activity.getpNum()){ activity.setStatus(1);//设置已经开始 activityService.updateActivity(activity); //筛选出信誉值较高的玩家 List<SignUp> signUps=signUpService.getSignUpListByAId(activity.getId()); for(int i=0;i<signUps.size();i++){ SignUp signUp=signUps.get(i); if(i<activity.getpNum()){ signUp.setStatus(1); //设置活动中,信誉值低者出局 signUp.setRemark("活动报名成功"); }else{ signUp.setStatus(3);//出局 signUp.setRemark("信誉值低于其他报名玩家,出局"); //todo 可发送消息推送 } signUpService.updateSignUp(signUp); } }else{ activity.setStatus(2);//设置2已经结束 activity.setRemark("活动报名人数未满足活动人数要求,自动结束活动"); activityService.updateActivity(activity); //更新当前活动的报名状态为已结束 SignUp signUp=new SignUp(); signUp.setActivityId(activity.getId()); signUp.setStatus(3);//报名状态 0未开始,1活动中 2已结束 3报名失败 signUp.setRemark("活动报名人数未满足活动人数要求,自动结束活动"); signUpService.updateSignUpByAId(signUp); } } } else if (activity.getStatus() == 1) {//已经开始的活动 if (DateUtils.isGreater(endTime)) { activity.setStatus(2);//设置已经结束 activityService.updateActivity(activity); SignUp signUp=new SignUp(); signUp.setActivityId(activity.getId()); signUp.setStatus(2);//报名状态2已结束 signUp.setRemark("活动时间已过,结束活动"); signUpService.updateStatusByAcIng(signUp); } } } } }
关于如何搭建微信小程序活动管理系统就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。