项目介绍

该项目分为玩家用户,商户以及管理员三个角色,包含了店铺管理,活动管理,报名管理以及用户等核心模块,有普通玩家,商户和管理员三大角色:

1.玩家角色:

进入到小程序,筛选查看适合参与的活动,选择活动报名,系统根据报名用户的"信誉值"自动判断报名成功与否, 游戏结束后可对参与同期游戏的玩家进行评价,评价好坏决定玩家的信誉值.

2.商户角色:

创建游戏活动提交审核,审核通过后等待玩家报名,发起游戏.

3.管理员角色:

审核商户提交的游戏活动,管理商户帐号

开发环境:

  1. jdk 8
  2. intellij idea
  3. tomcat 8.5.40
  4. mysql 5.7
  5. 微信开发者工具

后端所用技术:

  1. springboot2.1
  2. quartz
  3. thymeleaf
  4. alibaba 连接池
  5. swagger
  6. mybatis

难点思路

  1. 不同角色登录显示不同的菜单页面

自定义底部导航栏,不同身份显示不同的tabbar,登录后根据设置的角色类型显示不同的导航栏

  1. 活动状态与报名状态关联

添加定时任务,根据设置的活动时间判断改变活动状态的同时,查询绑定该活动的报名记录,修改相应的状态

  1. 信誉值筛选

设定初始信誉值,根据评价好坏修改信誉值,报名人数超过活动人数,筛选信誉值高的玩家开始游戏,信誉值低的玩家自动出局

项目截图

  • 首页

  • 玩家-活动列表

  • 玩家-我的活动

  • 玩家-活动详情

  • 玩家-评价

  • 玩家-个人中心

  • 店家-创建活动

  • 店家-活动管理

  • 店家-个人中心

  • 管理员-活动审核

  • 管理员-帐号管理

  • 管理员-创建店铺

  • swagger接口

数据库配置

spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: com.mysql.cj.jdbc.Driverdruid:url: jdbc:mysql://localhost:3306/board_game?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8username: rootpassword: root123

模版配置

spring:thymeleaf:mode: HTMLencoding: utf-8

核心业务代码

  1. 活动模块
@ApiOperation(value = "新增活动",response = AjaxResult.class)
@PostMapping("/add")
public AjaxResult addSave(ActivityAddReq activityReq)
{Store store=storeService.selectStoreByUserId(activityReq.getBoosId());//查询店铺idif(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));
}
  1. 活动报名模块
@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));
}
  1. 活动结束后用户信誉值计算
//根据活动参与玩家对彼此评价做出信誉值计算
@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("评价失败,系统异常");}
}
  1. 活动开始与结束任务调度 ,同时筛选出信誉值高者用户入局活动中
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);}}}}
}

项目后续

其他ssh,ssm版本后续迭代更新,持续关注

微信小程序活动管理系统相关推荐

  1. 毕业设计:微信小程序健康管理系统的开发与实现

    作者主页:编程指南针 作者简介:Java领域优质创作者.CSDN博客专家 .掘金特邀作者.多年架构师设计经验.腾讯课堂常驻讲师 主要内容:Java项目.毕业设计.简历模板.学习资料.面试题库.技术互助 ...

  2. 微信小程序药店管理系统+后台管理系统|前后分离VUE

    <微信小程序药店管理系统+后台管理系统|前后分离VUE>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序前台和Java做的后台管理系统,该后台采 ...

  3. 微信小程序招聘管理系统+后台管理系统

    <微信小程序招聘管理系统+后台管理系统>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序做的招聘管理系统前台和Java做的后台管理系统: 微信小 ...

  4. 基于微信小程序游泳馆管理系统(微信小程序毕业设计)

    基于微信小程序游泳馆管理系统 游泳池管理系统是基于微信小程序开发,其后端采用java编程语言,mysql数据库,ssm框架和idea开发工具开发:本系统主要分为用户和管理员两个角色,其中用户的主要功能 ...

  5. 【程序源代码】微信小程序商城管理系统(java后台+小程序)

    关键字:微信小程序 商城管理系统 正文 | 内容 01 - [概述] 基于 微信小程序 + springboot + vue 技术构建 ,支持单店铺,多店铺入驻的商城平台.项目包含 微信小程序,管理后 ...

  6. 【程序源代码】微信小程序商城管理系统(Java后台+微信小程序)最新版

    关键字:微信小程序 商城系统 02 - [技术框架] 微信小程序商城管理系统(Java后台+微信小程序) 基于Spring+Vue+Mysql+Redis主流技术开发框架集成开发的微信商场管理系统:其 ...

  7. 基于ssm开发得微信小程序社区管理系统

    分享一个自己在学校学习开发的一个后台ssm框架前段小程序的社区管理系统,花了很多的时间设计和开发,麻雀虽小,五脏俱全,大家可用于学习.毕设.或者二次开发.其功能主要有:微信小程序物业管理系统,微信小程 ...

  8. 微信小程序论文管理系统+后台管理系统

    <微信小程序论文管理系统+后台管理系统>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序做的论文管理系统前台和Java做的后台管理系统: 微信小 ...

  9. 基于微信小程序商店管理系统源码成品(微信小程序毕业设计)

    基于微信小程序商店管理系统 商店管理系统是基于微信小程序,java编程语言和mysql数据库和idea开发工具作为后台,微信端采用微信开发工具开发.本系统分为用户和管理员两个角色,用户的主要功能有登陆 ...

  10. 微信小程序订单管理源码_【程序源代码】微信小程序商城管理系统

    关键字:小程序 商城 管理系统  开发框架 正文 | 内容 01 - [微信小程序商城管理系统-视频介绍] 02 - [微信小程序商城管理系统-源码获取方式] [程序源代码]全端商城管理系统(后台+小 ...

最新文章

  1. 25张图解Redis连环面试!击溃面试官!
  2. [java语言]——InetAddress类的getByName()方法
  3. 阿里云地图添加点线面
  4. ValueError: operands could not be broadcast together with shapes解决
  5. wpf控件设计时支持(1)
  6. python私有方法应用场景_Python私有属性私有方法应用实例解析
  7. html添加背景音乐记事本,肿么在用记事本写的html网页中添加视频
  8. java 车站分级问题_【NOIP2013 普及组】车站分级
  9. saleor的生产环境部署-失败记录
  10. JSF – PrimeFaces和休眠集成项目
  11. Linux shell创建空文件(0字节大小)文件方法
  12. 【Flink】Flink WindowOperator大概工作流程
  13. 解决在Mac上操作sourcetree反复要求输入密码的问题
  14. Segger systemview STM32移植
  15. 西数硬盘刷新固件_彻底解决硬盘测试曲线的困惑
  16. 苹果手机蓝框一直跳动
  17. 项管:沟通管理和干系人管理
  18. 路由器被蹭网后,我有被黑的风险吗?
  19. R plot图片背景设置为透明_一文学会网络分析——Cooccurrence网络图在R中的实现...
  20. 【数据可视化应用】xarray 绘图可视化(五)-二进制GrADS气象数据处理(附代码)

热门文章

  1. Fidder实现手机抓包(ios)
  2. [免费专栏] Android安全之绕过SSL Pinning抓HTTPS数据
  3. Java项目:Springboot图书馆图书借阅管理系统
  4. mac系统的UTF-8 BOM编码
  5. 图像处理算法 之 Hough变换
  6. Mac终端命令失效( command not found)/
  7. Mac 终端所有命令失效
  8. xshell网站打不开
  9. 图标文字对齐的几种常见方法
  10. 一片新的ATmega328芯片如何烧录?