Code Monkey home page Code Monkey logo

hollykunge / votes Goto Github PK

View Code? Open in Web Editor NEW
88.0 4.0 29.0 7.58 MB

LarkVote投票系统是一套基于规则的企业内部投票系统,由投票管理和投票端两部分组成,投票管理端包括投票创建、投票编辑、规则编辑、投票发起、投票项管理、邀请码生成、结束投票、投票结果统计等功能;投票端包括投票规则展示、投票操作、提交结果等功能。目前该项目还处于初级阶段,欢迎各位大神创建pull request。

Java 62.17% HTML 27.56% CSS 1.46% JavaScript 8.81%
vote system springboot thymeleaf

votes's Introduction

LarkVote

LarkVote投票系统是一套基于规则的企业内部投票系统,由投票管理和投票端两部分组成,投票管理端包括投票创建、投票编辑、规则编辑、投票发起、投票项管理、邀请码生成、结束投票、投票结果统计等功能;投票端包括投票规则展示、投票操作、提交结果等功能。目前该项目还处于初级阶段,欢迎各位大神创建pull request。

主要技术

SpringBoot v1.5.3

Thymeleaf v2.1.5

EasyExcel v2.0.0

FastJson v1.2.60

H2Database v1.4.194

Bootstrap v4.3

部署方式

项目使用工具

IntelliJ IDEA、JDK 1.8、apache-maven-3.3.9

使用IDEA导入项目,启动main方法即可,由于本项目使用的是H2数据库,所以不需要安装数据库。

平台设计

安全性设计,自定义注解使用数据库的方式做特殊接口安全性。

数据层设计,使用spring-jpa做数据层接口查询,写法简便便于集成。

全局异常设计,统一处理异常转发到error页面。

认证授权设计,使用spring-security做用户认证。

动态投票项设计,支持投票项模板下载,excel导入动态生成投票项数据。

邀请码唯一性设计,每一个投票轮生成的邀请码都是唯一的,不会产生一个邀请码对应多个投票的情况。

投票过程

|--------- 投票管理,创建投票项
|------------- 投票管理,设置投票轮1
|--------------- 投票管理,动态导入投票项
|--------------- 投票管理,发起投票
|--------------- 投票管理,生成投票邀请码
|--------------- 投票端,用户点击邀请码,根据规则开始进行投票
|--------------- 投票管理,根据规则,选择结束投票
|--------------- 投票管理,统计、动态生成统计结果,并依据结果进行划分序列
|------------- 投票管理,设置投票轮2
|--------------- 投票管理,使用上一轮投票项
|--------------- 投票操作如上
|--------------- 筛选得出结论

注意

1、每一个邀请码对应的地址都可以通过点击下一轮时,进入到下一轮次投票,确保用户投票时的灵活性。

2、每一个轮次结束后,用户都可以看到该轮次的投票统计结果。

3、一个用户电脑只能投一次,确保没有刷票。

4、投票创建人可以导出每一轮次的投票统计结果。

demo

主页

image

列表

image

编辑

image

邀请码

image

投票1

image

投票2

image

投票3

image

votes's People

Contributors

hollykunge avatar justknoweat avatar qiaocao avatar youngyujing avatar zhoyou avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

votes's Issues

部分问题

1.点击提交之后,投票人数不变。
2.分数验证(发起和投票都有)。
3.投票项应大于投票最小人数。
4.不允许上传疯狂点击上传按钮。
5.分数投票提交按钮没有验证,且数值提交结果显示不正确。
6.投票轮排序错乱。
7.删除投票有子记录存在,无法删除。

分数投票输入ee后提交出现undefined

操作步骤:1.发起分数投票
2.进入分数投票界面
3.任意候选人位置输入ee
4.错误提示出现后删除ee 再另一个候选人位置输入ee点击提交
预期结果:不能提交 提示输入正确数字
实际结果:可以提交第一行显示undefined

新建投票时人数行输入非数字/不输入无错误提示

步骤
新建投票
在第二行输入非数字/空时
点击保存
预期:提示“人数输入错误”/“人数不为空”,鼠标从新回到第二行焦点。
实际:在人数输入错误时点击提交后,无法保存,并且鼠标焦点回到第一行,
在人数输入为空时,无错误提示,但可以保存。

一次投票未结束,新建投票统计界面显示上轮投票

操作步骤:1.进入投票系统
2.点击新建投票 按要求填写信息 导入投票项
3.发起投票
4.再次新建投票 按要求填写信息 导入与上次投票不同的投票项
5.发起投票 点击统计
预期结果:统计界面投票项 显示正常
实际结果:统计界面投票项 显示上一轮投票项

否同投票可以选择负数

步骤
点击新建投票并保存
点击“进入”
点击“添加”
在规则中选择“否同”
预期结果,选择否决/同意,投票范围都是正数
实际结果,最大最小范围, 在这里可以选择负票

应优化错误excel提示信息

现在提示:保存excel失败!excel中可能存在不规范数据,或数据库连接失败,失败原因:Validation failed for classes [com.hollykunge.model.VoteItem] during persist time for groups [javax.validation.groups.Default, ] List of constraint violations:[ ConstraintViolationImpl{interpolatedMessage='请输入被投票项名称', propertyPath=attr0, rootBeanClass=class com.hollykunge.model.VoteItem, messageTemplate='请输入被投票项名称'} ]

新建投票人数规则没设定

代码版本 c0e8aaa
步骤
1.点击新建投票
2.填写选择预期人数
3.点击保存
预期结果:提示正确选择人数
实际结果:投票可以参加负数人员

上传异常文件时会报异常

步骤:
1.新建投票
2.点击进入
3.点击选票项
4.上传文件
预期:提示文件错误,上传失败
实际:上传后会报出异常,但重新点击“选票项”还可以看到新加载的Ecxel文件数据

上传解析不出来的文件,会一直加载,无超时/错误提示

步骤
1.点击新建投票:
2.点击进入:
3.点击投票项
4.点击导入
5.导入模板时,选择异常的Excel文件 ——(把被设定为仅能xls格式的Excel文件,改为,文件名.xlsx)
预期结果——提示文件加载失败,或超时
实际结果——无提示消息,会一直加载

不投票直接点击提交 正确操作后无法提交

进入投票界面 直接点击提交
等待提示出现后 选择投票人后再次点击提交

预期结果:提交成功
实际结果:第一次点击提交后 提交按钮一直处于读取状态 再次点击提交无效

分数投票可以输入ee

操作步骤:
1、进入已创建好的投票
2、输入ee

操作步骤:提示分数只能是数字
实际结果:输入成功 ee视为0分

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.