From 1995c322e7085aa125f90cc5ed1d557a7cf35d3d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AE=89=E6=B5=A9=E6=B5=A9?= <1036606149@qq.com>
Date: Sun, 29 Sep 2024 21:37:40 +0800
Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91=20?=
 =?UTF-8?q?=E4=BA=A7=E5=93=81=E7=89=A9=E6=A8=A1=E5=9E=8B=E5=88=86=E9=A1=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ...m.java => IotProductFunctionTypeEnum.java} |  6 ++--
 .../IotThinkModelFunctionController.java      | 11 +++++++
 .../vo/IotThinkModelFunctionPageReqVO.java    | 32 +++++++++++++++++++
 .../vo/IotThinkModelFunctionSaveReqVO.java    |  4 +--
 .../IotThinkModelFunctionConvert.java         |  8 ++---
 .../IotThinkModelFunctionDO.java              |  3 +-
 .../IotThinkModelFunctionMapper.java          | 12 +++++++
 .../IotThinkModelFunctionService.java         | 10 ++++++
 .../IotThinkModelFunctionServiceImpl.java     | 23 ++++++++-----
 9 files changed, 91 insertions(+), 18 deletions(-)
 rename yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/{IotThingModelTypeEnum.java => IotProductFunctionTypeEnum.java} (81%)
 create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/vo/IotThinkModelFunctionPageReqVO.java

diff --git a/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotThingModelTypeEnum.java b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotProductFunctionTypeEnum.java
similarity index 81%
rename from yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotThingModelTypeEnum.java
rename to yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotProductFunctionTypeEnum.java
index 872dda6a3..9ba3d81b4 100644
--- a/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotThingModelTypeEnum.java
+++ b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/product/IotProductFunctionTypeEnum.java
@@ -7,13 +7,13 @@ import lombok.Getter;
 import java.util.Arrays;
 
 /**
- * IOT 物模型功能类型枚举类
+ * IOT 产品功能类型枚举类
  *
  * @author ahh
  */
 @AllArgsConstructor
 @Getter
