From 7e3a731b960455b16016c3c4e2e727caa8190bb0 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期一, 01 六月 2020 12:03:04 +0800
Subject: [PATCH] 优化查询小区多条是报错问题

---
 CommunityService/src/main/java/com/java110/community/dao/impl/MenuServiceDaoImpl.java |  136 +++++++++++++++++++++++++++++++++++----------
 1 files changed, 106 insertions(+), 30 deletions(-)

diff --git a/CommunityService/src/main/java/com/java110/community/dao/impl/MenuServiceDaoImpl.java b/CommunityService/src/main/java/com/java110/community/dao/impl/MenuServiceDaoImpl.java
index 78ab8b5..bdf20f1 100644
--- a/CommunityService/src/main/java/com/java110/community/dao/impl/MenuServiceDaoImpl.java
+++ b/CommunityService/src/main/java/com/java110/community/dao/impl/MenuServiceDaoImpl.java
@@ -1,15 +1,17 @@
 package com.java110.community.dao.impl;
 
-import com.alibaba.fastjson.JSONObject;
-import com.java110.common.constant.ResponseConstant;
-import com.java110.common.exception.DAOException;
-import com.java110.common.util.DateUtil;
+import com.java110.utils.cache.MappingCache;
+import com.java110.utils.constant.DomainContant;
+import com.java110.utils.constant.StatusConstant;
+import com.java110.utils.exception.DAOException;
 import com.java110.community.dao.IMenuServiceDao;
 import com.java110.core.base.dao.BaseServiceDao;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -18,7 +20,7 @@
  * Created by wuxw on 2017/4/5.
  */
 @Service("menuServiceDaoImpl")
