TRX il y a 1 an
Parent
commit
c2ad6bf9b0
22 fichiers modifiés avec 842 ajouts et 0 suppressions
  1. 22 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductBindDeviceBind.java
  2. 49 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductBindDeviceModel.java
  3. 33 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductBindDeviceSearch.java
  4. 47 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductModel.java
  5. 34 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductParam.java
  6. 44 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductProvideServeModel.java
  7. 35 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductProvideServeParam.java
  8. 23 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductProvideServeSearch.java
  9. 37 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductSearch.java
  10. 17 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/DeviceProductBindDeviceDao.java
  11. 18 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/DeviceProductDao.java
  12. 18 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/DeviceProductProvideServeDao.java
  13. 21 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/extend/DeviceProductBindDeviceDaoExtend.java
  14. 21 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/extend/DeviceProductDaoExtend.java
  15. 90 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/impl/DeviceProductBindDeviceDaoImpl.java
  16. 85 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/impl/DeviceProductDaoImpl.java
  17. 52 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/DeviceProduct.java
  18. 49 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/DeviceProductBindDevice.java
  19. 44 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/DeviceProductProvideServe.java
  20. 29 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/deviceProduct/DeviceProductBindDeviceService.java
  21. 29 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/deviceProduct/DeviceProductProvideServeService.java
  22. 45 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/deviceProduct/DeviceProductService.java

+ 22 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductBindDeviceBind.java

@@ -0,0 +1,22 @@
+package com.zhongshu.card.client.model.devices.deviceProduct;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2025/1/8
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeviceProductBindDeviceBind {
+
+    private String deviceProductId;
+
+    private List<String> deviceIds = new ArrayList<>();
+}

+ 49 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductBindDeviceModel.java