-public enum IotThingModelTypeEnum implements IntArrayValuable {
+public enum IotProductFunctionTypeEnum implements IntArrayValuable {
 
     /**
      * 属性
@@ -28,7 +28,7 @@ public enum IotThingModelTypeEnum implements IntArrayValuable {
      */
     EVENT(3, "事件");
 
-    public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(IotThingModelTypeEnum::getType).toArray();
+    public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(IotProductFunctionTypeEnum::getType).toArray();
 
     /**
      * 类型
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/IotThinkModelFunctionController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/IotThinkModelFunctionController.java
index 36b91e85b..6bf516378 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/IotThinkModelFunctionController.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/IotThinkModelFunctionController.java
@@ -1,6 +1,9 @@
 package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction;
 
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.vo.IotThinkModelFunctionPageReqVO;
 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.vo.IotThinkModelFunctionRespVO;
 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.vo.IotThinkModelFunctionSaveReqVO;
 import cn.iocoder.yudao.module.iot.convert.thinkmodelfunction.IotThinkModelFunctionConvert;
@@ -71,4 +74,12 @@ public class IotThinkModelFunctionController {
         List<IotThinkModelFunctionRespVO> respVO = IotThinkModelFunctionConvert.INSTANCE.convertList(thinkModelFunctionListByProductId);
         return success(respVO);
     }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得IoT 产品物模型分页")
+    @PreAuthorize("@ss.hasPermission('iot:think-model-function:query')")
+    public CommonResult<PageResult<IotThinkModelFunctionRespVO>> getThinkModelFunctionPage(@Valid IotThinkModelFunctionPageReqVO pageReqVO) {
+        PageResult<IotThinkModelFunctionDO> pageResult = thinkModelFunctionService.getThinkModelFunctionPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, IotThinkModelFunctionRespVO.class));
+    }
 }
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/vo/IotThinkModelFunctionPageReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/vo/IotThinkModelFunctionPageReqVO.java
new file mode 100644
index 000000000..8a590d429
--- /dev/null
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/vo/IotThinkModelFunctionPageReqVO.java
@@ -0,0 +1,32 @@
+package cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.validation.InEnum;
+import cn.iocoder.yudao.module.iot.enums.product.IotProductFunctionTypeEnum;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+@Schema(description = "管理后台 - IoT 产品物模型分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class IotThinkModelFunctionPageReqVO extends PageParam {
+
+    @Schema(description = "功能标识")
+    private String identifier;
+
+    @Schema(description = "功能名称", example = "张三")
+    private String name;
+
+    @Schema(description = "功能类型", example = "1")
+    @InEnum(IotProductFunctionTypeEnum.class)
+    private Integer type;
+
+    @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "产品ID不能为空")
+    private Long productId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/vo/IotThinkModelFunctionSaveReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/vo/IotThinkModelFunctionSaveReqVO.java
index 106972fe3..7d51ce504 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/vo/IotThinkModelFunctionSaveReqVO.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thinkmodelfunction/vo/IotThinkModelFunctionSaveReqVO.java
@@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.validation.InEnum;
 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.ThingModelEvent;
 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.ThingModelProperty;
 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.ThingModelService;
-import cn.iocoder.yudao.module.iot.enums.product.IotThingModelTypeEnum;
+import cn.iocoder.yudao.module.iot.enums.product.IotProductFunctionTypeEnum;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotEmpty;
 import jakarta.validation.constraints.NotNull;
@@ -38,7 +38,7 @@ public class IotThinkModelFunctionSaveReqVO {
 
     @Schema(description = "功能类型", requiredMode = Schema.RequiredMode.REQUIRED)
     @NotNull(message = "功能类型不能为空")
-    @InEnum(IotThingModelTypeEnum.class)
+    @InEnum(IotProductFunctionTypeEnum.class)
     private Integer type;
 
     @Schema(description = "属性", requiredMode = Schema.RequiredMode.REQUIRED)
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/convert/thinkmodelfunction/IotThinkModelFunctionConvert.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/convert/thinkmodelfunction/IotThinkModelFunctionConvert.java
index 08dabd5d6..764d4c030 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/convert/thinkmodelfunction/IotThinkModelFunctionConvert.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/convert/thinkmodelfunction/IotThinkModelFunctionConvert.java
@@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingMode
 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.vo.IotThinkModelFunctionRespVO;
 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.vo.IotThinkModelFunctionSaveReqVO;
 import cn.iocoder.yudao.module.iot.dal.dataobject.thinkmodelfunction.IotThinkModelFunctionDO;
-import cn.iocoder.yudao.module.iot.enums.product.IotThingModelTypeEnum;
+import cn.iocoder.yudao.module.iot.enums.product.IotProductFunctionTypeEnum;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 import org.mapstruct.factory.Mappers;
@@ -26,21 +26,21 @@ public interface IotThinkModelFunctionConvert {
     IotThinkModelFunctionDO convert(IotThinkModelFunctionSaveReqVO bean);
 
     default ThingModelProperty convertToProperty(IotThinkModelFunctionSaveReqVO bean) {
-        if (Objects.equals(bean.getType(), IotThingModelTypeEnum.PROPERTY.getType())) {
+        if (Objects.equals(bean.getType(), IotProductFunctionTypeEnum.PROPERTY.getType())) {
             return bean.getProperty();
         }
         return null;
     }
 
     default ThingModelEvent convertToEvent(IotThinkModelFunctionSaveReqVO bean) {
-        if (Objects.equals(bean.getType(), IotThingModelTypeEnum.EVENT.getType())) {
+        if (Objects.equals(bean.getType(), IotProductFunctionTypeEnum.EVENT.getType())) {
             return bean.getEvent();
         }
         return null;
     }
 
     default ThingModelService convertToService(IotThinkModelFunctionSaveReqVO bean) {
-        if (Objects.equals(bean.getType(), IotThingModelTypeEnum.SERVICE.getType())) {
+        if (Objects.equals(bean.getType(), IotProductFunctionTypeEnum.SERVICE.getType())) {
             return bean.getService();
         }
         return null;
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/thinkmodelfunction/IotThinkModelFunctionDO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/thinkmodelfunction/IotThinkModelFunctionDO.java
index f05562452..02b2f9707 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/thinkmodelfunction/IotThinkModelFunctionDO.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/thinkmodelfunction/IotThinkModelFunctionDO.java
@@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingMode
 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.ThingModelProperty;
 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.ThingModelService;
 import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO;
+import cn.iocoder.yudao.module.iot.enums.product.IotProductFunctionTypeEnum;
 import com.baomidou.mybatisplus.annotation.KeySequence;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -65,7 +66,7 @@ public class IotThinkModelFunctionDO extends BaseDO {
     /**
      * 功能类型
      * <p>
-     * 枚举 {@link cn.iocoder.yudao.module.iot.enums.product.IotThingModelTypeEnum}
+     * 枚举 {@link IotProductFunctionTypeEnum}
      */
     private Integer type;
 
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/thinkmodelfunction/IotThinkModelFunctionMapper.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/thinkmodelfunction/IotThinkModelFunctionMapper.java
index 7227a0f26..be8bde652 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/thinkmodelfunction/IotThinkModelFunctionMapper.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/thinkmodelfunction/IotThinkModelFunctionMapper.java
@@ -1,7 +1,9 @@
 package cn.iocoder.yudao.module.iot.dal.mysql.thinkmodelfunction;
 
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.vo.IotThinkModelFunctionPageReqVO;
 import cn.iocoder.yudao.module.iot.dal.dataobject.thinkmodelfunction.IotThinkModelFunctionDO;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -15,6 +17,16 @@ import java.util.List;
 @Mapper
 public interface IotThinkModelFunctionMapper extends BaseMapperX<IotThinkModelFunctionDO> {
 
+    default PageResult<IotThinkModelFunctionDO> selectPage(IotThinkModelFunctionPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotThinkModelFunctionDO>()
+                .eqIfPresent(IotThinkModelFunctionDO::getIdentifier, reqVO.getIdentifier())
+                .likeIfPresent(IotThinkModelFunctionDO::getName, reqVO.getName())
+                .eqIfPresent(IotThinkModelFunctionDO::getType, reqVO.getType())
+                .eqIfPresent(IotThinkModelFunctionDO::getProductId, reqVO.getProductId())
+                .orderByDesc(IotThinkModelFunctionDO::getId));
+    }
+
+
     default IotThinkModelFunctionDO selectByProductIdAndIdentifier(Long productId, String identifier) {
         return selectOne(IotThinkModelFunctionDO::getProductId, productId,
                 IotThinkModelFunctionDO::getIdentifier, identifier);
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/thinkmodelfunction/IotThinkModelFunctionService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/thinkmodelfunction/IotThinkModelFunctionService.java
index e2a5ad38d..7e7ab5916 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/thinkmodelfunction/IotThinkModelFunctionService.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/thinkmodelfunction/IotThinkModelFunctionService.java
@@ -1,5 +1,7 @@
 package cn.iocoder.yudao.module.iot.service.thinkmodelfunction;
 
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.vo.IotThinkModelFunctionPageReqVO;
 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.vo.IotThinkModelFunctionSaveReqVO;
 import cn.iocoder.yudao.module.iot.dal.dataobject.thinkmodelfunction.IotThinkModelFunctionDO;
 import jakarta.validation.Valid;
@@ -51,4 +53,12 @@ public interface IotThinkModelFunctionService {
      * @return 产品物模型列表
      */
     List<IotThinkModelFunctionDO> getThinkModelFunctionListByProductId(Long productId);
+
+    /**
+     * 获得产品物模型分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 产品物模型分页
+     */
+    PageResult<IotThinkModelFunctionDO> getThinkModelFunctionPage(IotThinkModelFunctionPageReqVO pageReqVO);
 }
\ No newline at end of file
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/thinkmodelfunction/IotThinkModelFunctionServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/thinkmodelfunction/IotThinkModelFunctionServiceImpl.java
index 9feb619aa..21759a145 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/thinkmodelfunction/IotThinkModelFunctionServiceImpl.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/thinkmodelfunction/IotThinkModelFunctionServiceImpl.java
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.iot.service.thinkmodelfunction;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.ThingModelEvent;
@@ -11,12 +12,13 @@ import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingMode
 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType.ThingModelArraySpecs;
 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType.ThingModelArrayType;
 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.thingModel.dataType.ThingModelTextType;
+import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.vo.IotThinkModelFunctionPageReqVO;
 import cn.iocoder.yudao.module.iot.controller.admin.thinkmodelfunction.vo.IotThinkModelFunctionSaveReqVO;
 import cn.iocoder.yudao.module.iot.convert.thinkmodelfunction.IotThinkModelFunctionConvert;
 import cn.iocoder.yudao.module.iot.dal.dataobject.thinkmodelfunction.IotThinkModelFunctionDO;
 import cn.iocoder.yudao.module.iot.dal.mysql.thinkmodelfunction.IotThinkModelFunctionMapper;
 import cn.iocoder.yudao.module.iot.enums.product.IotAccessModeEnum;
-import cn.iocoder.yudao.module.iot.enums.product.IotThingModelTypeEnum;
+import cn.iocoder.yudao.module.iot.enums.product.IotProductFunctionTypeEnum;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -55,7 +57,7 @@ public class IotThinkModelFunctionServiceImpl implements IotThinkModelFunctionSe
         thinkModelFunctionMapper.insert(function);
 
         // 3. 如果创建的是属性,需要更新默认的事件和服务
-        if (Objects.equals(createReqVO.getType(), IotThingModelTypeEnum.PROPERTY.getType())) {
+        if (Objects.equals(createReqVO.getType(), IotProductFunctionTypeEnum.PROPERTY.getType())) {
             createDefaultEventsAndServices(createReqVO.getProductId(), createReqVO.getProductKey());
         }
         return function.getId();
@@ -82,7 +84,7 @@ public class IotThinkModelFunctionServiceImpl implements IotThinkModelFunctionSe
         thinkModelFunctionMapper.updateById(thinkModelFunction);
 
         // 4. 如果更新的是属性,需要更新默认的事件和服务
-        if (Objects.equals(updateReqVO.getType(), IotThingModelTypeEnum.PROPERTY.getType())) {
+        if (Objects.equals(updateReqVO.getType(), IotProductFunctionTypeEnum.PROPERTY.getType())) {
             createDefaultEventsAndServices(updateReqVO.getProductId(), updateReqVO.getProductKey());
         }
     }
@@ -107,7 +109,7 @@ public class IotThinkModelFunctionServiceImpl implements IotThinkModelFunctionSe
         thinkModelFunctionMapper.deleteById(id);
 
         // 3. 如果删除的是属性,需要更新默认的事件和服务
-        if (Objects.equals(functionDO.getType(), IotThingModelTypeEnum.PROPERTY.getType())) {
+        if (Objects.equals(functionDO.getType(), IotProductFunctionTypeEnum.PROPERTY.getType())) {
             createDefaultEventsAndServices(functionDO.getProductId(), functionDO.getProductKey());
         }
     }
@@ -133,13 +135,18 @@ public class IotThinkModelFunctionServiceImpl implements IotThinkModelFunctionSe
         return thinkModelFunctionMapper.selectListByProductId(productId);
     }
 
+    @Override
+    public PageResult<IotThinkModelFunctionDO> getThinkModelFunctionPage(IotThinkModelFunctionPageReqVO pageReqVO) {
+        return thinkModelFunctionMapper.selectPage(pageReqVO);
+    }
+
     /**
      * 创建默认的事件和服务
      */
     public void createDefaultEventsAndServices(Long productId, String productKey) {
         // 1. 获取当前属性列表
         List<IotThinkModelFunctionDO> propertyList = thinkModelFunctionMapper
-                .selectListByProductIdAndType(productId, IotThingModelTypeEnum.PROPERTY.getType());
+                .selectListByProductIdAndType(productId, IotProductFunctionTypeEnum.PROPERTY.getType());
 
         // 2. 生成新的事件和服务列表
         List<IotThinkModelFunctionDO> newFunctionList = new ArrayList<>();
@@ -166,7 +173,7 @@ public class IotThinkModelFunctionServiceImpl implements IotThinkModelFunctionSe
         List<IotThinkModelFunctionDO> oldFunctionList = thinkModelFunctionMapper.selectListByProductIdAndIdentifiersAndTypes(
                 productId,
                 Arrays.asList("post", "set", "get"),
-                Arrays.asList(IotThingModelTypeEnum.EVENT.getType(), IotThingModelTypeEnum.SERVICE.getType())
+                Arrays.asList(IotProductFunctionTypeEnum.EVENT.getType(), IotProductFunctionTypeEnum.SERVICE.getType())
         );
 
         // 3.1 使用 diffList 方法比较新旧列表
@@ -229,7 +236,7 @@ public class IotThinkModelFunctionServiceImpl implements IotThinkModelFunctionSe
                 .setIdentifier(event.getIdentifier())
                 .setName(event.getName())
                 .setDescription(event.getDescription())
-                .setType(IotThingModelTypeEnum.EVENT.getType())
+                .setType(IotProductFunctionTypeEnum.EVENT.getType())
                 .setEvent(event);
     }
 
@@ -243,7 +250,7 @@ public class IotThinkModelFunctionServiceImpl implements IotThinkModelFunctionSe
                 .setIdentifier(service.getIdentifier())
                 .setName(service.getName())
                 .setDescription(service.getDescription())
-                .setType(IotThingModelTypeEnum.SERVICE.getType())
+                .setType(IotProductFunctionTypeEnum.SERVICE.getType())
                 .setService(service);
     }