From b2d7db1f528073c5bd29ec584e2cca1025f44d23 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 15 Apr 2025 18:32:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=99=BA=E8=83=BD=E6=9F=9C=E8=B4=A7?= =?UTF-8?q?=E6=9F=9C=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_hardware.sql | 26 ++++ .../hard/api/constant/HardAuthTypeEnum.java | 27 ++++ .../pjcloud/hard/api/dto/HardAuthAppDto.java | 9 +- .../entity/manager/HardDoorCabinetEntity.java | 115 ++++++++++++++++++ .../hard/controller/HardAuthController.java | 4 +- .../mapper/manager/HardDoorCabinetMapper.java | 11 ++ .../hard/service/HardDoorCabinetService.java | 8 ++ .../hard/service/HardDoorManagerService.java | 5 + .../service/impl/HardAuthServiceImpl.java | 20 ++- .../service/impl/HardDoorFlowServiceImpl.java | 18 +-- .../manager/HardDoorCabinetServiceImpl.java | 14 +++ .../manager/HardDoorManagerServiceImpl.java | 17 +++ .../mapper/manager/HardDoorCabinetMapper.xml | 22 ++++ 13 files changed, 276 insertions(+), 20 deletions(-) create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardAuthTypeEnum.java create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardDoorCabinetEntity.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/manager/HardDoorCabinetMapper.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorCabinetService.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorCabinetServiceImpl.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/manager/HardDoorCabinetMapper.xml diff --git a/db/800pjcloudx_hardware.sql b/db/800pjcloudx_hardware.sql index fab9408b7..82aafe107 100644 --- a/db/800pjcloudx_hardware.sql +++ b/db/800pjcloudx_hardware.sql @@ -71,6 +71,32 @@ CREATE TABLE hard_door_manager DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT ='柜子设备管理'; +-- ---------------------------- +-- Table structure for hard_door_cabinet +-- ---------------------------- +DROP TABLE IF EXISTS `hard_door_cabinet`; +CREATE TABLE hard_door_cabinet +( + id bigint NOT NULL COMMENT '编号', + hard_door_id bigint NOT NULL COMMENT '智能柜编号', + cabinet_no int NOT NULL COMMENT '货柜编号(1,2)', + is_lock_online varchar(16) NOT NULL COMMENT '锁在线1:在线;2:离线;', + lock_status int NOT NULL COMMENT '锁状态1:开锁;2:关锁;', + door_status int NOT NULL COMMENT '门状态1:门关;2:门开', + sale_status int NOT NULL COMMENT '货柜售卖状态1:在售;2:停售', + qr_code varchar(256) DEFAULT NULL COMMENT '二维码', + # 其他字段 + create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', + create_time datetime DEFAULT NULL COMMENT '创建时间', + update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人', + update_time datetime DEFAULT NULL COMMENT '修改时间', + del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记', + tenant_id bigint DEFAULT NULL COMMENT '租户ID', + PRIMARY KEY (id) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_general_ci COMMENT ='智能柜货柜'; + -- ---------------------------- -- Table structure for hard_door_flow -- ---------------------------- diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardAuthTypeEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardAuthTypeEnum.java new file mode 100644 index 000000000..3b2ac1d89 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardAuthTypeEnum.java @@ -0,0 +1,27 @@ +package com.bsd.pjcloud.hard.api.constant; + + +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * 硬件授权类型 + */ +@AllArgsConstructor +@Getter +public enum HardAuthTypeEnum { + + HARD_DDOR_AUTH("10", "智能柜授权"), + ; + private final String type; + private final String description; + + public static HardAuthTypeEnum valueOfByType(String type) { + if (ObjectUtil.isEmpty(type)) return null; + return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get(); + } + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardAuthAppDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardAuthAppDto.java index e3a4a09a0..bc73575e5 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardAuthAppDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardAuthAppDto.java @@ -1,6 +1,7 @@ package com.bsd.pjcloud.hard.api.dto; import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.Data; @Data @@ -14,9 +15,15 @@ public class HardAuthAppDto { /** * 智能柜设备id */ - @NotEmpty(message = "智能柜设备id不能为空") + @NotNull(message = "智能柜设备id不能为空") private Long doorHardId; + /** + * 货柜编号 + */ + @NotNull(message = "货柜编号不能为空") + private Integer cabinetNo; + /** * 是否授权 */ diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardDoorCabinetEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardDoorCabinetEntity.java new file mode 100644 index 000000000..a3a54b0e2 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardDoorCabinetEntity.java @@ -0,0 +1,115 @@ +package com.bsd.pjcloud.hard.api.entity.manager; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.bsd.pjcloud.common.core.util.TenantTable; +import java.time.LocalDateTime; + +/** + * 智能柜货柜 + * + * @author dzc + * @date 2025-04-15 18:28:46 + */ +@Data +@TenantTable +@TableName("hard_door_cabinet") +@EqualsAndHashCode(callSuper = true) +@Schema(description = "智能柜货柜") +public class HardDoorCabinetEntity extends Model { + + + /** + * 编号 + */ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description="编号") + private Long id; + + /** + * 智能柜编号 + */ + @Schema(description="智能柜编号") + private Long hardDoorId; + + /** + * 货柜编号(1,2) + */ + @Schema(description="货柜编号(1,2)") + private Integer cabinetNo; + + /** + * 锁在线1:在线;2:离线; + */ + @Schema(description="锁在线1:在线;2:离线;") + private String isLockOnline; + + /** + * 锁状态1:开锁;2:关锁; + */ + @Schema(description="锁状态1:开锁;2:关锁;") + private Integer lockStatus; + + /** + * 门状态1:门关;2:门开 + */ + @Schema(description="门状态1:门关;2:门开") + private Integer doorStatus; + + /** + * 货柜售卖状态1:在售;2:停售 + */ + @Schema(description="货柜售卖状态1:在售;2:停售") + private Integer saleStatus; + + /** + * 二维码 + */ + @Schema(description="二维码") + private String qrCode; + + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description="创建人") + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description="创建时间") + private LocalDateTime createTime; + + /** + * 修改人 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description="修改人") + private String updateBy; + + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description="修改时间") + private LocalDateTime updateTime; + + /** + * 删除标记 + */ + @TableLogic + @TableField(fill = FieldFill.INSERT) + @Schema(description="删除标记") + private String delFlag; + + /** + * 租户ID + */ + @Schema(description="租户ID") + private Long tenantId; +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardAuthController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardAuthController.java index 8e478be9d..f6118c23c 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardAuthController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardAuthController.java @@ -14,6 +14,7 @@ import com.bsd.pjcloud.hard.api.dto.HardAuthDto; import com.bsd.pjcloud.hard.api.entity.HardAuthEntity; import com.bsd.pjcloud.hard.api.vo.HardAuthVo; import com.bsd.pjcloud.hard.service.HardAuthService; +import jakarta.validation.Valid; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -42,8 +43,7 @@ public class HardAuthController { @Operation(summary = "app智能柜授权", description = "app智能柜授权") @PostMapping("/app/auth-hard-door") - @PreAuthorize("@pms.hasPermission('hard_hardAuth_view')") - public R appAuthHardDoor(@RequestBody HardAuthAppDto dto) { + public R appAuthHardDoor(@Valid @RequestBody HardAuthAppDto dto) { PjcloudUser user = SecurityUtils.getUser(); dto.setUserId(user.getId()); return R.ok(hardAuthService.appAuthHardDoor(dto)); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/manager/HardDoorCabinetMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/manager/HardDoorCabinetMapper.java new file mode 100644 index 000000000..2ec2df75d --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/manager/HardDoorCabinetMapper.java @@ -0,0 +1,11 @@ +package com.bsd.pjcloud.hard.mapper.manager; + +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.hard.api.entity.manager.HardDoorCabinetEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface HardDoorCabinetMapper extends PjcloudBaseMapper { + + +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorCabinetService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorCabinetService.java new file mode 100644 index 000000000..87c34c1b9 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorCabinetService.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.hard.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.hard.api.entity.manager.HardDoorCabinetEntity; + +public interface HardDoorCabinetService extends IService { + +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorManagerService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorManagerService.java index f771a0531..8268f7612 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorManagerService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorManagerService.java @@ -31,4 +31,9 @@ public interface HardDoorManagerService extends IService * 音量修改 */ void changeVolume(HardChangeVolume dto); + + /** + * 校验设备和货柜编号 + */ + HardDoorManagerVo checkDeviceAndCabinet(Long hardDoorId, Integer cabinetNo); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java index 7a2b60def..d4a76a80b 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java @@ -6,24 +6,31 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.admin.api.utils.DataUtil; import com.bsd.pjcloud.admin.api.vo.UserVO; +import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.hard.api.constant.HardAuthTypeEnum; import com.bsd.pjcloud.hard.api.dto.HardAuthAppDto; import com.bsd.pjcloud.hard.api.dto.HardAuthDto; import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto; import com.bsd.pjcloud.hard.api.entity.HardAuthEntity; +import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity; import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity; import com.bsd.pjcloud.hard.api.utils.HardUtil; import com.bsd.pjcloud.hard.api.vo.HardAuthVo; +import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo; import com.bsd.pjcloud.hard.mapper.HardAuthMapper; +import com.bsd.pjcloud.hard.mapper.manager.HardDoorManagerMapper; import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper; import com.bsd.pjcloud.hard.service.HardAuthService; +import com.bsd.pjcloud.hard.service.HardDoorManagerService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -36,7 +43,10 @@ import java.util.List; @Service public class HardAuthServiceImpl extends ServiceImpl implements HardAuthService { + private final HardDoorManagerService hardDoorManagerService; + private final HardManagerMapper hardManagerMapper; + private final HardDoorManagerMapper hardDoorManagerMapper; private final RemoteUserService remoteUserService; @@ -52,10 +62,18 @@ public class HardAuthServiceImpl extends ServiceImpl list, HardAuthDto dto) { diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java index f09205b91..b12592294 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java @@ -79,7 +79,7 @@ public class HardDoorFlowServiceImpl extends ServiceImpl cabinetList = JSONUtil.toList(doorDetail.getCabinetList(), DoorStatusVo.Cabinet.class); - if (ObjectUtil.isEmpty(cabinetList)) throw new RuntimeException("货柜不存在"); - if (ObjectUtil.isEmpty(cabinetList.stream().filter(i -> ObjectUtil.equals(i.getCabinetNo(), cabinetNo)).findFirst().orElse(null))) { - throw new RuntimeException("货柜不存在"); - } - return doorDetail; - } /** * 判断货柜状态 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorCabinetServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorCabinetServiceImpl.java new file mode 100644 index 000000000..5da0d4e0c --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorCabinetServiceImpl.java @@ -0,0 +1,14 @@ +package com.bsd.pjcloud.hard.service.impl.manager; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.hard.api.entity.manager.HardDoorCabinetEntity; +import com.bsd.pjcloud.hard.mapper.manager.HardDoorCabinetMapper; +import com.bsd.pjcloud.hard.service.HardDoorCabinetService; +import org.springframework.stereotype.Service; +/** + * 智能柜货柜 + */ +@Service +public class HardDoorCabinetServiceImpl extends ServiceImpl implements HardDoorCabinetService { + +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorManagerServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorManagerServiceImpl.java index 1aca69f3b..6d94a43da 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorManagerServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorManagerServiceImpl.java @@ -24,6 +24,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import java.util.List; + /** * 智能柜设置 */ @@ -163,4 +165,19 @@ public class HardDoorManagerServiceImpl extends ServiceImpl cabinetList = JSONUtil.toList(doorDetail.getCabinetList(), DoorStatusVo.Cabinet.class); + if (ObjectUtil.isEmpty(cabinetList)) throw new RuntimeException("货柜不存在"); + if (ObjectUtil.isEmpty(cabinetList.stream().filter(i -> ObjectUtil.equals(i.getCabinetNo(), cabinetNo)).findFirst().orElse(null))) { + throw new RuntimeException("货柜不存在"); + } + return doorDetail; + } } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/manager/HardDoorCabinetMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/manager/HardDoorCabinetMapper.xml new file mode 100644 index 000000000..3f85f0c40 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/manager/HardDoorCabinetMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file