您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)如何搭建微信小程序活動(dòng)管理系統(tǒng),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
1.玩家進(jìn)入到小程序,篩選查看適合參與的活動(dòng),選擇活動(dòng)報(bào)名,系統(tǒng)根據(jù)報(bào)名用戶的"信譽(yù)值"自動(dòng)判斷報(bào)名成功與否, 游戲結(jié)束后可對(duì)參與同期游戲的玩家進(jìn)行評(píng)價(jià),評(píng)價(jià)好壞決定玩家的信譽(yù)值.
2.商戶創(chuàng)建游戲活動(dòng)提交審核,審核通過后等待玩家報(bào)名,發(fā)起游戲.
3.管理員審核商戶提交的游戲活動(dòng),管理商戶帳號(hào)
jdk 8
intellij idea
tomcat 8.5.40
mysql 5.7
微信開發(fā)者工具
springboot2.1
quartz
thymeleaf
alibaba 連接池
swagger
mybatis
不同角色登錄顯示不同的菜單頁面
自定義底部導(dǎo)航欄,不同身份顯示不同的tabbar,登錄后根據(jù)設(shè)置的角色類型顯示不同的導(dǎo)航欄
活動(dòng)狀態(tài)與報(bào)名狀態(tài)關(guān)聯(lián)
添加定時(shí)任務(wù),根據(jù)設(shè)置的活動(dòng)時(shí)間判斷改變活動(dòng)狀態(tài)的同時(shí),查詢綁定該活動(dòng)的報(bào)名記錄,修改相應(yīng)的狀態(tài)
信譽(yù)值篩選
設(shè)定初始信譽(yù)值,根據(jù)評(píng)價(jià)好壞修改信譽(yù)值,報(bào)名人數(shù)超過活動(dòng)人數(shù),篩選信譽(yù)值高的玩家開始游戲,信譽(yù)值低的玩家自動(dòng)出局
首頁
玩家-活動(dòng)列表
玩家-我的活動(dòng)
玩家-活動(dòng)詳情
玩家-評(píng)價(jià)
玩家-個(gè)人中心
店家-創(chuàng)建活動(dòng)
店家-活動(dòng)管理
店家-個(gè)人中心
管理員-活動(dòng)審核
管理員-帳號(hào)管理
管理員-創(chuàng)建店鋪
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
活動(dòng)模塊
@ApiOperation(value = "新增活動(dòng)",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); //活動(dòng)待審核 activity.setCityId(store.getCityId()); //獲取店鋪所在城市 activity.setAddress(store.getAddress()); //獲取店鋪所在地址 activity.setBoosId(activityReq.getBoosId()); return toAjax(activityService.insertActivity(activity)); } @ApiOperation(value = "審核活動(dòng)",response = AjaxResult.class) @PostMapping( "/audit") public AjaxResult audit(ActivityAuditReq req) { Activity activity=new Activity(); activity.setId(req.getId()); activity.setStatus(req.getStatus()); //設(shè)置審核狀態(tài) return toAjax(activityService.updateActivity(activity)); }
活動(dòng)報(bào)名模塊
@ApiOperation(value = "活動(dòng)報(bào)名",response = AjaxResult.class) @PostMapping( "/sign") public AjaxResult sign(SignUpReq signUpReq) { Activity activity= activityService.selectActivityById(signUpReq.getActivityId()); if(activity==null){ return AjaxResult.error("活動(dòng)不存在"); }else if(!activity.getStatus().equals(0)){ //活動(dòng)未開始才能報(bào)名--不需要判斷時(shí)間,時(shí)間能控制活動(dòng)狀態(tài) return AjaxResult.error("活動(dòng)狀態(tài)不正常"); } 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("該活動(dòng)您已經(jīng)報(bào)名,請(qǐng)忽重復(fù)報(bào)名"); } 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 = "取消報(bào)名",response = AjaxResult.class) @PostMapping( "/cancelSign") public AjaxResult cancelSign(SignUpReq signUpReq) { Activity activity= activityService.selectActivityById(signUpReq.getActivityId()); if(activity==null){ return AjaxResult.error("活動(dòng)不存在"); } 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("該活動(dòng)您未報(bào)名,取消失敗"); } SignUp signUp=list.get(0); signUp.setStatus(3); signUpService.updateSignUpByAId(signUp); activity.setsNum(activity.getsNum()-1); return toAjax(activityService.updateActivity(activity)); }
活動(dòng)結(jié)束后用戶信譽(yù)值計(jì)算
//根據(jù)活動(dòng)參與玩家對(duì)彼此評(píng)價(jià)做出信譽(yù)值計(jì)算 @ApiOperation(value = "活動(dòng)結(jié)束-玩家評(píng)論",response = ActivityVo.class) @PostMapping( "/playComment") public AjaxResult playComment(CommentReq req) { try{ GameUser gameUser=gameUserService.selectGameUserById(req.getUserId()); if(gameUser==null){ return AjaxResult.error("評(píng)論失敗,評(píng)論人信息不存在"); } gameUser=gameUserService.selectGameUserById(req.getCommentId()); if(gameUser==null){ return AjaxResult.error("評(píng)論失敗,被評(píng)論人信息不存在"); } 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("評(píng)論失敗,已經(jīng)評(píng)論過,請(qǐng)忽重復(fù)評(píng)論"); } BeanUtils.copyProperties(req,activityComment); activityComment.setCalculate(1); //設(shè)置成沒有計(jì)算過 activityCommentService.insertActivityComment(activityComment);//添加評(píng)論記錄 //扣分規(guī)則:一個(gè)玩家在一局游戲里被>=1玩家負(fù)面評(píng)價(jià),就會(huì)扣分,遲到扣5分,缺席扣10分,不遵守游戲規(guī)則扣2分 整體印象 10分 //如果評(píng)論次數(shù)壞印象大于1次,累積計(jì)算評(píng)論值 int reputationValue=gameUser.getReputation(); //原來的信譽(yù)值 //遲到扣除5分 if(req.getBelate()==1){ reputationValue=reputationValue-5; }else{ reputationValue=reputationValue+5; } //缺席扣除10分 if(req.getAbsent()==1){ reputationValue=reputationValue-10; }else{ reputationValue=reputationValue+10; } //不遵守游戲規(guī)則扣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); //最終更新被評(píng)論人的信譽(yù)值 gameUserService.updateGameUser(gameUser); //更新數(shù)據(jù) return AjaxResult.success("評(píng)價(jià)成功"); }catch (Exception e){ e.printStackTrace(); return AjaxResult.error("評(píng)價(jià)失敗,系統(tǒng)異常"); } }
活動(dòng)開始與結(jié)束任務(wù)調(diào)度 ,同時(shí)篩選出信譽(yù)值高者用戶入局活動(dòng)中
public void activityTask() { List<Activity> list = activityService.getListByNoEnd(); if (list.size() > 0) { for (Activity activity : list) { String startTime = activity.getStartTime();//開始時(shí)間 String endTime = activity.getEndTime(); //結(jié)束時(shí)間 if (activity.getStatus() == 0) { //未開始的活動(dòng) if (DateUtils.isGreater(startTime) && !DateUtils.isGreater(endTime)) { //報(bào)名人數(shù)大于活動(dòng)人數(shù),則活動(dòng)正常開始 if(activity.getsNum()>=activity.getpNum()){ activity.setStatus(1);//設(shè)置已經(jīng)開始 activityService.updateActivity(activity); //篩選出信譽(yù)值較高的玩家 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); //設(shè)置活動(dòng)中,信譽(yù)值低者出局 signUp.setRemark("活動(dòng)報(bào)名成功"); }else{ signUp.setStatus(3);//出局 signUp.setRemark("信譽(yù)值低于其他報(bào)名玩家,出局"); //todo 可發(fā)送消息推送 } signUpService.updateSignUp(signUp); } }else{ activity.setStatus(2);//設(shè)置2已經(jīng)結(jié)束 activity.setRemark("活動(dòng)報(bào)名人數(shù)未滿足活動(dòng)人數(shù)要求,自動(dòng)結(jié)束活動(dòng)"); activityService.updateActivity(activity); //更新當(dāng)前活動(dòng)的報(bào)名狀態(tài)為已結(jié)束 SignUp signUp=new SignUp(); signUp.setActivityId(activity.getId()); signUp.setStatus(3);//報(bào)名狀態(tài) 0未開始,1活動(dòng)中 2已結(jié)束 3報(bào)名失敗 signUp.setRemark("活動(dòng)報(bào)名人數(shù)未滿足活動(dòng)人數(shù)要求,自動(dòng)結(jié)束活動(dòng)"); signUpService.updateSignUpByAId(signUp); } } } else if (activity.getStatus() == 1) {//已經(jīng)開始的活動(dòng) if (DateUtils.isGreater(endTime)) { activity.setStatus(2);//設(shè)置已經(jīng)結(jié)束 activityService.updateActivity(activity); SignUp signUp=new SignUp(); signUp.setActivityId(activity.getId()); signUp.setStatus(2);//報(bào)名狀態(tài)2已結(jié)束 signUp.setRemark("活動(dòng)時(shí)間已過,結(jié)束活動(dòng)"); signUpService.updateStatusByAcIng(signUp); } } } } }
關(guān)于如何搭建微信小程序活動(dòng)管理系統(tǒng)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。