diff --git a/device-manager/src/main/java/com/mortals/xhx/annotation/DataPermission.java b/device-manager/src/main/java/com/mortals/xhx/annotation/DataPermission.java
new file mode 100644
index 0000000000000000000000000000000000000000..99d21e4306eadf4d80b3d05be0bc996ffb5b2d68
--- /dev/null
+++ b/device-manager/src/main/java/com/mortals/xhx/annotation/DataPermission.java
@@ -0,0 +1,24 @@
+package com.mortals.xhx.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ *
+ * @author: zxfei
+ * @date: 2024/5/15 16:09
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE, ElementType.METHOD})
+@Documented
+public @interface DataPermission {
+    /**
+     * 鏁版嵁鏉冮檺绫诲瀷
+     * 1 涓婁笅绾ф巿鏉�  2 鏁版嵁鑼冨洿鎺堟潈
+     */
+    String permissionType() default "2";
+
+    /**
+     * 閰嶇疆鑿滃崟鐨勭粍浠惰矾寰�,鐢ㄤ簬鏁版嵁鏉冮檺
+     */
+    String componentRoute() default "";
+}
diff --git a/device-manager/src/main/java/com/mortals/xhx/base/framework/interceptor/AuthUserInterceptor.java b/device-manager/src/main/java/com/mortals/xhx/base/framework/interceptor/AuthUserInterceptor.java
index 1595efc54f43b3e4f306ceb6182d13563ab00cfa..510fc7cc8ad76ce9c56cc9bed4158aba7d09ac49 100644
--- a/device-manager/src/main/java/com/mortals/xhx/base/framework/interceptor/AuthUserInterceptor.java
+++ b/device-manager/src/main/java/com/mortals/xhx/base/framework/interceptor/AuthUserInterceptor.java
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.mortals.framework.annotation.UnAuth;
 import com.mortals.framework.common.Rest;
 import com.mortals.framework.service.IAuthTokenService;
+import com.mortals.framework.service.ICacheService;
 import com.mortals.framework.service.IUser;
 import com.mortals.framework.util.AESUtil;
 import com.mortals.framework.utils.ServletUtils;
