Skip to content

lizhiren2016/Vote

Repository files navigation

Votes

简单的选举投票系统 项目整体文件说明

  • app 配置文件目录
    • router.js 用于配置 URL 路由规则.
    • /controller/** 用于解析用户的输入,处理后返回相应的结果.
      • candidate.js 候选人的相应解析.
      • election.js 选举的相应解析.
      • user.js 用户的相应解析.
      • vote.js 投票的相应解析.
      • email.js 邮件的相应解析.
    • /service/** 用于编写业务逻辑层.
      • candidate.js 候选人的添加、删除逻辑.
      • election.js 选举的启动/结束选举、获取选举列表或单条的投票详情、添加新选举逻辑.
      • user.js 用户/工作人员的登陆、注册、添加员工、查找用户是否已注册、根据ID删除用户逻辑.
      • vote.js 邮件的发送、认证逻辑.
      • email.js 投票的提交逻辑.
    • /middleware/** 用于编写中间件.
      • jwt.js 扩展JWT校验用户Token.
    • /extend/** 用于框架的扩展.
      • context.js 扩展returnBody.
      • helper.js 扩展loginToken.
    • /public/** 用于放置静态资源.
      • rsa_private_key.pem 用于加密的私钥.
      • rsa_public_key.pem 用于加密的公钥.
    • /model/** 存放具体数据库 ORM 模型文件.
      • candidate.js 候选人的模型文件.
      • election.js 选举的模型文件.
      • user.js 用户/工作人员的模型文件.
      • vote.js 投票的模型文件.
      • verifyEmail.js 邮件验证的模型文件.
    • /rules/** 用于参数校验规则.
      • /candidate/ 候选人的相关逻辑的参数校验规则.
      • /election/ 选举的相关逻辑的参数校验规则.
      • /email/ 邮件的相关逻辑的参数校验规则.
      • /user/ 用户的相关逻辑的参数校验规则.
      • /vote/ 投票的相关逻辑的参数校验规则.
  • app.js 用于自定义启动时的初始化工作,模型的初始化、索引等.
  • package.json 项目配置文件

搭建环境

  • Node 需要 8.9.0 以上版本
  • 使用的框架和数据库有:
    • Egg 作为项目的主框架,基于 Koa 开发,性能优异
    • mysql 用于管理信息列表
    • redis 用于存储用户登陆token

项目运行:

系统已实现功能:

  • 工作人员
    • 1.添加新员工.
    • 2.登陆.
    • 3.发布选举,并针对该选举添加相应的候选人,可以在选举开启投票之前随意增删候选人,以及控制选举的开始和结束.
    • 4.随时实时查看所有选举的投票结果或单个选举的投票结果.
  • 用户
    • 1.校验当前注册的邮箱是否可以注册.
    • 2.注册.
    • 3.登陆.
    • 4.发送邮件验证链接.
    • 5.校验验证链接的有效性,并认证成功/失败.
    • 6.投票.

API接口的测试有以下方式:

  • 使用test目录下的api.test.js的测试案例,在命令后中输入npm run testAPI (默认都是注释的,需要测试哪个就反注释哪个)
  • 用PostMan测试

About

选举投票系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published