@@ -0,0 +1,49 @@
+package com.zhongshu.card.client.model.devices.deviceProduct;
+
+import com.github.microservice.models.type.DeviceModel;
+import com.github.microservice.models.type.DeviceType;
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.model.devices.DeviceInfoModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
+
+/**
+ * @author TRX
+ * @date 2025/1/8
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeviceProductBindDeviceModel extends SuperModel {
+
+    @Schema(description = "所属产品")
+    private DeviceProductModel deviceProduct;
+
+    private String deviceProductId;
+
+    public String getDeviceProductId() {
+        if (ObjectUtils.isNotEmpty(deviceProduct)) {
+            return deviceProduct.getId();
+        }
+        return "";
+    }
+
+    @Schema(description = "设备信息")
+    private DeviceInfoModel deviceInfo;
+
+    @Schema(description = "设备ID、设备号")
+    private String deviceId;
+
+    @Schema(description = "设备名称")
+    private String deviceName;
+
+    @Schema(description = "设备类型,如 消费机 门禁机")
+    private DeviceType deviceType;
+
+    @Schema(description = "设备型号")
+    private DeviceModel deviceModel;
+
+}

+ 33 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductBindDeviceSearch.java

@@ -0,0 +1,33 @@
+package com.zhongshu.card.client.model.devices.deviceProduct;
+
+import com.github.microservice.models.type.DeviceModel;
+import com.github.microservice.models.type.DeviceType;
+import com.zhongshu.card.client.model.base.SuperSearch;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2025/1/8
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeviceProductBindDeviceSearch extends SuperSearch {
+    @Schema(description = "所属产品")
+    private String deviceProductId;
+
+    @Schema(description = "设备ID、设备号")
+    private String deviceId;
+
+    @Schema(description = "设备名称")
+    private String deviceName;
+
+    @Schema(description = "设备类型,如 消费机 门禁机")
+    private DeviceType deviceType;
+
+    @Schema(description = "设备型号")
+    private DeviceModel deviceModel;
+}

+ 47 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductModel.java

@@ -0,0 +1,47 @@
+package com.zhongshu.card.client.model.devices.deviceProduct;
+
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.model.org.OrganizationSimpleModel;
+import com.zhongshu.card.client.type.DataState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2025/1/8
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeviceProductModel extends SuperModel {
+
+    @Schema(description = "产品名称")
+    private String name;
+
+    @Schema(description = "编码/规则")
+    private String code;
+
+    @Schema(description = "设备数量")
+    private Long number = 0L;
+
+    @Schema(description = "服务数量")
+    private Long serviceNumber = 0L;
+
+    @Schema(description = "所属机构")
+    private OrganizationSimpleModel organization;
+
+    @Schema(description = "所属机构oid")
+    private String beLongOid;
+
+    @Schema(description = "所属机构name")
+    private String beLongName;
+
+    @Schema(description = "交易模式")
+    private DataState transaction;
+
+    @Schema(description = "设备多订单模式")
+    private DataState multipleOrders;
+
+}

+ 34 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductParam.java

@@ -0,0 +1,34 @@
+package com.zhongshu.card.client.model.devices.deviceProduct;
+
+import com.zhongshu.card.client.model.base.SuperParam;
+import com.zhongshu.card.client.type.DataState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2025/1/8
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeviceProductParam extends SuperParam {
+
+    @Schema(description = "产品名称")
+    private String name;
+
+    @Schema(description = "编码/规则")
+    private String code;
+
+    @Schema(description = "所属机构oid")
+    private String beLongOid;
+
+    @Schema(description = "交易模式")
+    private DataState transaction;
+
+    @Schema(description = "设备多订单模式")
+    private DataState multipleOrders;
+
+}

+ 44 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductProvideServeModel.java

@@ -0,0 +1,44 @@
+package com.zhongshu.card.client.model.devices.deviceProduct;
+
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.type.DataState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * @author TRX
+ * @date 2025/1/8
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeviceProductProvideServeModel extends SuperModel {
+
+    private String deviceProductId;
+
+    @Schema(description = "服务名称")
+    private String name;
+
+    @Schema(description = "价格")
+    private BigDecimal price = BigDecimal.ZERO;
+
+    @Schema(description = "其他参数")
+    private Object param;
+
+    @Schema(description = "状态")
+    private DataState state;
+
+    private String stateStr;
+
+    public String getStateStr() {
+        if (state != null) {
+            return state.getRemark();
+        }
+        return "";
+    }
+
+}

+ 35 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductProvideServeParam.java

@@ -0,0 +1,35 @@
+package com.zhongshu.card.client.model.devices.deviceProduct;
+
+import com.zhongshu.card.client.model.base.SuperParam;
+import com.zhongshu.card.client.type.DataState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * @author TRX
+ * @date 2025/1/8
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeviceProductProvideServeParam extends SuperParam {
+
+    private String deviceProductId;
+
+    @Schema(description = "服务名称")
+    private String name;
+
+    @Schema(description = "价格")
+    private BigDecimal price = BigDecimal.ZERO;
+
+    @Schema(description = "其他参数")
+    private Object param;
+
+    @Schema(description = "状态")
+    private DataState state;
+
+}

+ 23 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductProvideServeSearch.java

@@ -0,0 +1,23 @@
+package com.zhongshu.card.client.model.devices.deviceProduct;
+
+import com.zhongshu.card.client.model.base.SuperParam;
+import com.zhongshu.card.client.type.DataState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * @author TRX
+ * @date 2025/1/8
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeviceProductProvideServeSearch {
+
+    private String deviceProductId;
+
+}

+ 37 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/devices/deviceProduct/DeviceProductSearch.java

@@ -0,0 +1,37 @@
+package com.zhongshu.card.client.model.devices.deviceProduct;
+
+import com.zhongshu.card.client.model.base.SuperSearch;
+import com.zhongshu.card.client.type.DataState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2025/1/8
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeviceProductSearch extends SuperSearch {
+
+    @Schema(description = "产品名称")
+    private String name;
+
+    @Schema(description = "编码/规则")
+    private String code;
+
+    @Schema(description = "所属机构oid")
+    private String beLongOid;
+
+    @Schema(description = "所属机构name")
+    private String beLongName;
+
+    @Schema(description = "交易模式")
+    private DataState transaction;
+
+    @Schema(description = "设备多订单模式")
+    private DataState multipleOrders;
+
+}

+ 17 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/DeviceProductBindDeviceDao.java

@@ -0,0 +1,17 @@
+package com.zhongshu.card.server.core.dao.devices;
+
+import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.card.server.core.dao.devices.extend.DeviceProductBindDeviceDaoExtend;
+import com.zhongshu.card.server.core.domain.devices.DeviceProductBindDevice;
+
+/**
+ * 设备Dao
+ *
+ * @author TRX
+ * @date 2024/3/21
+ */
+public interface DeviceProductBindDeviceDao extends MongoDao<DeviceProductBindDevice>, DeviceProductBindDeviceDaoExtend {
+
+    DeviceProductBindDevice findTopById(String id);
+
+}