-//@Transactional
+@Transactional
 public class MenuServiceDaoImpl extends BaseServiceDao implements IMenuServiceDao {
 
     private static Logger logger = LoggerFactory.getLogger(MenuServiceDaoImpl.class);
@@ -26,14 +28,15 @@
 
     /**
      * 淇濆瓨璺敱淇℃伅 鍒� instance
-     * @param info   bId 淇℃伅
+     *
+     * @param info bId 淇℃伅
      * @throws DAOException DAO寮傚父
      */
     @Override
     public int saveMenuGroupInfo(Map info) throws DAOException {
-        logger.debug("淇濆瓨璺敱淇℃伅Instance 鍏ュ弬 info : {}",info);
+        logger.debug("淇濆瓨璺敱淇℃伅Instance 鍏ュ弬 info : {}", info);
 
-        int saveFlag = sqlSessionTemplate.insert("menuServiceDaoImpl.saveMenuGroupInfo",info);
+        int saveFlag = sqlSessionTemplate.insert("menuServiceDaoImpl.saveMenuGroupInfo", info);
 
         return saveFlag;
     }
@@ -41,15 +44,16 @@
 
     /**
      * 鏌ヨ璺敱淇℃伅锛坕nstance锛�
+     *
      * @param info bId 淇℃伅
      * @return List<Map>
      * @throws DAOException DAO寮傚父
      */
     @Override
     public List<Map> getMenuGroupInfo(Map info) throws DAOException {
-        logger.debug("鏌ヨ璺敱淇℃伅 鍏ュ弬 info : {}",info);
+        logger.debug("鏌ヨ璺敱淇℃伅 鍏ュ弬 info : {}", info);
 
-        List<Map> businessMenuGroupInfos = sqlSessionTemplate.selectList("menuServiceDaoImpl.getMenuGroupInfo",info);
+        List<Map> businessMenuGroupInfos = sqlSessionTemplate.selectList("menuServiceDaoImpl.getMenuGroupInfo", info);
 
         return businessMenuGroupInfos;
     }
@@ -57,26 +61,28 @@
 
     /**
      * 淇敼璺敱淇℃伅
+     *
      * @param info 淇敼淇℃伅
      * @throws DAOException DAO寮傚父
      */
     @Override
     public int updateMenuGroupInfo(Map info) throws DAOException {
-        logger.debug("淇敼璺敱淇℃伅Instance 鍏ュ弬 info : {}",info);
+        logger.debug("淇敼璺敱淇℃伅Instance 鍏ュ弬 info : {}", info);
 
-        int saveFlag = sqlSessionTemplate.update("menuServiceDaoImpl.updateMenuGroupInfo",info);
+        int saveFlag = sqlSessionTemplate.update("menuServiceDaoImpl.updateMenuGroupInfo", info);
 
         return saveFlag;
     }
 
-     /**
+    /**
      * 鏌ヨ璺敱鏁伴噺
+     *
      * @param info 璺敱淇℃伅
      * @return 璺敱鏁伴噺
      */
     @Override
     public int queryMenuGroupsCount(Map info) {
-        logger.debug("鏌ヨ璺敱鏁版嵁 鍏ュ弬 info : {}",info);
+        logger.debug("鏌ヨ璺敱鏁版嵁 鍏ュ弬 info : {}", info);
 
         List<Map> businessMenuGroupInfos = sqlSessionTemplate.selectList("menuServiceDaoImpl.queryMenuGroupsCount", info);
         if (businessMenuGroupInfos.size() < 1) {
@@ -89,14 +95,26 @@
 
     /**
      * 淇濆瓨璺敱淇℃伅 鍒� instance
-     * @param info   bId 淇℃伅
+     *
+     * @param info bId 淇℃伅
      * @throws DAOException DAO寮傚父
      */
     @Override
     public int saveBasePrivilegeInfo(Map info) throws DAOException {
-        logger.debug("淇濆瓨璺敱淇℃伅Instance 鍏ュ弬 info : {}",info);
+        logger.debug("淇濆瓨璺敱淇℃伅Instance 鍏ュ弬 info : {}", info);
 
-        int saveFlag = sqlSessionTemplate.insert("menuServiceDaoImpl.saveBasePrivilegeInfo",info);
+        int saveFlag = sqlSessionTemplate.insert("menuServiceDaoImpl.saveBasePrivilegeInfo", info);
+
+        if (saveFlag < 1) {
+            return saveFlag;
+        }
+
+
+        // 灏嗘潈闄愮粍鍒嗛厤缁欏搴斿晢鎴风被鍨嬬鐞嗗憳
+        info.put("pgId", MappingCache.getValue(DomainContant.DEFAULT_PRIVILEGE_ADMIN, info.get("domain").toString()));
+
+        saveFlag = sqlSessionTemplate.insert("menuServiceDaoImpl.saveBasePrivilegeRelInfo", info);
+
 
         return saveFlag;
     }
@@ -104,15 +122,16 @@
 
     /**
      * 鏌ヨ璺敱淇℃伅锛坕nstance锛�
+     *
      * @param info bId 淇℃伅
      * @return List<Map>
      * @throws DAOException DAO寮傚父
      */
     @Override
     public List<Map> getBasePrivilegeInfo(Map info) throws DAOException {
-        logger.debug("鏌ヨ璺敱淇℃伅 鍏ュ弬 info : {}",info);
+        logger.debug("鏌ヨ璺敱淇℃伅 鍏ュ弬 info : {}", info);
 
-        List<Map> businessBasePrivilegeInfos = sqlSessionTemplate.selectList("menuServiceDaoImpl.getBasePrivilegeInfo",info);
+        List<Map> businessBasePrivilegeInfos = sqlSessionTemplate.selectList("menuServiceDaoImpl.getBasePrivilegeInfo", info);
 
         return businessBasePrivilegeInfos;
     }
@@ -120,26 +139,42 @@
 
     /**
      * 淇敼璺敱淇℃伅
+     *
      * @param info 淇敼淇℃伅
      * @throws DAOException DAO寮傚父
      */
     @Override
     public int updateBasePrivilegeInfo(Map info) throws DAOException {
-        logger.debug("淇敼璺敱淇℃伅Instance 鍏ュ弬 info : {}",info);
+        logger.debug("淇敼璺敱淇℃伅Instance 鍏ュ弬 info : {}", info);
+        int saveFlag = 0;
+        //鍒ゆ柇鏄惁涓哄垹闄�
+        if (info.containsKey("statusCd") && StatusConstant.STATUS_CD_INVALID.equals(info.get("statusCd"))) {
+            //鍋氭煡璇�
+            List<Map> basePrivileges = getBasePrivilegeInfo(info);
 
-        int saveFlag = sqlSessionTemplate.update("menuServiceDaoImpl.updateBasePrivilegeInfo",info);
+            if (basePrivileges != null && basePrivileges.size() > 0) {
+                saveFlag = sqlSessionTemplate.update("menuServiceDaoImpl.updateBasePrivilegeRelInfo", info);
 
+                if (saveFlag < 1) {
+                    return saveFlag;
+                }
+            }
+
+        }
+
+        saveFlag = sqlSessionTemplate.update("menuServiceDaoImpl.updateBasePrivilegeInfo", info);
         return saveFlag;
     }
 
     /**
      * 鏌ヨ璺敱鏁伴噺
+     *
      * @param info 璺敱淇℃伅
      * @return 璺敱鏁伴噺
      */
     @Override
     public int queryBasePrivilegesCount(Map info) {
-        logger.debug("鏌ヨ璺敱鏁版嵁 鍏ュ弬 info : {}",info);
+        logger.debug("鏌ヨ璺敱鏁版嵁 鍏ュ弬 info : {}", info);
 
         List<Map> businessBasePrivilegeInfos = sqlSessionTemplate.selectList("menuServiceDaoImpl.queryBasePrivilegesCount", info);
         if (businessBasePrivilegeInfos.size() < 1) {
@@ -149,18 +184,29 @@
         return Integer.parseInt(businessBasePrivilegeInfos.get(0).get("count").toString());
     }
 
+    @Override
+    public boolean checkUserHasResource(Map info) {
+        logger.debug("鏌ヨ璺敱淇℃伅 鍏ュ弬 info : {}", info);
+
+        List<Map> businessBasePrivilegeInfos = sqlSessionTemplate.selectList("menuServiceDaoImpl.checkUserHasResource", info);
+        if (businessBasePrivilegeInfos != null && businessBasePrivilegeInfos.size() > 0) {
+            return true;
+        }
+        return false;
+    }
 
 
     /**
      * 淇濆瓨璺敱淇℃伅 鍒� instance
-     * @param info   bId 淇℃伅
+     *
+     * @param info bId 淇℃伅
      * @throws DAOException DAO寮傚父
      */
     @Override
     public int saveMenuInfo(Map info) throws DAOException {
-        logger.debug("淇濆瓨璺敱淇℃伅Instance 鍏ュ弬 info : {}",info);
+        logger.debug("淇濆瓨璺敱淇℃伅Instance 鍏ュ弬 info : {}", info);
 
-        int saveFlag = sqlSessionTemplate.insert("menuServiceDaoImpl.saveMenuInfo",info);
+        int saveFlag = sqlSessionTemplate.insert("menuServiceDaoImpl.saveMenuInfo", info);
 
         return saveFlag;
     }
@@ -168,15 +214,16 @@
 
     /**
      * 鏌ヨ璺敱淇℃伅锛坕nstance锛�
+     *
      * @param info bId 淇℃伅
      * @return List<Map>
      * @throws DAOException DAO寮傚父
      */
     @Override
     public List<Map> getMenuInfo(Map info) throws DAOException {
-        logger.debug("鏌ヨ璺敱淇℃伅 鍏ュ弬 info : {}",info);
+        logger.debug("鏌ヨ璺敱淇℃伅 鍏ュ弬 info : {}", info);
 
-        List<Map> businessMenuInfos = sqlSessionTemplate.selectList("menuServiceDaoImpl.getMenuInfo",info);
+        List<Map> businessMenuInfos = sqlSessionTemplate.selectList("menuServiceDaoImpl.getMenuInfo", info);
 
         return businessMenuInfos;
     }
@@ -184,26 +231,55 @@
 
     /**
      * 淇敼璺敱淇℃伅
+     *
      * @param info 淇敼淇℃伅
      * @throws DAOException DAO寮傚父
      */
     @Override
     public int updateMenuInfo(Map info) throws DAOException {
-        logger.debug("淇敼璺敱淇℃伅Instance 鍏ュ弬 info : {}",info);
+        logger.debug("淇敼璺敱淇℃伅Instance 鍏ュ弬 info : {}", info);
 
-        int saveFlag = sqlSessionTemplate.update("menuServiceDaoImpl.updateMenuInfo",info);
+        int saveFlag = 0;
+
+        //鍒ゆ柇鏄惁涓哄垹闄�
+        if (info.containsKey("statusCd") && StatusConstant.STATUS_CD_INVALID.equals(info.get("statusCd"))) {
+            //鍋氭煡璇�
+            List<Map> baseMenus = getMenuInfo(info);
+
+            if (baseMenus != null && baseMenus.size() > 0) {
+                Map privilegeInfo = new HashMap();
+                privilegeInfo.put("pId", baseMenus.get(0).get("pId"));
+                privilegeInfo.put("statusCd", StatusConstant.STATUS_CD_INVALID);
+                //鍒犻櫎鏉冮檺 鏉冮檺缁勫叧绯�
+                saveFlag = sqlSessionTemplate.update("menuServiceDaoImpl.updateBasePrivilegeRelInfo", info);
+
+                if (saveFlag < 1) {
+                    return saveFlag;
+                }
+                //鍒犻櫎鏉冮檺
+                saveFlag = sqlSessionTemplate.update("menuServiceDaoImpl.updateBasePrivilegeInfo", info);
+
+                if (saveFlag < 1) {
+                    return saveFlag;
+                }
+            }
+
+        }
+
+        saveFlag = sqlSessionTemplate.update("menuServiceDaoImpl.updateMenuInfo", info);
 
         return saveFlag;
     }
 
     /**
      * 鏌ヨ璺敱鏁伴噺
+     *
      * @param info 璺敱淇℃伅
      * @return 璺敱鏁伴噺
      */
     @Override
     public int queryMenusCount(Map info) {
-        logger.debug("鏌ヨ璺敱鏁版嵁 鍏ュ弬 info : {}",info);
+        logger.debug("鏌ヨ璺敱鏁版嵁 鍏ュ弬 info : {}", info);
 
         List<Map> businessMenuInfos = sqlSessionTemplate.selectList("menuServiceDaoImpl.queryMenusCount", info);
         if (businessMenuInfos.size() < 1) {

--
Gitblit v1.8.0