您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何搭建微信小程序活動管理系統,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。