+ 18 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/DeviceProductDao.java

@@ -0,0 +1,18 @@
+package com.zhongshu.card.server.core.dao.devices;
+
+import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.card.server.core.dao.devices.extend.DeviceInfoDaoExtend;
+import com.zhongshu.card.server.core.dao.devices.extend.DeviceProductDaoExtend;
+import com.zhongshu.card.server.core.domain.devices.DeviceProduct;
+
+/**
+ * 设备Dao
+ *
+ * @author TRX
+ * @date 2024/3/21
+ */
+public interface DeviceProductDao extends MongoDao<DeviceProduct>, DeviceProductDaoExtend {
+
+    DeviceProduct findTopById(String id);
+
+}

+ 18 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/DeviceProductProvideServeDao.java

@@ -0,0 +1,18 @@
+package com.zhongshu.card.server.core.dao.devices;
+
+import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.card.server.core.domain.devices.DeviceProductProvideServe;
+
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/3/21
+ */
+public interface DeviceProductProvideServeDao extends MongoDao<DeviceProductProvideServe> {
+
+    DeviceProductProvideServe findTopById(String id);
+
+    List<DeviceProductProvideServe> findByDeviceProductIdOrderBySortAsc(String deviceProductId);
+
+}

+ 21 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/extend/DeviceProductBindDeviceDaoExtend.java

@@ -0,0 +1,21 @@
+package com.zhongshu.card.server.core.dao.devices.extend;
+
+import com.zhongshu.card.client.model.devices.deviceProduct.DeviceProductBindDeviceSearch;
+import com.zhongshu.card.server.core.domain.devices.DeviceProductBindDevice;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+/**
+ * 设备管理
+ *
+ * @Author TRX
+ * @CreateDate: 2023/7/7
+ * @Version: 1.0
+ */
+public interface DeviceProductBindDeviceDaoExtend {
+
+    Page<DeviceProductBindDevice> page(Pageable pageable, DeviceProductBindDeviceSearch param);
+
+    long count(DeviceProductBindDeviceSearch param);
+
+}

+ 21 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/extend/DeviceProductDaoExtend.java

@@ -0,0 +1,21 @@
+package com.zhongshu.card.server.core.dao.devices.extend;
+
+import com.zhongshu.card.client.model.devices.DeviceInfoSearch;
+import com.zhongshu.card.client.model.devices.deviceProduct.DeviceProductSearch;
+import com.zhongshu.card.server.core.domain.devices.DeviceInfo;
+import com.zhongshu.card.server.core.domain.devices.DeviceProduct;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+/**
+ * 设备管理
+ *
+ * @Author TRX
+ * @CreateDate: 2023/7/7
+ * @Version: 1.0
+ */
+public interface DeviceProductDaoExtend {
+
+    Page<DeviceProduct> page(Pageable pageable, DeviceProductSearch param);
+
+}

+ 90 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/impl/DeviceProductBindDeviceDaoImpl.java

