Browse Source

Merge remote-tracking branch 'origin/master'

sunyangyang 2 years ago
parent
commit
dcfdbf9545

+ 35 - 0
sooka-admin/src/main/java/com/sooka/web/controller/schooldistrict/BtpSchoolPvController.java

@@ -1,11 +1,15 @@
 package com.sooka.web.controller.schooldistrict;
 
 import com.sooka.common.annotation.Log;
+import com.sooka.common.constant.ShiroConstants;
 import com.sooka.common.core.controller.BaseController;
 import com.sooka.common.core.domain.AjaxResult;
 import com.sooka.common.core.page.TableDataInfo;
 import com.sooka.common.enums.BusinessType;
 import com.sooka.common.utils.CacheUtils;
+import com.sooka.common.utils.MessageUtils;
+import com.sooka.common.utils.ServletUtils;
+import com.sooka.common.utils.StringUtils;
 import com.sooka.common.utils.poi.ExcelUtil;
 import com.sooka.schooldistrict.domain.BtpPolicestationVillage;
 import com.sooka.schooldistrict.domain.BtpSchool;
@@ -19,10 +23,12 @@ import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
 import static com.sooka.common.constant.Constants.SCHOOL_NAME_CACHE;
+import static com.sooka.common.constant.Constants.VILLAGE_NAME_CACHE;
 
 /**
  * 学区配置Controller
@@ -95,6 +101,7 @@ public class BtpSchoolPvController extends BaseController {
     @PostMapping("/add")
     @ResponseBody
     public AjaxResult addSave(BtpSchoolPv btpSchoolPv) {
+        CacheUtils.removeAll(VILLAGE_NAME_CACHE);
         CacheUtils.removeAll(SCHOOL_NAME_CACHE);
         return toAjax(btpSchoolPvService.insertBtpSchoolPv(btpSchoolPv));
     }
@@ -121,6 +128,7 @@ public class BtpSchoolPvController extends BaseController {
     @PostMapping("/edit")
     @ResponseBody
     public AjaxResult editSave(String removeId, BtpSchoolPv btpSchoolPv) {
+        CacheUtils.removeAll(VILLAGE_NAME_CACHE);
         CacheUtils.removeAll(SCHOOL_NAME_CACHE);
         int result = btpSchoolPvService.deleteBtpSchoolPvBySchoolIdAndVIds(removeId);
         if (result > 0) {
@@ -137,7 +145,34 @@ public class BtpSchoolPvController extends BaseController {
     @PostMapping("/remove")
     @ResponseBody
     public AjaxResult remove(String ids) {
+        CacheUtils.removeAll(VILLAGE_NAME_CACHE);
         CacheUtils.removeAll(SCHOOL_NAME_CACHE);
         return toAjax(btpSchoolPvService.deleteBtpSchoolPvBySchoolIdAndVIds(ids));
     }
+
+    /**
+     * 查询委(村)列表
+     */
+    @PostMapping("/getVillagesBySTypeAndPId")
+    @ResponseBody
+    public List<BtpSchoolPv> getVillagesBySTypeAndPId(BtpSchoolPv btpSchoolPv) {
+        if (StringUtils.isNull(btpSchoolPv.getpId()) || StringUtils.isBlank(btpSchoolPv.getSchoolType())) {
+            return new ArrayList<>();
+        }
+        return btpSchoolPvService.getVillagesBySTypeAndPId(btpSchoolPv);
+    }
+
+    /**
+     * 学区查询
+     */
+    @Log(title = "学区查询", businessType = BusinessType.SELECT)
+    @PostMapping("/getSchoolName")
+    @ResponseBody
+    public AjaxResult getSchoolName(BtpSchoolPv btpSchoolPv) {
+        // 验证码校验
+        if (ShiroConstants.CAPTCHA_ERROR.equals(ServletUtils.getRequest().getAttribute(ShiroConstants.CURRENT_CAPTCHA))) {
+            return AjaxResult.error(MessageUtils.message("user.jcaptcha.error"));
+        }
+        return AjaxResult.success(btpSchoolPvService.getSchoolName(btpSchoolPv));
+    }
 }

