中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何搭建微信小程序活動管理系統

發布時間:2021-09-14 14:18:03 來源:億速云 閱讀:160 作者:柒染 欄目:編程語言

這篇文章將為大家詳細講解有關如何搭建微信小程序活動管理系統,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

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<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);
             }
          }
        }
    }
}

關于如何搭建微信小程序活動管理系統就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临颍县| 沐川县| 武宣县| 邹城市| 滨海县| 关岭| 新乡县| 鄂托克旗| 夹江县| 天门市| 海门市| 揭东县| 曲周县| 二连浩特市| 靖西县| 通海县| 丰宁| 唐山市| 昆山市| 屏南县| 西华县| 武乡县| 南投市| 普洱| 镇安县| 关岭| 平利县| 岳阳市| 诏安县| 屯留县| 伊宁县| 蒙自县| 新蔡县| 泾川县| 广安市| 集贤县| 那曲县| 开鲁县| 太白县| 瓦房店市| 南澳县|