千家信息网

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

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

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

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

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

活动 玩家 信誉 信誉值 评论 状态 管理 人数 评价 时间 活动报名 不同 店铺 系统 管理员 程序 成功 印象 商户 店家 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 qq畅玩王者荣耀怎么切换服务器 济宁有软件开发的公司吗 第六届国家网络安全宣传周启动 大专大数据难学还是软件开发 东阳网络安全管理申屠莹莹 钢钢好电脑版出现连接服务器失败 深圳app软件开发价钱 中国论文数据库 网络技术教育大学排名 中国地址数据库 json 做商城软件开发哪家便宜 局域网络安全防护系统 筑牢电力网络安全防护网 tag 数据库 复杂网络技术现状与前景展望 畅捷链接服务器失败什么原因 页面调用数据库数据 交行逾期已上报基础数据库 软件开发流程是选择题 数据库的管理员账号密码 网络安全管理员证书考试多少钱 软件开发与硬件哪个好 网络安全运营中心面对的挑战 网络安全信息的心得体会 清大博雅网络技术 人才数据库多少数据 江苏超频服务器出厂价 信用卡被报上信息数据库怎么办 服务器ip和端口号 淮南旧服务器回收品牌企业
0