MrShi
2026-04-03 699bdb5b821e87859f5900e4db1d1a2353c6f6a2
网关管理
已添加37个文件
已修改10个文件
2234 ■■■■■ 文件已修改
admin/.env.development 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/db/business.yw_conditioner.permissions.sql 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/db/business.yw_electrical.permissions.sql 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/db/business.yw_electrical_log.permissions.sql 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/db/business.yw_electrical_room.permissions.sql 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/db/business.yw_gateway.permissions.sql 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/db/business.yw_top_up_log.permissions.sql 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/db/yw_gateway.sql 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_gateway/src/main/resources/bootstrap-dev.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_gateway/src/main/resources/bootstrap-test.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_timer/src/main/resources/bootstrap-dev.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_timer/src/main/resources/bootstrap-test.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/admin_timer/src/main/resources/bootstrap-dev.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/admin_timer/src/main/resources/bootstrap-test.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwConditionerCloudController.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwElectricalCloudController.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwElectricalLogCloudController.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwElectricalRoomCloudController.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwGatewayCloudController.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwTopUpLogCloudController.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/resources/bootstrap-dev.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/resources/bootstrap-test.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwConditionerMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwElectricalLogMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwElectricalMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwElectricalRoomMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwGatewayMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwTopUpLogMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Device.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwConditioner.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwElectrical.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwElectricalLog.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwElectricalRoom.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwGateway.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwTopUpLog.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwConditionerService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwElectricalLogService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwElectricalRoomService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwElectricalService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwGatewayService.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwTopUpLogService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwConditionerServiceImpl.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwElectricalLogServiceImpl.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwElectricalRoomServiceImpl.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwElectricalServiceImpl.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwGatewayServiceImpl.java 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwTopUpLogServiceImpl.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/.env.development
@@ -8,3 +8,4 @@
VUE_APP_API_URL  = 'http://192.168.1.44:10010'
#VUE_APP_API_URL  = 'https://zhcg.fnwtzx.com/gateway_interface'
server/db/business.yw_conditioner.permissions.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywconditioner:create', '新建空调设备信息', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywconditioner:delete', '删除空调设备信息', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywconditioner:update', '修改空调设备信息', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywconditioner:query', '查询空调设备信息', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywconditioner:exportExcel', '导出空调设备信息(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
server/db/business.yw_electrical.permissions.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywelectrical:create', '新建电表设备信息', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywelectrical:delete', '删除电表设备信息', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywelectrical:update', '修改电表设备信息', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywelectrical:query', '查询电表设备信息', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywelectrical:exportExcel', '导出电表设备信息(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
server/db/business.yw_electrical_log.permissions.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywelectricallog:create', '新建电器类操作日志', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywelectricallog:delete', '删除电器类操作日志', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywelectricallog:update', '修改电器类操作日志', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywelectricallog:query', '查询电器类操作日志', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywelectricallog:exportExcel', '导出电器类操作日志(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
server/db/business.yw_electrical_room.permissions.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywelectricalroom:create', '新建设备关联房间', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywelectricalroom:delete', '删除设备关联房间', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywelectricalroom:update', '修改设备关联房间', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywelectricalroom:query', '查询设备关联房间', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywelectricalroom:exportExcel', '导出设备关联房间(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
server/db/business.yw_gateway.permissions.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywgateway:create', '新建网关管理', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywgateway:delete', '删除网关管理', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywgateway:update', '修改网关管理', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywgateway:query', '查询网关管理', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywgateway:exportExcel', '导出网关管理(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
server/db/business.yw_top_up_log.permissions.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywtopuplog:create', '新建充值记录', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywtopuplog:delete', '删除充值记录', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywtopuplog:update', '修改充值记录', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywtopuplog:query', '查询充值记录', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywtopuplog:exportExcel', '导出充值记录(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
server/db/yw_gateway.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
CREATE TABLE `yw_gateway` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `creator` int(11) DEFAULT NULL COMMENT '创建人编码',
  `create_date` datetime DEFAULT NULL COMMENT '创建时间',
  `editor` int(11) DEFAULT NULL COMMENT '更新人编码',
  `edit_date` datetime DEFAULT NULL COMMENT '更新时间',
  `isdeleted` int(1) DEFAULT '0' COMMENT '是否删除 0否 1是',
  `name` varchar(100) DEFAULT NULL COMMENT '网关名称',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `status` int(1) DEFAULT '0' COMMENT '状态 0启用 1禁用',
  `sortnum` int(11) DEFAULT NULL COMMENT '排序码',
  `gateway_model` varchar(100) DEFAULT NULL COMMENT '网关型号',
  `gateway_code` varchar(100) DEFAULT NULL COMMENT '网关设备号',
  `last_heartbeat_time` datetime DEFAULT NULL COMMENT '最后心跳时间',
  `project_id` int(11) DEFAULT NULL COMMENT '所属项目编码(关联yw_project)',
  PRIMARY KEY (`id`),
  KEY `idx_gateway_code` (`gateway_code`),
  KEY `idx_project_id` (`project_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='网关管理';
server/system_gateway/src/main/resources/bootstrap-dev.yml
@@ -1,11 +1,11 @@
spring:
  cloud:
    nacos:
      server-addr: http://192.168.0.7:8848 #配置Nacos地址
      server-addr: http://192.168.0.3:8848 #配置Nacos地址
      username: nacos
      password: nacos
      discovery:
        server-addr: http://192.168.0.7:8848 #配置Nacos地址
        server-addr: http://192.168.0.3:8848 #配置Nacos地址
#        namespace: dmvisit
        namespace: funingyunwei_dev
        username: nacos
server/system_gateway/src/main/resources/bootstrap-test.yml
@@ -1,11 +1,11 @@
spring:
  cloud:
    nacos:
      server-addr: http://192.168.0.7:8848 #配置Nacos地址
      server-addr: http://192.168.0.3:8848 #配置Nacos地址
      username: nacos
      password: nacos
      discovery:
        server-addr: http://192.168.0.7:8848 #配置Nacos地址
        server-addr: http://192.168.0.3:8848 #配置Nacos地址
        namespace: funingyunwei_test
#        namespace: dev_renkang
        username: nacos
server/system_timer/src/main/resources/bootstrap-dev.yml
@@ -10,7 +10,7 @@
        # æš‚时关闭缓存
        enabled: false
    nacos:
      server-addr: http://192.168.0.7:8848 #配置Nacos地址
      server-addr: http://192.168.0.3:8848 #配置Nacos地址
      username: nacos
      password: nacos
      #      config:
@@ -22,7 +22,7 @@
      #        group: dev
      #        data-id: com.doumee.meeting.admin
      discovery:
        server-addr: http://192.168.0.7:8848 #配置Nacos地址
        server-addr: http://192.168.0.3:8848 #配置Nacos地址
        namespace: funingyunwei_dev
        username: nacos
        password: nacos
server/system_timer/src/main/resources/bootstrap-test.yml
@@ -10,7 +10,7 @@
        # æš‚时关闭缓存
        enabled: false
    nacos:
      server-addr: http://192.168.0.7:8848 #配置Nacos地址
      server-addr: http://192.168.0.3:8848 #配置Nacos地址
      username: nacos
      password: nacos
      #      config:
@@ -22,7 +22,7 @@
      #        group: dev
      #        data-id: com.doumee.meeting.admin
      discovery:
        server-addr: http://192.168.0.7:8848 #配置Nacos地址
        server-addr: http://192.168.0.3:8848 #配置Nacos地址
        namespace: funingyunwei_test
        username: nacos
        password: nacos
server/visits/admin_timer/src/main/resources/bootstrap-dev.yml
@@ -10,7 +10,7 @@
        # æš‚时关闭缓存
        enabled: false
    nacos:
      server-addr: http://192.168.0.7:8848 #配置Nacos地址
      server-addr: http://192.168.0.3:8848 #配置Nacos地址
      username: nacos
      password: nacos
#      config:
@@ -22,7 +22,7 @@
#        group: dev
#        data-id: com.doumee.meeting.admin
      discovery:
        server-addr: http://192.168.0.7:8848 #配置Nacos地址
        server-addr: http://192.168.0.3:8848 #配置Nacos地址
        namespace: funingyunwei_dev
        username: nacos
        password: nacos
server/visits/admin_timer/src/main/resources/bootstrap-test.yml
@@ -10,7 +10,7 @@
        # æš‚时关闭缓存
        enabled: false
    nacos:
      server-addr: http://192.168.0.7:8848 #配置Nacos地址
      server-addr: http://192.168.0.3:8848 #配置Nacos地址
      username: nacos
      password: nacos
#      config:
@@ -22,7 +22,7 @@
#        group: dev
#        data-id: com.doumee.meeting.admin
      discovery:
        server-addr: http://192.168.0.7:8848 #配置Nacos地址
        server-addr: http://192.168.0.3:8848 #配置Nacos地址
        namespace: funingyunwei_test
        username: nacos
        password: nacos
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwConditionerCloudController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.YwConditioner;
import com.doumee.service.business.YwConditionerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.doumee.config.annotation.CloudRequiredPermission;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * ç©ºè°ƒè®¾å¤‡ä¿¡æ¯
 * @author renkang
 * @date 2026/04/03
 */
@Api(tags = "空调设备信息")
@RestController
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX + "/business/ywConditioner")
public class YwConditionerCloudController extends BaseController {
    @Autowired
    private YwConditionerService ywConditionerService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @CloudRequiredPermission("business:ywconditioner:create")
    public ApiResponse create(@RequestBody YwConditioner ywConditioner, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywConditioner.setLoginUserInfo(this.getLoginUser(token));
        return ApiResponse.success(ywConditionerService.create(ywConditioner));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @CloudRequiredPermission("business:ywconditioner:delete")
    public ApiResponse deleteById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywConditionerService.deleteById(id, this.getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @CloudRequiredPermission("business:ywconditioner:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        String[] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        ywConditionerService.deleteByIdInBatch(idList, this.getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @CloudRequiredPermission("business:ywconditioner:update")
    public ApiResponse updateById(@RequestBody YwConditioner ywConditioner, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywConditioner.setLoginUserInfo(this.getLoginUser(token));
        ywConditionerService.updateById(ywConditioner);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @CloudRequiredPermission("business:ywconditioner:query")
    public ApiResponse<PageData<YwConditioner>> findPage(@RequestBody PageWrap<YwConditioner> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token));
        return ApiResponse.success(ywConditionerService.findPage(pageWrap));
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @CloudRequiredPermission("business:ywconditioner:query")
    public ApiResponse findById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(ywConditionerService.findById(id));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:ywconditioner:exportExcel")
    public void exportExcel(@RequestBody PageWrap<YwConditioner> pageWrap, HttpServletResponse response, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token));
        ExcelExporter.build(YwConditioner.class).export(ywConditionerService.findPage(pageWrap).getRecords(), "空调设备信息", response);
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwElectricalCloudController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.YwElectrical;
import com.doumee.service.business.YwElectricalService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.doumee.config.annotation.CloudRequiredPermission;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * ç”µè¡¨è®¾å¤‡ä¿¡æ¯
 * @author renkang
 * @date 2026/04/03
 */
@Api(tags = "电表设备信息")
@RestController
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX + "/business/ywElectrical")
public class YwElectricalCloudController extends BaseController {
    @Autowired
    private YwElectricalService ywElectricalService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @CloudRequiredPermission("business:ywelectrical:create")
    public ApiResponse create(@RequestBody YwElectrical ywElectrical, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywElectrical.setLoginUserInfo(this.getLoginUser(token));
        return ApiResponse.success(ywElectricalService.create(ywElectrical));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @CloudRequiredPermission("business:ywelectrical:delete")
    public ApiResponse deleteById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywElectricalService.deleteById(id, this.getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @CloudRequiredPermission("business:ywelectrical:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        String[] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        ywElectricalService.deleteByIdInBatch(idList, this.getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @CloudRequiredPermission("business:ywelectrical:update")
    public ApiResponse updateById(@RequestBody YwElectrical ywElectrical, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywElectrical.setLoginUserInfo(this.getLoginUser(token));
        ywElectricalService.updateById(ywElectrical);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @CloudRequiredPermission("business:ywelectrical:query")
    public ApiResponse<PageData<YwElectrical>> findPage(@RequestBody PageWrap<YwElectrical> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token));
        return ApiResponse.success(ywElectricalService.findPage(pageWrap));
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @CloudRequiredPermission("business:ywelectrical:query")
    public ApiResponse findById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(ywElectricalService.findById(id));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:ywelectrical:exportExcel")
    public void exportExcel(@RequestBody PageWrap<YwElectrical> pageWrap, HttpServletResponse response, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token));
        ExcelExporter.build(YwElectrical.class).export(ywElectricalService.findPage(pageWrap).getRecords(), "电表设备信息", response);
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwElectricalLogCloudController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.YwElectricalLog;
import com.doumee.service.business.YwElectricalLogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.doumee.config.annotation.CloudRequiredPermission;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * ç”µå™¨ç±»æ“ä½œæ—¥å¿—
 * @author renkang
 * @date 2026/04/03
 */
@Api(tags = "电器类操作日志")
@RestController
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX + "/business/ywElectricalLog")
public class YwElectricalLogCloudController extends BaseController {
    @Autowired
    private YwElectricalLogService ywElectricalLogService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @CloudRequiredPermission("business:ywelectricallog:create")
    public ApiResponse create(@RequestBody YwElectricalLog ywElectricalLog, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywElectricalLog.setLoginUserInfo(this.getLoginUser(token));
        return ApiResponse.success(ywElectricalLogService.create(ywElectricalLog));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @CloudRequiredPermission("business:ywelectricallog:delete")
    public ApiResponse deleteById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywElectricalLogService.deleteById(id, this.getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @CloudRequiredPermission("business:ywelectricallog:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        String[] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        ywElectricalLogService.deleteByIdInBatch(idList, this.getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @CloudRequiredPermission("business:ywelectricallog:update")
    public ApiResponse updateById(@RequestBody YwElectricalLog ywElectricalLog, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywElectricalLog.setLoginUserInfo(this.getLoginUser(token));
        ywElectricalLogService.updateById(ywElectricalLog);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @CloudRequiredPermission("business:ywelectricallog:query")
    public ApiResponse<PageData<YwElectricalLog>> findPage(@RequestBody PageWrap<YwElectricalLog> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token));
        return ApiResponse.success(ywElectricalLogService.findPage(pageWrap));
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @CloudRequiredPermission("business:ywelectricallog:query")
    public ApiResponse findById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(ywElectricalLogService.findById(id));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:ywelectricallog:exportExcel")
    public void exportExcel(@RequestBody PageWrap<YwElectricalLog> pageWrap, HttpServletResponse response, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token));
        ExcelExporter.build(YwElectricalLog.class).export(ywElectricalLogService.findPage(pageWrap).getRecords(), "电器类操作日志", response);
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwElectricalRoomCloudController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.YwElectricalRoom;
import com.doumee.service.business.YwElectricalRoomService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.doumee.config.annotation.CloudRequiredPermission;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * è®¾å¤‡å…³è”房间
 * @author renkang
 * @date 2026/04/03
 */
@Api(tags = "设备关联房间")
@RestController
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX + "/business/ywElectricalRoom")
public class YwElectricalRoomCloudController extends BaseController {
    @Autowired
    private YwElectricalRoomService ywElectricalRoomService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @CloudRequiredPermission("business:ywelectricalroom:create")
    public ApiResponse create(@RequestBody YwElectricalRoom ywElectricalRoom, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywElectricalRoom.setLoginUserInfo(this.getLoginUser(token));
        return ApiResponse.success(ywElectricalRoomService.create(ywElectricalRoom));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @CloudRequiredPermission("business:ywelectricalroom:delete")
    public ApiResponse deleteById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywElectricalRoomService.deleteById(id, this.getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @CloudRequiredPermission("business:ywelectricalroom:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        String[] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        ywElectricalRoomService.deleteByIdInBatch(idList, this.getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @CloudRequiredPermission("business:ywelectricalroom:update")
    public ApiResponse updateById(@RequestBody YwElectricalRoom ywElectricalRoom, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywElectricalRoom.setLoginUserInfo(this.getLoginUser(token));
        ywElectricalRoomService.updateById(ywElectricalRoom);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @CloudRequiredPermission("business:ywelectricalroom:query")
    public ApiResponse<PageData<YwElectricalRoom>> findPage(@RequestBody PageWrap<YwElectricalRoom> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token));
        return ApiResponse.success(ywElectricalRoomService.findPage(pageWrap));
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @CloudRequiredPermission("business:ywelectricalroom:query")
    public ApiResponse findById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(ywElectricalRoomService.findById(id));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:ywelectricalroom:exportExcel")
    public void exportExcel(@RequestBody PageWrap<YwElectricalRoom> pageWrap, HttpServletResponse response, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token));
        ExcelExporter.build(YwElectricalRoom.class).export(ywElectricalRoomService.findPage(pageWrap).getRecords(), "设备关联房间", response);
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwGatewayCloudController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.YwGateway;
import com.doumee.service.business.YwGatewayService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.doumee.config.annotation.CloudRequiredPermission;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * ç½‘关管理
 * @author renkang
 * @date 2026/04/02
 */
@Api(tags = "网关管理")
@RestController
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX + "/business/ywGateway")
public class YwGatewayCloudController extends BaseController {
    @Autowired
    private YwGatewayService ywGatewayService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @CloudRequiredPermission("business:ywgateway:create")
    public ApiResponse create(@RequestBody YwGateway ywGateway, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywGateway.setLoginUserInfo(this.getLoginUser(token));
        return ApiResponse.success(ywGatewayService.create(ywGateway));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @CloudRequiredPermission("business:ywgateway:delete")
    public ApiResponse deleteById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywGatewayService.deleteById(id, this.getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @CloudRequiredPermission("business:ywgateway:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        String[] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        ywGatewayService.deleteByIdInBatch(idList, this.getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @CloudRequiredPermission("business:ywgateway:update")
    public ApiResponse updateById(@RequestBody YwGateway ywGateway, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywGateway.setLoginUserInfo(this.getLoginUser(token));
        ywGatewayService.updateById(ywGateway);
        return ApiResponse.success(null);
    }
    @ApiOperation("禁启用")
    @PostMapping("/updateStatusById")
    @CloudRequiredPermission("business:ywgateway:update")
    public ApiResponse updateStatusById(@RequestBody YwGateway ywGateway, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywGateway.setLoginUserInfo(this.getLoginUser(token));
        ywGatewayService.updateStatusById(ywGateway);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @CloudRequiredPermission("business:ywgateway:query")
    public ApiResponse<PageData<YwGateway>> findPage(@RequestBody PageWrap<YwGateway> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token));
        return ApiResponse.success(ywGatewayService.findPage(pageWrap));
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @CloudRequiredPermission("business:ywgateway:query")
    public ApiResponse findById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(ywGatewayService.findById(id));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:ywgateway:exportExcel")
    public void exportExcel(@RequestBody PageWrap<YwGateway> pageWrap, HttpServletResponse response, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token));
        ExcelExporter.build(YwGateway.class).export(ywGatewayService.findPage(pageWrap).getRecords(), "网关管理", response);
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwTopUpLogCloudController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.YwTopUpLog;
import com.doumee.service.business.YwTopUpLogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.doumee.config.annotation.CloudRequiredPermission;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * å……值记录
 * @author renkang
 * @date 2026/04/03
 */
@Api(tags = "充值记录")
@RestController
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX + "/business/ywTopUpLog")
public class YwTopUpLogCloudController extends BaseController {
    @Autowired
    private YwTopUpLogService ywTopUpLogService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @CloudRequiredPermission("business:ywtopuplog:create")
    public ApiResponse create(@RequestBody YwTopUpLog ywTopUpLog, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywTopUpLog.setLoginUserInfo(this.getLoginUser(token));
        return ApiResponse.success(ywTopUpLogService.create(ywTopUpLog));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @CloudRequiredPermission("business:ywtopuplog:delete")
    public ApiResponse deleteById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywTopUpLogService.deleteById(id, this.getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @CloudRequiredPermission("business:ywtopuplog:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        String[] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        ywTopUpLogService.deleteByIdInBatch(idList, this.getLoginUser(token));
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @CloudRequiredPermission("business:ywtopuplog:update")
    public ApiResponse updateById(@RequestBody YwTopUpLog ywTopUpLog, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywTopUpLog.setLoginUserInfo(this.getLoginUser(token));
        ywTopUpLogService.updateById(ywTopUpLog);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @CloudRequiredPermission("business:ywtopuplog:query")
    public ApiResponse<PageData<YwTopUpLog>> findPage(@RequestBody PageWrap<YwTopUpLog> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token));
        return ApiResponse.success(ywTopUpLogService.findPage(pageWrap));
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @CloudRequiredPermission("business:ywtopuplog:query")
    public ApiResponse findById(@PathVariable Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(ywTopUpLogService.findById(id));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:ywtopuplog:exportExcel")
    public void exportExcel(@RequestBody PageWrap<YwTopUpLog> pageWrap, HttpServletResponse response, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token));
        ExcelExporter.build(YwTopUpLog.class).export(ywTopUpLogService.findPage(pageWrap).getRecords(), "充值记录", response);
    }
}
server/visits/dmvisit_admin/src/main/resources/bootstrap-dev.yml
@@ -10,7 +10,7 @@
        # æš‚时关闭缓存
        enabled: false
    nacos:
      server-addr: http://192.168.0.7:8848 #配置Nacos地址
      server-addr: http://192.168.0.3:8848 #配置Nacos地址
      username: nacos
      password: nacos
#      config:
@@ -22,7 +22,7 @@
#        group: dev
#        data-id: com.doumee.meeting.admin
      discovery:
        server-addr: http://192.168.0.7:8848 #配置Nacos地址
        server-addr: http://192.168.0.3:8848 #配置Nacos地址
#        namespace: dmvisit
        namespace: funingyunwei_dev
        username: nacos
server/visits/dmvisit_admin/src/main/resources/bootstrap-test.yml
@@ -10,7 +10,7 @@
        # æš‚时关闭缓存
        enabled: false
    nacos:
      server-addr: http://192.168.0.7:8848 #配置Nacos地址
      server-addr: http://192.168.0.3:8848 #配置Nacos地址
      username: nacos
      password: nacos
#      config:
@@ -22,7 +22,7 @@
#        group: dev
#        data-id: com.doumee.meeting.admin
      discovery:
        server-addr: http://192.168.0.7:8848 #配置Nacos地址
        server-addr: http://192.168.0.3:8848 #配置Nacos地址
        namespace: funingyunwei_test
        username: nacos
        password: nacos
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwConditionerMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.dao.business;
import com.github.yulichang.base.MPJBaseMapper;
import com.doumee.dao.business.model.YwConditioner;
/**
 * ç©ºè°ƒè®¾å¤‡ä¿¡æ¯Mapper
 * @author renkang
 * @date 2026/04/03
 */
public interface YwConditionerMapper extends MPJBaseMapper<YwConditioner> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwElectricalLogMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.dao.business;
import com.github.yulichang.base.MPJBaseMapper;
import com.doumee.dao.business.model.YwElectricalLog;
/**
 * ç”µå™¨ç±»æ“ä½œæ—¥å¿—Mapper
 * @author renkang
 * @date 2026/04/03
 */
public interface YwElectricalLogMapper extends MPJBaseMapper<YwElectricalLog> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwElectricalMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.dao.business;
import com.github.yulichang.base.MPJBaseMapper;
import com.doumee.dao.business.model.YwElectrical;
/**
 * ç”µè¡¨è®¾å¤‡ä¿¡æ¯Mapper
 * @author renkang
 * @date 2026/04/03
 */
public interface YwElectricalMapper extends MPJBaseMapper<YwElectrical> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwElectricalRoomMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.dao.business;
import com.github.yulichang.base.MPJBaseMapper;
import com.doumee.dao.business.model.YwElectricalRoom;
/**
 * è®¾å¤‡å…³è”房间Mapper
 * @author renkang
 * @date 2026/04/03
 */
public interface YwElectricalRoomMapper extends MPJBaseMapper<YwElectricalRoom> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwGatewayMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.dao.business;
import com.github.yulichang.base.MPJBaseMapper;
import com.doumee.dao.business.model.YwGateway;
/**
 * ç½‘关管理Mapper
 * @author renkang
 * @date 2026/04/02
 */
public interface YwGatewayMapper extends MPJBaseMapper<YwGateway> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwTopUpLogMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.dao.business;
import com.github.yulichang.base.MPJBaseMapper;
import com.doumee.dao.business.model.YwTopUpLog;
/**
 * å……值记录Mapper
 * @author renkang
 * @date 2026/04/03
 */
public interface YwTopUpLogMapper extends MPJBaseMapper<YwTopUpLog> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Device.java
@@ -73,8 +73,8 @@
    @ExcelColumn(name="排序码")
    private Integer sortnum;
    @ApiModelProperty(value = "类型 0门禁 1车库 2LED 3广播点 4广播设备 5断路器空开 6海康电表 7j空調", example = "1")
    @ExcelColumn(name="类型 0门禁 1车库 2LED 3广播点 4广播设备 5断路器空开 6海康电表 7空調")
    @ApiModelProperty(value = "类型 0门禁 1车库 2LED 3广播点 4广播设备 5断路器空开 6海康电表 7智慧空調", example = "1")
    @ExcelColumn(name="类型 0门禁 1车库 2LED 3广播点 4广播设备 5断路器空开 6海康电表 7智慧空調")
    private Integer type;
    @ApiModelProperty(value = "是否园区出入口 0不是 1是", example = "1")
    @ExcelColumn(name="是否园区出入口 0不是 1是")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwConditioner.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
 * ç©ºè°ƒè®¾å¤‡ä¿¡æ¯
 * @author renkang
 * @date 2026/04/03
 */
@Data
@ApiModel("空调设备信息")
@TableName("`yw_conditioner`")
public class YwConditioner extends LoginUserModel {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name = "主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码")
    @ExcelColumn(name = "创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码")
    @ExcelColumn(name = "更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "0")
    @ExcelColumn(name = "是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name = "备注")
    private String remark;
    @ApiModelProperty(value = "设备编号")
    @ExcelColumn(name = "设备编号")
    private String code;
    @ApiModelProperty(value = "表地址(通讯地址)")
    @ExcelColumn(name = "表地址(通讯地址)")
    private String electricAddress;
    @ApiModelProperty(value = "名称")
    @ExcelColumn(name = "名称")
    private String name;
    @ApiModelProperty(value = "上次心跳时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelColumn(name = "上次心跳时间")
    private Date lastHeartbeatDate;
    @ApiModelProperty(value = "电表余额")
    @ExcelColumn(name = "电表余额")
    private BigDecimal balance;
    @ApiModelProperty(value = "锁定状态:0=不锁定;1=锁定关;2=锁定开", example = "0")
    @ExcelColumn(name = "锁定状态")
    private Integer status;
    @ApiModelProperty(value = "累计用电金额")
    @ExcelColumn(name = "累计用电金额")
    private BigDecimal useAmount;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwElectrical.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,119 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
 * ç”µè¡¨è®¾å¤‡ä¿¡æ¯
 * @author renkang
 * @date 2026/04/03
 */
@Data
@ApiModel("电表设备信息")
@TableName("`yw_electrical`")
public class YwElectrical extends LoginUserModel {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name = "主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码")
    @ExcelColumn(name = "创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码")
    @ExcelColumn(name = "更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "0")
    @ExcelColumn(name = "是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name = "备注")
    private String remark;
    @ApiModelProperty(value = "采集器号")
    @ExcelColumn(name = "采集器号")
    private String collectorNo;
    @ApiModelProperty(value = "表号")
    @ExcelColumn(name = "表号")
    private String code;
    @ApiModelProperty(value = "表地址(通讯地址)")
    @ExcelColumn(name = "表地址(通讯地址)")
    private String electricAddress;
    @ApiModelProperty(value = "电表类型")
    @ExcelColumn(name = "电表类型")
    private String electricType;
    @ApiModelProperty(value = "倍率", example = "1")
    @ExcelColumn(name = "倍率")
    private Integer magnification;
    @ApiModelProperty(value = "付费类型", example = "0")
    @ExcelColumn(name = "付费类型")
    private Integer payType;
    @ApiModelProperty(value = "名称")
    @ExcelColumn(name = "名称")
    private String name;
    @ApiModelProperty(value = "网关主键", example = "1")
    @ExcelColumn(name = "网关主键")
    private Integer gatewayId;
    @ApiModelProperty(value = "网关通信端口")
    @ExcelColumn(name = "网关通信端口")
    private String gatewayPort;
    @ApiModelProperty(value = "上次心跳时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelColumn(name = "上次心跳时间")
    private Date lastHeartbeatDate;
    @ApiModelProperty(value = "电表余额")
    @ExcelColumn(name = "电表余额")
    private BigDecimal balance;
    @ApiModelProperty(value = "运行状态:0=未开户;1=拉闸;2=合闸;3=其他", example = "0")
    @ExcelColumn(name = "运行状态")
    private Integer runStatus;
    @ApiModelProperty(value = "上次开户时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelColumn(name = "上次开户时间")
    private Date lastOpenDate;
    @ApiModelProperty(value = "上次清零时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelColumn(name = "上次清零时间")
    private Date lastCleanDate;
    @ApiModelProperty(value = "网关名称")
    @TableField(exist = false)
    private String gatewayName;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwElectricalLog.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
 * ç”µå™¨ç±»æ“ä½œæ—¥å¿—
 * @author renkang
 * @date 2026/04/03
 */
@Data
@ApiModel("电器类操作日志")
@TableName("`yw_electrical_log`")
public class YwElectricalLog extends LoginUserModel {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name = "主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ExcelColumn(name = "创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name = "更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "0")
    @ExcelColumn(name = "是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name = "备注")
    private String remark;
    @ApiModelProperty(value = "设备类型 0电表 1空调", example = "0")
    @ExcelColumn(name = "设备类型")
    private Integer deviceType;
    @ApiModelProperty(value = "类型 0调用 1推送接受", example = "0")
    @ExcelColumn(name = "类型")
    private Integer type;
    @ApiModelProperty(value = "接口名称")
    @ExcelColumn(name = "接口名称")
    private String name;
    @ApiModelProperty(value = "地址信息")
    @ExcelColumn(name = "地址信息")
    private String url;
    @ApiModelProperty(value = "请求参数")
    @ExcelColumn(name = "请求参数")
    private String request;
    @ApiModelProperty(value = "响应参数")
    @ExcelColumn(name = "响应参数")
    private String reponse;
    @ApiModelProperty(value = "调用结果 0成功 1失败", example = "0")
    @ExcelColumn(name = "调用结果")
    private Integer success;
    @ApiModelProperty(value = "关联对象编码(多个用英文逗号隔开)")
    @ExcelColumn(name = "关联对象编码")
    private String objId;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwElectricalRoom.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
 * è®¾å¤‡å…³è”房间
 * @author renkang
 * @date 2026/04/03
 */
@Data
@ApiModel("设备关联房间")
@TableName("`yw_electrical_room`")
public class YwElectricalRoom extends LoginUserModel {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name = "主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ExcelColumn(name = "创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name = "更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "0")
    @ExcelColumn(name = "是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name = "备注")
    private String remark;
    @ApiModelProperty(value = "业务类型 0电表 1空调", example = "0")
    @ExcelColumn(name = "业务类型")
    private Integer type;
    @ApiModelProperty(value = "房源编码(关联yw_room)", example = "1")
    @ExcelColumn(name = "房源编码")
    private Integer roomId;
    @ApiModelProperty(value = "关联主键(电表关联:yw_electrical;空调关联:yw_conditioner)", example = "1")
    @ExcelColumn(name = "关联主键")
    private Integer objId;
    @ApiModelProperty(value = "排序码", example = "1")
    @ExcelColumn(name = "排序码")
    private Integer sortnum;
    @ApiModelProperty(value = "房间名称")
    @TableField(exist = false)
    private String roomName;
    @ApiModelProperty(value = "设备名称")
    @TableField(exist = false)
    private String objName;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwGateway.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
 * ç½‘关管理
 * @author renkang
 * @date 2026/04/02
 */
@Data
@ApiModel("网关管理")
@TableName("`yw_gateway`")
public class YwGateway extends LoginUserModel {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name = "主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ExcelColumn(name = "创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name = "更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "0")
    @ExcelColumn(name = "是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "网关名称")
    @ExcelColumn(name = "网关名称")
    private String name;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name = "备注")
    private String remark;
    @ApiModelProperty(value = "状态 0启用 1禁用", example = "0")
    @ExcelColumn(name = "状态 0启用 1禁用")
    private Integer status;
    @ApiModelProperty(value = "排序码", example = "1")
    @ExcelColumn(name = "排序码")
    private Integer sortnum;
    @ApiModelProperty(value = "网关型号")
    @ExcelColumn(name = "网关型号")
    private String gatewayModel;
    @ApiModelProperty(value = "网关设备号")
    @ExcelColumn(name = "网关设备号")
    private String gatewayCode;
    @ApiModelProperty(value = "最后心跳时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelColumn(name = "最后心跳时间")
    private Date lastHeartbeatTime;
    @ApiModelProperty(value = "所属项目编码(关联yw_project)", example = "1")
    private Integer projectId;
    @ApiModelProperty(value = "项目名称")
    @TableField(exist = false)
    private String projectName;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwTopUpLog.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
 * å……值记录
 * @author renkang
 * @date 2026/04/03
 */
@Data
@ApiModel("充值记录")
@TableName("`yw_top_up_log`")
public class YwTopUpLog extends LoginUserModel {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name = "主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码")
    @ExcelColumn(name = "创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码")
    @ExcelColumn(name = "更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "0")
    @ExcelColumn(name = "是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name = "备注")
    private String remark;
    @ApiModelProperty(value = "关联业务主键(yw_electrical)", example = "1")
    @ExcelColumn(name = "关联业务主键")
    private Integer objId;
    @ApiModelProperty(value = "所属公司(company)", example = "1")
    @ExcelColumn(name = "所属公司")
    private Integer companyId;
    @ApiModelProperty(value = "收支账户(关联yw_account)", example = "1")
    @ExcelColumn(name = "收支账户")
    private Integer accountId;
    @ApiModelProperty(value = "入账日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelColumn(name = "入账日期")
    private Date creditDate;
    @ApiModelProperty(value = "入账金额")
    @ExcelColumn(name = "入账金额")
    private BigDecimal creditFee;
    @ApiModelProperty(value = "充值状态:0=充值中;1=充值成功;2=充值失败", example = "0")
    @ExcelColumn(name = "充值状态")
    private Integer status;
    @ApiModelProperty(value = "回调时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelColumn(name = "回调时间")
    private Date callbackDate;
    @ApiModelProperty(value = "回调结果")
    @ExcelColumn(name = "回调结果")
    private String callbackInfo;
    @ApiModelProperty(value = "设备名称")
    @TableField(exist = false)
    private String electricalName;
    @ApiModelProperty(value = "公司名称")
    @TableField(exist = false)
    private String companyName;
    @ApiModelProperty(value = "账户名称")
    @TableField(exist = false)
    private String accountName;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwConditionerService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.doumee.service.business;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.YwConditioner;
import java.util.List;
/**
 * ç©ºè°ƒè®¾å¤‡ä¿¡æ¯Service定义
 * @author renkang
 * @date 2026/04/03
 */
public interface YwConditionerService {
    Integer create(YwConditioner ywConditioner);
    void deleteById(Integer id, LoginUserInfo user);
    void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user);
    void updateById(YwConditioner ywConditioner);
    YwConditioner findById(Integer id);
    PageData<YwConditioner> findPage(PageWrap<YwConditioner> pageWrap);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwElectricalLogService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.doumee.service.business;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.YwElectricalLog;
import java.util.List;
/**
 * ç”µå™¨ç±»æ“ä½œæ—¥å¿—Service定义
 * @author renkang
 * @date 2026/04/03
 */
public interface YwElectricalLogService {
    Integer create(YwElectricalLog ywElectricalLog);
    void deleteById(Integer id, LoginUserInfo user);
    void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user);
    void updateById(YwElectricalLog ywElectricalLog);
    YwElectricalLog findById(Integer id);
    PageData<YwElectricalLog> findPage(PageWrap<YwElectricalLog> pageWrap);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwElectricalRoomService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.doumee.service.business;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.YwElectricalRoom;
import java.util.List;
/**
 * è®¾å¤‡å…³è”房间Service定义
 * @author renkang
 * @date 2026/04/03
 */
public interface YwElectricalRoomService {
    Integer create(YwElectricalRoom ywElectricalRoom);
    void deleteById(Integer id, LoginUserInfo user);
    void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user);
    void updateById(YwElectricalRoom ywElectricalRoom);
    YwElectricalRoom findById(Integer id);
    PageData<YwElectricalRoom> findPage(PageWrap<YwElectricalRoom> pageWrap);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwElectricalService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.doumee.service.business;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.YwElectrical;
import java.util.List;
/**
 * ç”µè¡¨è®¾å¤‡ä¿¡æ¯Service定义
 * @author renkang
 * @date 2026/04/03
 */
public interface YwElectricalService {
    Integer create(YwElectrical ywElectrical);
    void deleteById(Integer id, LoginUserInfo user);
    void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user);
    void updateById(YwElectrical ywElectrical);
    YwElectrical findById(Integer id);
    PageData<YwElectrical> findPage(PageWrap<YwElectrical> pageWrap);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwGatewayService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.doumee.service.business;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.YwGateway;
import java.util.List;
/**
 * ç½‘关管理Service定义
 * @author renkang
 * @date 2026/04/02
 */
public interface YwGatewayService {
    /**
     * åˆ›å»º
     *
     * @param ywGateway å®žä½“对象
     * @return Integer
     */
    Integer create(YwGateway ywGateway);
    /**
     * ä¸»é”®åˆ é™¤
     *
     * @param id ä¸»é”®
     * @param user ç™»å½•用户
     */
    void deleteById(Integer id, LoginUserInfo user);
    /**
     * æ‰¹é‡ä¸»é”®åˆ é™¤
     *
     * @param ids ä¸»é”®é›†
     * @param user ç™»å½•用户
     */
    void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user);
    /**
     * ä¸»é”®æ›´æ–°
     *
     * @param ywGateway å®žä½“对象
     */
    void updateById(YwGateway ywGateway);
    /**
     * æ›´æ–°çŠ¶æ€
     *
     * @param ywGateway å®žä½“对象(id + status)
     */
    void updateStatusById(YwGateway ywGateway);
    /**
     * ä¸»é”®æŸ¥è¯¢è¯¦æƒ…
     *
     * @param id ä¸»é”®
     * @return YwGateway
     */
    YwGateway findById(Integer id);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param pageWrap åˆ†é¡µå¯¹è±¡
     * @return PageData<YwGateway>
     */
    PageData<YwGateway> findPage(PageWrap<YwGateway> pageWrap);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwTopUpLogService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.doumee.service.business;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.YwTopUpLog;
import java.util.List;
/**
 * å……值记录Service定义
 * @author renkang
 * @date 2026/04/03
 */
public interface YwTopUpLogService {
    Integer create(YwTopUpLog ywTopUpLog);
    void deleteById(Integer id, LoginUserInfo user);
    void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user);
    void updateById(YwTopUpLog ywTopUpLog);
    YwTopUpLog findById(Integer id);
    PageData<YwTopUpLog> findPage(PageWrap<YwTopUpLog> pageWrap);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwConditionerServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,128 @@
package com.doumee.service.business.impl;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwConditionerMapper;
import com.doumee.dao.business.model.YwConditioner;
import com.doumee.service.business.YwConditionerService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * ç©ºè°ƒè®¾å¤‡ä¿¡æ¯Service实现
 * @author renkang
 * @date 2026/04/03
 */
@Service
public class YwConditionerServiceImpl implements YwConditionerService {
    @Autowired
    private YwConditionerMapper ywConditionerMapper;
    @Override
    public Integer create(YwConditioner ywConditioner) {
        if (Objects.isNull(ywConditioner)
                || StringUtils.isBlank(ywConditioner.getName())
                || StringUtils.isBlank(ywConditioner.getCode())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywConditioner.getLoginUserInfo();
        // æ ¡éªŒè®¾å¤‡ç¼–号唯一
        if (ywConditionerMapper.selectCount(new QueryWrapper<YwConditioner>().lambda()
                .eq(YwConditioner::getIsdeleted, Constants.ZERO)
                .eq(YwConditioner::getCode, ywConditioner.getCode())) > Constants.ZERO) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "设备编号重复!");
        }
        ywConditioner.setCreateDate(new Date());
        ywConditioner.setCreator(loginUserInfo.getId());
        ywConditioner.setEditDate(new Date());
        ywConditioner.setEditor(loginUserInfo.getId());
        ywConditioner.setIsdeleted(Constants.ZERO);
        ywConditionerMapper.insert(ywConditioner);
        return ywConditioner.getId();
    }
    @Override
    public void deleteById(Integer id, LoginUserInfo user) {
        ywConditionerMapper.update(new UpdateWrapper<YwConditioner>()
                .lambda()
                .set(YwConditioner::getIsdeleted, Constants.ONE)
                .set(YwConditioner::getEditDate, DateUtil.getCurrDateTime())
                .set(YwConditioner::getEditor, user)
                .eq(YwConditioner::getId, id)
        );
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        for (Integer id : ids) {
            this.deleteById(id, user);
        }
    }
    @Override
    public void updateById(YwConditioner ywConditioner) {
        if (Objects.isNull(ywConditioner)
                || Objects.isNull(ywConditioner.getId())
                || StringUtils.isBlank(ywConditioner.getName())
                || StringUtils.isBlank(ywConditioner.getCode())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywConditioner.getLoginUserInfo();
        // æ ¡éªŒè®¾å¤‡ç¼–号唯一(排除自身)
        if (ywConditionerMapper.selectCount(new QueryWrapper<YwConditioner>().lambda()
                .eq(YwConditioner::getIsdeleted, Constants.ZERO)
                .eq(YwConditioner::getCode, ywConditioner.getCode())
                .ne(YwConditioner::getId, ywConditioner.getId())) > Constants.ZERO) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "设备编号重复!");
        }
        ywConditioner.setEditDate(new Date());
        ywConditioner.setEditor(loginUserInfo.getId());
        ywConditionerMapper.updateById(ywConditioner);
    }
    @Override
    public YwConditioner findById(Integer id) {
        return ywConditionerMapper.selectOne(new QueryWrapper<YwConditioner>().lambda()
                .eq(YwConditioner::getId, id)
                .last(" limit 1 "));
    }
    @Override
    public PageData<YwConditioner> findPage(PageWrap<YwConditioner> pageWrap) {
        IPage<YwConditioner> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<YwConditioner> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        YwConditioner model = pageWrap.getModel();
        queryWrapper.selectAll(YwConditioner.class)
                .and(Objects.nonNull(model) && StringUtils.isNotBlank(model.getName()),
                        i -> i.like(YwConditioner::getName, model.getName())
                             .or()
                             .like(YwConditioner::getCode, model.getName()))
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getStatus()), YwConditioner::getStatus, model.getStatus())
                .eq(YwConditioner::getIsdeleted, Constants.ZERO)
                .orderByDesc(YwConditioner::getCreateDate);
        IPage<YwConditioner> iPage = ywConditionerMapper.selectJoinPage(page, YwConditioner.class, queryWrapper);
        return PageData.from(iPage);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwElectricalLogServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,111 @@
package com.doumee.service.business.impl;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwElectricalLogMapper;
import com.doumee.dao.business.model.YwElectricalLog;
import com.doumee.service.business.YwElectricalLogService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * ç”µå™¨ç±»æ“ä½œæ—¥å¿—Service实现
 * @author renkang
 * @date 2026/04/03
 */
@Service
public class YwElectricalLogServiceImpl implements YwElectricalLogService {
    @Autowired
    private YwElectricalLogMapper ywElectricalLogMapper;
    @Override
    public Integer create(YwElectricalLog ywElectricalLog) {
        if (Objects.isNull(ywElectricalLog)
                || StringUtils.isBlank(ywElectricalLog.getName())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywElectricalLog.getLoginUserInfo();
        ywElectricalLog.setCreateDate(new Date());
        ywElectricalLog.setCreator(loginUserInfo.getId());
        ywElectricalLog.setEditDate(new Date());
        ywElectricalLog.setEditor(loginUserInfo.getId());
        ywElectricalLog.setIsdeleted(Constants.ZERO);
        ywElectricalLogMapper.insert(ywElectricalLog);
        return ywElectricalLog.getId();
    }
    @Override
    public void deleteById(Integer id, LoginUserInfo user) {
        ywElectricalLogMapper.update(new UpdateWrapper<YwElectricalLog>()
                .lambda()
                .set(YwElectricalLog::getIsdeleted, Constants.ONE)
                .set(YwElectricalLog::getEditDate, DateUtil.getCurrDateTime())
                .set(YwElectricalLog::getEditor, user.getId())
                .eq(YwElectricalLog::getId, id)
        );
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        for (Integer id : ids) {
            this.deleteById(id, user);
        }
    }
    @Override
    public void updateById(YwElectricalLog ywElectricalLog) {
        if (Objects.isNull(ywElectricalLog) || Objects.isNull(ywElectricalLog.getId())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywElectricalLog.getLoginUserInfo();
        ywElectricalLog.setEditDate(new Date());
        ywElectricalLog.setEditor(loginUserInfo.getId());
        ywElectricalLogMapper.updateById(ywElectricalLog);
    }
    @Override
    public YwElectricalLog findById(Integer id) {
        return ywElectricalLogMapper.selectOne(new QueryWrapper<YwElectricalLog>().lambda()
                .eq(YwElectricalLog::getId, id)
                .last(" limit 1 "));
    }
    @Override
    public PageData<YwElectricalLog> findPage(PageWrap<YwElectricalLog> pageWrap) {
        IPage<YwElectricalLog> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<YwElectricalLog> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        YwElectricalLog model = pageWrap.getModel();
        queryWrapper.selectAll(YwElectricalLog.class)
                .and(Objects.nonNull(model) && StringUtils.isNotBlank(model.getName()),
                        i -> i.like(YwElectricalLog::getName, model.getName()))
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getDeviceType()), YwElectricalLog::getDeviceType, model.getDeviceType())
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getType()), YwElectricalLog::getType, model.getType())
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getSuccess()), YwElectricalLog::getSuccess, model.getSuccess())
                .eq(YwElectricalLog::getIsdeleted, Constants.ZERO)
                .orderByDesc(YwElectricalLog::getCreateDate);
        IPage<YwElectricalLog> iPage = ywElectricalLogMapper.selectJoinPage(page, YwElectricalLog.class, queryWrapper);
        return PageData.from(iPage);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwElectricalRoomServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,117 @@
package com.doumee.service.business.impl;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwElectricalRoomMapper;
import com.doumee.dao.business.model.YwConditioner;
import com.doumee.dao.business.model.YwElectrical;
import com.doumee.dao.business.model.YwElectricalRoom;
import com.doumee.service.business.YwElectricalRoomService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * è®¾å¤‡å…³è”房间Service实现
 * @author renkang
 * @date 2026/04/03
 */
@Service
public class YwElectricalRoomServiceImpl implements YwElectricalRoomService {
    @Autowired
    private YwElectricalRoomMapper ywElectricalRoomMapper;
    @Override
    public Integer create(YwElectricalRoom ywElectricalRoom) {
        if (Objects.isNull(ywElectricalRoom)
                || Objects.isNull(ywElectricalRoom.getRoomId())
                || Objects.isNull(ywElectricalRoom.getObjId())
                || Objects.isNull(ywElectricalRoom.getType())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywElectricalRoom.getLoginUserInfo();
        ywElectricalRoom.setCreateDate(new Date());
        ywElectricalRoom.setCreator(loginUserInfo.getId());
        ywElectricalRoom.setEditDate(new Date());
        ywElectricalRoom.setEditor(loginUserInfo.getId());
        ywElectricalRoom.setIsdeleted(Constants.ZERO);
        ywElectricalRoomMapper.insert(ywElectricalRoom);
        return ywElectricalRoom.getId();
    }
    @Override
    public void deleteById(Integer id, LoginUserInfo user) {
        ywElectricalRoomMapper.update(new UpdateWrapper<YwElectricalRoom>()
                .lambda()
                .set(YwElectricalRoom::getIsdeleted, Constants.ONE)
                .set(YwElectricalRoom::getEditDate, DateUtil.getCurrDateTime())
                .set(YwElectricalRoom::getEditor, user.getId())
                .eq(YwElectricalRoom::getId, id)
        );
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        for (Integer id : ids) {
            this.deleteById(id, user);
        }
    }
    @Override
    public void updateById(YwElectricalRoom ywElectricalRoom) {
        if (Objects.isNull(ywElectricalRoom)
                || Objects.isNull(ywElectricalRoom.getId())
                || Objects.isNull(ywElectricalRoom.getRoomId())
                || Objects.isNull(ywElectricalRoom.getObjId())
                || Objects.isNull(ywElectricalRoom.getType())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywElectricalRoom.getLoginUserInfo();
        ywElectricalRoom.setEditDate(new Date());
        ywElectricalRoom.setEditor(loginUserInfo.getId());
        ywElectricalRoomMapper.updateById(ywElectricalRoom);
    }
    @Override
    public YwElectricalRoom findById(Integer id) {
        return ywElectricalRoomMapper.selectOne(new QueryWrapper<YwElectricalRoom>().lambda()
                .eq(YwElectricalRoom::getId, id)
                .last(" limit 1 "));
    }
    @Override
    public PageData<YwElectricalRoom> findPage(PageWrap<YwElectricalRoom> pageWrap) {
        IPage<YwElectricalRoom> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<YwElectricalRoom> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        YwElectricalRoom model = pageWrap.getModel();
        queryWrapper.selectAll(YwElectricalRoom.class)
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getType()), YwElectricalRoom::getType, model.getType())
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getRoomId()), YwElectricalRoom::getRoomId, model.getRoomId())
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getObjId()), YwElectricalRoom::getObjId, model.getObjId())
                .eq(YwElectricalRoom::getIsdeleted, Constants.ZERO)
                .orderByDesc(YwElectricalRoom::getCreateDate);
        IPage<YwElectricalRoom> iPage = ywElectricalRoomMapper.selectJoinPage(page, YwElectricalRoom.class, queryWrapper);
        return PageData.from(iPage);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwElectricalServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,137 @@
package com.doumee.service.business.impl;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwElectricalMapper;
import com.doumee.dao.business.model.YwElectrical;
import com.doumee.dao.business.model.YwGateway;
import com.doumee.service.business.YwElectricalService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * ç”µè¡¨è®¾å¤‡ä¿¡æ¯Service实现
 * @author renkang
 * @date 2026/04/03
 */
@Service
public class YwElectricalServiceImpl implements YwElectricalService {
    @Autowired
    private YwElectricalMapper ywElectricalMapper;
    @Override
    public Integer create(YwElectrical ywElectrical) {
        if (Objects.isNull(ywElectrical)
                || StringUtils.isBlank(ywElectrical.getName())
                || StringUtils.isBlank(ywElectrical.getCode())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywElectrical.getLoginUserInfo();
        // æ ¡éªŒè¡¨å·å”¯ä¸€
        if (ywElectricalMapper.selectCount(new QueryWrapper<YwElectrical>().lambda()
                .eq(YwElectrical::getIsdeleted, Constants.ZERO)
                .eq(YwElectrical::getCode, ywElectrical.getCode())) > Constants.ZERO) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "表号重复!");
        }
        ywElectrical.setCreateDate(new Date());
        ywElectrical.setCreator(loginUserInfo.getId());
        ywElectrical.setEditDate(new Date());
        ywElectrical.setEditor(loginUserInfo.getId());
        ywElectrical.setIsdeleted(Constants.ZERO);
        ywElectricalMapper.insert(ywElectrical);
        return ywElectrical.getId();
    }
    @Override
    public void deleteById(Integer id, LoginUserInfo user) {
        ywElectricalMapper.update(new UpdateWrapper<YwElectrical>()
                .lambda()
                .set(YwElectrical::getIsdeleted, Constants.ONE)
                .set(YwElectrical::getEditDate, DateUtil.getCurrDateTime())
                .set(YwElectrical::getEditor, user.getId())
                .eq(YwElectrical::getId, id)
        );
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        for (Integer id : ids) {
            this.deleteById(id, user);
        }
    }
    @Override
    public void updateById(YwElectrical ywElectrical) {
        if (Objects.isNull(ywElectrical)
                || Objects.isNull(ywElectrical.getId())
                || StringUtils.isBlank(ywElectrical.getName())
                || StringUtils.isBlank(ywElectrical.getCode())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywElectrical.getLoginUserInfo();
        // æ ¡éªŒè¡¨å·å”¯ä¸€ï¼ˆæŽ’除自身)
        if (ywElectricalMapper.selectCount(new QueryWrapper<YwElectrical>().lambda()
                .eq(YwElectrical::getIsdeleted, Constants.ZERO)
                .eq(YwElectrical::getCode, ywElectrical.getCode())
                .ne(YwElectrical::getId, ywElectrical.getId())) > Constants.ZERO) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "表号重复!");
        }
        ywElectrical.setEditDate(new Date());
        ywElectrical.setEditor(loginUserInfo.getId());
        ywElectricalMapper.updateById(ywElectrical);
    }
    @Override
    public YwElectrical findById(Integer id) {
        return ywElectricalMapper.selectJoinOne(YwElectrical.class,
                new MPJLambdaWrapper<YwElectrical>()
                        .selectAll(YwElectrical.class)
                        .selectAs(YwGateway::getName, YwElectrical::getGatewayName)
                        .leftJoin(YwGateway.class, YwGateway::getId, YwElectrical::getGatewayId)
                        .eq(YwElectrical::getId, id)
                        .last(" limit 1 ")
        );
    }
    @Override
    public PageData<YwElectrical> findPage(PageWrap<YwElectrical> pageWrap) {
        IPage<YwElectrical> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<YwElectrical> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        YwElectrical model = pageWrap.getModel();
        queryWrapper.selectAll(YwElectrical.class)
                .selectAs(YwGateway::getName, YwElectrical::getGatewayName)
                .leftJoin(YwGateway.class, YwGateway::getId, YwElectrical::getGatewayId)
                .and(Objects.nonNull(model) && StringUtils.isNotBlank(model.getName()),
                        i -> i.like(YwElectrical::getName, model.getName())
                             .or()
                             .like(YwElectrical::getCode, model.getName()))
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getRunStatus()), YwElectrical::getRunStatus, model.getRunStatus())
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getGatewayId()), YwElectrical::getGatewayId, model.getGatewayId())
                .eq(YwElectrical::getIsdeleted, Constants.ZERO)
                .orderByDesc(YwElectrical::getCreateDate);
        IPage<YwElectrical> iPage = ywElectricalMapper.selectJoinPage(page, YwElectrical.class, queryWrapper);
        return PageData.from(iPage);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwGatewayServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,142 @@
package com.doumee.service.business.impl;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwGatewayMapper;
import com.doumee.dao.business.model.YwGateway;
import com.doumee.service.business.YwGatewayService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * ç½‘关管理Service实现
 * @author renkang
 * @date 2026/04/02
 */
@Service
public class YwGatewayServiceImpl implements YwGatewayService {
    @Autowired
    private YwGatewayMapper ywGatewayMapper;
    @Override
    public Integer create(YwGateway ywGateway) {
        if (Objects.isNull(ywGateway)
                || StringUtils.isBlank(ywGateway.getName())
                || StringUtils.isBlank(ywGateway.getGatewayCode())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywGateway.getLoginUserInfo();
        // æ ¡éªŒç½‘关设备号唯一
        if (ywGatewayMapper.selectCount(new QueryWrapper<YwGateway>().lambda()
                .eq(YwGateway::getIsdeleted, Constants.ZERO)
                .eq(YwGateway::getGatewayCode, ywGateway.getGatewayCode())) > Constants.ZERO) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "网关设备号重复!");
        }
        ywGateway.setCreateDate(new Date());
        ywGateway.setCreator(loginUserInfo.getId());
        ywGateway.setEditDate(new Date());
        ywGateway.setEditor(loginUserInfo.getId());
        ywGateway.setIsdeleted(Constants.ZERO);
        ywGatewayMapper.insert(ywGateway);
        return ywGateway.getId();
    }
    @Override
    public void deleteById(Integer id, LoginUserInfo user) {
        ywGatewayMapper.update(new UpdateWrapper<YwGateway>()
                .lambda()
                .set(YwGateway::getIsdeleted, Constants.ONE)
                .set(YwGateway::getEditDate, DateUtil.getCurrDateTime())
                .set(YwGateway::getEditor, user.getId())
                .eq(YwGateway::getId, id)
        );
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        for (Integer id : ids) {
            this.deleteById(id, user);
        }
    }
    @Override
    public void updateById(YwGateway ywGateway) {
        if (Objects.isNull(ywGateway)
                || Objects.isNull(ywGateway.getId())
                || StringUtils.isBlank(ywGateway.getName())
                || StringUtils.isBlank(ywGateway.getGatewayCode())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywGateway.getLoginUserInfo();
        // æ ¡éªŒç½‘关设备号唯一(排除自身)
        if (ywGatewayMapper.selectCount(new QueryWrapper<YwGateway>().lambda()
                .eq(YwGateway::getIsdeleted, Constants.ZERO)
                .eq(YwGateway::getGatewayCode, ywGateway.getGatewayCode())
                .ne(YwGateway::getId, ywGateway.getId())) > Constants.ZERO) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "网关设备号重复!");
        }
        ywGateway.setEditDate(new Date());
        ywGateway.setEditor(loginUserInfo.getId());
        ywGatewayMapper.updateById(ywGateway);
    }
    @Override
    public void updateStatusById(YwGateway ywGateway) {
        YwGateway model = new YwGateway();
        model.setId(ywGateway.getId());
        model.setStatus(ywGateway.getStatus());
        ywGatewayMapper.updateById(model);
    }
    @Override
    public YwGateway findById(Integer id) {
        return ywGatewayMapper.selectJoinOne(YwGateway.class,
                new MPJLambdaWrapper<YwGateway>()
                        .selectAll(YwGateway.class)
                        .selectAs(com.doumee.dao.business.model.YwProject::getName, YwGateway::getProjectName)
                        .leftJoin(com.doumee.dao.business.model.YwProject.class, com.doumee.dao.business.model.YwProject::getId, YwGateway::getProjectId)
                        .eq(YwGateway::getId, id)
                        .last(" limit 1 ")
        );
    }
    @Override
    public PageData<YwGateway> findPage(PageWrap<YwGateway> pageWrap) {
        IPage<YwGateway> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<YwGateway> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        YwGateway model = pageWrap.getModel();
        queryWrapper.selectAll(YwGateway.class)
                .selectAs(com.doumee.dao.business.model.YwProject::getName, YwGateway::getProjectName)
                .leftJoin(com.doumee.dao.business.model.YwProject.class, com.doumee.dao.business.model.YwProject::getId, YwGateway::getProjectId)
                .and(Objects.nonNull(model) && StringUtils.isNotBlank(model.getName()),
                        i -> i.like(YwGateway::getName, model.getName()).or().like(YwGateway::getGatewayCode, model.getName()))
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getStatus()), YwGateway::getStatus, model.getStatus())
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getProjectId()), YwGateway::getProjectId, model.getProjectId())
                .eq(YwGateway::getIsdeleted, Constants.ZERO)
                .orderByDesc(YwGateway::getCreateDate);
        IPage<YwGateway> iPage = ywGatewayMapper.selectJoinPage(page, YwGateway.class, queryWrapper);
        return PageData.from(iPage);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwTopUpLogServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,118 @@
package com.doumee.service.business.impl;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwTopUpLogMapper;
import com.doumee.dao.business.model.YwElectrical;
import com.doumee.dao.business.model.YwTopUpLog;
import com.doumee.service.business.YwTopUpLogService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * å……值记录Service实现
 * @author renkang
 * @date 2026/04/03
 */
@Service
public class YwTopUpLogServiceImpl implements YwTopUpLogService {
    @Autowired
    private YwTopUpLogMapper ywTopUpLogMapper;
    @Override
    public Integer create(YwTopUpLog ywTopUpLog) {
        if (Objects.isNull(ywTopUpLog)
                || Objects.isNull(ywTopUpLog.getObjId())
                || Objects.isNull(ywTopUpLog.getCreditFee())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywTopUpLog.getLoginUserInfo();
        ywTopUpLog.setCreateDate(new Date());
        ywTopUpLog.setCreator(loginUserInfo.getId());
        ywTopUpLog.setEditDate(new Date());
        ywTopUpLog.setEditor(loginUserInfo.getId());
        ywTopUpLog.setIsdeleted(Constants.ZERO);
        ywTopUpLogMapper.insert(ywTopUpLog);
        return ywTopUpLog.getId();
    }
    @Override
    public void deleteById(Integer id, LoginUserInfo user) {
        ywTopUpLogMapper.update(new UpdateWrapper<YwTopUpLog>()
                .lambda()
                .set(YwTopUpLog::getIsdeleted, Constants.ONE)
                .set(YwTopUpLog::getEditDate, DateUtil.getCurrDateTime())
                .set(YwTopUpLog::getEditor, user.getId())
                .eq(YwTopUpLog::getId, id)
        );
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        for (Integer id : ids) {
            this.deleteById(id, user);
        }
    }
    @Override
    public void updateById(YwTopUpLog ywTopUpLog) {
        if (Objects.isNull(ywTopUpLog) || Objects.isNull(ywTopUpLog.getId())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywTopUpLog.getLoginUserInfo();
        ywTopUpLog.setEditDate(new Date());
        ywTopUpLog.setEditor(loginUserInfo.getId());
        ywTopUpLogMapper.updateById(ywTopUpLog);
    }
    @Override
    public YwTopUpLog findById(Integer id) {
        return ywTopUpLogMapper.selectJoinOne(YwTopUpLog.class,
                new MPJLambdaWrapper<YwTopUpLog>()
                        .selectAll(YwTopUpLog.class)
                        .selectAs(YwElectrical::getName, YwTopUpLog::getElectricalName)
                        .leftJoin(YwElectrical.class, YwElectrical::getId, YwTopUpLog::getObjId)
                        .eq(YwTopUpLog::getId, id)
                        .last(" limit 1 ")
        );
    }
    @Override
    public PageData<YwTopUpLog> findPage(PageWrap<YwTopUpLog> pageWrap) {
        IPage<YwTopUpLog> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<YwTopUpLog> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        YwTopUpLog model = pageWrap.getModel();
        queryWrapper.selectAll(YwTopUpLog.class)
                .selectAs(YwElectrical::getName, YwTopUpLog::getElectricalName)
                .leftJoin(YwElectrical.class, YwElectrical::getId, YwTopUpLog::getObjId)
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getObjId()), YwTopUpLog::getObjId, model.getObjId())
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getCompanyId()), YwTopUpLog::getCompanyId, model.getCompanyId())
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getStatus()), YwTopUpLog::getStatus, model.getStatus())
                .eq(YwTopUpLog::getIsdeleted, Constants.ZERO)
                .orderByDesc(YwTopUpLog::getCreateDate);
        IPage<YwTopUpLog> iPage = ywTopUpLogMapper.selectJoinPage(page, YwTopUpLog.class, queryWrapper);
        return PageData.from(iPage);
    }
}