Ver código fonte

1.首页-学区查询,调整前端交互
2.公告配置,添加缓存

liuyuqiang 2 anos atrás
pai
commit
ea2438327e

+ 8 - 1
sooka-admin/src/main/java/com/sooka/web/controller/system/SysIndexController.java

@@ -147,6 +147,13 @@ public class SysIndexController extends BaseController
     @GetMapping("/system/main")
     public String main(ModelMap mmap)
     {
+        mmap.put("version", SookaConfig.getVersion());
+        return "main";
+    }
+
+    @GetMapping("/sysindex")
+    public String sysindex(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]))) {
@@ -159,7 +166,7 @@ public class SysIndexController extends BaseController
         mmap.put("title", noticeService.selectNoticeById(1L));
         mmap.put("notice", noticeService.selectNoticeById(2L));
         mmap.put("announcement", noticeService.selectNoticeById(11L));
-        return "main";
+        return "sysindex";
     }
 
     // 学区查询

+ 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
             # 从库数据源

+ 400 - 0
sooka-admin/src/main/resources/templates/sysindex.html

@@ -0,0 +1,400 @@
+<!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%;
+		}
+		.xq_zg{
+			background: rgba(48,48,48,0.7);
+			width: 100%;
+			height: 100%;
+			position: fixed;
+			top:0px;
+			left: 0px;
+			display: none;
+		}
+		.tk_window{
+			width: 30rem;
+			padding-bottom: 2rem;
+			position: fixed;
+			top: 50%;
+			left: 50%;
+			margin-left: -15rem;
+			margin-top: -9rem;
+			z-index: 99;
+			background: #fff;
+			border: 1px solid #f3f3f3;
+			border-radius: 0.5rem;
+			box-shadow: 0px 0px 12px #3a3a3a;
+			display: none;
+		}
+		.tk_window h1{
+			font-size: 1.6rem;
+			text-align: center;
+			border-bottom: 1px solid #f3f3f3;
+			background: rgb(235 235 235 / 38%);
+			margin: 0px;
+			height: 4rem;
+			line-height: 4rem;
+			color: #333;
+			border-top-left-radius: 0.5rem;
+			border-top-right-radius: 0.5rem;
+			letter-spacing: 0.2rem;
+			font-weight: bold;
+		}
+		.tk_window h2{
+			font-size: 1.5rem;
+			line-height: 2.2rem;
+			color: #333;
+			padding: 0px 4%;
+		}
+		.tk_window .close_btn{
+			font-size: 1.5rem;
+			color: #fff;
+			padding: 1.5% 7%;
+			background: #3692ef;
+			border-radius: 0.5rem;
+			margin: 2rem auto 0rem auto;
+			display: table;
+			cursor: pointer;
+		}
+
+		@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>
+
+	<!--弹框 开始-->
+	<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>
+    <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">
+		$(".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}]]'));
+			// $(".xq_zg").show();
+			// $(".tk_window").show();
+		}
+
+		function submitHandler() {
+			var pId = $("#pId").val(), vId = $("#vId").val();
+			if (pId == "" || vId == "") {
+				$.modal.msg("请选择派出所、委(村)");
+				return;
+			}
+			$.modal.loading($("#btnSubmit").data("loading"));
+			$.post("/system/select", {
+				schoolType: $("#schoolType span[class='on']").attr("value"),
+				pId: pId,
+				vId: vId,
+				validateCode: $("input[name='validateCode']").val()
+			}, function(r) {
+				if (r.code == web_status.SUCCESS) {
+					var name = "";
+					if (r.data.length == 0) {
+						name += '<span class="ss_span">暂无学区</span>';
+					} else {
+						$.each(r.data, function(i, item) {
+							name += '<span class="ss_span">' + item + '</span>'
+						})
+					}
+					$(".ck_div22").empty().append(name);
+				} else {
+					$('.imgcode').click();
+					$(".code").val("");
+					$.modal.msg(r.msg);
+				}
+				$.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.pvId + "'>" + item.pvName + "</option>";
+			})
+			return str;
+		}
+
+		$(function() {
+            $(".close_btn").on('click',function(){
+                $(".xq_zg").hide();
+				$(".tk_window").hide();
+            })
+
+			$("#schoolType span").click(function () {
+				$("#schoolType span").removeClass("on");
+				$(this).addClass("on");
+			});
+
+			$('#pId').on('change', function (e) {
+				$.get("/schooldistrict/policestationvillage/getPolicestationVillagesByParentId?parentId=" + this.value, function(result) {
+					$('#vId').empty().append(getData(result));
+				});
+			});
+
+			$('.imgcode').click(function() {
+				var url = ctx + "captcha/captchaImage?type=" + captchaType + "&s=" + Math.random();
+				$(".imgcode").attr("src", url);
+			});
+		})
+    </script>
+</body>
+</html>

+ 6 - 0
sooka-common/src/main/java/com/sooka/common/constant/Constants.java

@@ -84,6 +84,12 @@ public class Constants
 
     /**
      *
+     * 公告配置 cache name
+     */
+    public static final String NOTICE_NAME_CACHE = "sys-notice";
+
+    /**
+     *
      * 学区查询 cache name
      */
     public static final String SCHOOL_NAME_CACHE = "school-name:";

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

@@ -293,7 +293,7 @@ public class ShiroConfig
         filterChainDefinitionMap.put("/logout", "logout");
         // 不需要拦截的访问
         filterChainDefinitionMap.put("/login", "anon,captchaValidate");
-        filterChainDefinitionMap.put("/system/main", "anon,captchaValidate");
+        filterChainDefinitionMap.put("/sysindex", "anon,captchaValidate");
         filterChainDefinitionMap.put("/schooldistrict/policestationvillage/getPolicestationVillagesByParentId", "anon,captchaValidate");
         filterChainDefinitionMap.put("/system/select", "anon,captchaValidate");
         // 注册相关

+ 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);
     }
 
     /**