@@ -0,0 +1,90 @@
+package com.zhongshu.card.server.core.dao.devices.impl;
+
+import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
+import com.zhongshu.card.client.model.devices.deviceProduct.DeviceProductBindDeviceSearch;
+import com.zhongshu.card.server.core.dao.BaseImpl;
+import com.zhongshu.card.server.core.dao.devices.extend.DeviceProductBindDeviceDaoExtend;
+import com.zhongshu.card.server.core.domain.devices.DeviceProductBindDevice;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * @Author TRX
+ * @CreateDate: 2023/4/12
+ * @Version: 1.0
+ */
+public class DeviceProductBindDeviceDaoImpl extends BaseImpl implements DeviceProductBindDeviceDaoExtend {
+
+    @Autowired
+    private MongoTemplate mongoTemplate;
+
+    @Autowired
+    private DBHelper dbHelper;
+
+    @Override
+    public Page<DeviceProductBindDevice> page(Pageable pageable, DeviceProductBindDeviceSearch param) {
+        Criteria criteria = buildFilterCriteria(param);
+
+        Sort sort = buildSort(param);
+        Query query = Query.query(criteria);
+        query.with(sort);
+        return dbHelper.pages(query, pageable, DeviceProductBindDevice.class);
+    }
+
+    @Override
+    public long count(DeviceProductBindDeviceSearch param) {
+        Criteria criteria = buildFilterCriteria(param);
+
+        Query query = Query.query(criteria);
+        return mongoTemplate.count(query, DeviceProductBindDevice.class);
+    }
+
+    public Criteria buildFilterCriteria(DeviceProductBindDeviceSearch param) {
+        param.setOid("");
+        Criteria criteria = buildCriteria(param);
+
+        // 项目oid
+        if (StringUtils.isNotEmpty(param.getProjectOid())) {
+            criteria.and("projectOid").is(param.getProjectOid());
+        }
+
+        if (StringUtils.isNotEmpty(param.getDeviceProductId())) {
+            criteria.and("deviceProductId").is(param.getDeviceProductId());
+        }
+
+        // 设备类型
+        if (param.getDeviceType() != null) {
+            criteria.and("deviceType").is(param.getDeviceType());
+        }
+
+        // 设备型号
+        if (param.getDeviceModel() != null) {
+            criteria.and("deviceModel").is(param.getDeviceModel());
+        }
+
+        // 模糊搜索
+        List<Criteria> criterias = new ArrayList<>();
+
+        if (StringUtils.isNotEmpty(param.getDeviceId())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getDeviceId() + ".*$");
+            criterias.add(Criteria.where("deviceId").is(pattern));
+        }
+
+        if (StringUtils.isNotEmpty(param.getDeviceName())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getDeviceName() + ".*$");
+            criterias.add(Criteria.where("deviceName").is(pattern));
+        }
+        return criteria;
+    }
+
+}

+ 85 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/devices/impl/DeviceProductDaoImpl.java

@@ -0,0 +1,85 @@
+package com.zhongshu.card.server.core.dao.devices.impl;
+
+import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
+import com.zhongshu.card.client.model.devices.deviceProduct.DeviceProductSearch;
+import com.zhongshu.card.server.core.dao.BaseImpl;
+import com.zhongshu.card.server.core.dao.devices.extend.DeviceProductDaoExtend;
+import com.zhongshu.card.server.core.domain.devices.DeviceProduct;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * @Author TRX
+ * @CreateDate: 2023/4/12
+ * @Version: 1.0
+ */
+public class DeviceProductDaoImpl extends BaseImpl implements DeviceProductDaoExtend {
+
+    @Autowired
+    private MongoTemplate mongoTemplate;
+
+    @Autowired
+    private DBHelper dbHelper;
+
+    @Override
+    public Page<DeviceProduct> page(Pageable pageable, DeviceProductSearch param) {
+        Criteria criteria = buildFilterCriteria(param);
+
+        Sort sort = buildSort(param);
+        Query query = Query.query(criteria);
+        query.with(sort);
+        return dbHelper.pages(query, pageable, DeviceProduct.class);
+    }
+
+    public Criteria buildFilterCriteria(DeviceProductSearch param) {
+        param.setOid("");
+        Criteria criteria = buildCriteria(param);
+
+        // 项目oid
+        if (StringUtils.isNotEmpty(param.getProjectOid())) {
+            criteria.and("projectOid").is(param.getProjectOid());
+        }
+
+        if (StringUtils.isNotEmpty(param.getBeLongOid())) {
+            criteria.and("beLongOid").is(param.getBeLongOid());
+        }
+
+        if (param.getTransaction() != null) {
+            criteria.and("transaction").is(param.getTransaction());
+        }
+
+        if (param.getMultipleOrders() != null) {
+            criteria.and("multipleOrders").is(param.getMultipleOrders());
+        }
+
+        // 模糊搜索
+        List<Criteria> criterias = new ArrayList<>();
+
+        if (StringUtils.isNotEmpty(param.getName())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getName() + ".*$");
+            criterias.add(Criteria.where("name").is(pattern));
+        }
+
+        if (StringUtils.isNotEmpty(param.getCode())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getCode() + ".*$");
+            criterias.add(Criteria.where("code").is(pattern));
+        }
+
+        if (!CollectionUtils.isEmpty(criterias)) {
+            criteria.andOperator(criterias.toArray(new Criteria[]{}));
+        }
+        return criteria;
+    }
+
+}