+ 12 - 26
sooka-admin/src/main/java/com/sooka/web/controller/system/SysIndexController.java

@@ -7,13 +7,9 @@ import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletResponse;
 
 import cn.hutool.core.date.DateUtil;
+import com.sooka.common.utils.*;
 import com.sooka.schooldistrict.domain.BtpPolicestationVillage;
-import com.sooka.schooldistrict.domain.BtpSchoolPv;
 import com.sooka.schooldistrict.service.IBtpPolicestationVillageService;
-import com.sooka.schooldistrict.service.IBtpSchoolPvService;
-import com.sooka.common.annotation.Log;
-import com.sooka.common.enums.BusinessType;
-import com.sooka.common.utils.*;
 import com.sooka.system.domain.SysNotice;
 import com.sooka.system.service.ISysNoticeService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -57,9 +53,6 @@ public class SysIndexController extends BaseController
     @Autowired
     private IBtpPolicestationVillageService btpPolicestationVillageService;
 
-    @Autowired
-    private IBtpSchoolPvService btpSchoolPvService;
-
     // 系统首页
     @GetMapping("/index")
     public String index(ModelMap mmap)
@@ -147,8 +140,13 @@ public class SysIndexController extends BaseController
     @GetMapping("/system/main")
     public String main(ModelMap mmap)
     {
-        mmap.put("title", noticeService.selectNoticeById(1L));
-        mmap.put("notice", noticeService.selectNoticeById(2L));
+        mmap.put("version", SookaConfig.getVersion());
+        return "main";
+    }
+
+    @GetMapping("/eduindex")
+    public String eduindex(ModelMap mmap)
+    {
         SysNotice sysNotice = noticeService.selectNoticeById(10L);
         String[] date = Convert.toStrArray(" 至 ", sysNotice.getNoticeContent());
         if (DateUtil.isIn(DateUtils.getNowDate(), DateUtils.parseDate(date[0]), DateUtils.parseDate(date[1]))) {
@@ -156,24 +154,12 @@ public class SysIndexController extends BaseController
             mmap.put("policestations", btpPolicestationVillageService.getPolicestationVillagesByParentId(0L));
         } else {
             mmap.put("flag", false);
-            mmap.put("announcement", noticeService.selectNoticeById(11L));
             mmap.put("policestations", Arrays.asList(new BtpPolicestationVillage()));
         }
-        return "main";
-    }
-
-    // 学区查询
-    @Log(title = "学区查询", businessType = BusinessType.SELECT)
-    @PostMapping("/system/select")
-    @ResponseBody
-    public AjaxResult select(BtpSchoolPv btpSchoolPv)
-    {
-        // 验证码校验
-        if (ShiroConstants.CAPTCHA_ERROR.equals(ServletUtils.getRequest().getAttribute(ShiroConstants.CURRENT_CAPTCHA)))
-        {
-            return AjaxResult.error(MessageUtils.message("user.jcaptcha.error"));
-        }
-        return AjaxResult.success(btpSchoolPvService.getSchoolName(btpSchoolPv));
+        mmap.put("title", noticeService.selectNoticeById(1L));
+        mmap.put("notice", noticeService.selectNoticeById(2L));
+        mmap.put("announcement", noticeService.selectNoticeById(11L));
+        return "eduindex";
     }
 
     // content-main class

+ 6 - 0
sooka-admin/src/main/java/com/sooka/web/controller/system/SysNoticeController.java

@@ -1,6 +1,8 @@
 package com.sooka.web.controller.system;
 
 import java.util.List;
+
+import com.sooka.common.utils.CacheUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -19,6 +21,9 @@ import com.sooka.common.enums.BusinessType;
 import com.sooka.system.domain.SysNotice;
 import com.sooka.system.service.ISysNoticeService;
 