@@ -33,6 +34,8 @@ public class AuthUserInterceptor extends BaseInterceptor {
     private InterceptorConfig config;
     @Autowired
     private IAuthTokenService authTokenService;
+    @Autowired
+    private ICacheService cacheService;
 
     @Override
     public int getOrder() {
diff --git a/device-manager/src/main/java/com/mortals/xhx/base/system/role/web/RoleController.java b/device-manager/src/main/java/com/mortals/xhx/base/system/role/web/RoleController.java
index 1c3aadfd75ca02f74d2561d2f9bcd4cd3af4f995..f491e678b00e3a11efe463778aa9b443167619fc 100644
--- a/device-manager/src/main/java/com/mortals/xhx/base/system/role/web/RoleController.java
+++ b/device-manager/src/main/java/com/mortals/xhx/base/system/role/web/RoleController.java
@@ -5,21 +5,18 @@ 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.framework.web.BasePhpCRUDJsonMappingController;
-import com.mortals.xhx.base.system.role.model.RoleQuery;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import com.mortals.framework.web.BaseCRUDJsonMappingController;
 import com.mortals.xhx.base.system.role.model.RoleEntity;
 import com.mortals.xhx.base.system.role.model.RoleUserEntity;
 import com.mortals.xhx.base.system.role.service.RoleService;
 import com.mortals.xhx.base.system.role.service.RoleUserService;
 import com.mortals.xhx.common.code.RoleType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
diff --git a/device-manager/src/main/java/com/mortals/xhx/module/device/service/impl/DeviceServiceImpl.java b/device-manager/src/main/java/com/mortals/xhx/module/device/service/impl/DeviceServiceImpl.java
index e74c0e0dc0ced1a125ec8713dd2f916c93e82258..a794e62808c033f7433fea01d31378e4901e6d6c 100644
--- a/device-manager/src/main/java/com/mortals/xhx/module/device/service/impl/DeviceServiceImpl.java
+++ b/device-manager/src/main/java/com/mortals/xhx/module/device/service/impl/DeviceServiceImpl.java
@@ -50,6 +50,7 @@ import org.springframework.amqp.rabbit.listener.DirectMessageListenerContainer;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
@@ -74,6 +75,7 @@ import static java.math.BigDecimal.ROUND_HALF_DOWN;
 public class DeviceServiceImpl extends AbstractCRUDCacheServiceImpl<DeviceDao, DeviceEntity, Long> implements DeviceService {
 
     @Autowired
+    @Lazy
     private ProductService productService;
     @Autowired
     private PlatformService platformService;
@@ -81,7 +83,6 @@ public class DeviceServiceImpl extends AbstractCRUDCacheServiceImpl<DeviceDao, D
     private ISiteFeign siteFeign;
     @Autowired
     private DeviceLogService deviceLogService;
-
     @Autowired
     private MessageProducer messageProducer;
     @Autowired
diff --git a/device-manager/src/main/java/com/mortals/xhx/module/device/web/DeviceController.java b/device-manager/src/main/java/com/mortals/xhx/module/device/web/DeviceController.java
index 2f0fdc72af84b3d979a7b627c8926dd14d6e1069..f6d759f8e0c2fa059cce057bd9c6ee01d5d21ac8 100644
--- a/device-manager/src/main/java/com/mortals/xhx/module/device/web/DeviceController.java
+++ b/device-manager/src/main/java/com/mortals/xhx/module/device/web/DeviceController.java
@@ -10,6 +10,7 @@ import com.mortals.framework.model.Context;
 import com.mortals.framework.model.OrderCol;
 import com.mortals.framework.util.FileUtil;
 import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
+import com.mortals.xhx.annotation.DataPermission;
 import com.mortals.xhx.base.system.param.service.ParamService;
 import com.mortals.xhx.base.system.upload.service.UploadService;
 import com.mortals.xhx.common.code.*;
@@ -119,6 +120,12 @@ public class DeviceController extends BaseCRUDJsonBodyMappingController<DeviceSe
         super.init(model, context);
     }
 
+    @Override
+    @DataPermission
+    public Rest<Object> list(@RequestBody DeviceEntity query) {
+        return super.list(query);
+    }
+
     @Override
     protected void doListBefore(DeviceEntity query, Map<String, Object> model, Context context) throws AppException {
         if (ObjectUtils.isEmpty(query.getOrderColList())) {
diff --git a/device-manager/src/main/java/com/mortals/xhx/module/product/service/impl/ProductServiceImpl.java b/device-manager/src/main/java/com/mortals/xhx/module/product/service/impl/ProductServiceImpl.java
index 3df0ad0e6cf36ce28e0f70d13b924c11ac40c033..d1c6043684341e75ee0c31034e2ca21543e3031a 100644
--- a/device-manager/src/main/java/com/mortals/xhx/module/product/service/impl/ProductServiceImpl.java
+++ b/device-manager/src/main/java/com/mortals/xhx/module/product/service/impl/ProductServiceImpl.java
@@ -18,7 +18,6 @@ import com.mortals.xhx.common.key.QueueKey;
 import com.mortals.xhx.common.model.DefaultTbQueueMsgHeaders;
 import com.mortals.xhx.common.model.MessageHeader;
 import com.mortals.xhx.common.utils.BeanUtil;
-import com.mortals.xhx.feign.site.ISiteFeign;
 import com.mortals.xhx.module.device.model.DeviceEntity;
 import com.mortals.xhx.module.device.model.DeviceLogEntity;
 import com.mortals.xhx.module.device.model.DeviceQuery;
@@ -39,6 +38,7 @@ import com.mortals.xhx.queue.TbQueueMsgHeaders;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
@@ -65,8 +65,10 @@ import static com.mortals.xhx.common.key.ErrorCode.DEVICE_VERSION_UNEXIST_CONTEN
 public class ProductServiceImpl extends AbstractCRUDCacheServiceImpl<ProductDao, ProductEntity, Long> implements ProductService {
 
     @Autowired
+    @Lazy
     private ProductVersionService productVersionService;
     @Autowired
+    @Lazy
     private DeviceService deviceService;
     @Autowired
     private PlatformService platformService;
@@ -74,8 +76,7 @@ public class ProductServiceImpl extends AbstractCRUDCacheServiceImpl<ProductDao,
     private DeviceLogService deviceLogService;
     @Autowired
     private MessageProducer messageProducer;
-    @Autowired
-    private ISiteFeign siteFeign;
+
 
     @Override
     protected String getExtKey(ProductEntity data) {
diff --git a/device-manager/src/main/java/com/mortals/xhx/module/product/service/impl/ProductVersionServiceImpl.java b/device-manager/src/main/java/com/mortals/xhx/module/product/service/impl/ProductVersionServiceImpl.java
index a7338dbc937a277aeff61dabea3d6438ac7613a4..df99b668fcb1b059a4c824a9b8a6050002dab380 100644
--- a/device-manager/src/main/java/com/mortals/xhx/module/product/service/impl/ProductVersionServiceImpl.java
+++ b/device-manager/src/main/java/com/mortals/xhx/module/product/service/impl/ProductVersionServiceImpl.java
@@ -20,7 +20,9 @@ import com.mortals.xhx.common.model.DefaultTbQueueMsgHeaders;
 import com.mortals.xhx.common.model.MessageHeader;
 import com.mortals.xhx.common.pdu.site.SitePdu;
 import com.mortals.xhx.feign.site.ISiteFeign;
-import com.mortals.xhx.module.device.model.*;
+import com.mortals.xhx.module.device.model.DeviceEntity;
+import com.mortals.xhx.module.device.model.DeviceLogEntity;
+import com.mortals.xhx.module.device.model.DeviceQuery;
 import com.mortals.xhx.module.device.service.DeviceLogService;
 import com.mortals.xhx.module.device.service.DeviceService;
 import com.mortals.xhx.module.product.dao.ProductVersionDao;
diff --git a/device-manager/src/main/resources/config/mybatis-sqlmap-config.xml b/device-manager/src/main/resources/config/mybatis-sqlmap-config.xml
index c92e8cf3d325487dc3ca2703bc18a988d19c0b5f..6fc59dfa8ea15be41e804d4fcc20e1c6e2bff0f6 100644
--- a/device-manager/src/main/resources/config/mybatis-sqlmap-config.xml
+++ b/device-manager/src/main/resources/config/mybatis-sqlmap-config.xml
@@ -17,9 +17,9 @@
 			<property name="showSql" value="MySql" />
 		</plugin>
 
-<!--		<plugin interceptor="com.mortals.framework.thirty.mybatis.LogInterceptor">
+		<plugin interceptor="com.mortals.framework.thirty.mybatis.LogInterceptor">
 			<property name="enableExecutorTime" value="true" />
-			<property name="showSql" value="false" />
-		</plugin>-->
+			<property name="showSql" value="true" />
+		</plugin>
 	</plugins>
 </configuration>
\ No newline at end of file
diff --git a/device-manager/src/main/resources/sqlmap/module/device/DeviceMapper.xml b/device-manager/src/main/resources/sqlmap/module/device/DeviceMapper.xml
index c1e48a8d77cb42b6e20491d9fbe88792b1febeb7..2c1dd65508c8b4065b90b90bacb02849a1f521d9 100644
--- a/device-manager/src/main/resources/sqlmap/module/device/DeviceMapper.xml
+++ b/device-manager/src/main/resources/sqlmap/module/device/DeviceMapper.xml
@@ -1067,6 +1067,10 @@
     <!-- 鏉′欢鏄犲皠-浠e弬鏁� -->
     <sql id="_condition_param_">
         <bind name="conditionParamRef" value="${_conditionParam_}"/>
+        <if test="permissionSql != null and permissionSql != ''">
+                ${permissionSql}
+        </if>
+
         <if test="conditionParamRef.containsKey('id')">
             <if test="conditionParamRef.id != null">
                 ${_conditionType_} a.id=#{${_conditionParam_}.id}
diff --git a/device-manager/src/test/java/com/mortals/httpclient/system.http b/device-manager/src/test/java/com/mortals/httpclient/system.http
index 059ad9a800475167fdf1c61d3586e0c4e85fffd2..67bb27c4a9e682eb1bc8c212bc73445da51de4ec 100644
--- a/device-manager/src/test/java/com/mortals/httpclient/system.http
+++ b/device-manager/src/test/java/com/mortals/httpclient/system.http
@@ -4,9 +4,8 @@ POST {{baseUrl}}/login/login
 Content-Type: application/json
 
 {
-  "loginName":"admin",
-  "password":"admin",
-  "securityCode":"8888"
+  "loginName":"xinhx",
+  "password":"xhxADMIN8@a"
 }
 
 > {%
@@ -15,6 +14,17 @@ client.global.set("authToken", JSON.parse(response.body).data.token);
 %}
 
 
+###璁惧鍒楄〃
+POST {{baseUrl}}/device/list
+Authorization: {{authToken}}
+Content-Type: application/json
+
+{
+  "page": 1,
+  "size": 10,
+  "source": 1
+}
+
 
 ###棣栭〉
 POST {{baseUrl}}/login/index