diff --git a/base-manager-ui/admin/src/pages/basicset/dept/components/addwindow.vue b/base-manager-ui/admin/src/pages/basicset/dept/components/addwindow.vue
index c79933972d7998f6bb3b1a109f59b5004ef9ec58..d7308650754ff335dd240fb8f2efc755a38ccb69 100644
--- a/base-manager-ui/admin/src/pages/basicset/dept/components/addwindow.vue
+++ b/base-manager-ui/admin/src/pages/basicset/dept/components/addwindow.vue
@@ -207,6 +207,7 @@ export default {
   },
   data() {
     return {
+      loading: false,
       labelCol: { span: 6 },
       wrapperCol: { span: 14 },
       siteInfo: {
@@ -303,10 +304,12 @@ export default {
     async handleOk() {
       this.$refs.formData.validate(async (valid) => {
         if (valid) {
+          this.loading = true;
           let res = await addWindow({
             ...this.form,
             ...this.siteInfo,
           });
+          this.loading = false;
           let { code, msg } = res.data;
           if (code === 1) {
             this.$message.success(msg);
diff --git a/base-manager/src/main/java/com/mortals/xhx/base/framework/interceptor/AuthTokenServiceImpl.java b/base-manager/src/main/java/com/mortals/xhx/base/framework/interceptor/AuthTokenServiceImpl.java
index 0a07c35b6bcb764c2385b700081e488dfb801672..efea3fd85ed31fff79db496c359eba61218ffb2f 100644
--- a/base-manager/src/main/java/com/mortals/xhx/base/framework/interceptor/AuthTokenServiceImpl.java
+++ b/base-manager/src/main/java/com/mortals/xhx/base/framework/interceptor/AuthTokenServiceImpl.java
@@ -209,6 +209,9 @@ public class AuthTokenServiceImpl implements IAuthTokenService {
      */
     @Override
     public Claims parseToken(String token) {
+
+
+
         return Jwts.parser()
                 .setSigningKey(Base64.getEncoder().encodeToString(secret.getBytes()))
                 .parseClaimsJws(token)
@@ -245,4 +248,11 @@ public class AuthTokenServiceImpl implements IAuthTokenService {
     private String getTokenKey(String uuid) {
         return SysConstains.LOGIN_TOKEN_KEY + uuid;
     }
+
+
+    public static void main(String[] args) {
+      //  boolean signed = Jwts.parser().isSigned("123");
+        boolean signed = Jwts.parser().isSigned("eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJuaW5naGFvLm5ldCIsImV4cCI6IjE0Mzg5NTU0NDUiLCJuYW1lIjoid2FuZ2hhbyIsImFkbWluIjp0cnVlfQ.SwyHTEx_RQppr97g4J5lKXtabJecpejuef8AqKYMAJc");
+        System.out.println(signed);
+    }
 }
diff --git a/base-manager/src/main/java/com/mortals/xhx/base/system/resource/web/ResourceController.java b/base-manager/src/main/java/com/mortals/xhx/base/system/resource/web/ResourceController.java
index 191bd918690ff3e7459d74685d9a396d8747a351..1958f87926dec3d3200b2ab80387888707fbbb90 100644
--- a/base-manager/src/main/java/com/mortals/xhx/base/system/resource/web/ResourceController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/base/system/resource/web/ResourceController.java
@@ -35,7 +35,6 @@ import com.mortals.xhx.common.code.SourceType;
 public class ResourceController extends BaseCRUDJsonBodyMappingController<ResourceService,ResourceEntity,Long> {
 
 	public ResourceController(){
-		super.setFormClass(ResourceForm.class);
 		super.setModuleDesc("璧勬簮淇℃伅");
 	}
 
diff --git a/base-manager/src/main/java/com/mortals/xhx/base/system/resource/web/ResourceForm.java b/base-manager/src/main/java/com/mortals/xhx/base/system/resource/web/ResourceForm.java
deleted file mode 100644
index a03f1e3b9dae56d9a9fd30854ba09ee1721f77c4..0000000000000000000000000000000000000000
--- a/base-manager/src/main/java/com/mortals/xhx/base/system/resource/web/ResourceForm.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
-* 鏂囦欢锛歊esourceForm.java
-* 鐗堟湰锛�1.0.0
-* 鏃ユ湡锛�
-* Copyright &reg; 
-* All right reserved.
-*/
-package com.mortals.xhx.base.system.resource.web;
-
-
-import com.mortals.framework.web.BaseCRUDFormLong;
-import com.mortals.xhx.base.system.resource.model.ResourceEntity;
-import com.mortals.xhx.base.system.resource.model.ResourceQuery;
-
-/**
- * <p>Title: 璧勬簮淇℃伅</p>
- * <p>Description: ResourceForm  </p>
- * <p>Copyright: Copyright &reg;  </p>
- * <p>Company: </p>
- * @author 
- * @version 1.0.0
- */
-public class ResourceForm extends BaseCRUDFormLong<ResourceEntity> {
-	private ResourceEntity entity = new ResourceEntity();
-	private ResourceQuery query = new ResourceQuery();
-	public ResourceForm(){
-		
-	}
-	
-    @Override
-	public ResourceEntity getEntity() {
-		return entity;
-	}
-
-	public void setEntity(ResourceEntity entity) {
-		this.entity = entity;
-	}
-
-	@Override
-	public ResourceQuery getQuery() {
-		return query;
-	}
-
-	public void setQuery(ResourceQuery query) {
-		this.query = query;
-	}
-}
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/common/utils/MatterDetailHtmlParseUtil.java b/base-manager/src/main/java/com/mortals/xhx/common/utils/MatterDetailHtmlParseUtil.java
index 7d12f5f2d0eb855bd11d243a8c01a3bc3f0e508a..2691bea44106ce1002460e942f5b86617ea7b7e0 100644
--- a/base-manager/src/main/java/com/mortals/xhx/common/utils/MatterDetailHtmlParseUtil.java
+++ b/base-manager/src/main/java/com/mortals/xhx/common/utils/MatterDetailHtmlParseUtil.java
@@ -1,6 +1,9 @@
 package com.mortals.xhx.common.utils;
 
+import cn.hutool.core.util.ReUtil;
+import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.mortals.xhx.common.code.FiletypeEnum;
 import com.mortals.xhx.common.code.SourceEnum;
 import com.mortals.xhx.module.matter.model.MatterDatumFileEntity;
@@ -146,7 +149,23 @@ public class MatterDetailHtmlParseUtil {
                         fileEntity.setSource(SourceEnum.鏀垮姟缃�.getValue());
                         fileEntity.setFiletype(FiletypeEnum.绌虹櫧琛ㄦ牸.getValue());
                         fileEntity.setFileName(prenode.text().trim());
-                        fileEntity.setFileUrl(node.firstChild().attr("href").trim());
+
+                        String onclickStr = node.firstChild().attr("onclick").trim();
+
+                        List<String> allGroup = ReUtil.findAllGroup1("'(.*?)'", onclickStr);
+                        if (!ObjectUtils.isEmpty(allGroup)) {
+                            String encryUrl = "http://www.sczwfw.gov.cn/jiq/interface/item/annex/encryptUrl?id=" + allGroup.get(0);
+
+                            String resp = HttpUtil.get(encryUrl);
+                            JSONObject obj = JSON.parseObject(resp);
+                            String code = obj.getString("code");
+                            String data = obj.getString("data");
+                            if ("0".equals(code)) {
+                                fileEntity.setFileUrl(data);
+                            }
+                        }
+
+                        // fileEntity.setFileUrl(node.firstChild().attr("href").trim());
                         datumFileEntities.add(fileEntity);
                     }
                 }
@@ -168,7 +187,22 @@ public class MatterDetailHtmlParseUtil {
                         fileEntity.setSource(SourceEnum.鏀垮姟缃�.getValue());
                         fileEntity.setFiletype(FiletypeEnum.绀轰緥鏍疯〃.getValue());
                         fileEntity.setFileName(prenode.text().trim());
-                        fileEntity.setFileUrl(node.firstChild().attr("href").trim());
+
+                        String onclickStr = node.firstChild().attr("onclick").trim();
+
+                        List<String> allGroup = ReUtil.findAllGroup1("'(.*?)'", onclickStr);
+                        if (!ObjectUtils.isEmpty(allGroup)) {
+                            String encryUrl = "http://www.sczwfw.gov.cn/jiq/interface/item/annex/encryptUrl?id=" + allGroup.get(0);
+
+                            String resp = HttpUtil.get(encryUrl);
+                            JSONObject obj = JSON.parseObject(resp);
+                            String code = obj.getString("code");
+                            String data = obj.getString("data");
+                            if ("0".equals(code)) {
+                                fileEntity.setFileUrl(data);
+                            }
+                        }
+                        // fileEntity.setFileUrl(node.firstChild().attr("href").trim());
                         datumSampleFileEntities.add(fileEntity);
                     }
                     map.put("sampleList", datumSampleFileEntities);
@@ -478,6 +512,7 @@ public class MatterDetailHtmlParseUtil {
         });
 
         List<Map<String, Object>> mapList = MatterDetailHtmlParseUtil.getsqclInfoMapByHtml(dom);
+        System.out.println("==============鏉愭枡==============");
         System.out.println(JSON.toJSONString(mapList));
 
         Map<String, String> sltjMapByHtml = MatterDetailHtmlParseUtil.getSltjMapByHtml(dom);
diff --git a/base-manager/src/main/java/com/mortals/xhx/common/utils/MatterHtmlParseUtil.java b/base-manager/src/main/java/com/mortals/xhx/common/utils/MatterHtmlParseUtil.java
index 50d10870ec9abe0b9cea48120a8cd1ce92b0687d..293d61cd8da263ee59350895329d35616ba7ef65 100644
--- a/base-manager/src/main/java/com/mortals/xhx/common/utils/MatterHtmlParseUtil.java
+++ b/base-manager/src/main/java/com/mortals/xhx/common/utils/MatterHtmlParseUtil.java
@@ -247,7 +247,7 @@ public class MatterHtmlParseUtil {
         params.put("taskType", "");
         Rest<List<MatterEntity>> rest = MatterHtmlParseUtil.getMatterList(params, url);
 
-        System.out.println(rest.getData().size());*/
+        System.out.println(rest.getData().size());
 
 /*        HashMap<String, String> params = new HashMap<>();
 
diff --git a/base-manager/src/main/java/com/mortals/xhx/common/utils/SyncGovMatterDetailThread.java b/base-manager/src/main/java/com/mortals/xhx/common/utils/SyncGovMatterDetailThread.java
index 9a73b3194c8ca302dea9a3133e6152edb4d8eddc..b025e2fd3c940ada31da4f47b21f995c467510ad 100644
--- a/base-manager/src/main/java/com/mortals/xhx/common/utils/SyncGovMatterDetailThread.java
+++ b/base-manager/src/main/java/com/mortals/xhx/common/utils/SyncGovMatterDetailThread.java
@@ -84,7 +84,7 @@ public class SyncGovMatterDetailThread implements Runnable {
             List<MatterEntity> matterEntityList = matterService.find(new MatterQuery().areaCode(siteEntity.getAreaCode()).source(SourceEnum.鏀垮姟缃�.getValue()));
             log.info("鏌ヨ浜嬮」鍒楄〃缁撴潫");
             List<MatterEntity> unSyncDetailMatterList = matterEntityList.stream()
-                    .filter(f -> f.getHaveGetMatterInfo().equalsIgnoreCase("false"))
+                 //   .filter(f -> f.getHaveGetMatterInfo().equalsIgnoreCase("false"))
                     .collect(Collectors.toList());
 
             //鏌ヨ绔欑偣浜嬮」鐩稿叧
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/app/web/AppController.java b/base-manager/src/main/java/com/mortals/xhx/module/app/web/AppController.java
index 49dc98ebb7b0e3f57eec2c4ee1e475153332f524..6c409df33055be7908eaa7d89c966845e724e706 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/app/web/AppController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/app/web/AppController.java
@@ -2,6 +2,7 @@ package com.mortals.xhx.module.app.web;
 
 import cn.hutool.core.net.url.UrlBuilder;
 import cn.hutool.core.util.ZipUtil;
+import com.mortals.framework.annotation.UnAuth;
 import com.mortals.framework.ap.GlobalSysInfo;
 import com.mortals.framework.common.Rest;
 import com.mortals.framework.exception.AppException;
@@ -69,6 +70,16 @@ public class AppController extends BaseCRUDJsonBodyMappingController<AppService,
     }
 
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(AppEntity query) {
+        return super.list(query);
+    }
+
     /**
      * @param query
      * @param model
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/area/web/AreaController.java b/base-manager/src/main/java/com/mortals/xhx/module/area/web/AreaController.java
index cfc302d55d9d1f154113d47abafa991ee0a18f8d..e499adf08c1f39027e29e28e8067443515c5a1d2 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/area/web/AreaController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/area/web/AreaController.java
@@ -2,6 +2,7 @@ package com.mortals.xhx.module.area.web;
 
 import com.alibaba.fastjson.JSONObject;
 import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
 import com.mortals.xhx.base.system.param.service.ParamService;
@@ -49,6 +50,26 @@ public class AreaController extends BaseCRUDJsonBodyMappingController<AreaServic
     }
 
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(AreaEntity query) {
+        return super.list(query);
+    }
+
+    /**
+     * @param id
+     * @return
+     */
+    @Override
+    @UnAuth
+    public String info(Long id) {
+        return super.info(id);
+    }
+
     /**
      * 鑾峰彇绔欑偣涓嬫媺鏍戝垪琛�
      */
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/business/web/BusinessController.java b/base-manager/src/main/java/com/mortals/xhx/module/business/web/BusinessController.java
index d1a8ef6ea1397731448055210bf63a05fba41577..2b072e138624e46696c600fa47b0866716f40f21 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/business/web/BusinessController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/business/web/BusinessController.java
@@ -1,6 +1,8 @@
 package com.mortals.xhx.module.business.web;
 
 import com.alibaba.fastjson.JSONObject;
+import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.exception.AppException;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.model.PageInfo;
@@ -49,6 +51,15 @@ public class BusinessController extends BaseCRUDJsonBodyMappingController<Busine
         super.init(model, context);
     }
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(BusinessEntity query) {
+        return super.list(query);
+    }
 
     @Override
     protected void doListBefore(BusinessEntity query, Map<String, Object> model, Context context) throws AppException {
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/business/web/BusinessMatterController.java b/base-manager/src/main/java/com/mortals/xhx/module/business/web/BusinessMatterController.java
index 220072c9e4b52030cddee2ec0593fa9fc94b747f..7624a62b426d480ecada61ac2291b09480161ac9 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/business/web/BusinessMatterController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/business/web/BusinessMatterController.java
@@ -1,6 +1,8 @@
 package com.mortals.xhx.module.business.web;
 
 import com.alibaba.fastjson.JSONObject;
+import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.exception.AppException;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.model.PageInfo;
@@ -47,6 +49,15 @@ public class BusinessMatterController extends BaseCRUDJsonBodyMappingController<
     }
 
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(BusinessMatterEntity query) {
+        return super.list(query);
+    }
 
     @PostMapping(value = "businesslist")
     public String getListByBusiness(@RequestBody BusinessMatterQuery query) {
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/dept/web/DeptController.java b/base-manager/src/main/java/com/mortals/xhx/module/dept/web/DeptController.java
index 74affc475f26bae28a6e1566dc236538998e20a2..70ff4ffa51faaa6c9f0e10e4e4510715c4c350f2 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/dept/web/DeptController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/dept/web/DeptController.java
@@ -52,10 +52,30 @@ public class DeptController extends BaseCRUDJsonBodyMappingController<DeptServic
         super.setModuleDesc("閮ㄩ棬");
     }
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(DeptEntity query) {
+        return super.list(query);
+    }
+
+    /**
+     * @param id
+     * @return
+     */
+    @Override
+    @UnAuth
+    public String info(Long id) {
+        return super.info(id);
+    }
+
     @Override
     protected void doListBefore(DeptEntity query, Map<String, Object> model, Context context) throws AppException {
 
-        if(ObjectUtils.isEmpty(query.getIdList())){
+        if (ObjectUtils.isEmpty(query.getIdList())) {
             if (ObjectUtils.isEmpty(query.getOrderColList())) {
                 query.setOrderColList(new ArrayList<OrderCol>() {
                     {
@@ -66,7 +86,7 @@ public class DeptController extends BaseCRUDJsonBodyMappingController<DeptServic
             } else {
                 query.getOrderColList().add(new OrderCol("a.createTime", OrderCol.DESCENDING));
             }
-        }else{
+        } else {
 
         }
         if (!ObjectUtils.isEmpty(query.getFilter()) && YesNoEnum.YES.getValue() == query.getFilter()) {
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterAcceptController.java b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterAcceptController.java
index a74c45ab255e828eebbb2bd3d2ffb2b3b8c45309..83117cc2a684929415d3bb6619ebc1b8ded3b1cf 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterAcceptController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterAcceptController.java
@@ -1,5 +1,7 @@
 package com.mortals.xhx.module.matter.web;
 
+import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
 import com.mortals.framework.web.BasePhpCRUDJsonMappingController;
@@ -35,4 +37,13 @@ public class MatterAcceptController extends BaseCRUDJsonBodyMappingController<Ma
         super.init(model, context);
     }
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(MatterAcceptEntity query) {
+        return super.list(query);
+    }
 }
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterChargesController.java b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterChargesController.java
index 3179f6461a4f5b43be64e6fcfbd54e3f7635dbc1..87a85e9c3445d9159f2a40bdf6da3d7550609d94 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterChargesController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterChargesController.java
@@ -1,5 +1,7 @@
 package com.mortals.xhx.module.matter.web;
 
+import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
 import com.mortals.framework.web.BasePhpCRUDJsonMappingController;
@@ -35,4 +37,13 @@ public class MatterChargesController extends BaseCRUDJsonBodyMappingController<M
         super.init(model, context);
     }
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(MatterChargesEntity query) {
+        return super.list(query);
+    }
 }
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterController.java b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterController.java
index 4e1cbc827060ba0afc21b02cc415101269d0e71c..96d61b831a8c377a3795102e95a4d9abc7685c90 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterController.java
@@ -132,6 +132,25 @@ public class MatterController extends BaseCRUDJsonBodyMappingController<MatterSe
         super.init(model, context);
     }
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(MatterEntity query) {
+        return super.list(query);
+    }
+
+    /**
+     * @param id
+     * @return
+     */
+    @Override
+    @UnAuth
+    public String info(Long id) {
+        return super.info(id);
+    }
 
     /**
      * 娣诲姞浜嬮」鍒扮珯鐐�
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterDatumController.java b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterDatumController.java
index f9004bdb360cc66181f40bb195c45b0849dff2eb..59f75caddfc2e9fcb453627734851e1984bc8ece 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterDatumController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterDatumController.java
@@ -1,5 +1,7 @@
 package com.mortals.xhx.module.matter.web;
 
+import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.exception.AppException;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
@@ -52,6 +54,15 @@ public class MatterDatumController extends BaseCRUDJsonBodyMappingController<Mat
         super.init(model, context);
     }
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(MatterDatumEntity query) {
+        return super.list(query);
+    }
 
     @Override
     protected int viewAfter(Long id, Map<String, Object> model, MatterDatumEntity entity, Context context) throws AppException {
@@ -60,6 +71,21 @@ public class MatterDatumController extends BaseCRUDJsonBodyMappingController<Mat
         return super.viewAfter(id, model, entity, context);
     }
 
+    /**
+     * @param id
+     * @param model
+     * @param entity
+     * @param context
+     * @return
+     * @throws AppException
+     */
+    @Override
+    protected int infoAfter(Long id, Map<String, Object> model, MatterDatumEntity entity, Context context) throws AppException {
+        List<MatterDatumFileEntity> matterDatumFileEntities = matterDatumFileService.find(new MatterDatumFileQuery().datumId(entity.getId()));
+        entity.setDatumFileList(matterDatumFileEntities);
+        return super.infoAfter(id, model, entity, context);
+    }
+
     /**
      * @param query
      * @param model
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterDatumFileController.java b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterDatumFileController.java
index 02d66d13b36f24eae80763477441a7ef6a8d9d7b..c12ea7299dbaa1c7ec3cc77f30c2c7977e3b3ab6 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterDatumFileController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterDatumFileController.java
@@ -1,5 +1,7 @@
 package com.mortals.xhx.module.matter.web;
 
+import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
 import com.mortals.framework.web.BasePhpCRUDJsonMappingController;
@@ -11,8 +13,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Map;
+
 /**
- *
  * 鏉愭枡闄勪欢
  *
  * @author zxfei
@@ -20,20 +22,29 @@ import java.util.Map;
  */
 @RestController
 @RequestMapping("matter/datum/file")
-public class MatterDatumFileController extends BaseCRUDJsonBodyMappingController<MatterDatumFileService,MatterDatumFileEntity,Long> {
+public class MatterDatumFileController extends BaseCRUDJsonBodyMappingController<MatterDatumFileService, MatterDatumFileEntity, Long> {
 
     @Autowired
     private ParamService paramService;
 
-    public MatterDatumFileController(){
-        super.setModuleDesc( "鏉愭枡闄勪欢");
+    public MatterDatumFileController() {
+        super.setModuleDesc("鏉愭枡闄勪欢");
     }
 
     @Override
-    protected void init( Map<String, Object> model, Context context) {
-        this.addDict(model, "filetype", paramService.getParamBySecondOrganize("MatterDatumFile","filetype"));
-        this.addDict(model, "source", paramService.getParamBySecondOrganize("MatterDatumFile","source"));
-        super.init( model, context);
+    protected void init(Map<String, Object> model, Context context) {
+        this.addDict(model, "filetype", paramService.getParamBySecondOrganize("MatterDatumFile", "filetype"));
+        this.addDict(model, "source", paramService.getParamBySecondOrganize("MatterDatumFile", "source"));
+        super.init(model, context);
     }
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(MatterDatumFileEntity query) {
+        return super.list(query);
+    }
 }
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterFlowlimitController.java b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterFlowlimitController.java
index 520d4f030fc84478bb80e307e737752c1f6e4abe..23a4dd31595c768f0a50eb4a78bbc3feaaf54648 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterFlowlimitController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterFlowlimitController.java
@@ -1,5 +1,7 @@
 package com.mortals.xhx.module.matter.web;
 
+import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
 import com.mortals.framework.web.BasePhpCRUDJsonMappingController;
@@ -35,5 +37,13 @@ public class MatterFlowlimitController extends BaseCRUDJsonBodyMappingController
         super.init(model, context);
     }
 
-
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(MatterFlowlimitEntity query) {
+        return super.list(query);
+    }
 }
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterIntermediaryController.java b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterIntermediaryController.java
index 070f119ea4b37c432475c4f5ac723d2b6989f19b..c5833313da3e2a6d424b5068d2f005aae16cd5b4 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterIntermediaryController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterIntermediaryController.java
@@ -1,5 +1,7 @@
 package com.mortals.xhx.module.matter.web;
 
+import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
 import com.mortals.framework.web.BasePhpCRUDJsonMappingController;
@@ -35,4 +37,13 @@ public class MatterIntermediaryController extends BaseCRUDJsonBodyMappingControl
         super.init(model, context);
     }
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(MatterIntermediaryEntity query) {
+        return super.list(query);
+    }
 }
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterQuestionController.java b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterQuestionController.java
index ff1473d1d0ffb886a9796fb5a944c4665c7409b5..c8b3ae3e55435700b0941ac1c7843d46313b1dd2 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterQuestionController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterQuestionController.java
@@ -1,5 +1,7 @@
 package com.mortals.xhx.module.matter.web;
 
+import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
 import com.mortals.framework.web.BasePhpCRUDJsonMappingController;
@@ -35,5 +37,13 @@ public class MatterQuestionController extends BaseCRUDJsonBodyMappingController<
         super.init(model, context);
     }
 
-
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(MatterQuestionEntity query) {
+        return super.list(query);
+    }
 }
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterSetbaseController.java b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterSetbaseController.java
index 7166939c7aaf0a79f966858137829267cecc11f9..085f583eaea7f9c33dd10e1500a98e9329b487d1 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterSetbaseController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/matter/web/MatterSetbaseController.java
@@ -1,5 +1,7 @@
 package com.mortals.xhx.module.matter.web;
 
+import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
 import com.mortals.framework.web.BasePhpCRUDJsonMappingController;
@@ -36,4 +38,13 @@ public class MatterSetbaseController extends BaseCRUDJsonBodyMappingController<M
         super.init(model, context);
     }
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(MatterSetbaseEntity query) {
+        return super.list(query);
+    }
 }
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteBusinessController.java b/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteBusinessController.java
index 2f3ed58ef144b837578fbfd95dde567314589140..22d0d4ee0d7539112ed55cbeaee8382b445c91b6 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteBusinessController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteBusinessController.java
@@ -1,6 +1,8 @@
 package com.mortals.xhx.module.site.web;
 
 import com.alibaba.fastjson.JSONObject;
+import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.exception.AppException;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.model.PageInfo;
@@ -56,6 +58,15 @@ public class SiteBusinessController extends BaseCRUDJsonBodyMappingController<Si
         super.init(model, context);
     }
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(SiteBusinessEntity query) {
+        return super.list(query);
+    }
 
     @PostMapping("list/exclude")
     public String excludeList(SiteBusinessEntity query) {
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteController.java b/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteController.java
index 316f75042c1b9a6fef21f7c28d89bedc6257aead..2d0559d0ad94ca0d745883a2aade5aff7a1eb20b 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteController.java
@@ -88,6 +88,25 @@ public class SiteController extends BaseCRUDJsonBodyMappingController<SiteServic
         super.init(model, context);
     }
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(SiteEntity query) {
+        return super.list(query);
+    }
+
+    /**
+     * @param id
+     * @return
+     */
+    @Override
+    @UnAuth
+    public String info(Long id) {
+        return super.info(id);
+    }
 
     /**
      * 鏋勫缓绔欑偣鏍�
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteHallController.java b/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteHallController.java
index 8be1c84b63cc7909f79b7be9a1e760c1eae9bd40..52d0958ba6d3cefa1fe853f05ce4daacf40598cf 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteHallController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteHallController.java
@@ -60,6 +60,26 @@ public class SiteHallController extends BaseCRUDJsonBodyMappingController<SiteHa
     }
 
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(SiteHallEntity query) {
+        return super.list(query);
+    }
+
+    /**
+     * @param id
+     * @return
+     */
+    @Override
+    @UnAuth
+    public String info(Long id) {
+        return super.info(id);
+    }
+
     /**
      * 鏍规嵁澶у巺鏌ヨ鎵€灞炰笟鍔�
      */
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteMatterController.java b/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteMatterController.java
index d7dffbcd0eccc4c7e6397f8a91d9c6be67dfdc92..4287b871f96a8ec11c3de06fb2f3084190ea4adf 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteMatterController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteMatterController.java
@@ -1,5 +1,7 @@
 package com.mortals.xhx.module.site.web;
 
+import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.exception.AppException;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.model.OrderCol;
@@ -34,6 +36,16 @@ public class SiteMatterController extends BaseCRUDJsonBodyMappingController<Site
         super.setModuleDesc("绔欑偣浜嬮」");
     }
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(SiteMatterEntity query) {
+        return super.list(query);
+    }
+
     /**
      * @param query
      * @param model
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteThemeController.java b/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteThemeController.java
index a95bc570b208bee502c8984d83518692036b280a..afab140888f5a4ae53b822d468e82fbd65fb17a4 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteThemeController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteThemeController.java
@@ -1,4 +1,6 @@
 package com.mortals.xhx.module.site.web;
+import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
 import com.mortals.xhx.base.system.param.service.ParamService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -46,4 +48,13 @@ public class SiteThemeController extends BaseCRUDJsonBodyMappingController<SiteT
     }
 
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(SiteThemeEntity query) {
+        return super.list(query);
+    }
 }
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteThemeMatterController.java b/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteThemeMatterController.java
index d7c8b3b4a619dbb4d456ee61aabbc704301558d1..0007574ae85fdbe39d596da26845d45f83024435 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteThemeMatterController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/site/web/SiteThemeMatterController.java
@@ -1,4 +1,6 @@
 package com.mortals.xhx.module.site.web;
+import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
 import com.mortals.xhx.base.system.param.service.ParamService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,5 +49,13 @@ public class SiteThemeMatterController extends BaseCRUDJsonBodyMappingController
         super.init(model, context);
     }
 
-
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(SiteThemeMatterEntity query) {
+        return super.list(query);
+    }
 }
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/skin/web/SkinBaseController.java b/base-manager/src/main/java/com/mortals/xhx/module/skin/web/SkinBaseController.java
index 1047af9fd31571cff712059580b76af90035e725..ad230491f99e1c7c491b86629e89bc7e211df32a 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/skin/web/SkinBaseController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/skin/web/SkinBaseController.java
@@ -5,7 +5,9 @@ import cn.hutool.core.net.url.UrlBuilder;
 import cn.hutool.core.util.CharsetUtil;
 import cn.hutool.core.util.ReUtil;
 import cn.hutool.core.util.StrUtil;
+import com.mortals.framework.annotation.UnAuth;
 import com.mortals.framework.ap.GlobalSysInfo;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.exception.AppException;
 import com.mortals.framework.util.DataUtil;
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
@@ -73,6 +75,26 @@ public class SkinBaseController extends BaseCRUDJsonBodyMappingController<SkinBa
     }
 
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(SkinBaseEntity query) {
+        return super.list(query);
+    }
+
+    /**
+     * @param id
+     * @return
+     */
+    @Override
+    @UnAuth
+    public String info(Long id) {
+        return super.info(id);
+    }
+
     @Override
     protected void doListBefore(SkinBaseEntity query, Map<String, Object> model, Context context) throws AppException {
 
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/sms/web/SmsSetController.java b/base-manager/src/main/java/com/mortals/xhx/module/sms/web/SmsSetController.java
index 2eb93e6759da387f3651ac91c54f959e0fab6858..3e3c82d642c87940afc2fd99170efc0f608f473a 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/sms/web/SmsSetController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/sms/web/SmsSetController.java
@@ -1,5 +1,7 @@
 package com.mortals.xhx.module.sms.web;
 
+import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
 import com.mortals.framework.web.BasePhpCRUDJsonMappingController;
@@ -36,4 +38,23 @@ public class SmsSetController extends BaseCRUDJsonBodyMappingController<SmsSetSe
         super.init(model, context);
     }
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(SmsSetEntity query) {
+        return super.list(query);
+    }
+
+    /**
+     * @param id
+     * @return
+     */
+    @Override
+    @UnAuth
+    public String info(Long id) {
+        return super.info(id);
+    }
 }
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/window/model/WindowEntity.java b/base-manager/src/main/java/com/mortals/xhx/module/window/model/WindowEntity.java
index 0966cfae2e929d4973e91117c9250f407553f33f..d63bf268d686a4944941ec572bf250aa5ab1fa90 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/window/model/WindowEntity.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/window/model/WindowEntity.java
@@ -31,6 +31,7 @@ public class WindowEntity extends WindowVo {
     /**
      * 閮ㄩ棬鍚嶇О
      */
+    @Excel(name = "閮ㄩ棬鍚嶇О")
     private String deptName;
     /**
      * 绐楀彛鍚嶇О
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/window/service/WindowHallService.java b/base-manager/src/main/java/com/mortals/xhx/module/window/service/WindowHallService.java
index 6001be767fc60323b449843eef47414531ba7d33..0ca94bb1716809d86cedbfd85ee9be643f6dec70 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/window/service/WindowHallService.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/window/service/WindowHallService.java
@@ -3,6 +3,7 @@ import com.mortals.framework.exception.AppException;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.model.PageInfo;
 import com.mortals.framework.model.Result;
+import com.mortals.framework.service.ICRUDCacheService;
 import com.mortals.framework.service.ICRUDService;
 import com.mortals.xhx.module.matter.model.MatterEntity;
 import com.mortals.xhx.module.window.model.WindowHallEntity;
@@ -15,7 +16,7 @@ import com.mortals.xhx.module.window.dao.WindowHallDao;
 * @author zxfei
 * @date 2023-04-25
 */
-public interface WindowHallService extends ICRUDService<WindowHallEntity,Long>{
+public interface WindowHallService extends ICRUDCacheService<WindowHallEntity,Long> {
 
     WindowHallDao getDao();
 
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/window/service/impl/WindowBusinessServiceImpl.java b/base-manager/src/main/java/com/mortals/xhx/module/window/service/impl/WindowBusinessServiceImpl.java
index d9d1d385ed72c8917fb2d94ed71237a93f3dad18..f6af47bf244c2354c7030c035d6f243b682c5306 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/window/service/impl/WindowBusinessServiceImpl.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/window/service/impl/WindowBusinessServiceImpl.java
@@ -52,9 +52,12 @@ public class WindowBusinessServiceImpl extends AbstractCRUDServiceImpl<WindowBus
 
     @Override
     protected void findAfter(WindowBusinessEntity entity, PageInfo pageInfo, Context context, List<WindowBusinessEntity> list) throws AppException {
-        Map<Long, WindowEntity> collect = windowService.findToMap(new WindowQuery(), context);
 
-        Map<Long, WindowHallEntity> windowHallEntityMap = windowHallService.find(new WindowHallQuery(), context).parallelStream().collect(Collectors.toMap(x -> x.getWindowId(), Function.identity()));
+        Map<Long, WindowEntity> collect = windowService.getCacheList().stream().collect(Collectors.toMap(x -> x.getId(), y -> y, (o, n) -> n));
+        //Map<Long, WindowEntity> collect = windowService.findToMap(new WindowQuery(), context);
+        Map<Long, WindowHallEntity> windowHallEntityMap = windowHallService.getCacheList().stream().collect(Collectors.toMap(x -> x.getId(), y -> y, (o, n) -> n));
+
+        //Map<Long, WindowHallEntity> windowHallEntityMap = windowHallService.find(new WindowHallQuery(), context).parallelStream().collect(Collectors.toMap(x -> x.getWindowId(), Function.identity()));
         Iterator iterator = list.iterator();
         while (iterator.hasNext()) {
             WindowBusinessEntity item = (WindowBusinessEntity) iterator.next();
@@ -67,7 +70,7 @@ public class WindowBusinessServiceImpl extends AbstractCRUDServiceImpl<WindowBus
                 if (!ObjectUtils.isEmpty(windowHallEntity)) {
                     item.setHallId(windowHallEntity.getHallId());
                     item.setHallName(windowHallEntity.getHallName());
-                }else {
+                } else {
                     //log.info("windowhallEntity is null windowId:{}",item.getWindowId());
                 }
             } else {
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/window/service/impl/WindowHallServiceImpl.java b/base-manager/src/main/java/com/mortals/xhx/module/window/service/impl/WindowHallServiceImpl.java
index 6591fae6e185c8f2d226c79a05a830cea787b85f..d60fa928c3b700f1b81e6e77f8eb63405701eabc 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/window/service/impl/WindowHallServiceImpl.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/window/service/impl/WindowHallServiceImpl.java
@@ -2,6 +2,7 @@ package com.mortals.xhx.module.window.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.mortals.framework.model.PageInfo;
+import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl;
 import com.mortals.xhx.module.window.model.WindowEntity;
 import com.mortals.xhx.module.window.model.WindowQuery;
 import com.mortals.xhx.module.window.service.WindowService;
@@ -27,7 +28,7 @@ import java.util.stream.Collectors;
  * @date 2023-04-25
  */
 @Service("windowHallService")
-public class WindowHallServiceImpl extends AbstractCRUDServiceImpl<WindowHallDao, WindowHallEntity, Long> implements WindowHallService {
+public class WindowHallServiceImpl extends AbstractCRUDCacheServiceImpl<WindowHallDao, WindowHallEntity, Long> implements WindowHallService {
 
     @Autowired
     private WindowService windowService;
@@ -41,8 +42,14 @@ public class WindowHallServiceImpl extends AbstractCRUDServiceImpl<WindowHallDao
      */
     @Override
     protected void findAfter(WindowHallEntity params, PageInfo pageInfo, Context context, List<WindowHallEntity> list) throws AppException {
-        super.findAfter(params, pageInfo, context, list);
-        List<Long> collect = list.stream().map(i -> i.getWindowId()).distinct().collect(Collectors.toList());
+
+        Map<Long, WindowEntity> collectWin = windowService.getCacheList().stream().collect(Collectors.toMap(x -> x.getId(), y -> y, (o, n) -> n));
+        list.forEach(item -> {
+            WindowEntity windowEntity = collectWin.get(item.getWindowId());
+            item.setFromnum(windowEntity == null ? "" : windowEntity.getFromnum());
+        });
+
+     /*   List<Long> collect = list.stream().map(i -> i.getWindowId()).distinct().collect(Collectors.toList());
         if (!ObjectUtils.isEmpty(collect)) {
             WindowQuery windowQuery = new WindowQuery();
             windowQuery.setIdList(collect);
@@ -51,6 +58,6 @@ public class WindowHallServiceImpl extends AbstractCRUDServiceImpl<WindowHallDao
                 WindowEntity windowEntity = collectWin.get(item.getWindowId());
                 item.setFromnum(windowEntity == null ? "" : windowEntity.getFromnum());
             });
-        }
+        }*/
     }
 }
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/window/web/WindowBusinessController.java b/base-manager/src/main/java/com/mortals/xhx/module/window/web/WindowBusinessController.java
index 710299a404f897b18c8705b180b25485709223d6..c2dd50576c2663e5762b2fc10de4b272992c2601 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/window/web/WindowBusinessController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/window/web/WindowBusinessController.java
@@ -1,6 +1,8 @@
 package com.mortals.xhx.module.window.web;
 
 import com.alibaba.fastjson.JSONObject;
+import com.mortals.framework.annotation.UnAuth;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.util.DataUtil;
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
 import com.mortals.framework.web.BasePhpCRUDJsonMappingController;
@@ -34,6 +36,13 @@ public class WindowBusinessController extends BaseCRUDJsonBodyMappingController<
         super.setModuleDesc("绐楀彛涓氬姟");
     }
 
-
-
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(WindowBusinessEntity query) {
+        return super.list(query);
+    }
 }
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/window/web/WindowController.java b/base-manager/src/main/java/com/mortals/xhx/module/window/web/WindowController.java
index 58cdaa9073183cdc1f6cd066ae720d8335df5f26..9711d10b37eba199275283f5c80eff3727fc2f7d 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/window/web/WindowController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/window/web/WindowController.java
@@ -12,6 +12,7 @@ import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
 import com.mortals.framework.web.BasePhpCRUDJsonMappingController;
 import com.mortals.xhx.base.system.param.service.ParamService;
 import com.mortals.xhx.module.dept.model.DeptEntity;
+import com.mortals.xhx.module.dept.model.DeptQuery;
 import com.mortals.xhx.module.dept.service.DeptService;
 import com.mortals.xhx.module.matter.model.MatterEntity;
 import com.mortals.xhx.module.site.model.SiteEntity;
@@ -28,6 +29,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -76,6 +78,25 @@ public class WindowController extends BaseCRUDJsonBodyMappingController<WindowSe
         super.init(model, context);
     }
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(WindowEntity query) {
+        return super.list(query);
+    }
+
+    /**
+     * @param id
+     * @return
+     */
+    @Override
+    @UnAuth
+    public String info(Long id) {
+        return super.info(id);
+    }
 
     /**
      * 娣诲姞涓氬姟鍒扮獥鍙�
@@ -186,6 +207,27 @@ public class WindowController extends BaseCRUDJsonBodyMappingController<WindowSe
             if (!ObjectUtils.isEmpty(deptEntity)) {
                 windowEntity.setDeptId(deptEntity.getId());
                 windowEntity.setDeptName(deptEntity.getName());
+            }else {
+                //鍒ゆ柇鏄惁濉叆浜嗛儴闂ㄥ悕绉�
+                if(!ObjectUtils.isEmpty(windowEntity.getDeptName())){
+                    //鏍规嵁閮ㄩ棬鍚嶇О涓庣珯鐐� 鏇存柊绐楀彛
+                    DeptQuery deptQuery = new DeptQuery();
+                    deptQuery.setName(windowEntity.getDeptName());
+                    deptQuery.setSiteId(DataUtil.converStr2Long(siteId,0L));
+                    deptEntity = deptService.selectOne(deptQuery);
+                    if(!ObjectUtils.isEmpty(deptEntity)){
+                        windowEntity.setDeptId(deptEntity.getId());
+                        windowEntity.setDeptName(deptEntity.getName());
+                    }
+                }
+            }
+        }
+        //siteId涓虹┖ 鎴杁eptId涓虹┖  鍒欏垹闄� 涓嶅鍏�
+        Iterator<WindowEntity> iterator = list.iterator();
+        while (iterator.hasNext()) {
+            WindowEntity next =  iterator.next();
+            if(ObjectUtils.isEmpty(next.getSiteId())||ObjectUtils.isEmpty(next.getDeptId())){
+                iterator.remove();
             }
         }
     }
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/window/web/WindowMatterController.java b/base-manager/src/main/java/com/mortals/xhx/module/window/web/WindowMatterController.java
index 11aa0332056657a51da70557ae1cadf1643aff8b..9022f927e40e64e6811725c92d55e8947901213f 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/window/web/WindowMatterController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/window/web/WindowMatterController.java
@@ -2,7 +2,9 @@ package com.mortals.xhx.module.window.web;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.mortals.framework.annotation.UnAuth;
 import com.mortals.framework.ap.GlobalSysInfo;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.exception.AppException;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.model.OrderCol;
@@ -45,6 +47,15 @@ public class WindowMatterController extends BaseCRUDJsonBodyMappingController<Wi
         super.setModuleDesc("绐楀彛浜嬮」");
     }
 
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    @UnAuth
+    public Rest<Object> list(WindowMatterEntity query) {
+        return super.list(query);
+    }
 
     @Override
     protected void doListBefore(WindowMatterEntity query, Map<String, Object> model, Context context) throws AppException {
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/workman/web/WorkmanController.java b/base-manager/src/main/java/com/mortals/xhx/module/workman/web/WorkmanController.java
index a96b3829e51d0e8466a72a2f97e7666cea42ec8d..ea6867195571ad0485259b65ebb4bd79484dffae 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/workman/web/WorkmanController.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/workman/web/WorkmanController.java
@@ -69,6 +69,14 @@ public class WorkmanController extends BaseCRUDJsonBodyMappingController<Workman
         super.init(model, context);
     }
 
+    /**
+     * @param query
+     * @return
+     */
+    @PostMapping(value = "interList")
+    public Rest<Object> interList(@RequestBody  WorkmanEntity query) {
+        return super.list(query);
+    }
 
     /**
      *
@@ -118,6 +126,8 @@ public class WorkmanController extends BaseCRUDJsonBodyMappingController<Workman
     }
 
 
+
+
     @PostMapping(value = "doImportPic")
     public String doImportPic(@RequestBody WorkmanEntity query) {
         JSONObject ret = new JSONObject();
diff --git a/base-manager/src/main/resources/sqlmap/module/app/AppDatasetMapperExt.xml b/base-manager/src/main/resources/sqlmap/module/app/AppDatasetMapperExt.xml
index 490df589fe9afb9d1e7bdd6c8154ecff1166f03d..c783b38f1156ed94fe87c0524f6f82f76f4977e1 100644
--- a/base-manager/src/main/resources/sqlmap/module/app/AppDatasetMapperExt.xml
+++ b/base-manager/src/main/resources/sqlmap/module/app/AppDatasetMapperExt.xml
@@ -57,6 +57,42 @@
                 </if>-->
             </trim>
         </trim>
+        <if test="(orderColList == null or orderColList.isEmpty()) and orderCol != null and !orderCol.isEmpty()">
+            order by
+
+            CASE
+            WHEN fieldType = 'date' THEN  STR_TO_DATE(fieldValue, '%Y-%m-%d')
+            ELSE NULL
+            END
+
+            <trim prefix="," suffixOverrides=","  suffix="">
+                <if test="orderCol.containsKey('id')">
+                    a.id
+                    <if test='orderCol.id != null and "DESC".equalsIgnoreCase(orderCol.id)'>DESC</if>
+                    ,
+                </if>
+                <if test="orderCol.containsKey('appId')">
+                    a.appId
+                    <if test='orderCol.appId != null and "DESC".equalsIgnoreCase(orderCol.appId)'>DESC</if>
+                    ,
+                </if>
+                <if test="orderCol.containsKey('createTime')">
+                    a.createTime
+                    <if test='orderCol.createTime != null and "DESC".equalsIgnoreCase(orderCol.createTime)'>DESC</if>
+                    ,
+                </if>
+                <if test="orderCol.containsKey('updateUserId')">
+                    a.updateUserId
+                    <if test='orderCol.updateUserId != null and "DESC".equalsIgnoreCase(orderCol.updateUserId)'>DESC</if>
+                    ,
+                </if>
+                <if test="orderCol.containsKey('updateTime')">
+                    a.updateTime
+                    <if test='orderCol.updateTime != null and "DESC".equalsIgnoreCase(orderCol.updateTime)'>DESC</if>
+                    ,
+                </if>
+            </trim>
+        </if>
     </select>
 
     <!-- 鏉′欢鏄犲皠 -->
diff --git a/base-manager/src/main/resources/sqlmap/module/matter/MatterDatumMapper.xml b/base-manager/src/main/resources/sqlmap/module/matter/MatterDatumMapper.xml
index e9c8c6d27770f6da70b892266c9a70a40914f906..d3859d78932fbf195c9547bed5c82aa7a67a114a 100644
--- a/base-manager/src/main/resources/sqlmap/module/matter/MatterDatumMapper.xml
+++ b/base-manager/src/main/resources/sqlmap/module/matter/MatterDatumMapper.xml
@@ -38,6 +38,7 @@
         <result property="datumId" column="datumId" />
         <result property="fileName" column="fileName" />
         <result property="fileUrl" column="fileUrl" />
+        <result property="localFileUrl" column="localFileUrl" />
         <result property="filetype" column="filetype" />
         <result property="source" column="source" />
         <result property="createTime" column="createTime" />
@@ -133,7 +134,7 @@
     <!-- 瀛愯〃鎵€鏈夊垪 -->
     <sql id="_columns_sub">
         <trim suffixOverrides="," suffix="">
-            b.id,b.datumId,b.fileName,b.fileUrl,b.filetype,b.source,b.createTime,b.createUserId,b.updateTime,b.materialName,
+            b.id,b.datumId,b.fileName,b.fileUrl,b.localFileUrl,b.filetype,b.source,b.createTime,b.createUserId,b.updateTime,b.materialName,
         </trim>
     </sql>
     <!-- 鏂板 鍖哄垎涓婚敭鑷鍔犺繕鏄笟鍔℃彃鍏� -->
diff --git a/base-manager/src/test/java/com/mortals/httpclient/app/AppDatasetController.http b/base-manager/src/test/java/com/mortals/httpclient/app/AppDatasetController.http
index ba9c53f042cde943aa9b5ad964e16eec185732e2..ac348b927df9834656c0ef69b0fb56f071a91c1d 100644
--- a/base-manager/src/test/java/com/mortals/httpclient/app/AppDatasetController.http
+++ b/base-manager/src/test/java/com/mortals/httpclient/app/AppDatasetController.http
@@ -18,15 +18,6 @@ POST {{baseUrl}}/app/dataset/list
 Content-Type: application/json
 
 {
-  "siteId": 1,
-  "appId": 79,
-  "orConditionList": [ {
-    "fieldCode":"year",
-    "fieldValue":"2022"
-  },{
-    "fieldCode":"yOrm",
-    "fieldValue":"0"
-  }],
   "page": 1,
   "size": 10
 }
diff --git a/base-manager/src/test/java/com/mortals/httpclient/dept/DeptController.http b/base-manager/src/test/java/com/mortals/httpclient/dept/DeptController.http
index 624764303996062f49952625e69be43691c6c367..579e225163ca4221808662f1ddec476aa15cc581 100644
--- a/base-manager/src/test/java/com/mortals/httpclient/dept/DeptController.http
+++ b/base-manager/src/test/java/com/mortals/httpclient/dept/DeptController.http
@@ -3,7 +3,7 @@
 POST {{baseUrl}}/dept/list
 Content-Type: application/json
 
-{"siteId":1,"page":"1","size":"-1","orderColList":[{"colName":"sort","sortKind":"asc"}]}
+{}
 
 
 ###閮ㄩ棬鍒楄〃1
diff --git a/base-manager/src/test/java/com/mortals/httpclient/holiday/HolidayController.http b/base-manager/src/test/java/com/mortals/httpclient/holiday/HolidayController.http
index 905d603fab05c71ef99f85f9d0f5cb82a768fbab..c105a8dbfcc97996d3b6b022ada386ef6c9e987b 100644
--- a/base-manager/src/test/java/com/mortals/httpclient/holiday/HolidayController.http
+++ b/base-manager/src/test/java/com/mortals/httpclient/holiday/HolidayController.http
@@ -4,11 +4,6 @@ POST {{baseUrl}}/holiday/list
 Content-Type: application/json
 
 {
-    "siteId":9033 ,
-    "name":"adqb9k" ,
-    "year":1996 ,
-    "page":1,
-    "size":10
 }
 
 
diff --git a/base-manager/src/test/java/com/mortals/httpclient/matter/MatterController.http b/base-manager/src/test/java/com/mortals/httpclient/matter/MatterController.http
index 4bcef9574ec62a71beae51a25c397fbec1a77823..109df6514463c0e3db953da04277668fd7096e09 100644
--- a/base-manager/src/test/java/com/mortals/httpclient/matter/MatterController.http
+++ b/base-manager/src/test/java/com/mortals/httpclient/matter/MatterController.http
@@ -124,7 +124,7 @@ client.global.set("Matter_id", JSON.parse(response.body).data.id);
 %}
 
 ###鍩虹浜嬮」鏌ョ湅
-GET {{baseUrl}}/matter/info?id=39654
+GET {{baseUrl}}/matter/info?id=34081
 Accept: application/json
 
 ###鍩虹浜嬮」缂栬緫
diff --git a/base-manager/src/test/java/com/mortals/httpclient/matter/MatterDatumController.http b/base-manager/src/test/java/com/mortals/httpclient/matter/MatterDatumController.http
index 38f7b1dfa191955e28b53e7c83f8c6fb66e09755..5ad5ac067d63608c4481a0d793298a094df3e300 100644
--- a/base-manager/src/test/java/com/mortals/httpclient/matter/MatterDatumController.http
+++ b/base-manager/src/test/java/com/mortals/httpclient/matter/MatterDatumController.http
@@ -4,9 +4,6 @@ POST {{baseUrl}}/matter/datum/list
 Content-Type: application/json
 
 {
-    "matterId":3227 ,
-    "matterName":"r4s0v4" ,
-    "materialName":"b2fx5n" ,
     "page":1,
     "size":10
 }
@@ -60,7 +57,7 @@ client.global.set("MatterDatum_id", JSON.parse(response.body).data.id);
 %}
 
 ###浜嬮」鐢宠鏉愭枡鏌ョ湅
-GET {{baseUrl}}/matter/datum/info?id={{MatterDatum_id}}
+GET {{baseUrl}}/matter/datum/info?id=53092
 Accept: application/json
 
 ###浜嬮」鐢宠鏉愭枡缂栬緫
diff --git a/base-manager/src/test/java/com/mortals/httpclient/site/SiteHallController.http b/base-manager/src/test/java/com/mortals/httpclient/site/SiteHallController.http
index 89c5c171f3eed622b033954c86d164d126e5846e..8d31344435bd59917f10881ce02b432702d5e88b 100644
--- a/base-manager/src/test/java/com/mortals/httpclient/site/SiteHallController.http
+++ b/base-manager/src/test/java/com/mortals/httpclient/site/SiteHallController.http
@@ -18,8 +18,9 @@ POST {{baseUrl}}/site/hall/list
 Content-Type: application/json
 
 {
-    "page":1,
-    "size":11
+  "siteId": 1,
+  "page": 1,
+  "size": -1
 }
 
 
diff --git a/base-manager/src/test/java/com/mortals/httpclient/window/WindowBusinessController.http b/base-manager/src/test/java/com/mortals/httpclient/window/WindowBusinessController.http
index 6c9b6468c1baedf7a2ca74bb9035b4e580bb0c2b..8cb164989b108330faf5536f6cf2f4738d2cff2a 100644
--- a/base-manager/src/test/java/com/mortals/httpclient/window/WindowBusinessController.http
+++ b/base-manager/src/test/java/com/mortals/httpclient/window/WindowBusinessController.http
@@ -3,11 +3,7 @@
 POST {{baseUrl}}/window/business/list
 Content-Type: application/json
 
-{
-    "page":1,
-    "size":10
-}
-
+{"windowIdList":["77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99"],"size":-1}
 
 ###绐楀彛涓氬姟鏇存柊涓庝繚瀛�
 POST {{baseUrl}}/window/business/save
diff --git a/base-manager/src/test/java/com/mortals/httpclient/window/WindowHallController.http b/base-manager/src/test/java/com/mortals/httpclient/window/WindowHallController.http
index d7d96bc63da8b2ddeafea136567898545241531a..8a5423f60ab163ad1c08f865a3a5b428dcead613 100644
--- a/base-manager/src/test/java/com/mortals/httpclient/window/WindowHallController.http
+++ b/base-manager/src/test/java/com/mortals/httpclient/window/WindowHallController.http
@@ -19,8 +19,7 @@ Content-Type: application/json
 
 {
     "page":1,
-    "size":-1,
-    "hallId": 11
+    "size":-1
 }
 
 
diff --git a/base-manager/src/test/java/com/mortals/httpclient/workman/WorkmanController.http b/base-manager/src/test/java/com/mortals/httpclient/workman/WorkmanController.http
index e7f37ead8806387247b98e875f5689c6bd2038f6..54e31c5bb01056bae049bf75dc6f026993327d46 100644
--- a/base-manager/src/test/java/com/mortals/httpclient/workman/WorkmanController.http
+++ b/base-manager/src/test/java/com/mortals/httpclient/workman/WorkmanController.http
@@ -13,11 +13,7 @@ POST {{baseUrl}}/workman/list
 Content-Type: application/json
 
 {
-    "page":1,
-
-    "size":10,
-    "andConditionList":[{"name":"%寮犱笁%","number":"%123%","deptName":"%123%","windowName":"%123%"}]
-}
+   }
 
 
 ###宸ヤ綔浜哄憳鏇存柊涓庝繚瀛�
diff --git a/common-lib/src/main/java/com/mortals/xhx/feign/area/IApiAreaFeign.java b/common-lib/src/main/java/com/mortals/xhx/feign/area/IApiAreaFeign.java
index ddee147e5dc796ac708064655b5bfdca7380f1ad..3369102b4c004dcd9d9eb0fad376308d76587d03 100644
--- a/common-lib/src/main/java/com/mortals/xhx/feign/area/IApiAreaFeign.java
+++ b/common-lib/src/main/java/com/mortals/xhx/feign/area/IApiAreaFeign.java
@@ -28,7 +28,7 @@ public interface IApiAreaFeign extends IFeign {
      * @param query
      * @return
      */
-    @PostMapping(value = "/area/list")
+    @PostMapping(value = "/area/interlist")
     String list(@RequestBody AreaEntity query);
 
 
@@ -38,7 +38,7 @@ public interface IApiAreaFeign extends IFeign {
      * @param id
      * @return
      */
-    @GetMapping(value = "/area/info")
+    @GetMapping(value = "/area/interinfo")
     String viewAreaInfo(@RequestParam(value = "id") Long id);
 
 
diff --git a/common-lib/src/main/java/com/mortals/xhx/feign/device/IDeviceFeign.java b/common-lib/src/main/java/com/mortals/xhx/feign/device/IDeviceFeign.java
index a14ee31e89b5721cc6c51e6f4e9144786c99a8ad..fcb2bde251f37034a72f40bfbb12fb105afd6396 100644
--- a/common-lib/src/main/java/com/mortals/xhx/feign/device/IDeviceFeign.java
+++ b/common-lib/src/main/java/com/mortals/xhx/feign/device/IDeviceFeign.java
@@ -26,7 +26,7 @@ public interface IDeviceFeign extends IFeign {
      * @param devicePdu
      * @return
      */
-    @PostMapping(value = "/device/list")
+    @PostMapping(value = "/device/interlist")
     Rest<RespData<List<DevicePdu>>> list(@RequestBody DevicePdu devicePdu);
 
 
@@ -36,7 +36,7 @@ public interface IDeviceFeign extends IFeign {
      * @param id
      * @return
      */
-    @GetMapping(value = "/device/info")
+    @GetMapping(value = "/device/interinfo")
     Rest<DevicePdu> info(@RequestParam(value = "id") Long id);
 
     /**
diff --git a/common-lib/src/main/java/com/mortals/xhx/feign/product/IProductFeign.java b/common-lib/src/main/java/com/mortals/xhx/feign/product/IProductFeign.java
index 07fd1944262d320b552e84c684f70e220ac03e70..27932ed78a48507abcffd4b710b6e51a841ba10b 100644
--- a/common-lib/src/main/java/com/mortals/xhx/feign/product/IProductFeign.java
+++ b/common-lib/src/main/java/com/mortals/xhx/feign/product/IProductFeign.java
@@ -22,7 +22,7 @@ public interface IProductFeign extends IFeign {
      * @param productPdu
      * @return
      */
-    @PostMapping(value = "/product/list")
+    @PostMapping(value = "/product/interlist")
     Rest<RespData<List<ProductPdu>>> list(@RequestBody ProductPdu productPdu);
 }
 
diff --git a/common-lib/src/main/java/com/mortals/xhx/feign/user/IUserFeign.java b/common-lib/src/main/java/com/mortals/xhx/feign/user/IUserFeign.java
index ba028ec78afdcc4153138b5240c83bceeba53a1d..78ba2f01416680ad5b06f70f4d0b29030eb900f7 100644
--- a/common-lib/src/main/java/com/mortals/xhx/feign/user/IUserFeign.java
+++ b/common-lib/src/main/java/com/mortals/xhx/feign/user/IUserFeign.java
@@ -29,7 +29,7 @@ public interface IUserFeign extends IFeign {
      * @param userPdu
      * @return
      */
-    @PostMapping(value = "/user/list")
+    @PostMapping(value = "/user/interlist")
     Rest<RespData<List<UserPdu>>> list(@RequestBody UserPdu userPdu);
 
 
@@ -39,7 +39,7 @@ public interface IUserFeign extends IFeign {
      * @param id
      * @return
      */
-    @GetMapping(value = "/user/info")
+    @GetMapping(value = "/user/interinfo")
     Rest<UserPdu> info(@RequestParam(value = "id") Long id);
 
     /**
diff --git a/common-lib/src/main/java/com/mortals/xhx/module/area/model/AreaTreeSelect.java b/common-lib/src/main/java/com/mortals/xhx/module/area/model/AreaTreeSelect.java
index 12f5268756001ecd17d1da8426ad7aabc24497b1..a201f4f6e16e59268261d6b7523709d0436f3d60 100644
--- a/common-lib/src/main/java/com/mortals/xhx/module/area/model/AreaTreeSelect.java
+++ b/common-lib/src/main/java/com/mortals/xhx/module/area/model/AreaTreeSelect.java
@@ -1,9 +1,12 @@
 package com.mortals.xhx.module.area.model;
 
+import cn.hutool.core.date.DateUtil;
 import lombok.Data;
 
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -70,4 +73,30 @@ public class AreaTreeSelect implements Serializable {
     }
 
 
+    public static void main(String[] args) {
+
+
+        int year = 2023; // 鐩爣骞翠唤
+        int week = 42;   // 鐩爣鍛ㄦ暟
+        int dayOfWeek = 2; // 鐩爣鏄熸湡鍑� (1 琛ㄧず鏄熸湡鏃ワ紝2 琛ㄧず鏄熸湡涓€锛屼互姝ょ被鎺�)
+
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.YEAR, year);
+        calendar.set(Calendar.WEEK_OF_YEAR, week);
+        calendar.set(Calendar.DAY_OF_WEEK, dayOfWeek);
+
+        int targetYear = calendar.get(Calendar.YEAR);
+        int targetMonth = calendar.get(Calendar.MONTH) + 1; // 鏈堜唤鏄粠 0 寮€濮嬭鏁扮殑锛屾墍浠ラ渶瑕� +1
+        int targetDay = calendar.get(Calendar.DAY_OF_MONTH);
+
+
+        System.out.println("鐩爣鏃ユ湡锛�" + targetYear + "-" + targetMonth + "-" + targetDay);
+
+
+        String 骞確鏈坃鏃� = DateUtil.format(new Date(), "骞� 鏈� 鏃�");
+        System.out.println(骞確鏈坃鏃�);
+
+    }
+
+
 }
\ No newline at end of file
diff --git a/portal-manager-ui/admin/src/api/user.js b/portal-manager-ui/admin/src/api/user.js
index 002651691f7640b6b6bb18e0c90b8fa0774e76ab..890ab1181f140ef69a837f9d84da624164e36c2e 100644
--- a/portal-manager-ui/admin/src/api/user.js
+++ b/portal-manager-ui/admin/src/api/user.js
@@ -20,3 +20,7 @@ export function changePassword(params) {
 export function editPassword(params) {
   return http.post(`${baseURL}/zwfw/user/reset/password`, params);
 }
+// 瀵嗙爜杩囨湡淇敼瀵嗙爜
+export function changeForgotPassword(params) {
+  return http.post(`${baseURL}/zwfw/user/forgot/password`, params);
+}
diff --git a/portal-manager-ui/admin/src/request/request.js b/portal-manager-ui/admin/src/request/request.js
index c88f7c0dfe1a62e6df61729569905b47c23bb798..94d928bbea5f3d6d74f9dfcb9584017b88496b66 100644
--- a/portal-manager-ui/admin/src/request/request.js
+++ b/portal-manager-ui/admin/src/request/request.js
@@ -59,7 +59,7 @@ axios.interceptors.response.use(
         message.error({
           content: msg,
           maxCount: 1,
-          duration: 1,
+          duration: 2,
         });
         store.commit("user/reset");
         router.push("/");
diff --git a/portal-manager-ui/admin/src/views/dataAdmin/components/AIEfficiency/reportForm.vue b/portal-manager-ui/admin/src/views/dataAdmin/components/AIEfficiency/reportForm.vue
index 21c690dce445e0f777d07d4242f62b39d4c3aa70..f2a82acc7af549c4a86bb1531b8e05348752a575 100644
--- a/portal-manager-ui/admin/src/views/dataAdmin/components/AIEfficiency/reportForm.vue
+++ b/portal-manager-ui/admin/src/views/dataAdmin/components/AIEfficiency/reportForm.vue
@@ -26,8 +26,8 @@
     </a-table>
   </div>
 </template>
-                
-  <script>
+
+<script>
 import { mapState } from "vuex";
 import storage from "@/utils/js/Storage";
 import { export2Excel } from "@/utils/js/exportExcel";
@@ -293,11 +293,10 @@ export default {
     },
     // 鏍煎紡鍖栨椂闂�
     dateFormat(val) {
-      return this.$moment(val).format("YYYY-MM-DD HH:mm:ss");
+      return this.$moment.unix(val).format("YYYY-MM-DD HH:mm:ss");
     },
   },
 };
 </script>
-                
-<style lang="less" scoped>
-</style>
\ No newline at end of file
+
+<style lang="less" scoped></style>
diff --git a/portal-manager-ui/admin/src/views/dataAdmin/components/pickUp/otherRecord.vue b/portal-manager-ui/admin/src/views/dataAdmin/components/pickUp/otherRecord.vue
index ae031ca7bbebdb1fe3a54e77c06487eb8899f10d..5699c95a3cf3d5cd69298b2025e648a22c27b31d 100644
--- a/portal-manager-ui/admin/src/views/dataAdmin/components/pickUp/otherRecord.vue
+++ b/portal-manager-ui/admin/src/views/dataAdmin/components/pickUp/otherRecord.vue
@@ -30,13 +30,21 @@
     </a-table>
   </div>
 </template>
-            
-  <script>
+
+<script>
 import { mapState } from "vuex";
 import storage from "@/utils/js/Storage";
 import { export2Excel } from "@/utils/js/exportExcel";
 import { getOtherList } from "@/api/dataAdmin";
 const tHeader = ["鎿嶄綔浜鸿韩浠�", "鎿嶄綔绫诲瀷", "绠卞彿", "鍙栦欢鏌滃悕绉�", "鎿嶄綔鏃堕棿"]; // 瀵煎嚭鐨勮〃澶村悕淇℃伅
+const operationTypeList = {
+  1: "瀛樹欢",
+  2: "鍙栦欢",
+  3: "閿佸畾",
+  4: "寮€绠�",
+  5: "娓呯",
+  6: "瑙i攣",
+};
 const filterVal = [
   "userType",
   "operationType",
@@ -95,6 +103,7 @@ export default {
       },
     ];
     return {
+      operationTypeList,
       baseurl: process.env.VUE_APP_API_PHP_URL,
       siteId: storage.get(2, "siteId"),
       columns,
@@ -278,6 +287,5 @@ export default {
   },
 };
 </script>
-            
-  <style lang="less" scoped>
-</style>
\ No newline at end of file
+
+<style lang="less" scoped></style>
diff --git a/portal-manager-ui/admin/src/views/dataAdmin/dataAdmin.vue b/portal-manager-ui/admin/src/views/dataAdmin/dataAdmin.vue
index a7eb4f824a2c045e84e00811aab19ff7188cd2cc..1fb5497c3b04631f434232758d701b02300c6b71 100644
--- a/portal-manager-ui/admin/src/views/dataAdmin/dataAdmin.vue
+++ b/portal-manager-ui/admin/src/views/dataAdmin/dataAdmin.vue
@@ -188,6 +188,10 @@ export default {
         } else {
           this.censusList = [];
           this.active = "CensusType_1";
+          if (this.$route.path != "/home/dataManagement") {
+            console.log(1);
+            this.$router.push("/home/dataManagement");
+          }
         }
       }
     },
diff --git a/portal-manager-ui/admin/src/views/signIn/signIn.vue b/portal-manager-ui/admin/src/views/signIn/signIn.vue
index 5411af905b163841c4b851980529a9e0cb68443b..bd7c9d04203299ffdd54a431755278b0f672122c 100644
--- a/portal-manager-ui/admin/src/views/signIn/signIn.vue
+++ b/portal-manager-ui/admin/src/views/signIn/signIn.vue
@@ -5,102 +5,262 @@
         <p class="slogan-text slogan-text-1 mb-12">闀挎睙绗竴鍩�</p>
         <p class="slogan-text slogan-text-2">宸磋渶閱夊疁瀹�</p>
       </div>
-      <div class="login-box">
-        <img class="w-[74px] mb-[20px]" src="@/assets/images/logo.png" />
-        <p class="login-text text-[40px] mb-[20px]">娆㈣繋鐧诲綍!</p>
-        <p class="login-text text-[32px] mb-[30px]">
-          {{ sysName }}
-        </p>
-        <a-form-model
-          :model="form"
-          ref="form"
-          :rules="rules"
-          :label-col="labelCol"
-          :wrapper-col="wrapperCol"
-        >
-          <a-form-model-item prop="loginName">
-            <a-input
-              placeholder="璇疯緭鍏ョ敤鎴峰悕"
-              v-model="form.loginName"
-              @pressEnter="handleSubmit"
-            >
-              <img slot="prefix" src="@/assets/images/icon-user.png" />
-              <img
-                slot="suffix"
-                v-show="form.loginName"
-                class="cursor-pointer"
-                @click="form.loginName = ''"
-                src="@/assets/images/icon-close.png"
-              />
-            </a-input>
-          </a-form-model-item>
-          <a-form-model-item prop="password">
-            <a-input
-              placeholder="璇疯緭鍏ュ瘑鐮�"
-              :type="iptType"
-              v-model="form.password"
-              @pressEnter="handleSubmit"
-            >
-              <img slot="prefix" src="@/assets/images/icon-user.png" />
-              <template slot="suffix">
-                <a-space>
-                  <img
-                    v-show="form.password"
-                    class="cursor-pointer"
-                    @click="form.password = ''"
-                    src="@/assets/images/icon-close.png"
-                  />
-                  <i
-                    v-if="iptType == 'password'"
-                    class="iconfont icon-hidden cursor-pointer"
-                    @click="iptType = 'text'"
-                  ></i>
-                  <i
-                    v-else
-                    class="iconfont icon-show cursor-pointer"
-                    @click="iptType = 'password'"
-                  ></i>
-                </a-space>
-              </template>
-            </a-input>
-          </a-form-model-item>
-          <a-form-model-item class="code" prop="securityCode">
-            <a-input
-              placeholder="璇疯緭鍏ラ獙璇佺爜"
-              v-model="form.securityCode"
-              @pressEnter="handleSubmit"
-            >
-              <img
-                slot="suffix"
-                v-show="form.securityCode"
-                class="cursor-pointer"
-                @click="form.securityCode = ''"
-                src="@/assets/images/icon-close.png"
-              />
-            </a-input>
-            <div class="code-box">
-              <img :src="imgCode" @click="createCode" />
+      <div class="w-[490px] h-[660px]">
+        <div class="swiper mySwiper">
+          <div class="swiper-wrapper">
+            <div class="swiper-slide">
+              <!-- 鐧诲綍妗� -->
+              <div class="login-box">
+                <img
+                  class="w-[74px] mb-[20px]"
+                  src="@/assets/images/logo.png"
+                />
+                <p class="login-text text-[40px] mb-[20px]">娆㈣繋鐧诲綍!</p>
+                <p class="login-text text-[32px] mb-[30px]">
+                  {{ sysName }}
+                </p>
+                <a-form-model
+                  :model="form"
+                  ref="form"
+                  :rules="rules"
+                  :label-col="labelCol"
+                  :wrapper-col="wrapperCol"
+                >
+                  <a-form-model-item prop="loginName">
+                    <a-input
+                      placeholder="璇疯緭鍏ョ敤鎴峰悕"
+                      v-model="form.loginName"
+                      @pressEnter="handleSubmit"
+                    >
+                      <img slot="prefix" src="@/assets/images/icon-user.png" />
+                      <img
+                        slot="suffix"
+                        v-show="form.loginName"
+                        class="cursor-pointer"
+                        @click="form.loginName = ''"
+                        src="@/assets/images/icon-close.png"
+                      />
+                    </a-input>
+                  </a-form-model-item>
+                  <a-form-model-item prop="password">
+                    <a-input
+                      placeholder="璇疯緭鍏ュ瘑鐮�"
+                      :type="TypeForm.iptType"
+                      v-model="form.password"
+                      @pressEnter="handleSubmit"
+                    >
+                      <img slot="prefix" src="@/assets/images/icon-user.png" />
+                      <template slot="suffix">
+                        <a-space>
+                          <img
+                            v-show="form.password"
+                            class="cursor-pointer"
+                            @click="form.password = ''"
+                            src="@/assets/images/icon-close.png"
+                          />
+                          <i
+                            v-if="TypeForm.iptType == 'password'"
+                            class="iconfont icon-hidden cursor-pointer"
+                            @click="TypeForm.iptType = 'text'"
+                          ></i>
+                          <i
+                            v-else
+                            class="iconfont icon-show cursor-pointer"
+                            @click="TypeForm.iptType = 'password'"
+                          ></i>
+                        </a-space>
+                      </template>
+                    </a-input>
+                  </a-form-model-item>
+                  <a-form-model-item class="code" prop="securityCode">
+                    <a-input
+                      placeholder="璇疯緭鍏ラ獙璇佺爜"
+                      v-model="form.securityCode"
+                      @pressEnter="handleSubmit"
+                    >
+                      <img
+                        slot="suffix"
+                        v-show="form.securityCode"
+                        class="cursor-pointer"
+                        @click="form.securityCode = ''"
+                        src="@/assets/images/icon-close.png"
+                      />
+                    </a-input>
+                    <div class="code-box">
+                      <img :src="imgCode" @click="createCode" />
+                    </div>
+                  </a-form-model-item>
+                  <a-form-model-item>
+                    <a-button
+                      :loading="loading"
+                      class="login-btn"
+                      @click="handleSubmit"
+                      >鐧诲綍</a-button
+                    >
+                  </a-form-model-item>
+                </a-form-model>
+              </div>
             </div>
-          </a-form-model-item>
-          <a-form-model-item>
-            <a-button :loading="loading" class="login-btn" @click="handleSubmit"
-              >鐧诲綍</a-button
-            >
-          </a-form-model-item>
-        </a-form-model>
+            <div class="swiper-slide">
+              <!-- 淇敼瀵嗙爜妗� -->
+              <div class="revamp-box">
+                <img
+                  class="w-[74px] mb-[20px]"
+                  src="@/assets/images/logo.png"
+                />
+                <p class="login-text text-[40px] mb-[20px]">璇蜂慨鏀瑰瘑鐮�</p>
+                <p class="login-text text-[32px] mb-[30px]">
+                  瀵嗙爜鏈夋晥鏈熶负涓変釜鏈�
+                </p>
+                <a-form-model
+                  :model="changePwdForm"
+                  ref="changePwdForm"
+                  :rules="PwdFormRules"
+                  :label-col="labelCol"
+                  :wrapper-col="wrapperCol"
+                >
+                  <a-form-model-item prop="loginName">
+                    <a-input
+                      placeholder="璇疯緭鍏ョ敤鎴峰悕"
+                      v-model="changePwdForm.loginName"
+                      @pressEnter="changePwd"
+                    >
+                      <img slot="prefix" src="@/assets/images/icon-user.png" />
+                      <img
+                        slot="suffix"
+                        v-show="changePwdForm.loginName"
+                        class="cursor-pointer"
+                        @click="changePwdForm.loginName = ''"
+                        src="@/assets/images/icon-close.png"
+                      />
+                    </a-input>
+                  </a-form-model-item>
+                  <a-form-model-item prop="oldPwd">
+                    <a-input
+                      placeholder="璇疯緭鍏ュ師瀵嗙爜"
+                      :type="TypeForm.oldType"
+                      v-model="changePwdForm.oldPwd"
+                      @pressEnter="changePwd"
+                    >
+                      <img slot="prefix" src="@/assets/images/icon-user.png" />
+                      <template slot="suffix">
+                        <a-space>
+                          <img
+                            v-show="changePwdForm.oldPwd"
+                            class="cursor-pointer"
+                            @click="changePwdForm.oldPwd = ''"
+                            src="@/assets/images/icon-close.png"
+                          />
+                          <i
+                            v-if="TypeForm.oldType == 'password'"
+                            class="iconfont icon-hidden cursor-pointer"
+                            @click="TypeForm.oldType = 'text'"
+                          ></i>
+                          <i
+                            v-else
+                            class="iconfont icon-show cursor-pointer"
+                            @click="TypeForm.oldType = 'password'"
+                          ></i>
+                        </a-space>
+                      </template>
+                    </a-input>
+                  </a-form-model-item>
+                  <a-form-model-item prop="newPwd">
+                    <a-input
+                      placeholder="璇疯緭鍏ユ柊瀵嗙爜"
+                      :type="TypeForm.newType"
+                      v-model="changePwdForm.newPwd"
+                      @pressEnter="changePwd"
+                    >
+                      <img slot="prefix" src="@/assets/images/icon-user.png" />
+                      <template slot="suffix">
+                        <a-space>
+                          <img
+                            v-show="changePwdForm.newPwd"
+                            class="cursor-pointer"
+                            @click="changePwdForm.newPwd = ''"
+                            src="@/assets/images/icon-close.png"
+                          />
+                          <i
+                            v-if="TypeForm.newType == 'password'"
+                            class="iconfont icon-hidden cursor-pointer"
+                            @click="TypeForm.newType = 'text'"
+                          ></i>
+                          <i
+                            v-else
+                            class="iconfont icon-show cursor-pointer"
+                            @click="TypeForm.newType = 'password'"
+                          ></i>
+                        </a-space>
+                      </template>
+                    </a-input>
+                  </a-form-model-item>
+                  <a-form-model-item prop="newPwdAgain">
+                    <a-input
+                      placeholder="璇峰啀娆¤緭鍏ユ柊瀵嗙爜"
+                      :type="TypeForm.newAgainType"
+                      v-model="changePwdForm.newPwdAgain"
+                      @pressEnter="changePwd"
+                    >
+                      <img slot="prefix" src="@/assets/images/icon-user.png" />
+                      <template slot="suffix">
+                        <a-space>
+                          <img
+                            v-show="changePwdForm.newPwdAgain"
+                            class="cursor-pointer"
+                            @click="changePwdForm.newPwdAgain = ''"
+                            src="@/assets/images/icon-close.png"
+                          />
+                          <i
+                            v-if="TypeForm.newAgainType == 'password'"
+                            class="iconfont icon-hidden cursor-pointer"
+                            @click="TypeForm.newAgainType = 'text'"
+                          ></i>
+                          <i
+                            v-else
+                            class="iconfont icon-show cursor-pointer"
+                            @click="TypeForm.newAgainType = 'password'"
+                          ></i>
+                        </a-space>
+                      </template>
+                    </a-input>
+                  </a-form-model-item>
+                  <a-form-model-item>
+                    <a-button
+                      :loading="changeloading"
+                      class="login-btn"
+                      @click="changePwd"
+                      >纭</a-button
+                    >
+                  </a-form-model-item>
+                </a-form-model>
+              </div>
+            </div>
+          </div>
+        </div>
       </div>
     </div>
   </div>
 </template>
 
 <script>
-import { LoginInterface } from "@/api/user.js";
+import Swiper from "swiper";
+import { LoginInterface, changeForgotPassword } from "@/api/user.js";
 import { mapMutations, mapState } from "vuex";
-import { changeAccount } from "@/utils/js/validate";
+import { changeAccount, changePassWord } from "@/utils/js/validate";
 import { encrypt } from "@/utils";
 import storage from "@/utils/js/Storage";
 export default {
   data() {
+    const changePwdAgain = (rule, value, callback) => {
+      if (!value) {
+        callback(new Error("璇峰啀娆¤緭鍏ュ瘑鐮�"));
+      } else if (value !== this.changePwdForm.newPwd) {
+        callback(new Error("涓ゆ瀵嗙爜杈撳叆涓嶄竴鑷�"));
+      } else {
+        callback();
+      }
+    };
     return {
       sysName: process.env.VUE_APP_systemName,
       labelCol: { span: 0 },
@@ -108,7 +268,13 @@ export default {
       api: process.env.VUE_APP_API_BASE_URL,
       loading: false,
       imgCode: "",
-      iptType: "password",
+      changeloading: false,
+      TypeForm: {
+        iptType: "password", // 鐧诲綍瀵嗙爜杈撳叆妗嗗垏鎹�
+        oldType: "password", // 鍘熷瘑鐮佽緭鍏ユ鍒囨崲
+        newType: "password", // 鏂板瘑鐮佽緭鍏ユ鍒囨崲
+        newAgainType: "password", // 鍐嶆杈撳叆鏂板瘑鐮佽緭鍏ユ鍒囨崲
+      },
       form: {
         loginName: "",
         password: "",
@@ -116,6 +282,12 @@ export default {
         mark: "",
         type: 2,
       },
+      changePwdForm: {
+        loginName: "",
+        oldPwd: "", // 鍘熷瘑鐮�
+        newPwd: "", // 鏂板瘑鐮�
+        newPwdAgain: "", // 鏂板瘑鐮�
+      },
       rules: {
         loginName: [
           { required: true, validator: changeAccount, trigger: "blur" },
@@ -125,6 +297,20 @@ export default {
           { required: true, message: "璇疯緭鍏ラ獙璇佺爜", trigger: "blur" },
         ],
       },
+      PwdFormRules: {
+        loginName: [
+          { required: true, validator: changeAccount, trigger: "blur" },
+        ],
+        oldPwd: [
+          { required: true, validator: changePassWord, trigger: "blur" },
+        ],
+        newPwd: [
+          { required: true, validator: changePassWord, trigger: "blur" },
+        ],
+        newPwdAgain: [
+          { required: true, validator: changePwdAgain, trigger: "blur" },
+        ],
+      },
     };
   },
   computed: {
@@ -136,8 +322,38 @@ export default {
     }
     this.createCode();
   },
+  mounted() {
+    this.initSwiper();
+  },
   methods: {
     ...mapMutations("user", ["set_token", "SET_USERDATA", "set_siteList"]),
+    initSwiper() {
+      this.mySwiper = new Swiper(".mySwiper", {
+        effect: "cube", // 鏂瑰潡鍔ㄧ敾
+        speed: 1000, // 鏃堕暱
+        // simulateTouch: false, //鏄惁鍏佽榧犳爣婊戝姩鍒囨崲
+        grabCursor: false, // 鎵嬪舰榧犳爣
+        cubeEffect: {
+          shadow: false, // 鍙栨秷鐩掑瓙闃村奖
+          slideShadows: false, // 鍙栨秷瀛愰」鎷栧姩鏃跺€欑殑闃村奖
+          // shadowOffset: 20,
+          // shadowScale: 0.94,
+        },
+        on: {
+          slideChange: () => {
+            // 鍒濆鍖栧瘑鐮佹绫诲瀷
+            Object.assign(this.TypeForm, this.$options.data().TypeForm);
+            this.loading = false;
+            this.changeloading = false;
+            this.$refs.changePwdForm.resetFields();
+            this.$refs.form.resetFields();
+            this.createCode();
+          },
+        },
+      });
+      this.mySwiper.init();
+    },
+
     // 鑾峰彇楠岃瘉鐮�
     createCode() {
       // 鍔犳椂闂存埑鍗拌鐢ㄤ簬鍒锋柊gif
@@ -155,7 +371,7 @@ export default {
             loginName: encrypt(this.form.loginName),
             password: encrypt(this.form.password),
           });
-          let { code, data } = res;
+          let { code, data, msg } = res;
           if (code == 1) {
             let { siteList, user, token } = data;
             this.set_token(token);
@@ -168,13 +384,42 @@ export default {
             setTimeout(() => {
               this.$router.push("/home");
             }, 20);
+          } else if (code == 99998) {
+            this.$message.error(msg);
+            setTimeout(() => {
+              this.mySwiper.slideTo(1);
+            }, 500);
           } else {
+            this.$message.error(msg);
             this.createCode();
           }
           this.loading = false;
         }
       });
     },
+
+    // 淇敼瀵嗙爜
+    changePwd() {
+      this.$refs.changePwdForm.validate(async (valid) => {
+        if (valid) {
+          this.changeloading = true;
+          let obj = {
+            loginName: this.changePwdForm.loginName,
+            oldPwd: encrypt(this.changePwdForm.oldPwd),
+            newPwd: encrypt(this.changePwdForm.newPwd),
+          };
+          let res = await changeForgotPassword(obj);
+          this.changeloading = false;
+          let { msg, code } = res;
+          if (code == 1) {
+            this.$message.success(msg);
+            setTimeout(() => {
+              this.mySwiper.slideTo(0);
+            }, 500);
+          }
+        }
+      });
+    },
   },
 };
 </script>
@@ -243,9 +488,14 @@ export default {
     margin-left: 1em;
     animation: var(--time) printText var(--time) steps(5) both;
   }
-  .login-box {
-    width: 490px;
-    height: 660px;
+  .swiper {
+    width: 100%;
+    height: 100%;
+  }
+  .login-box,
+  .revamp-box {
+    width: 100%;
+    height: 100%;
     padding: 60px 34px;
     background: url("@/assets/images/login_box_bg.png") center;
     background-size: 100% 100%;
@@ -324,4 +574,4 @@ export default {
     color: #ffffff;
   }
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/portal-manager/src/main/bin/deploy.sh b/portal-manager/src/main/bin/deploy.sh
index f140d60d86fd132b736424b5807f4ebc7dd572c3..a12eafb620c070d253dc913d096f726e17f7bff7 100644
--- a/portal-manager/src/main/bin/deploy.sh
+++ b/portal-manager/src/main/bin/deploy.sh
@@ -102,8 +102,8 @@ project_ui_deploy() {
 main() {
   echo "鍚庡彴鏈嶅姟閮ㄧ讲"
   project_deploy
-  echo "鍓嶇鏈嶅姟閮ㄧ讲"
-  project_ui_deploy
+  #echo "鍓嶇鏈嶅姟閮ㄧ讲"
+  #project_ui_deploy
   exit ${RETVAL}
 }
 
diff --git a/portal-manager/src/main/java/com/mortals/xhx/base/framework/security/AuthTokenServiceImpl.java b/portal-manager/src/main/java/com/mortals/xhx/base/framework/security/AuthTokenServiceImpl.java
index 2553b6c9b6af5bd0c70ee366dda4eb3aa548b035..c97895640450b565bbbfba204ca0f0eccb2ddc04 100644
--- a/portal-manager/src/main/java/com/mortals/xhx/base/framework/security/AuthTokenServiceImpl.java
+++ b/portal-manager/src/main/java/com/mortals/xhx/base/framework/security/AuthTokenServiceImpl.java
@@ -76,6 +76,11 @@ public class AuthTokenServiceImpl implements IAuthTokenService {
         String token = getToken(request);
         if (StringUtils.isNotEmpty(token)) {
             try {
+                boolean signed = Jwts.parser().isSigned(token);
+                if (!signed) {
+                    log.error("token闈炴硶锛�=>{}", token);
+                    return null;
+                }
                 Claims claims = parseToken(token);
                 String uuid = (String) claims.get(SysConstains.LOGIN_USER_KEY);
                 String userKey = getTokenKey(uuid);
diff --git a/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/dao/ResourceDao.java b/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/dao/ResourceDao.java
new file mode 100644
index 0000000000000000000000000000000000000000..9af8c1cd1ec1ef1e19b57ebc56ef59f8f8833aab
--- /dev/null
+++ b/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/dao/ResourceDao.java
@@ -0,0 +1,30 @@
+/**
+* 鏂囦欢锛歊esourceDao.java
+* 鐗堟湰锛�1.0.0
+* 鏃ユ湡锛�
+* Copyright &reg; 
+* All right reserved.
+*/
+
+package com.mortals.xhx.base.system.resource.dao;
+
+
+import com.mortals.framework.dao.ICRUDDao;
+import com.mortals.xhx.base.system.resource.model.ResourceEntity;
+
+import java.util.List;
+
+/**
+ * <p>Title: 璧勬簮淇℃伅</p>
+ * <p>Description: ResourceDao DAO鎺ュ彛 </p>
+ * <p>Copyright: Copyright &reg;  </p>
+ * <p>Company: </p>
+ * @author 
+ * @version 1.0.0
+ */
+
+public interface ResourceDao extends ICRUDDao<ResourceEntity,Long> {
+     List<ResourceEntity> getListByUserId(Long userId);
+
+    List<ResourceEntity> getAll(int userType);
+}
\ No newline at end of file
diff --git a/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/dao/ibatis/ResourceDaoImpl.java b/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/dao/ibatis/ResourceDaoImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..b7df2d1c3c2238033b309a49af7451475e8adcc4
--- /dev/null
+++ b/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/dao/ibatis/ResourceDaoImpl.java
@@ -0,0 +1,52 @@
+/**
+ * 鏂囦欢锛歊esourceDaoImpl.java 鐗堟湰锛�1.0.0 鏃ユ湡锛� Copyright &reg; All right reserved.
+ */
+
+package com.mortals.xhx.base.system.resource.dao.ibatis;
+
+import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
+import com.mortals.framework.model.ParamDto;
+import com.mortals.xhx.base.system.resource.dao.ResourceDao;
+import com.mortals.xhx.base.system.resource.model.ResourceEntity;
+import org.springframework.stereotype.Repository;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ * Title: 璧勬簮淇℃伅
+ * </p>
+ * <p>
+ * Description: ResourceDaoImpl DAO鎺ュ彛
+ * </p>
+ * <p>
+ * Copyright: Copyright &reg;
+ * </p>
+ * <p>
+ * Company:
+ * </p>
+ * @author
+ * @version 1.0.0
+ */
+@Repository("resourceDao")
+public class ResourceDaoImpl extends BaseCRUDDaoMybatis<ResourceEntity, Long> implements ResourceDao {
+
+    @Override
+    public List<ResourceEntity> getListByUserId(Long userId) {
+        ParamDto param = new ParamDto();
+        param.getCondition().put("userId", userId);
+        return getSqlSession().selectList(getSqlId("getListByUserId"), param);
+    }
+
+    @Override
+    public List<ResourceEntity> getAll(final int userType) {
+
+        return getSqlSession().selectList(getSqlId("getAllByUserType"), new HashMap<String, Object>() {
+
+            {
+                put("userType", userType);
+            }
+        });
+    }
+}
\ No newline at end of file
diff --git a/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/model/ResourceEntity.java b/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/model/ResourceEntity.java
new file mode 100644
index 0000000000000000000000000000000000000000..8ae450b7d91d59c86085ae1f55ca84ab328a5c30
--- /dev/null
+++ b/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/model/ResourceEntity.java
@@ -0,0 +1,222 @@
+/**
+* 鏂囦欢锛歊esourceEntity.java
+* 鐗堟湰锛�1.0.0
+* 鏃ユ湡锛�
+* Copyright &reg; 
+* All right reserved.
+*/
+
+package com.mortals.xhx.base.system.resource.model;
+
+import com.mortals.framework.model.BaseEntityLong;
+
+import java.util.Date;
+
+/**
+ * <p>Title: 璧勬簮淇℃伅</p>
+ * <p>Description: ResourceEntity  </p>
+ * <p>Copyright: Copyright &reg;  </p>
+ * <p>Company: </p>
+ * @author 
+ * @version 1.0.0
+ */
+public class ResourceEntity extends BaseEntityLong{
+	private static final long serialVersionUID = 1547777703340L;
+	
+	/** 鍚嶇О */
+	private String name;
+
+	/** 杩炴帴鍦板潃锛屽涓湴鍧€浠ラ€楀彿鍒嗛殧 */
+	private String url;
+
+	/** 鏉冮檺绫诲瀷锛�0锛氭棤闄愬埗锛�1锛氭棤闇€鐧诲綍鏌ョ湅锛�2锛氶渶瑕佺櫥褰曟煡鐪嬶紝3锛氶渶瑕佽鑹叉潈闄愭煡鐪嬶紝榛樿3 */
+	private Integer authType;
+
+	/** 璧勬簮绫诲瀷锛�0锛氱郴缁熻祫婧愶紝1锛氬紑鏀捐祫婧愶紝榛樿0 */
+	private Integer sourceType;
+
+	/** 鍒涘缓鏃堕棿 */
+	private Date createTime;
+
+	/** 鍒涘缓鐢ㄦ埛 */
+	private Long createUserId;
+
+	/** 鍒涘缓鐢ㄦ埛鍚嶇О */
+	private String createUserName;
+
+	/** 鐢ㄦ埛绫诲瀷锛�0锛氱郴缁熺敤鎴� 1:浠g悊鍟嗙敤鎴� 2:鍝佺墝鍟嗙敤鎴� */
+	private Integer userType;
+
+
+	public ResourceEntity(){
+		
+	}
+	/**
+	 * 鑾峰彇 鍚嶇О
+	 * @return name
+	 */
+	public String getName(){
+		return this.name;
+	}
+
+	/**
+	 * 璁剧疆 鍚嶇О
+	 * @param name
+	 */
+	public void setName(String name){
+		this.name = name;
+	}
+
+	/**
+	 * 鑾峰彇 杩炴帴鍦板潃锛屽涓湴鍧€浠ラ€楀彿鍒嗛殧
+	 * @return url
+	 */
+	public String getUrl(){
+		return this.url;
+	}
+
+	/**
+	 * 璁剧疆 杩炴帴鍦板潃锛屽涓湴鍧€浠ラ€楀彿鍒嗛殧
+	 * @param url
+	 */
+	public void setUrl(String url){
+		this.url = url;
+	}
+
+	/**
+	 * 鑾峰彇 鏉冮檺绫诲瀷锛�0锛氭棤闄愬埗锛�1锛氭棤闇€鐧诲綍鏌ョ湅锛�2锛氶渶瑕佺櫥褰曟煡鐪嬶紝3锛氶渶瑕佽鑹叉潈闄愭煡鐪嬶紝榛樿3
+	 * @return authType
+	 */
+	public Integer getAuthType(){
+		return this.authType;
+	}
+
+	/**
+	 * 璁剧疆 鏉冮檺绫诲瀷锛�0锛氭棤闄愬埗锛�1锛氭棤闇€鐧诲綍鏌ョ湅锛�2锛氶渶瑕佺櫥褰曟煡鐪嬶紝3锛氶渶瑕佽鑹叉潈闄愭煡鐪嬶紝榛樿3
+	 * @param authType
+	 */
+	public void setAuthType(Integer authType){
+		this.authType = authType;
+	}
+
+	/**
+	 * 鑾峰彇 璧勬簮绫诲瀷锛�0锛氱郴缁熻祫婧愶紝1锛氬紑鏀捐祫婧愶紝榛樿0
+	 * @return sourceType
+	 */
+	public Integer getSourceType(){
+		return this.sourceType;
+	}
+
+	/**
+	 * 璁剧疆 璧勬簮绫诲瀷锛�0锛氱郴缁熻祫婧愶紝1锛氬紑鏀捐祫婧愶紝榛樿0
+	 * @param sourceType
+	 */
+	public void setSourceType(Integer sourceType){
+		this.sourceType = sourceType;
+	}
+
+	/**
+	 * 鑾峰彇 鍒涘缓鏃堕棿
+	 * @return createTime
+	 */
+	public Date getCreateTime(){
+		return this.createTime;
+	}
+
+	/**
+	 * 璁剧疆 鍒涘缓鏃堕棿
+	 * @param createTime
+	 */
+	public void setCreateTime(Date createTime){
+		this.createTime = createTime;
+	}
+
+	/**
+	 * 鑾峰彇 鍒涘缓鐢ㄦ埛
+	 * @return createUserId
+	 */
+	public Long getCreateUserId(){
+		return this.createUserId;
+	}
+
+	/**
+	 * 璁剧疆 鍒涘缓鐢ㄦ埛
+	 * @param createUserId
+	 */
+	public void setCreateUserId(Long createUserId){
+		this.createUserId = createUserId;
+	}
+
+	/**
+	 * 鑾峰彇 鍒涘缓鐢ㄦ埛鍚嶇О
+	 * @return createUserName
+	 */
+	public String getCreateUserName(){
+		return this.createUserName;
+	}
+
+	/**
+	 * 璁剧疆 鍒涘缓鐢ㄦ埛鍚嶇О
+	 * @param createUserName
+	 */
+	public void setCreateUserName(String createUserName){
+		this.createUserName = createUserName;
+	}
+
+	/**
+	 * 鑾峰彇 鐢ㄦ埛绫诲瀷锛�0锛氱郴缁熺敤鎴� 1:浠g悊鍟嗙敤鎴� 2:鍝佺墝鍟嗙敤鎴�
+	 * @return userType
+	 */
+	public Integer getUserType(){
+		return this.userType;
+	}
+
+	/**
+	 * 璁剧疆 鐢ㄦ埛绫诲瀷锛�0锛氱郴缁熺敤鎴� 1:浠g悊鍟嗙敤鎴� 2:鍝佺墝鍟嗙敤鎴�
+	 * @param userType
+	 */
+	public void setUserType(Integer userType){
+		this.userType = userType;
+	}
+
+
+	@Override
+	public int hashCode() {
+		return this.getId().hashCode();
+	}
+	@Override
+	public boolean equals(Object obj) {
+		if (obj == null)
+			return false;
+		if (obj instanceof ResourceEntity) {
+			ResourceEntity tmp = (ResourceEntity) obj;
+			if (this.getId().longValue() == tmp.getId().longValue()) {
+				return true;
+			}
+		}
+		return false;
+	}
+	public String toString(){
+		StringBuilder sb = new StringBuilder("");
+		sb.append("id:").append(getId())
+		  .append(",name:").append(getName())
+		  .append(",url:").append(getUrl())
+		  .append(",authType:").append(getAuthType())
+		  .append(",sourceType:").append(getSourceType())
+		  .append(",createTime:").append(getCreateTime())
+		  .append(",createUserId:").append(getCreateUserId())
+		  .append(",createUserName:").append(getCreateUserName())
+		  .append(",userType:").append(getUserType());
+		return sb.toString();
+	}
+	public void initAttrValue(){
+		this.name = null;
+		this.url = null;
+		this.authType = 3;
+		this.sourceType = 0;
+		this.createTime = null;
+		this.createUserId = null;
+		this.createUserName = null;
+		this.userType = null;
+	}
+}
\ No newline at end of file
diff --git a/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/model/ResourceQuery.java b/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/model/ResourceQuery.java
new file mode 100644
index 0000000000000000000000000000000000000000..9a1679b78c2e3fc54757c7ce1679898cb1c1ad26
--- /dev/null
+++ b/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/model/ResourceQuery.java
@@ -0,0 +1,501 @@
+/**
+* 鏂囦欢锛歊esourceQuery.java
+* 鐗堟湰锛�1.0.0
+* 鏃ユ湡锛�
+* Copyright &reg; 
+* All right reserved.
+*/
+
+package com.mortals.xhx.base.system.resource.model;
+
+import java.util.List;
+/**
+ * <p>Title: 璧勬簮淇℃伅</p>
+ * <p>Description: ResourceQuery  </p>
+ * <p>Copyright: Copyright &reg;  </p>
+ * <p>Company: </p>
+ * @author 
+ * @version 1.0.0
+ */
+public class ResourceQuery extends ResourceEntity {
+	private static final long serialVersionUID = 1547777703341L;
+	/** 寮€濮� 鑿滃崟ID锛屼富閿紝鑷闀� */
+	private Long idStart;
+
+	/** 缁撴潫 鑿滃崟ID锛屼富閿紝鑷闀� */
+	private Long idEnd;
+
+	/** 澧炲姞 鑿滃崟ID锛屼富閿紝鑷闀� */
+	private Long idIncrement;
+
+	/** 鑿滃崟ID锛屼富閿紝鑷闀� */
+	private List<Long> idList;
+
+	/** 鍚嶇О */
+	private List<String> nameList;
+
+	/** 杩炴帴鍦板潃锛屽涓湴鍧€浠ラ€楀彿鍒嗛殧 */
+	private List<String> urlList;
+
+	/** 寮€濮� 鏉冮檺绫诲瀷锛�0锛氭棤闄愬埗锛�1锛氭棤闇€鐧诲綍鏌ョ湅锛�2锛氶渶瑕佺櫥褰曟煡鐪嬶紝3锛氶渶瑕佽鑹叉潈闄愭煡鐪嬶紝榛樿3 */
+	private Integer authTypeStart;
+
+	/** 缁撴潫 鏉冮檺绫诲瀷锛�0锛氭棤闄愬埗锛�1锛氭棤闇€鐧诲綍鏌ョ湅锛�2锛氶渶瑕佺櫥褰曟煡鐪嬶紝3锛氶渶瑕佽鑹叉潈闄愭煡鐪嬶紝榛樿3 */
+	private Integer authTypeEnd;
+
+	/** 澧炲姞 鏉冮檺绫诲瀷锛�0锛氭棤闄愬埗锛�1锛氭棤闇€鐧诲綍鏌ョ湅锛�2锛氶渶瑕佺櫥褰曟煡鐪嬶紝3锛氶渶瑕佽鑹叉潈闄愭煡鐪嬶紝榛樿3 */
+	private Integer authTypeIncrement;
+
+	/** 鏉冮檺绫诲瀷锛�0锛氭棤闄愬埗锛�1锛氭棤闇€鐧诲綍鏌ョ湅锛�2锛氶渶瑕佺櫥褰曟煡鐪嬶紝3锛氶渶瑕佽鑹叉潈闄愭煡鐪嬶紝榛樿3 */
+	private List<Integer> authTypeList;
+
+	/** 寮€濮� 璧勬簮绫诲瀷锛�0锛氱郴缁熻祫婧愶紝1锛氬紑鏀捐祫婧愶紝榛樿0 */
+	private Integer sourceTypeStart;
+
+	/** 缁撴潫 璧勬簮绫诲瀷锛�0锛氱郴缁熻祫婧愶紝1锛氬紑鏀捐祫婧愶紝榛樿0 */
+	private Integer sourceTypeEnd;
+
+	/** 澧炲姞 璧勬簮绫诲瀷锛�0锛氱郴缁熻祫婧愶紝1锛氬紑鏀捐祫婧愶紝榛樿0 */
+	private Integer sourceTypeIncrement;
+
+	/** 璧勬簮绫诲瀷锛�0锛氱郴缁熻祫婧愶紝1锛氬紑鏀捐祫婧愶紝榛樿0 */
+	private List<Integer> sourceTypeList;
+
+	/** 寮€濮� 鍒涘缓鏃堕棿 */
+	private String createTimeStart;
+
+	/** 缁撴潫 鍒涘缓鏃堕棿 */
+	private String createTimeEnd;
+
+	/** 寮€濮� 鍒涘缓鐢ㄦ埛 */
+	private Long createUserIdStart;
+
+	/** 缁撴潫 鍒涘缓鐢ㄦ埛 */
+	private Long createUserIdEnd;
+
+	/** 澧炲姞 鍒涘缓鐢ㄦ埛 */
+	private Long createUserIdIncrement;
+
+	/** 鍒涘缓鐢ㄦ埛 */
+	private List<Long> createUserIdList;
+
+	/** 鍒涘缓鐢ㄦ埛鍚嶇О */
+	private List<String> createUserNameList;
+
+	/** 寮€濮� 鐢ㄦ埛绫诲瀷锛�0锛氱郴缁熺敤鎴� 1:浠g悊鍟嗙敤鎴� 2:鍝佺墝鍟嗙敤鎴� */
+	private Integer userTypeStart;
+
+	/** 缁撴潫 鐢ㄦ埛绫诲瀷锛�0锛氱郴缁熺敤鎴� 1:浠g悊鍟嗙敤鎴� 2:鍝佺墝鍟嗙敤鎴� */
+	private Integer userTypeEnd;
+
+	/** 澧炲姞 鐢ㄦ埛绫诲瀷锛�0锛氱郴缁熺敤鎴� 1:浠g悊鍟嗙敤鎴� 2:鍝佺墝鍟嗙敤鎴� */
+	private Integer userTypeIncrement;
+
+	/** 鐢ㄦ埛绫诲瀷锛�0锛氱郴缁熺敤鎴� 1:浠g悊鍟嗙敤鎴� 2:鍝佺墝鍟嗙敤鎴� */
+	private List<Integer> userTypeList;
+
+
+	public ResourceQuery(){
+	}
+	/**
+	 * 鑾峰彇 寮€濮� 鑿滃崟ID锛屼富閿紝鑷闀�
+	 * @return idStart
+	 */
+	public Long getIdStart(){
+		return this.idStart;
+	}
+
+	/**
+	 * 璁剧疆 寮€濮� 鑿滃崟ID锛屼富閿紝鑷闀�
+	 * @param idStart
+	 */
+	public void setIdStart(Long idStart){
+		this.idStart = idStart;
+	}
+
+	/**
+	 * 鑾峰彇 缁撴潫 鑿滃崟ID锛屼富閿紝鑷闀�
+	 * @return idEnd
+	 */
+	public Long getIdEnd(){
+		return this.idEnd;
+	}
+
+	/**
+	 * 璁剧疆 缁撴潫 鑿滃崟ID锛屼富閿紝鑷闀�
+	 * @param idEnd
+	 */
+	public void setIdEnd(Long idEnd){
+		this.idEnd = idEnd;
+	}
+
+	/**
+	 * 鑾峰彇 澧炲姞 鑿滃崟ID锛屼富閿紝鑷闀�
+	 * @return idIncrement
+	 */
+	public Long getIdIncrement(){
+		return this.idIncrement;
+	}
+
+	/**
+	 * 璁剧疆 澧炲姞 鑿滃崟ID锛屼富閿紝鑷闀�
+	 * @param idIncrement
+	 */
+	public void setIdIncrement(Long idIncrement){
+		this.idIncrement = idIncrement;
+	}
+
+	/**
+	 * 鑾峰彇 鑿滃崟ID锛屼富閿紝鑷闀�
+	 * @return idList
+	 */
+	public List<Long> getIdList(){
+		return this.idList;
+	}
+
+	/**
+	 * 璁剧疆 鑿滃崟ID锛屼富閿紝鑷闀�
+	 * @param idList
+	 */
+	public void setIdList(List<Long> idList){
+		this.idList = idList;
+	}
+
+	/**
+	 * 鑾峰彇 鍚嶇О
+	 * @return nameList
+	 */
+	public List<String> getNameList(){
+		return this.nameList;
+	}
+
+	/**
+	 * 璁剧疆 鍚嶇О
+	 * @param nameList
+	 */
+	public void setNameList(List<String> nameList){
+		this.nameList = nameList;
+	}
+
+	/**
+	 * 鑾峰彇 杩炴帴鍦板潃锛屽涓湴鍧€浠ラ€楀彿鍒嗛殧
+	 * @return urlList
+	 */
+	public List<String> getUrlList(){
+		return this.urlList;
+	}
+
+	/**
+	 * 璁剧疆 杩炴帴鍦板潃锛屽涓湴鍧€浠ラ€楀彿鍒嗛殧
+	 * @param urlList
+	 */
+	public void setUrlList(List<String> urlList){
+		this.urlList = urlList;
+	}
+
+	/**
+	 * 鑾峰彇 寮€濮� 鏉冮檺绫诲瀷锛�0锛氭棤闄愬埗锛�1锛氭棤闇€鐧诲綍鏌ョ湅锛�2锛氶渶瑕佺櫥褰曟煡鐪嬶紝3锛氶渶瑕佽鑹叉潈闄愭煡鐪嬶紝榛樿3
+	 * @return authTypeStart
+	 */
+	public Integer getAuthTypeStart(){
+		return this.authTypeStart;
+	}
+
+	/**
+	 * 璁剧疆 寮€濮� 鏉冮檺绫诲瀷锛�0锛氭棤闄愬埗锛�1锛氭棤闇€鐧诲綍鏌ョ湅锛�2锛氶渶瑕佺櫥褰曟煡鐪嬶紝3锛氶渶瑕佽鑹叉潈闄愭煡鐪嬶紝榛樿3
+	 * @param authTypeStart
+	 */
+	public void setAuthTypeStart(Integer authTypeStart){
+		this.authTypeStart = authTypeStart;
+	}
+
+	/**
+	 * 鑾峰彇 缁撴潫 鏉冮檺绫诲瀷锛�0锛氭棤闄愬埗锛�1锛氭棤闇€鐧诲綍鏌ョ湅锛�2锛氶渶瑕佺櫥褰曟煡鐪嬶紝3锛氶渶瑕佽鑹叉潈闄愭煡鐪嬶紝榛樿3
+	 * @return authTypeEnd
+	 */
+	public Integer getAuthTypeEnd(){
+		return this.authTypeEnd;
+	}
+
+	/**
+	 * 璁剧疆 缁撴潫 鏉冮檺绫诲瀷锛�0锛氭棤闄愬埗锛�1锛氭棤闇€鐧诲綍鏌ョ湅锛�2锛氶渶瑕佺櫥褰曟煡鐪嬶紝3锛氶渶瑕佽鑹叉潈闄愭煡鐪嬶紝榛樿3
+	 * @param authTypeEnd
+	 */
+	public void setAuthTypeEnd(Integer authTypeEnd){
+		this.authTypeEnd = authTypeEnd;
+	}
+
+	/**
+	 * 鑾峰彇 澧炲姞 鏉冮檺绫诲瀷锛�0锛氭棤闄愬埗锛�1锛氭棤闇€鐧诲綍鏌ョ湅锛�2锛氶渶瑕佺櫥褰曟煡鐪嬶紝3锛氶渶瑕佽鑹叉潈闄愭煡鐪嬶紝榛樿3
+	 * @return authTypeIncrement
+	 */
+	public Integer getAuthTypeIncrement(){
+		return this.authTypeIncrement;
+	}
+
+	/**
+	 * 璁剧疆 澧炲姞 鏉冮檺绫诲瀷锛�0锛氭棤闄愬埗锛�1锛氭棤闇€鐧诲綍鏌ョ湅锛�2锛氶渶瑕佺櫥褰曟煡鐪嬶紝3锛氶渶瑕佽鑹叉潈闄愭煡鐪嬶紝榛樿3
+	 * @param authTypeIncrement
+	 */
+	public void setAuthTypeIncrement(Integer authTypeIncrement){
+		this.authTypeIncrement = authTypeIncrement;
+	}
+
+	/**
+	 * 鑾峰彇 鏉冮檺绫诲瀷锛�0锛氭棤闄愬埗锛�1锛氭棤闇€鐧诲綍鏌ョ湅锛�2锛氶渶瑕佺櫥褰曟煡鐪嬶紝3锛氶渶瑕佽鑹叉潈闄愭煡鐪嬶紝榛樿3
+	 * @return authTypeList
+	 */
+	public List<Integer> getAuthTypeList(){
+		return this.authTypeList;
+	}
+
+	/**
+	 * 璁剧疆 鏉冮檺绫诲瀷锛�0锛氭棤闄愬埗锛�1锛氭棤闇€鐧诲綍鏌ョ湅锛�2锛氶渶瑕佺櫥褰曟煡鐪嬶紝3锛氶渶瑕佽鑹叉潈闄愭煡鐪嬶紝榛樿3
+	 * @param authTypeList
+	 */
+	public void setAuthTypeList(List<Integer> authTypeList){
+		this.authTypeList = authTypeList;
+	}
+
+	/**
+	 * 鑾峰彇 寮€濮� 璧勬簮绫诲瀷锛�0锛氱郴缁熻祫婧愶紝1锛氬紑鏀捐祫婧愶紝榛樿0
+	 * @return sourceTypeStart
+	 */
+	public Integer getSourceTypeStart(){
+		return this.sourceTypeStart;
+	}
+
+	/**
+	 * 璁剧疆 寮€濮� 璧勬簮绫诲瀷锛�0锛氱郴缁熻祫婧愶紝1锛氬紑鏀捐祫婧愶紝榛樿0
+	 * @param sourceTypeStart
+	 */
+	public void setSourceTypeStart(Integer sourceTypeStart){
+		this.sourceTypeStart = sourceTypeStart;
+	}
+
+	/**
+	 * 鑾峰彇 缁撴潫 璧勬簮绫诲瀷锛�0锛氱郴缁熻祫婧愶紝1锛氬紑鏀捐祫婧愶紝榛樿0
+	 * @return sourceTypeEnd
+	 */
+	public Integer getSourceTypeEnd(){
+		return this.sourceTypeEnd;
+	}
+
+	/**
+	 * 璁剧疆 缁撴潫 璧勬簮绫诲瀷锛�0锛氱郴缁熻祫婧愶紝1锛氬紑鏀捐祫婧愶紝榛樿0
+	 * @param sourceTypeEnd
+	 */
+	public void setSourceTypeEnd(Integer sourceTypeEnd){
+		this.sourceTypeEnd = sourceTypeEnd;
+	}
+
+	/**
+	 * 鑾峰彇 澧炲姞 璧勬簮绫诲瀷锛�0锛氱郴缁熻祫婧愶紝1锛氬紑鏀捐祫婧愶紝榛樿0
+	 * @return sourceTypeIncrement
+	 */
+	public Integer getSourceTypeIncrement(){
+		return this.sourceTypeIncrement;
+	}
+
+	/**
+	 * 璁剧疆 澧炲姞 璧勬簮绫诲瀷锛�0锛氱郴缁熻祫婧愶紝1锛氬紑鏀捐祫婧愶紝榛樿0
+	 * @param sourceTypeIncrement
+	 */
+	public void setSourceTypeIncrement(Integer sourceTypeIncrement){
+		this.sourceTypeIncrement = sourceTypeIncrement;
+	}
+
+	/**
+	 * 鑾峰彇 璧勬簮绫诲瀷锛�0锛氱郴缁熻祫婧愶紝1锛氬紑鏀捐祫婧愶紝榛樿0
+	 * @return sourceTypeList
+	 */
+	public List<Integer> getSourceTypeList(){
+		return this.sourceTypeList;
+	}
+
+	/**
+	 * 璁剧疆 璧勬簮绫诲瀷锛�0锛氱郴缁熻祫婧愶紝1锛氬紑鏀捐祫婧愶紝榛樿0
+	 * @param sourceTypeList
+	 */
+	public void setSourceTypeList(List<Integer> sourceTypeList){
+		this.sourceTypeList = sourceTypeList;
+	}
+
+	/**
+	 * 鑾峰彇 寮€濮� 鍒涘缓鏃堕棿
+	 * @return createTimeStart
+	 */
+	public String getCreateTimeStart(){
+		return this.createTimeStart;
+	}
+
+	/**
+	 * 璁剧疆 寮€濮� 鍒涘缓鏃堕棿
+	 * @param createTimeStart
+	 */
+	public void setCreateTimeStart(String createTimeStart){
+		this.createTimeStart = createTimeStart;
+	}
+
+	/**
+	 * 鑾峰彇 缁撴潫 鍒涘缓鏃堕棿
+	 * @return createTimeEnd
+	 */
+	public String getCreateTimeEnd(){
+		return this.createTimeEnd;
+	}
+
+	/**
+	 * 璁剧疆 缁撴潫 鍒涘缓鏃堕棿
+	 * @param createTimeEnd
+	 */
+	public void setCreateTimeEnd(String createTimeEnd){
+		this.createTimeEnd = createTimeEnd;
+	}
+
+	/**
+	 * 鑾峰彇 寮€濮� 鍒涘缓鐢ㄦ埛
+	 * @return createUserIdStart
+	 */
+	public Long getCreateUserIdStart(){
+		return this.createUserIdStart;
+	}
+
+	/**
+	 * 璁剧疆 寮€濮� 鍒涘缓鐢ㄦ埛
+	 * @param createUserIdStart
+	 */
+	public void setCreateUserIdStart(Long createUserIdStart){
+		this.createUserIdStart = createUserIdStart;
+	}
+
+	/**
+	 * 鑾峰彇 缁撴潫 鍒涘缓鐢ㄦ埛
+	 * @return createUserIdEnd
+	 */
+	public Long getCreateUserIdEnd(){
+		return this.createUserIdEnd;
+	}
+
+	/**
+	 * 璁剧疆 缁撴潫 鍒涘缓鐢ㄦ埛
+	 * @param createUserIdEnd
+	 */
+	public void setCreateUserIdEnd(Long createUserIdEnd){
+		this.createUserIdEnd = createUserIdEnd;
+	}
+
+	/**
+	 * 鑾峰彇 澧炲姞 鍒涘缓鐢ㄦ埛
+	 * @return createUserIdIncrement
+	 */
+	public Long getCreateUserIdIncrement(){
+		return this.createUserIdIncrement;
+	}
+
+	/**
+	 * 璁剧疆 澧炲姞 鍒涘缓鐢ㄦ埛
+	 * @param createUserIdIncrement
+	 */
+	public void setCreateUserIdIncrement(Long createUserIdIncrement){
+		this.createUserIdIncrement = createUserIdIncrement;
+	}
+
+	/**
+	 * 鑾峰彇 鍒涘缓鐢ㄦ埛
+	 * @return createUserIdList
+	 */
+	public List<Long> getCreateUserIdList(){
+		return this.createUserIdList;
+	}
+
+	/**
+	 * 璁剧疆 鍒涘缓鐢ㄦ埛
+	 * @param createUserIdList
+	 */
+	public void setCreateUserIdList(List<Long> createUserIdList){
+		this.createUserIdList = createUserIdList;
+	}
+
+	/**
+	 * 鑾峰彇 鍒涘缓鐢ㄦ埛鍚嶇О
+	 * @return createUserNameList
+	 */
+	public List<String> getCreateUserNameList(){
+		return this.createUserNameList;
+	}
+
+	/**
+	 * 璁剧疆 鍒涘缓鐢ㄦ埛鍚嶇О
+	 * @param createUserNameList
+	 */
+	public void setCreateUserNameList(List<String> createUserNameList){
+		this.createUserNameList = createUserNameList;
+	}
+
+	/**
+	 * 鑾峰彇 寮€濮� 鐢ㄦ埛绫诲瀷锛�0锛氱郴缁熺敤鎴� 1:浠g悊鍟嗙敤鎴� 2:鍝佺墝鍟嗙敤鎴�
+	 * @return userTypeStart
+	 */
+	public Integer getUserTypeStart(){
+		return this.userTypeStart;
+	}
+
+	/**
+	 * 璁剧疆 寮€濮� 鐢ㄦ埛绫诲瀷锛�0锛氱郴缁熺敤鎴� 1:浠g悊鍟嗙敤鎴� 2:鍝佺墝鍟嗙敤鎴�
+	 * @param userTypeStart
+	 */
+	public void setUserTypeStart(Integer userTypeStart){
+		this.userTypeStart = userTypeStart;
+	}
+
+	/**
+	 * 鑾峰彇 缁撴潫 鐢ㄦ埛绫诲瀷锛�0锛氱郴缁熺敤鎴� 1:浠g悊鍟嗙敤鎴� 2:鍝佺墝鍟嗙敤鎴�
+	 * @return userTypeEnd
+	 */
+	public Integer getUserTypeEnd(){
+		return this.userTypeEnd;
+	}
+
+	/**
+	 * 璁剧疆 缁撴潫 鐢ㄦ埛绫诲瀷锛�0锛氱郴缁熺敤鎴� 1:浠g悊鍟嗙敤鎴� 2:鍝佺墝鍟嗙敤鎴�
+	 * @param userTypeEnd
+	 */
+	public void setUserTypeEnd(Integer userTypeEnd){
+		this.userTypeEnd = userTypeEnd;
+	}
+
+	/**
+	 * 鑾峰彇 澧炲姞 鐢ㄦ埛绫诲瀷锛�0锛氱郴缁熺敤鎴� 1:浠g悊鍟嗙敤鎴� 2:鍝佺墝鍟嗙敤鎴�
+	 * @return userTypeIncrement
+	 */
+	public Integer getUserTypeIncrement(){
+		return this.userTypeIncrement;
+	}
+
+	/**
+	 * 璁剧疆 澧炲姞 鐢ㄦ埛绫诲瀷锛�0锛氱郴缁熺敤鎴� 1:浠g悊鍟嗙敤鎴� 2:鍝佺墝鍟嗙敤鎴�
+	 * @param userTypeIncrement
+	 */
+	public void setUserTypeIncrement(Integer userTypeIncrement){
+		this.userTypeIncrement = userTypeIncrement;
+	}
+
+	/**
+	 * 鑾峰彇 鐢ㄦ埛绫诲瀷锛�0锛氱郴缁熺敤鎴� 1:浠g悊鍟嗙敤鎴� 2:鍝佺墝鍟嗙敤鎴�
+	 * @return userTypeList
+	 */
+	public List<Integer> getUserTypeList(){
+		return this.userTypeList;
+	}
+
+	/**
+	 * 璁剧疆 鐢ㄦ埛绫诲瀷锛�0锛氱郴缁熺敤鎴� 1:浠g悊鍟嗙敤鎴� 2:鍝佺墝鍟嗙敤鎴�
+	 * @param userTypeList
+	 */
+	public void setUserTypeList(List<Integer> userTypeList){
+		this.userTypeList = userTypeList;
+	}
+
+
+}
\ No newline at end of file
diff --git a/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/service/ResourceService.java b/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/service/ResourceService.java
new file mode 100644
index 0000000000000000000000000000000000000000..57e76482d77e9791727736d5abfc03ac825069cb
--- /dev/null
+++ b/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/service/ResourceService.java
@@ -0,0 +1,66 @@
+/**
+* 鏂囦欢锛歊esourceService.java
+* 鐗堟湰锛�1.0.0
+* 鏃ユ湡锛�
+* Copyright &reg; 
+* All right reserved.
+*/
+
+package com.mortals.xhx.base.system.resource.service;
+
+
+import com.mortals.framework.exception.AppException;
+import com.mortals.framework.service.ICRUDService;
+import com.mortals.xhx.base.system.resource.model.ResourceEntity;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>Title: 璧勬簮淇℃伅</p>
+ * <p>Description: ResourceService service鎺ュ彛 </p>
+ * <p>Copyright: Copyright &reg;  </p>
+ * <p>Company: </p>
+ * @author 
+ * @version 1.0.0
+ */
+
+public interface ResourceService extends ICRUDService<ResourceEntity,Long> {
+    /**
+     * 鏌ヨ鎵€鏈夊彲鐢ㄨ祫婧�
+     * @return
+     * @throws AppException
+     */
+     List<ResourceEntity> findAllEnable() throws AppException;
+
+    /**
+     * 鏍规嵁鐢ㄦ埛鏌ヨ鍙敤璧勬簮
+     * @param userId
+     * @return
+     * @throws AppException
+     */
+     List<ResourceEntity> findListByUserId(Long userId) throws AppException;
+
+    /**
+     * 鏌ヨ鐢ㄦ埛鍙敤璧勬簮
+     * @param userId
+     * @return 瀛楃涓诧紝澶氫釜浠ラ€楀彿鍒嗛殧
+     * @throws AppException
+     */
+     String findUrlByUserId(Long userId) throws AppException;
+
+    /**
+     * 鏌ヨ鐢ㄦ埛鐢ㄨ祫婧愰泦鍚�
+     * @param userId
+     * @return
+     * @throws AppException
+     */
+     Set<String> findUrlSetByUserId(Long userId) throws AppException;
+
+    /**
+     * 鑾峰彇鎵€鏈夎祫婧愶紝涓嶅垎椤�
+     * @return
+     * @param userType
+     */
+    List<ResourceEntity> findAll(int userType);
+}
\ No newline at end of file
diff --git a/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/service/impl/ResourceServiceImpl.java b/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/service/impl/ResourceServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..63be36ad776ba696a00af4d3f3410f799f8f8870
--- /dev/null
+++ b/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/service/impl/ResourceServiceImpl.java
@@ -0,0 +1,102 @@
+/**
+* 鏂囦欢锛歊esourceServiceImpl.java
+* 鐗堟湰锛�1.0.0
+* 鏃ユ湡锛�
+* Copyright &reg; 
+* All right reserved.
+*/
+
+package com.mortals.xhx.base.system.resource.service.impl;
+
+import com.mortals.framework.exception.AppException;
+import com.mortals.framework.model.Context;
+import com.mortals.framework.service.ICacheService;
+import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
+import com.mortals.framework.util.DataUtil;
+import com.mortals.framework.util.StringUtils;
+import com.mortals.xhx.base.system.resource.dao.ResourceDao;
+import com.mortals.xhx.base.system.resource.model.ResourceEntity;
+import com.mortals.xhx.base.system.resource.model.ResourceQuery;
+import com.mortals.xhx.base.system.resource.service.ResourceService;
+import com.mortals.xhx.common.key.RedisKey;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import static com.mortals.xhx.common.utils.MenuEncodeUtil.generateMenuUrlCode;
+
+/**
+ * <p>Title: 璧勬簮淇℃伅</p>
+ * <p>Description: ResourceServiceImpl service鎺ュ彛 </p>
+ * <p>Copyright: Copyright &reg;  </p>
+ * <p>Company: </p>
+ * @author 
+ * @version 1.0.0
+ */
+@Service("resourceService")
+public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao,ResourceEntity,Long> implements ResourceService {
+
+    @Autowired
+    private ICacheService cacheService;
+
+    @Override
+    public List<ResourceEntity> findAllEnable() throws AppException {
+        ResourceQuery params = new ResourceQuery();
+        return dao.getList(params);
+    }
+
+    @Override
+    public List<ResourceEntity> findListByUserId(Long userId) throws AppException {
+        return dao.getListByUserId(userId);
+    }
+
+    @Override
+    public String findUrlByUserId(Long userId) throws AppException {
+        Set<String> urls = this.findUrlSetByUserId(userId);
+        return StringUtils.converArray2Str(urls.toArray(new String[urls.size()]));
+    }
+
+    @Override
+    public Set<String> findUrlSetByUserId(Long userId) throws AppException {
+        Set<String> urls = new HashSet<>();
+        List<ResourceEntity> resList = this.findListByUserId(userId);
+        for (ResourceEntity res : resList) {
+            String url = res.getUrl();
+            if (StringUtils.isEmpty(url)) {
+                continue;
+            }
+            url = url.replaceAll("锛�", ",");
+            urls.addAll(StringUtils.converStr2Set(url));
+        }
+        return urls;
+    }
+
+    @Override
+    public List<ResourceEntity> findAll(int userType) {
+        return dao.getAll(userType);
+    }
+
+
+    @Override
+    protected void updateAfter(ResourceEntity entity, Context context) throws AppException {
+        updateUserMenuUrlCache();
+    }
+
+    @Override
+    protected void saveAfter(ResourceEntity entity, Context context) throws AppException {
+        updateUserMenuUrlCache();
+    }
+
+    private void updateUserMenuUrlCache() {
+        //鏇存柊鐢ㄦ埛鑿滃崟
+        Set<String> hkeys = cacheService.hkeys(RedisKey.KEY_USER_MENU_CACHE);
+        for (String userId : hkeys) {
+            Set<String> urls = this.findUrlSetByUserId(DataUtil.converStr2Long(userId,0L));
+            String menuUrlCode = generateMenuUrlCode(urls);
+            cacheService.hset(RedisKey.KEY_USER_MENU_CACHE, userId,menuUrlCode);
+        }
+    }
+}
\ No newline at end of file
diff --git a/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/web/ResourceController.java b/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/web/ResourceController.java
new file mode 100644
index 0000000000000000000000000000000000000000..c75ef9606437b03ee9b3073d14f3c660256e48ff
--- /dev/null
+++ b/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/web/ResourceController.java
@@ -0,0 +1,63 @@
+package com.mortals.xhx.base.system.resource.web;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.mortals.framework.common.IBaseEnum;
+import com.mortals.framework.common.code.UserType;
+import com.mortals.framework.model.Context;
+import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
+import com.mortals.xhx.base.system.resource.model.ResourceEntity;
+import com.mortals.xhx.base.system.resource.service.ResourceService;
+import com.mortals.xhx.common.code.AuthType;
+import com.mortals.xhx.common.code.SourceType;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 璧勬簮淇℃伅
+ *
+ * @author: zxfei
+ * @date: 2022/5/7 15:27
+ */
+@Slf4j
+@RestController
+@RequestMapping("resource")
+public class ResourceController extends BaseCRUDJsonBodyMappingController<ResourceService,ResourceEntity,Long> {
+
+	public ResourceController(){
+		super.setModuleDesc("璧勬簮淇℃伅");
+	}
+
+	@Override
+	protected void init(Map<String, Object> model, Context context) {
+		Map<String, Object> statsus = new HashMap<String, Object>();
+		statsus.put("authType", AuthType.getEnumMap());
+		statsus.put("sourceType", SourceType.getEnumMap());
+		if (getCurUser().isAdmin()) {
+			statsus.put("userType",  IBaseEnum.getEnumMap(UserType.class));
+		} else {
+			statsus.put("userType", UserType.findByValue(getCurUser().getUserType()));
+		}
+		model.put(KEY_RESULT_DICT, statsus);
+	}
+
+	/**
+	 * 鑾峰彇鎵€鏈夎祫婧�
+	 *
+	 * @return
+	 */
+	@PostMapping("allResources")
+	public String allResources(int userType) {
+		JSONObject ret = new JSONObject();
+		ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
+		ret.put(KEY_RESULT_MSG, "鎵€鏈夌殑customer浠ュ強user");
+		ret.put(KEY_RESULT_DATA, service.findAll(userType));
+		return ret.toJSONString();
+	}
+	
+}
\ No newline at end of file
diff --git a/portal-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java b/portal-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java
index 8efa5680ce11d2a36e084b0190f5204e0f7b8100..c6b7074ad4b67df5bacf8065f4b4872dc0906fd3 100644
--- a/portal-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java
+++ b/portal-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java
@@ -10,4 +10,9 @@ public class RedisKey {
      */
     public static final String KEY_MENU_CACHE = "iot:base:MenuCacheKey:";
 
+    public static final String KEY_USER_MENU_CACHE = "user:menu";
+
+
+    public static final String KEY_BURY_POINT_CACHE = "bury:point";
+
 }
diff --git a/portal-manager/src/main/java/com/mortals/xhx/common/utils/MenuEncodeUtil.java b/portal-manager/src/main/java/com/mortals/xhx/common/utils/MenuEncodeUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..9de4fc113650d8e44ba74848042ff3b59db7f4f8
--- /dev/null
+++ b/portal-manager/src/main/java/com/mortals/xhx/common/utils/MenuEncodeUtil.java
@@ -0,0 +1,30 @@
+package com.mortals.xhx.common.utils;
+
+import com.mortals.framework.ap.GlobalSysInfo;
+import com.mortals.framework.ap.SysConstains;
+import com.mortals.framework.util.AESUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.Set;
+
+@Slf4j
+public class MenuEncodeUtil {
+
+    public static String generateMenuUrlCode(Set<String> urls) {
+        try {
+            String securityKey = GlobalSysInfo.getPropertyValue(SysConstains.PROP_COOKIE_SECURITY_KEY);
+            StringBuilder sb = new StringBuilder();
+            if (urls != null && urls.size() > 0) {
+                for (String url : urls) {
+                    int index = url.hashCode() & (Integer.MAX_VALUE - 1);
+                    sb.append(index).append(",");
+                }
+            }
+            String menuUrl = sb.toString();
+            return AESUtil.encrypt(menuUrl, securityKey);
+        } catch (Throwable e) {
+            log.error("缂栫爜寮傚父",e);
+            return null;
+        }
+    }
+}
diff --git a/portal-manager/src/main/java/com/mortals/xhx/daemon/applicationservice/ComsumerBurySaveService.java b/portal-manager/src/main/java/com/mortals/xhx/daemon/applicationservice/ComsumerBurySaveService.java
new file mode 100644
index 0000000000000000000000000000000000000000..7d6889ef75bdadd17d63ffa4b88ff33592e9daeb
--- /dev/null
+++ b/portal-manager/src/main/java/com/mortals/xhx/daemon/applicationservice/ComsumerBurySaveService.java
@@ -0,0 +1,82 @@
+package com.mortals.xhx.daemon.applicationservice;
+
+import com.mortals.framework.service.ICacheService;
+import com.mortals.framework.springcloud.service.IApplicationStartedService;
+import com.mortals.xhx.module.page.model.pdu.BuryPointPdu;
+import com.mortals.xhx.module.page.service.PageAccessDepthService;
+import com.mortals.xhx.module.page.service.PageAccessService;
+import com.mortals.xhx.module.page.service.PageEventService;
+import com.mortals.xhx.module.page.service.PageRouteService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+
+import static com.mortals.xhx.common.key.RedisKey.KEY_BURY_POINT_CACHE;
+
+
+@Component
+@Slf4j
+public class ComsumerBurySaveService implements IApplicationStartedService {
+
+    protected Boolean stopped = false;
+    @Autowired
+    private ICacheService cacheService;
+
+    @Autowired
+    private PageAccessService pageAccessService;
+    @Autowired
+    private PageAccessDepthService pageAccessDepthService;
+    @Autowired
+    private PageEventService pageEventService;
+    @Autowired
+    private PageRouteService pageRouteService;
+
+    @Override
+    public void start() {
+        Thread sendThread = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                int waitTime = 10;
+                while (!stopped) {
+                    try {
+                        BuryPointPdu pdu = cacheService.lpop(KEY_BURY_POINT_CACHE, BuryPointPdu.class);
+                        if(!ObjectUtils.isEmpty(pdu)){
+                            pageAccessService.saveByPdu(pdu);
+                            pageAccessDepthService.saveByPdu(pdu);
+                            pageEventService.saveByPdu(pdu);
+                            pageRouteService.saveByPdu(pdu);
+                        }
+
+                        try {
+                            Thread.sleep(waitTime);
+                        } catch (InterruptedException e2) {
+                        }
+
+                    } catch (Exception e) {
+                        log.error("寮傚父", e);
+
+                        try {
+                            Thread.sleep(waitTime);
+                        } catch (InterruptedException e2) {
+                        }
+                    }
+                }
+            }
+        });
+
+        sendThread.start();
+    }
+
+    @Override
+    public void stop() {
+        log.info("鍋滄鏈嶅姟..");
+        this.stopped = true;
+    }
+
+    @Override
+    public int getOrder() {
+        return 50;
+    }
+
+}
diff --git a/portal-manager/src/main/java/com/mortals/xhx/module/page/web/BuryPointController.java b/portal-manager/src/main/java/com/mortals/xhx/module/page/web/BuryPointController.java
index b526781d9ca054d50628badd481d5f430ce1f5ac..d01cbb3597b4e05eb049910b7637b81307f6f8a0 100644
--- a/portal-manager/src/main/java/com/mortals/xhx/module/page/web/BuryPointController.java
+++ b/portal-manager/src/main/java/com/mortals/xhx/module/page/web/BuryPointController.java
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.mortals.framework.annotation.UnAuth;
 import com.mortals.framework.exception.AppException;
 import com.mortals.framework.model.Context;
+import com.mortals.framework.service.ICacheService;
 import com.mortals.framework.util.StringUtils;
 import com.mortals.framework.web.BaseJsonBodyController;
 import com.mortals.xhx.module.page.model.PageInfoEntity;
@@ -22,6 +23,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static com.mortals.xhx.common.key.RedisKey.KEY_BURY_POINT_CACHE;
+
 /**
  * 椤甸潰鍩嬬偣
  */
@@ -39,24 +42,26 @@ public class BuryPointController extends BaseJsonBodyController {
     private PageRouteService pageRouteService;
     @Autowired
     private PageInfoService pageInfoService;
+    @Autowired
+    private ICacheService cacheService;
 
     @PostMapping({"save"})
     @UnAuth
     public String save(@RequestBody BuryPointPdu pdu) {
         Map<String, Object> model = new HashMap();
-        Context context = this.getContext();
         int code = 1;
         String busiDesc = "淇濆瓨椤甸潰鏁版嵁鍩嬬偣淇℃伅";
         try {
             validData(pdu);
-            pageAccessService.saveByPdu(pdu);
-            pageAccessDepthService.saveByPdu(pdu);
-            pageEventService.saveByPdu(pdu);
-            pageRouteService.saveByPdu(pdu);
+            cacheService.lpush(KEY_BURY_POINT_CACHE,pdu);
+//            pageAccessService.saveByPdu(pdu);
+//            pageAccessDepthService.saveByPdu(pdu);
+//            pageEventService.saveByPdu(pdu);
+//            pageRouteService.saveByPdu(pdu);
             model.put("message_info", busiDesc + "鎴愬姛");
             this.recordSysLog(this.request, busiDesc + " 銆愭垚鍔熴€�");
-        } catch (Exception var7) {
-            this.doException(this.request, busiDesc, model, var7);
+        } catch (Exception e) {
+            this.doException(this.request, busiDesc, model, e);
             code = -1;
         }
         model.put("entity", pdu);
diff --git a/portal-manager/src/main/resources/config/mybatis-sqlmap-config.xml b/portal-manager/src/main/resources/config/mybatis-sqlmap-config.xml
index 8f17f2fb52f9f66c7e5dcfd6d9fc71f5d45c51bc..60181f97561d90417c0afe12f401fb926bb0a75f 100644
--- a/portal-manager/src/main/resources/config/mybatis-sqlmap-config.xml
+++ b/portal-manager/src/main/resources/config/mybatis-sqlmap-config.xml
@@ -17,6 +17,8 @@
 			<property name="showSql" value="MySql" />
 		</plugin>
 		<plugin interceptor="com.mortals.framework.thirty.mybatis.LogInterceptor">
+			<property name="enableExecutorTime" value="true" />
+			<property name="showSql" value="false" />
 		</plugin>
 	</plugins>
 </configuration>
\ No newline at end of file