+import static com.sooka.common.constant.Constants.NOTICE_NAME_CACHE;
+import static com.sooka.common.constant.Constants.SCHOOL_NAME_CACHE;
+
 /**
  * 公告 信息操作处理
  * 
@@ -95,6 +100,7 @@ public class SysNoticeController extends BaseController
     @ResponseBody
     public AjaxResult editSave(@Validated SysNotice notice)
     {
+        CacheUtils.remove(NOTICE_NAME_CACHE, notice.getNoticeId().toString());
         notice.setUpdateBy(getLoginName());
         return toAjax(noticeService.updateNotice(notice));
     }

+ 1 - 1
sooka-admin/src/main/resources/application-druid.yml

@@ -6,7 +6,7 @@ spring:
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://43.143.145.48:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://117.78.49.164:63306/education_nanguan?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                 username: sooka
                 password: sooka123456
             # 从库数据源

+ 332 - 0
sooka-admin/src/main/resources/templates/eduindex.html

@@ -0,0 +1,332 @@
+<!DOCTYPE html>
+<html  lang="zh" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <!--360浏览器优先以webkit内核解析-->
+    <title>学区查询</title>
+    <link rel="shortcut icon" href="favicon.ico">
+    <link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
+    <link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
+    <link href="../static/css/style.min.css" th:href="@{/css/style.min.css}" rel="stylesheet"/>
+	<style>
+		html, body {
+			height: auto!important;
+		}
+		.gray-bg{
+			background: url(../../img/xit_bg.png) no-repeat top;
+			background-size: cover;
+		}
+		.xit_logo{
+			margin:7% auto 5% auto;
+			text-align: center;
+			font-size: 6.5rem;
+			font-weight: 900;
+			color: #0e9bf9;
+			letter-spacing: 0.4rem;
+			-webkit-text-stroke: 2px #fff;
+			text-shadow: 3px 2px 5px #094187;
+		}
+
+		.ibox-content2{
+			background: none;
+			width: 65%;
+			margin: 0px auto;
+		}
+		.ibox-content2 .sel_form {
+			border: 1px solid #288ff8;
+			background: #fff;
+			border-radius: 5px;
+			box-shadow: 1px 3px 10px #737378b8;
+			padding: 20px;
+		}
+		.ibox-content2 .form-group2{
+			display: inline-block;
+		}
+		.ibox-content2 .btn{
+			background: #3692ef;
+		}
+		.sel_zx{
+			padding-left: 1%;
+			padding-top: 50px;
+		}
+		.sel_zx span{
+			font-size: 1.7rem;
+			color: #333;
+			margin-right: 3%;
+			position: relative;
+			display: inline-block;
+			height: 40px;
+			font-weight: bold;
+			cursor: pointer;
+		}
+		.sel_zx span.on{
+			color: #288ff8;
+		}
+		.sel_zx span.on:after{
+			border-left: 9px solid transparent;
+			border-bottom: 9px solid #288ff8;
+			border-right: 9px solid transparent;
+			content: " ";
+			display: block;
+			height: 0;
+			margin-left: -19px;
+			width: 0;
+			position: absolute;
+			/* pointer-events: all; */
+			bottom: 0px;
+			left: 50%;
+			margin-left: -14%;
+		}
+		.ss_jg{
+			padding: 2% 0px;
+		}
+		.ss_jg .control-label{
+			font-size: 1.6rem;
+			color: #333;
+			height: 2.4rem;
+			line-height: 2.4rem;
+		}
+		.ck_tit{
+			font-size: 1.6rem;
+			color: #333;
+		}
+		.ck_div22{
+			margin: 1rem 0px 1rem 0px;
+		}
+		.ck_div22 .ss_span{
+			padding: 5px 13px;
+			background: #75baed;
+			color: #fff;
+			font-size: 1.4rem;
+			border-radius: 25px;
+			margin-right: 10px;
+		}
+		.cksm{
+			width: 100%;
+			padding: 0px 0 2% 0;
+			background: #f5f5f5;
+		}
+		.cksm h4{
+			width: 100%;
+			padding: 0px 0% 0 2%;
+			background: #e1e1e1;
+			height: 4.5rem;
+			line-height: 4.5rem;
+			font-size: 1.6rem;
+			color: #333;
+		}
+		.cksm p{
+			padding: 1% 2% 0 2%;
+			line-height: 2.5rem;
+			font-size: 1.5rem;
+			color: #333;
+		}
+		.left_row{
+			display: flex;
+			flex-direction:row;
+		}
+		.left_div1{
+			margin-right: 1rem;
+		}
+		.left_div2 a{
+			display: block;
+			height: 31px;
+		}
+		.left_div2 a img{
+			width: 100%;
+			height: 100%;
+		}
+		@media screen and (max-width: 1366px) {
+			.ibox-content2{
+				width: 80%;
+			}
+		}
+		@media screen and (max-width: 1080px) {
+			.ibox-content2{
+				width: 100%;
+			}
+		}
+		@media screen and (max-width: 980px) {
+			.ibox-content2{
+				width: 100%;
+			}
+			.btn-group-sm button{
+				margin-top: 5rem;
+				display: block;
+			}
+		}
+		@media screen and (max-width: 768px) {
+			.xit_logo {
+				font-size: 3.5rem;
+				-webkit-text-stroke: 1px #fff;
+				text-shadow: 2px 1px 4px #094187;
+				padding: 0px 3rem;
+			}
+			.col-xs-12{
+				margin-bottom: 1rem;
+			}
+			.btn-group-sm button{
+				display: block;
+				width: 94%;
+				margin: 1rem auto 0px auto;
+			}
+			.ss_jg{
+				margin-top: 1rem;
+				margin-bottom: 0px!important;
+			}
+			.cksm h4 {
+				padding: 0px 0% 0 4%;
+			}
+			.cksm p {
+				padding: 2% 4% 0 4%;
+			}
+			.sel_zx {
+				padding-top: 0rem;
+			}
+		}
+	</style>
+</head>
+
+<body class="gray-bg">
+	<h1 class="xit_logo"></h1>
+
+	<div class="wrapper wrapper-content animated fadeInRight ibox-content2">
+		<div class="row main" style="display: none">
+			<div id="schoolType" class="sel_zx">
+				<span class="on" value="1">按小学查询</span>
+				<span value="2">按中学查询</span>
+			</div>
+			<div class="form-horizontal sel_form" id="form-pv-add">
+				<div class="row">
+					<div class="form-group2 col-sm-3 col-md-3 col-xs-12">
+						<select id="pId" class="form-control">
+							<option value="">请选择派出所</option>
+							<option th:each="policestation:${policestations}" th:value="${policestation.pvId}" th:text="${policestation.pvName}"></option>
+						</select>
+					</div>
+					<div class="form-group2 col-sm-3 col-md-3 col-xs-12">
+						<select id="vId" class="form-control">
+							<option value="">请选择委(村)</option>
+						</select>
+					</div>
+					<div class="col-sm-4 col-md-4 col-xs-12 left_row" th:if="${captchaEnabled==true}">
+						<div class="left_div1">
+							<input type="text" name="validateCode" class="form-control code" placeholder="验证码" maxlength="5" />
+						</div>
+						<div class="left_div2">
+							<a href="javascript:void(0);" title="点击更换验证码">
+								<img th:src="@{/captcha/captchaImage(type=${captchaType})}" class="imgcode" width="85%"/>
+							</a>
+						</div>
+					</div>
+					<div class="btn-group-sm  col-sm-2 col-md-2 col-xs-12" id="toolbar" role="group">
+						<button class="btn btn-success btn-block" id="btnSubmit" data-loading="正在验证,请稍候..." onclick="submitHandler()">查询</button>
+					</div>
+				</div>
+			</div>
+			<div class="form-group ss_jg">
+				<label class="ck_tit control-label">关于您所选的关键词有以下结果可供参考:</label>
+				<div class="ck_div22"></div>
+			</div>
+		</div>
+		<div class="cksm">
+			<h4>温馨提示</h4>
+			<p></p>
+		</div>
+	</div>
+
+	<script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${captchaType}]]; </script>
+    <script th:src="@{/js/jquery.min.js}"></script>
+    <script th:src="@{/js/bootstrap.min.js}"></script>
+    <script th:src="@{/ajax/libs/layer/layer.min.js}"></script>
+	<script th:src="@{/ajax/libs/layer/layer.min.js}"></script>
+	<script src="../static/ajax/libs/blockUI/jquery.blockUI.js" th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
+	<script src="../static/sooka/js/ry-ui.js" th:src="@{/sooka/js/ry-ui.js?v=4.7.6}"></script>
+    <script type="text/javascript">
+		var prefix = ctx + "schooldistrict/config", schoolType = 1;
+		$(".xit_logo").html(unescapeHtml('[[${title.noticeContent}]]'));
+		if ([[${flag}]]) {
+			$(".main").show();
+			$(".cksm p").html(unescapeHtml('[[${notice.noticeContent}]]'));
+		} else {
+			$(".main").remove();
+			$(".cksm p").html(unescapeHtml('[[${announcement.noticeContent}]]'));
+		}
+
+		function submitHandler() {
+			var pId = $("#pId").val(), vId = $("#vId").val();
+			if (pId == "" || vId == "") {
+				$.modal.msg("请选择派出所、委(村)");
+				return;
+			}
+			$.modal.loading($("#btnSubmit").data("loading"));
+			$.post(prefix + "/getSchoolName", {
+				schoolType: schoolType, pId: pId, vId: vId, validateCode: $("input[name='validateCode']").val()
+			}, function(r) {
+				if (r.code == web_status.SUCCESS) {
+					var name = "";
+					$.each(r.data, function(i, item) {
+						name += '<span class="ss_span">' + item + '</span>'
+					})
+					$(".ck_div22").empty().append(name);
+				} else {
+					$.modal.msg(r.msg);
+				}
+				$(".code").val("");
+				$('.imgcode').click();
+				$.modal.closeLoading();
+			});
+		}
+
+		function unescapeHtml(str) {
+			if (Object.prototype.toString.call(str) !== '[object String]') {
+				return '';
+			}
+			str = str.replace(/&lt;|&gt;|&amp;/g, function (match) {
+				return ({
+					'&lt;': '<',
+					'&gt;': '>',
+					'&amp;': '&'
+				})[match];
+			});
+			return str;
+		}
+
+		function getData(array) {
+			var str = "<option value=''>请选择委(村)</option>";
+			$.each(array, function (index, item) {
+				str += "<option value='" + item.vId + "'>" + item.vName + "</option>";
+			})
+			return str;
+		}
+
+		$(function() {
+			$("#schoolType span").click(function() {
+				if (schoolType != $(this).attr("value")) {
+					schoolType = $(this).attr("value");
+					$("#schoolType span").removeClass("on");
+					$(this).addClass("on");
+					$('#pId').trigger("change");
+				}
+			});
+
+			$('#pId').change(function() {
+				$('#vId').empty();
+				if (this.value != "") {
+					$.post(prefix + "/getVillagesBySTypeAndPId", {
+						schoolType: schoolType, pId: this.value
+					}, function(result) {
+						$('#vId').append(getData(result));
+					});
+				}
+			});
+
+			$('.imgcode').click(function() {
+				var url = ctx + "captcha/captchaImage?type=" + captchaType + "&s=" + Math.random();
+				$(".imgcode").attr("src", url);
+			});
+		})
+    </script>
+</body>
+</html>

