千家信息网

如何搭建微信小程序活动管理系统

发表于:2025-02-16 作者:千家信息网编辑
千家信息网最后更新 2025年02月16日,这篇文章将为大家详细讲解有关如何搭建微信小程序活动管理系统,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.玩家进入到小程序,筛选查看适合参与的活动,
千家信息网最后更新 2025年02月16日如何搭建微信小程序活动管理系统

这篇文章将为大家详细讲解有关如何搭建微信小程序活动管理系统,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

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.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

核心业务代码

  1. 活动模块

@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));}
  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 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 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 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 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 signUps=signUpService.getSignUpListByAId(activity.getId());                    for(int i=0;i

关于如何搭建微信小程序活动管理系统就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0