Просмотр исходного кода

1.首页-学区查询,优化交互
2.委(村)查询,添加缓存

liuyuqiang 2 лет назад
Родитель
Сommit
5761d28a22

+ 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.getvId()) || 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));
+    }
 }

+ 4 - 25
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)
@@ -151,8 +144,8 @@ public class SysIndexController extends BaseController
         return "main";
     }
 
-    @GetMapping("/sysindex")
-    public String sysindex(ModelMap mmap)
+    @GetMapping("/eduindex")
+    public String eduindex(ModelMap mmap)
     {
         SysNotice sysNotice = noticeService.selectNoticeById(10L);
         String[] date = Convert.toStrArray(" 至 ", sysNotice.getNoticeContent());
@@ -166,21 +159,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 "sysindex";
-    }
-
-    // 学区查询
-    @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));
+        return "eduindex";
     }
 
     // content-main class

+ 25 - 93
sooka-admin/src/main/resources/templates/sysindex.html

@@ -137,61 +137,6 @@
 			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%;
@@ -291,15 +236,6 @@
 		</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>
@@ -308,6 +244,7 @@
 	<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();
@@ -315,8 +252,6 @@
 		} else {
 			$(".main").remove();
 			$(".cksm p").html(unescapeHtml('[[${announcement.noticeContent}]]'));
-			// $(".xq_zg").show();
-			// $(".tk_window").show();
 		}
 
 		function submitHandler() {
@@ -326,27 +261,20 @@
 				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()
+			$.post(prefix + "/getSchoolName", {
+				schoolType: schoolType, 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>'
-						})
-					}
+					$.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);
 				}
+				$(".code").val("");
+				$('.imgcode').click();
 				$.modal.closeLoading();
 			});
 		}
@@ -368,26 +296,30 @@
 		function getData(array) {
 			var str = "<option value=''>请选择委(村)</option>";
 			$.each(array, function (index, item) {
-				str += "<option value='" + item.pvId + "'>" + item.pvName + "</option>";
+				str += "<option value='" + item.vId + "'>" + item.vName + "</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");
+			$("#schoolType span").click(function() {
+				if (schoolType != $(this).attr("value")) {
+					schoolType = $(this).attr("value");
+					$("#schoolType span").removeClass("on");
+					$(this).addClass("on");
+					$('#pId').trigger("change");
+				}
 			});
 
-			$('#pId').on('change', function (e) {
-				$.get("/schooldistrict/policestationvillage/getPolicestationVillagesByParentId?parentId=" + this.value, function(result) {
-					$('#vId').empty().append(getData(result));
-				});
+			$('#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() {

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

@@ -90,6 +90,12 @@ public class Constants
 
     /**
      *
+     * 委(村)查询 cache name
+     */
+    public static final String VILLAGE_NAME_CACHE = "village-name:";
+
+    /**
+     *
      * 学区查询 cache 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("/sysindex", "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>