/vote

Java-based remote voting system

Primary LanguageJavaScriptMIT LicenseMIT

鹿鸣远程投票系统

Luming Remote Voting System

定位:基于微信客户端投票(不允许在非微信端投票)、开源、免费、国内。

站点地图

用户相关

投票相关

管理员相关

系统接口

微信网页授权

测试账号

appID wx009793a980bbfa74 appsecret 96e410410d32e25d25a687dea7ec0afd

OAuth认证

  1. 获取认证码 https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx009793a980bbfa74&redirect_uri=http://vote.zizaixian.top/api/vote/oauth&response_type=code&scope=snsapi_userinfo&state=0d11eed65e8e4c90ac99d91f2b8b6627#wechat_redirect

  2. 通过认证码获取访问令牌与openid https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx009793a980bbfa74&secret=96e410410d32e25d25a687dea7ec0afd&code=${code}&grant_type=authorization_code

  3. 通过访问令牌与openid获取用户信息 https://api.weixin.qq.com/sns/userinfo?access_token=${access_token}&openid=${openid}

通用access_token获取

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx009793a980bbfa74&secret=96e410410d32e25d25a687dea7ec0afd

创建自定义菜单

POST https://api.weixin.qq.com/cgi-bin/menu/create?access_token=${access_token}

系统架构

后端服务

Linux + Nginx + MariaDB + Java + Tomcat

  • Linux: Debian v4.9.144-3.1

  • Nginx: Http Server 负载均衡、反向代理

  • MariaDB: MariaDB v15.1 数据存储

  • Java: JVM v1.8 应用程序运行平台

  • Tomcat: Servlet Container v8.5.37

前端技术

  • bootstrap(v3.0.0)

  • flat-ui(free v2.1.1)

  • font-awesome(v4.7.0)

TODO

待开发

待弥补的不足

  1. 并发访问问题

  2. 搜索页面不能回退

  3. 使账户只能在一个终端下登录(同一时间)

  4. 外部人员报名成功后应显示报名结果

待修复的Bug

  1. 搜索页面显示单个条目时错位

  2. 某些页面存在重复提交的漏洞

  3. 年龄未提交时将出现空指针错误

平台规则与系统限制

  1. 投票被发布后,默认的外部人员可以报名,发布者也可以批量添加报名,当外部报名通道被关闭后,外部人员不可报名。

  2. 如果外部人员报名后发现报名信息填写错误,可已通知发布者帮其修改,但是其本人是无法修改的。

  3. 审核状态分为三种:待审核、已通过审核、未通过审核。其中,审核状态可以由待审核转为已通过审核或未通过审核,未通过审核可以转换为已通过审核但不可以转换为待审核,已通过审核不能转为待审核或未通过审核。

  4. 报名通过审核后,必要的参赛信息如标题、参赛图片、详细介绍等会由报名信息表同步到条目信息表。

  5. 当审核状态处于待审核与未通过审核时,其报名信息是可以修改的,一旦状态变为已通过审核,其报名信息虽然也可以修改,但是必要的参赛信息不会同步到条目信息表。

  6. 外部人员报名后,其审核状态为待审核,而发布者批量添加报名后,其审核状态为已通过审核。

  7. 外部人员需在报名时间段内完成报名,发布者需在投票截止时间之前完成批量添加报名。