+ 52 - 51
sooka-admin/src/main/resources/templates/main.html

@@ -146,10 +146,6 @@
 			left: 0px;
 			display: none;
 		}
-		#tk_btn{
-			width: 100px;
-			height: 35px;
-		}
 		.tk_window{
 			width: 30rem;
 			padding-bottom: 2rem;
@@ -248,7 +244,7 @@
 </head>
 
 <body class="gray-bg">
-	<h1 class="xit_logo">南关区学区查询系统</h1>
+	<h1 class="xit_logo"></h1>
 	<div class="wrapper wrapper-content animated fadeInRight ibox-content2">
 		<div id="schoolType" class="sel_zx">
 			<span class="on" value="1">按小学查询</span>
@@ -256,31 +252,27 @@
 		</div>
 		<div class="form-horizontal sel_form" id="form-pv-add">
 			<div class="row">
-			<div class="form-group2 col-sm-3 col-md-3 col-xs-12">
-
+				<div class="form-group2 col-sm-3 col-md-3 col-xs-12">
 					<select id="pId" class="form-control">
-                        <option value="">请选择</option>
-                        <option th:each="policestation:${policestations}" th:value="${policestation.pvId}" th:text="${policestation.pvName}"></option>
+						<option value="">请选择派出所</option>
+						<option th:each="policestation:${policestations}" th:value="${policestation.pvId}" th:text="${policestation.pvName}"></option>
 					</select>
-
-			</div>
-			<div class="form-group2 col-sm-3 col-md-3 col-xs-12">
-
+				</div>
+				<div class="form-group2 col-sm-3 col-md-3 col-xs-12">
 					<select id="vId" class="form-control">
-                        <option value="">请选择</option>
+						<option value="">请选择委(村)</option>
 					</select>
-
-			</div>
-			<div class="col-sm-4 col-md-4 col-xs-12 left_row" th:if="${captchaEnabled==true}">
-				<div class="left_div1">
-					<input type="text" name="validateCode" class="form-control code" placeholder="验证码" maxlength="5" />
 				</div>
-				<div class="left_div2">
-					<a href="javascript:void(0);" title="点击更换验证码">
-						<img th:src="@{/captcha/captchaImage(type=${captchaType})}" class="imgcode" width="85%"/>
-					</a>
+				<div class="col-sm-4 col-md-4 col-xs-12 left_row" th:if="${captchaEnabled==true}">
+					<div class="left_div1">
+						<input type="text" name="validateCode" class="form-control code" placeholder="验证码" maxlength="5" />
+					</div>
+					<div class="left_div2">
+						<a href="javascript:void(0);" title="点击更换验证码">
+							<img th:src="@{/captcha/captchaImage(type=${captchaType})}" class="imgcode" width="85%"/>
+						</a>
+					</div>
 				</div>
-			</div>
 				<div class="btn-group-sm  col-sm-2 col-md-2 col-xs-12" id="toolbar" role="group">
 					<button class="btn btn-success btn-block" id="btnSubmit" data-loading="正在验证,请稍候..." onclick="submitHandler()">查询</button>
 				</div>
@@ -288,32 +280,22 @@
 		</div>
 		<div class="form-group ss_jg">
 			<label class="ck_tit control-label">关于您所选的关键词有以下结果可供参考:</label>
-			<div class="ck_div22">
-				<span id="schoolId" class="ss_span">1111111</span>
-				<span id="schoolId" class="ss_span">东北师范小学</span>
-			</div>
+			<div class="ck_div22"></div>
 		</div>
 		<div class="cksm">
 			<h4>温馨提示</h4>
-			<p>该功能模块对学区信息进行查询,选择中、小学,派出所,委(村),输入验证码,验证通过后,即可查询对应学区。因学区查询系统仅在开学季、招生季开放,若当前日期不在规定日期范围内,需进行公告提示。</p>
-		</div>
-		<div id="tk_btn">
-			<button class="link">
-				<a >弹窗</a>
-			</button>
+			<p></p>
 		</div>
-
 	</div>
 
 	<!--弹框 开始-->
-	<div class="xq_zg"></div>
-	<div id="tk_window" class="tk_window">
-			<h1>温馨提示</h1>
-			<h2>该功能模块对学区信息进行查询,选择中、小学,派出所</h2>
+	<div class="xq_zg">
+		<div class="tk_window">
+			<h1>系统公告</h1>
+			<h2></h2>
 			<span class="close_btn">关闭</span>
+		</div>
 	</div>
-	​
-
 	<!--弹框 结束-->
 	<script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${captchaType}]]; </script>
     <script th:src="@{/js/jquery.min.js}"></script>