+ 52 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/DeviceProduct.java

@@ -0,0 +1,52 @@
+package com.zhongshu.card.server.core.domain.devices;
+
+import com.zhongshu.card.client.type.DataState;
+import com.zhongshu.card.server.core.domain.base.SuperMain;
+import com.zhongshu.card.server.core.domain.org.Organization;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.DBRef;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * 设备信息
+ *
+ * @author TRX
+ * @date 2025/1/8
+ */
+@Data
+@Document
+@NoArgsConstructor
+@AllArgsConstructor
+public class DeviceProduct extends SuperMain {
+
+    @Schema(description = "产品名称")
+    private String name;
+
+    @Schema(description = "编码/规则")
+    private String code;
+
+    @Schema(description = "设备数量")
+    private Long number = 0L;
+
+    @Schema(description = "服务数量")
+    private Long serviceNumber = 0L;
+
+    @Schema(description = "所属机构")
+    @DBRef(lazy = true)
+    private Organization organization;
+
+    @Schema(description = "所属机构oid")
+    private String beLongOid;
+
+    @Schema(description = "所属机构name")
+    private String beLongName;
+
+    @Schema(description = "交易模式")
+    private DataState transaction = DataState.Enable;
+
+    @Schema(description = "设备多订单模式")
+    private DataState multipleOrders = DataState.Enable;
+}

+ 49 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/DeviceProductBindDevice.java

@@ -0,0 +1,49 @@
+package com.zhongshu.card.server.core.domain.devices;
+
+import com.github.microservice.models.type.DeviceModel;
+import com.github.microservice.models.type.DeviceType;
+import com.zhongshu.card.server.core.domain.base.SuperMain;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.index.Indexed;
+import org.springframework.data.mongodb.core.mapping.DBRef;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * 产品上绑定的设备
+ *
+ * @author TRX
+ * @date 2025/1/8
+ */
+@Data
+@Document
+@NoArgsConstructor
+@AllArgsConstructor
+public class DeviceProductBindDevice extends SuperMain {
+
+    @Schema(description = "所属产品")
+    @DBRef(lazy = true)
+    private DeviceProduct deviceProduct;
+
+    @Schema(description = "")
+    @Indexed
+    private String deviceProductId;
+
+    @DBRef(lazy = true)
+    @Schema(description = "设备信息")
+    private DeviceInfo deviceInfo;
+
+    @Schema(description = "设备ID、设备号")
+    private String deviceId;
+
+    @Schema(description = "设备名称")
+    private String deviceName;
+
+    @Schema(description = "设备类型,如 消费机 门禁机")
+    private DeviceType deviceType;
+
+    @Schema(description = "设备型号")
+    private DeviceModel deviceModel;
+}

+ 44 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/devices/DeviceProductProvideServe.java

