diff --git a/WebRoot/html/toupiao_login.html b/WebRoot/html/toupiao_login.html index c642ef4..3f96a6a 100644 --- a/WebRoot/html/toupiao_login.html +++ b/WebRoot/html/toupiao_login.html @@ -112,7 +112,7 @@ async: false, success: function (result) { if (result.success) { - window.location.href = '/FengHuang/html/xxxx.html'; + window.location.href = '/FengHuang/html/tp/index.html'; } else { alert(result.msg); refreshCaptcha(); diff --git a/src/main/java/com/dsideal/FengHuang/LoginPerson/Controller/LoginPersonController.java b/src/main/java/com/dsideal/FengHuang/LoginPerson/Controller/LoginPersonController.java index 2f47dd9..cc3c079 100644 --- a/src/main/java/com/dsideal/FengHuang/LoginPerson/Controller/LoginPersonController.java +++ b/src/main/java/com/dsideal/FengHuang/LoginPerson/Controller/LoginPersonController.java @@ -10,6 +10,7 @@ import com.dsideal.FengHuang.Swagger.annotation.Api; import com.dsideal.FengHuang.Swagger.annotation.Param; import com.dsideal.FengHuang.Swagger.annotation.Params; import com.dsideal.FengHuang.Base.Model.BaseModel; +import com.dsideal.FengHuang.TouPiao.Model.TouPiaoModel; import com.dsideal.FengHuang.Util.*; import com.jfinal.aop.Before; import com.jfinal.core.Controller; @@ -22,6 +23,7 @@ import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Page; import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.redis.Redis; +import org.apache.poi.ss.formula.functions.T; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @@ -136,7 +138,7 @@ public class LoginPersonController extends Controller { return; } - if (!password.equals(username.substring(username.length()-6))) { + if (!password.equals(username.substring(username.length() - 6))) { //扩展支持连续输入用户名密码错误,停用账号5分钟功能 2022.06.07 cntNum = 1; if (Redis.use().exists(PassWordKey)) @@ -160,6 +162,15 @@ public class LoginPersonController extends Controller { renderJson(resultJson); return; } + //检查是不是已经投票过了? + TouPiaoModel tm = new TouPiaoModel(); + if (tm.haveFinishTouPiao(username)) { + resultJson.put("success", false); + resultJson.put("msg", "您已经投票完成,不能再次进入系统!"); + renderJson(resultJson); + return; + } + //去掉限制 Redis.use().del(PassWordKey); Redis.use().del(checkCodeKey); diff --git a/src/main/java/com/dsideal/FengHuang/TouPiao/Controller/TouPiaoController.java b/src/main/java/com/dsideal/FengHuang/TouPiao/Controller/TouPiaoController.java index c63e415..2c588e8 100644 --- a/src/main/java/com/dsideal/FengHuang/TouPiao/Controller/TouPiaoController.java +++ b/src/main/java/com/dsideal/FengHuang/TouPiao/Controller/TouPiaoController.java @@ -7,8 +7,10 @@ import com.jfinal.aop.Before; import com.jfinal.core.Controller; import com.jfinal.ext.interceptor.GET; import com.jfinal.ext.interceptor.POST; +import com.jfinal.kit.Kv; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; +import com.jfinal.plugin.activerecord.SqlPara; import java.util.List; @@ -40,7 +42,58 @@ public class TouPiaoController extends Controller { @IsLoginInterface({}) public void getTouPiaoRenInfo() { String toupiaoren_tel = getCookie("toupiaoren_tel"); - List list = tm.getTouPiaoRenInfo(toupiaoren_tel); + Record record = tm.getTouPiaoRenInfo(toupiaoren_tel); + renderJson(record); + } + + @Before({POST.class}) + @IsLoginInterface({}) + public void save(String gaoji, String zhongji) { + String toupiaoren_tel = getCookie("toupiaoren_tel"); + //检查中级是不是2个,高级是不是3个 + String[] gaojiArray = gaoji.split(","); + String[] zhongjiArray = zhongji.split(","); + if (gaojiArray.length != 3) { + Kv kv = Kv.create(); + kv.set("success", false); + kv.set("message", "本次投票高级只能投3人!"); + renderJson(kv); + return; + } + if (zhongjiArray.length != 2) { + Kv kv = Kv.create(); + kv.set("success", false); + kv.set("message", "本次投票中级只能投2人!"); + renderJson(kv); + return; + } + tm.save(toupiaoren_tel, gaojiArray, zhongjiArray); + Kv kv = Kv.create(); + kv.set("success", true); + kv.set("message", "投票成功 !"); + renderJson(kv); + } + + /* + 统计信息 + http://10.10.11.124:9000/FengHuang/TouPiao/TongJi?houxuanren_type_id=1 + */ + public void TongJi(int houxuanren_type_id) { + /* + 此程序占25分,这25分里面,有评委会的10分,有群众15分。 + 评委会得分= 1.0 * 评委会投票人数/评委会总人数 *10 + 群众得分= 1.0 * 群众投票人数/群从总人数 *15 + 投一票是一票,统计票数即可 + 群众可投票人数:30人 + 评审小组可投票人数:7人 + 投票规则: + 高级是5选2,中级是3选2. + */ + int PingWeiHuiAllCount = tm.getTouPiaoRenSummary(1); + int QunZhongAllCount = tm.getTouPiaoRenSummary(2); + Kv kv = Kv.by("PingWeiHuiAllCount", PingWeiHuiAllCount).set("QunZhongAllCount", QunZhongAllCount).set("houxuanren_type_id", houxuanren_type_id); + SqlPara sq = Db.getSqlPara("TouPiao.TongJi", kv); + List list = Db.find(sq); renderJson(CommonUtil.renderJsonForLayUI(list)); } } diff --git a/src/main/java/com/dsideal/FengHuang/TouPiao/Model/TouPiaoModel.java b/src/main/java/com/dsideal/FengHuang/TouPiao/Model/TouPiaoModel.java index fb920b4..cc968e7 100644 --- a/src/main/java/com/dsideal/FengHuang/TouPiao/Model/TouPiaoModel.java +++ b/src/main/java/com/dsideal/FengHuang/TouPiao/Model/TouPiaoModel.java @@ -1,18 +1,12 @@ package com.dsideal.FengHuang.TouPiao.Model; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.dsideal.FengHuang.Util.CommonUtil; -import com.dsideal.FengHuang.Util.IpUtil; -import com.dsideal.FengHuang.Util.MysqlAesUtil; -import com.dsideal.FengHuang.Util.PkUtil; import com.jfinal.plugin.activerecord.Db; -import com.jfinal.plugin.activerecord.Page; import com.jfinal.plugin.activerecord.Record; -import com.jfinal.plugin.activerecord.SqlPara; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; -import java.util.UUID; +import java.util.Map; @SuppressWarnings("unchecked") public class TouPiaoModel { @@ -22,8 +16,61 @@ public class TouPiaoModel { return Db.find(sql, type_id); } - public List getTouPiaoRenInfo(String toupiaoren_tel) { + public Map getTouPiaoRenInfoMap() { + String sql = "select * from t_toupiao_toupiaoren"; + List list = Db.find(sql); + Map _map = new HashMap<>(); + for (Record record : list) + _map.put(record.getStr("toupiaoren_tel"), record); + return _map; + } + + public Record getTouPiaoRenInfo(String toupiaoren_tel) { String sql = "select * from t_toupiao_toupiaoren where toupiaoren_tel=?"; - return Db.find(sql, toupiaoren_tel); + return Db.findFirst(sql, toupiaoren_tel); + } + + public boolean haveFinishTouPiao(String toupiaoren_tel) { + String sql = "select count(1) as c from t_toupiao_result where toupiaoren_tel=?"; + return Db.findFirst(sql, toupiaoren_tel).getInt("c") > 0; + } + + public void save(String toupiaoren_tel, String[] gaojiArray, String[] zhongjiArray) { + Record r = getTouPiaoRenInfo(toupiaoren_tel); + int toupiaoren_type_id = r.getInt("toupiaoren_type_id"); + String sql = "delete from t_toupiao_result where toupiaoren_tel=?"; + Db.update(sql, toupiaoren_tel); + + Map _map = getTouPiaoRenInfoMap(); + List saveList = new ArrayList<>(); + + for (String s : gaojiArray) { + Record record = new Record(); + record.set("houxuanren_tel", s); + record.set("houxuanren_name", _map.get(s).getStr("toupiaoren_name")); + record.set("houxuanren_type_id", 1); + + record.set("toupiaoren_tel", s); + record.set("toupiaoren_name", _map.get(s).getStr("toupiaoren_name")); + record.set("toupiaoren_type_id", toupiaoren_type_id); + saveList.add(record); + } + for (String s : zhongjiArray) { + Record record = new Record(); + record.set("houxuanren_tel", s); + record.set("houxuanren_name", _map.get(s).getStr("toupiaoren_name")); + record.set("houxuanren_type_id", 2); + + record.set("toupiaoren_tel", s); + record.set("toupiaoren_name", _map.get(s).getStr("toupiaoren_name")); + record.set("toupiaoren_type_id", toupiaoren_type_id); + saveList.add(record); + } + Db.batchSave("t_toupiao_result", saveList, 100); + } + + public int getTouPiaoRenSummary(int toupiaoren_type_id) { + String sql = "select count(1) as c from t_toupiao_toupiaoren where toupiaoren_type_id=?"; + return Db.findFirst(sql, toupiaoren_type_id).getInt("c"); } } \ No newline at end of file diff --git a/src/main/resource/Sql/TouPiao.sql b/src/main/resource/Sql/TouPiao.sql new file mode 100644 index 0000000..8dc5c2b --- /dev/null +++ b/src/main/resource/Sql/TouPiao.sql @@ -0,0 +1,11 @@ +#namespace("TouPiao") + + #sql("TongJi") + select *,format(1.0 * ta.pingweihui_count /#(PingWeiHuiAllCount) *10 + 1.0*ta.qunzhong_count/#(QunZhongAllCount) *15,1) as score + from (select t1.houxuanren_tel,t1.houxuanren_name,t1.houxuanren_type_id, + (select count(1) from t_toupiao_result as t2 where t2.toupiaoren_type_id=1 and t1.houxuanren_tel=t2.toupiaoren_tel) as pingweihui_count, + (select count(1) from t_toupiao_result as t2 where t2.toupiaoren_type_id=2 and t1.houxuanren_tel=t2.toupiaoren_tel) as qunzhong_count + from t_toupiao_houxuanren as t1) as ta where ta.houxuanren_type_id=#(houxuanren_type_id) + order by 1.0 * ta.pingweihui_count /#(PingWeiHuiAllCount) *10 + 1.0*ta.qunzhong_count/#(QunZhongAllCount) *15 desc + #end +#end \ No newline at end of file diff --git a/target/classes/Sql/TouPiao.sql b/target/classes/Sql/TouPiao.sql new file mode 100644 index 0000000..8dc5c2b --- /dev/null +++ b/target/classes/Sql/TouPiao.sql @@ -0,0 +1,11 @@ +#namespace("TouPiao") + + #sql("TongJi") + select *,format(1.0 * ta.pingweihui_count /#(PingWeiHuiAllCount) *10 + 1.0*ta.qunzhong_count/#(QunZhongAllCount) *15,1) as score + from (select t1.houxuanren_tel,t1.houxuanren_name,t1.houxuanren_type_id, + (select count(1) from t_toupiao_result as t2 where t2.toupiaoren_type_id=1 and t1.houxuanren_tel=t2.toupiaoren_tel) as pingweihui_count, + (select count(1) from t_toupiao_result as t2 where t2.toupiaoren_type_id=2 and t1.houxuanren_tel=t2.toupiaoren_tel) as qunzhong_count + from t_toupiao_houxuanren as t1) as ta where ta.houxuanren_type_id=#(houxuanren_type_id) + order by 1.0 * ta.pingweihui_count /#(PingWeiHuiAllCount) *10 + 1.0*ta.qunzhong_count/#(QunZhongAllCount) *15 desc + #end +#end \ No newline at end of file