@@ -323,6 +305,14 @@
 	<script src="../static/ajax/libs/blockUI/jquery.blockUI.js" th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
 	<script src="../static/sooka/js/ry-ui.js" th:src="@{/sooka/js/ry-ui.js?v=4.7.6}"></script>
     <script type="text/javascript">
+		$(".xit_logo").html(unescapeHtml('[[${title.noticeContent}]]'));
+		$(".cksm p").html(unescapeHtml('[[${notice.noticeContent}]]'));
+		if (![[${flag}]]) {
+			$(".tk_window h2").html(unescapeHtml('[[${announcement.noticeContent}]]'));
+			$(".xq_zg").show();
+			$(".tk_window").show();
+		}
+
 		function submitHandler() {
 			var pId = $("#pId").val(), vId = $("#vId").val();
 			if (pId == "" || vId == "") {
@@ -339,11 +329,13 @@
 				if (r.code == web_status.SUCCESS) {
 					var name = "";
 					if (r.data.length == 0) {
-						name += "暂无学区 ";
+						name += '<span class="ss_span">暂无学区</span>';
 					} else {
-						name += r.data.join(",");
+						$.each(r.data, function(i, item) {
+							name += '<span class="ss_span">' + item + '</span>'
+						})
 					}
-					$("#schoolId").empty().append(name);
+					$(".ck_div22").empty().append(name);
 				} else {
 					$('.imgcode').click();
 					$(".code").val("");
@@ -353,8 +345,22 @@
 			});
 		}
 
