返回作品
投票系统
创建于 2025 年 6 月 22 日
项目介绍
投票系统是基于若依 RuoYi 3.9.0 后台框架二次开发的歌手大赛投票平台,业务代码集中在 com.ruoyi.vote 包,前端在若依标准 ruoyi-ui(Vue 2 + Element UI)上新增 views/vote 业务页面,并配套一套基于 uni-app 开发的微信小程序(toupiao-wx)。系统服务一场歌手大赛的完整链路:管理员创建投票活动并设定起止时间;选手通过小程序报名,提交姓名、身份证、手机号、微博用户名、抖音 ID 与微博截图,经管理端审核通过后进入选手列表;管理员在管理端点击”开始投票”,投票窗口进入 1 分钟倒计时,用户在小程序上为心仪选手投票;倒计时结束投票自动停止,票数实时统计并生成并列排名,管理端与小程序排行榜同步展示。
核心功能
- 选手报名与批量审核(
views/vote/user/index.vue+VoteUserController+AppVoteUserController):小程序端报名接口校验活动 ID 非空,并检查同一活动下该用户是否已报名(“报名信息已存在”),报名表单通过u-upload上传微博截图(仅 jpg/png、不超过 5M,走若依common/upload);管理端选手列表以el-tag展示审核状态(待审核/通过/不通过),提供”批量通过""批量拒绝”一键流转,同时支持按姓名、活动筛选与 Excel 导出。 - 限时投票与倒计时(
AppVoteRecordController.add+views/vote/user/index.vue):管理端点击”开始投票”将选手isRun置 1,前端随即显示”剩余 01:00”倒计时,startCountdown在 60 秒后自动调用更新接口把isRun置 0 完成关闭;后端投票接口同样校验isRun != "1"时直接返回”投票已停止”,前后端双重保障投票窗口严格受控。 - 防重复投票(
AppVoteRecordController.add):投票前先校验选手存在,再以operaUserId + voteUserId + createTime 按天(YYYY-MM-DD)组合统计当天记录,命中即返回”您已经投过票了”——每个用户每天对同一选手只能投一票;通过校验后自动把选手的姓名/身份证/手机号冗余进投票记录,并写入操作人 ID 与创建时间,保证后续统计与导出不依赖选手表的实时状态。 - 投票记录管理(
views/vote/record/index.vue+VoteRecordController):管理端按投票对象、姓名、操作用户、关联活动(活动下拉实时显示状态)多维筛选,支持新增/修改/删除与 Excel 导出,导出时 leftJoin app 用户表带出操作人昵称;小程序端pages/my/myEnroll.vue通过listByToken查询自己报名过的活动,pages/my/certificate.vue展示电子证书,pages/vote/leaderboard.vue直接复用排名接口呈现实时榜单。
功能截图
暂无运行截图。