@@ -0,0 +1,44 @@
+package com.zhongshu.card.server.core.domain.devices;
+
+import com.zhongshu.card.client.type.DataState;
+import com.zhongshu.card.server.core.domain.base.SuperMain;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.DBRef;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.math.BigDecimal;
+
+/**
+ * 产品可提供的服务
+ *
+ * @author TRX
+ * @date 2025/1/8
+ */
+@Data
+@Document
+@NoArgsConstructor
+@AllArgsConstructor
+public class DeviceProductProvideServe extends SuperMain {
+
+    @Schema(description = "所属产品")
+    @DBRef(lazy = true)
+    private DeviceProduct deviceProduct;
+
+    @Schema(description = "所属产品ID")
+    private String deviceProductId;
+
+    @Schema(description = "服务名称")
+    private String name;
+
+    @Schema(description = "价格")
+    private BigDecimal price = BigDecimal.ZERO;
+
+    @Schema(description = "其他参数")
+    private Object param;
+
+    @Schema(description = "状态")
+    private DataState state = DataState.Enable;
+}

+ 29 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/deviceProduct/DeviceProductBindDeviceService.java

@@ -0,0 +1,29 @@
+package com.zhongshu.card.server.core.service.devices.deviceProduct;
+
+import com.zhongshu.card.server.core.dao.devices.DeviceInfoDao;
+import com.zhongshu.card.server.core.dao.devices.DeviceProductBindDeviceDao;
+import com.zhongshu.card.server.core.dao.devices.DeviceProductDao;
+import com.zhongshu.card.server.core.domain.devices.DeviceInfo;
+import com.zhongshu.card.server.core.service.base.SuperService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author TRX
+ * @date 2025/1/8
+ */
+@Slf4j
+@Service
+public class DeviceProductBindDeviceService extends SuperService {
+
+    @Autowired
+    private DeviceProductDao deviceProductDao;
+
+    @Autowired
+    private DeviceProductBindDeviceDao deviceProductBindDeviceDao;
+
+    @Autowired
+    private DeviceInfoDao deviceInfoDao;
+
+}

+ 29 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/deviceProduct/DeviceProductProvideServeService.java

@@ -0,0 +1,29 @@
+package com.zhongshu.card.server.core.service.devices.deviceProduct;
+
+import com.zhongshu.card.server.core.dao.devices.DeviceInfoDao;
+import com.zhongshu.card.server.core.dao.devices.DeviceProductDao;
+import com.zhongshu.card.server.core.dao.devices.DeviceProductProvideServeDao;
+import com.zhongshu.card.server.core.service.base.SuperService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author TRX
+ * @date 2025/1/8
+ */
+@Slf4j
+@Service
+public class DeviceProductProvideServeService extends SuperService {
+
+    @Autowired
+    private DeviceProductDao deviceProductDao;
+
+    @Autowired
+    private DeviceProductProvideServeDao deviceProductProvideServeDao;
+
+    @Autowired
+    private DeviceInfoDao deviceInfoDao;
+
+
+}

+ 45 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/deviceProduct/DeviceProductService.java

@@ -0,0 +1,45 @@
+package com.zhongshu.card.server.core.service.devices.deviceProduct;
+
+import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.devices.deviceProduct.DeviceProductModel;
+import com.zhongshu.card.client.model.devices.deviceProduct.DeviceProductParam;
+import com.zhongshu.card.server.core.dao.devices.DeviceProductDao;
+import com.zhongshu.card.server.core.dao.org.OrganizationDao;
+import com.zhongshu.card.server.core.domain.devices.DeviceProduct;
+import com.zhongshu.card.server.core.service.base.SuperService;
+import com.zhongshu.card.server.core.util.BeanUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author TRX
+ * @date 2025/1/8
+ */
+@Slf4j
+@Service
+public class DeviceProductService extends SuperService {
+
+    @Autowired
+    private DeviceProductDao deviceProductDao;
+
+    @Autowired
+    private OrganizationDao organizationDao;
+
+    public ResultContent saveInfo(DeviceProductParam param) {
+
+
+        return ResultContent.buildSuccess();
+    }
+
+    public DeviceProductModel toModel(DeviceProduct entity) {
+        DeviceProductModel model = new DeviceProductModel();
+        if (ObjectUtils.isNotEmpty(entity)) {
+            BeanUtils.copyProperties(entity, model);
+
+
+        }
+        return model;
+    }
+}