+		function unescapeHtml(str) {
+			if (Object.prototype.toString.call(str) !== '[object String]') {
+				return '';
+			}
+			str = str.replace(/&lt;|&gt;|&amp;/g, function (match) {
+				return ({
+					'&lt;': '<',
+					'&gt;': '>',
+					'&amp;': '&'
+				})[match];
+			});
+			return str;
+		}
+
 		function getData(array) {
-			var str = "<option value=''>请选择</option>";
+			var str = "<option value=''>请选择委(村)</option>";
 			$.each(array, function (index, item) {
 				str += "<option value='" + item.pvId + "'>" + item.pvName + "</option>";
 			})
@@ -362,14 +368,9 @@
 		}
 
 		$(function() {
-            // 弹框 关闭 选择
-            $("#tk_btn").on('click',function(){
-                $(".xq_zg").show();
-                $("#tk_window").show();
-            })
             $(".close_btn").on('click',function(){
                 $(".xq_zg").hide();
-                $("#tk_window").hide();
+				$(".tk_window").hide();
             })
 
 			$("#schoolType span").click(function () {

+ 13 - 1
sooka-common/src/main/java/com/sooka/common/constant/Constants.java

@@ -84,9 +84,21 @@ public class Constants
 
     /**
      *
+     * 公告配置 cache name
+     */
+    public static final String NOTICE_NAME_CACHE = "sys-notice";
+
+    /**
+     *
+     * 委(村)查询 cache name
+     */
+    public static final String VILLAGE_NAME_CACHE = "village-name";
+
+    /**
+     *
      * 学区查询 cache name
      */
-    public static final String SCHOOL_NAME_CACHE = "school-name:";
+    public static final String SCHOOL_NAME_CACHE = "school-name";
 
     /**
      * 资源映射路径 前缀

+ 3 - 3
sooka-framework/src/main/java/com/sooka/framework/config/ShiroConfig.java

@@ -293,9 +293,9 @@ public class ShiroConfig
         filterChainDefinitionMap.put("/logout", "logout");
         // 不需要拦截的访问
         filterChainDefinitionMap.put("/login", "anon,captchaValidate");
-        filterChainDefinitionMap.put("/system/main", "anon,captchaValidate");
-        filterChainDefinitionMap.put("/schooldistrict/policestationvillage/getPolicestationVillagesByParentId", "anon,captchaValidate");
-        filterChainDefinitionMap.put("/system/select", "anon,captchaValidate");
+        filterChainDefinitionMap.put("/eduindex", "anon,captchaValidate");
+        filterChainDefinitionMap.put("/schooldistrict/config/getVillagesBySTypeAndPId", "anon,captchaValidate");
+        filterChainDefinitionMap.put("/schooldistrict/config/getSchoolName", "anon,captchaValidate");
         // 注册相关
         filterChainDefinitionMap.put("/register", "anon,captchaValidate");
         // 系统权限列表

+ 2 - 0
sooka-schooldistrict/src/main/java/com/sooka/schooldistrict/mapper/BtpSchoolPvMapper.java

@@ -55,5 +55,7 @@ public interface BtpSchoolPvMapper {
 
     List<BtpSchoolPv> getBtpSchoolPvsInSchoolIds(String[] schoolIds);
 
+    List<BtpSchoolPv> getVillagesBySTypeAndPId(BtpSchoolPv btpSchoolPv);
+
     List<String> getSchoolName(BtpSchoolPv btpSchoolPv);
 }

+ 2 - 0
sooka-schooldistrict/src/main/java/com/sooka/schooldistrict/service/IBtpSchoolPvService.java

@@ -46,5 +46,7 @@ public interface IBtpSchoolPvService {
 
     List<BtpSchoolPv> getBtpSchoolPvsInSchoolIds(String schoolIds);
 
+    List<BtpSchoolPv> getVillagesBySTypeAndPId(BtpSchoolPv btpSchoolPv);
+
     List<String> getSchoolName(BtpSchoolPv btpSchoolPv);
 }

+ 12 - 0
sooka-schooldistrict/src/main/java/com/sooka/schooldistrict/service/impl/BtpSchoolPvServiceImpl.java

@@ -13,6 +13,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.List;
 
 import static com.sooka.common.constant.Constants.SCHOOL_NAME_CACHE;
+import static com.sooka.common.constant.Constants.VILLAGE_NAME_CACHE;
 
 /**
  * 学区配置Service业务层处理
@@ -85,6 +86,17 @@ public class BtpSchoolPvServiceImpl implements IBtpSchoolPvService {
     }
 
     @Override
+    public List<BtpSchoolPv> getVillagesBySTypeAndPId(BtpSchoolPv btpSchoolPv) {
+        String key = btpSchoolPv.getSchoolType() + "_" + btpSchoolPv.getpId();
+        Object villages = CacheUtils.get(VILLAGE_NAME_CACHE, key);
+        if (StringUtils.isNull(villages)) {
+            villages = btpSchoolPvMapper.getVillagesBySTypeAndPId(btpSchoolPv);
+            CacheUtils.put(VILLAGE_NAME_CACHE, key, villages);
+        }
+        return StringUtils.cast(villages);
+    }
+
+    @Override
     public List<String> getSchoolName(BtpSchoolPv btpSchoolPv) {
         String key = btpSchoolPv.getSchoolType() + "_" + btpSchoolPv.getpId() + "_" + btpSchoolPv.getvId();
         Object schoolNames = CacheUtils.get(SCHOOL_NAME_CACHE, key);

+ 5 - 0
sooka-schooldistrict/src/main/resources/mapper/schooldistrict/BtpSchoolPvMapper.xml

@@ -83,6 +83,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </foreach>
     </select>
 
+    <select id="getVillagesBySTypeAndPId" parameterType="BtpSchoolPv" resultMap="BtpSchoolPvResult">
+        select distinct v_id,v_name from schooldistrict_view
+        where school_type = #{schoolType} and p_id = #{pId}
+    </select>
+
     <select id="getSchoolName" parameterType="BtpSchoolPv" resultType="String">
         select school_name from schooldistrict_view
         <where>

+ 10 - 1
sooka-system/src/main/java/com/sooka/system/service/impl/SysNoticeServiceImpl.java

@@ -2,6 +2,7 @@ package com.sooka.system.service.impl;
 
 import java.util.List;
 
+import com.sooka.common.utils.CacheUtils;
 import com.sooka.common.utils.StringUtils;
 import com.sooka.system.domain.SysNotice;
 import com.sooka.system.mapper.SysNoticeMapper;
@@ -11,6 +12,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.sooka.common.core.text.Convert;
 
+import static com.sooka.common.constant.Constants.NOTICE_NAME_CACHE;
+import static com.sooka.common.constant.Constants.SCHOOL_NAME_CACHE;
+
 /**
  * 公告 服务层实现
  * 
@@ -32,7 +36,12 @@ public class SysNoticeServiceImpl implements ISysNoticeService
     @Override
     public SysNotice selectNoticeById(Long noticeId)
     {
-        return noticeMapper.selectNoticeById(noticeId);
+        Object sysNotice = CacheUtils.get(NOTICE_NAME_CACHE, noticeId.toString());
+        if (StringUtils.isNull(sysNotice)) {
+            sysNotice = noticeMapper.selectNoticeById(noticeId);
+            CacheUtils.put(NOTICE_NAME_CACHE, noticeId.toString(), sysNotice);
+        }
+        return StringUtils.cast(sysNotice);
     }
 
     /**