From 84594dda48c6504e0a74bfd6b6faae06a6a21b84 Mon Sep 17 00:00:00 2001 From: MichaelWin Date: Fri, 6 Mar 2026 11:28:40 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91=E5=9B=BA?= =?UTF-8?q?=E4=BB=B6=E7=89=88=E6=9C=AC=E5=8D=87=E7=BA=A7=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/dto/FirmwareVersionRequest.java | 23 +++++++++++++ .../com/corewing/app/entity/Firmware.java | 15 +++++++++ .../modules/app/AppFirmwareController.java | 26 ++++++++++++--- .../corewing/app/service/FirmwareService.java | 8 +++++ .../app/service/impl/FirmwareServiceImpl.java | 32 +++++++++++++++++++ src/main/resources/application.properties | 4 +-- 6 files changed, 102 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/corewing/app/dto/FirmwareVersionRequest.java diff --git a/src/main/java/com/corewing/app/dto/FirmwareVersionRequest.java b/src/main/java/com/corewing/app/dto/FirmwareVersionRequest.java new file mode 100644 index 0000000..dc16d48 --- /dev/null +++ b/src/main/java/com/corewing/app/dto/FirmwareVersionRequest.java @@ -0,0 +1,23 @@ +package com.corewing.app.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class FirmwareVersionRequest { + + @ApiModelProperty(value = "型号id", required = true) + @NotNull(message = "型号不能为空") + private Integer modelId; + + @ApiModelProperty(value = "版本号", required = true) + @NotNull(message = "版本号不能为空") + private String version; + + @ApiModelProperty(value = "固件类型", required = true) + @NotNull(message = "固件类型不能为空") + private Integer firmwareType; + +} diff --git a/src/main/java/com/corewing/app/entity/Firmware.java b/src/main/java/com/corewing/app/entity/Firmware.java index 4dda9be..3de81f5 100644 --- a/src/main/java/com/corewing/app/entity/Firmware.java +++ b/src/main/java/com/corewing/app/entity/Firmware.java @@ -45,6 +45,21 @@ public class Firmware implements Serializable { */ private Integer firmwareType; + /** + * 模型id + */ + private String modelId; + + /** + * 版本校验id + */ + private Integer versionId; + + /** + * 版本号 + */ + private String version; + /** * 固件下载地址 */ diff --git a/src/main/java/com/corewing/app/modules/app/AppFirmwareController.java b/src/main/java/com/corewing/app/modules/app/AppFirmwareController.java index dac0c92..638a455 100644 --- a/src/main/java/com/corewing/app/modules/app/AppFirmwareController.java +++ b/src/main/java/com/corewing/app/modules/app/AppFirmwareController.java @@ -5,20 +5,26 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.corewing.app.common.Result; import com.corewing.app.common.annotation.CommonLog; +import com.corewing.app.dto.FirmwareVersionRequest; import com.corewing.app.entity.Firmware; import com.corewing.app.service.FirmwareService; import com.corewing.app.util.I18nUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.util.StringUtils; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; +import java.util.List; + /** * 固件 Controller */ @Api(tags = "固件接口") @RestController @RequestMapping("/firmware") +@Validated public class AppFirmwareController { private final FirmwareService firmwareService; @@ -84,8 +90,8 @@ public class AppFirmwareController { @CommonLog("查询所有固件集合") @ApiOperation("查询所有固件集合") @GetMapping("/list") - public Result> list() { - java.util.List list = firmwareService.list(); + public Result> list() { + List list = firmwareService.list(); return Result.success(list); } @@ -97,7 +103,7 @@ public class AppFirmwareController { @CommonLog("根据类型查询固件版本") @ApiOperation("根据类型查询固件版本") @GetMapping("/type/{firmwareType}") - public Result> listByType(@PathVariable Integer firmwareType) { + public Result> listByType(@PathVariable Integer firmwareType) { if (firmwareType == null) { return Result.error(I18nUtil.getMessage("firmware.type.required")); } @@ -107,7 +113,19 @@ public class AppFirmwareController { // 按版本号或创建时间倒序排列,最新版本在前 wrapper.orderByDesc("create_time"); - java.util.List list = firmwareService.list(wrapper); + List list = firmwareService.list(wrapper); return Result.success(list); } + + + /** + * 校验是否存在新固件 + * @return + */ + @CommonLog("校验是否存在新固件") + @ApiOperation("校验是否存在新固件") + @PostMapping("/checkVersion") + public Result checkVersion(@RequestBody @Valid FirmwareVersionRequest firmwareVersionRequest) { + return Result.success(firmwareService.checkVersion(firmwareVersionRequest)); + } } diff --git a/src/main/java/com/corewing/app/service/FirmwareService.java b/src/main/java/com/corewing/app/service/FirmwareService.java index bb57718..2945aba 100644 --- a/src/main/java/com/corewing/app/service/FirmwareService.java +++ b/src/main/java/com/corewing/app/service/FirmwareService.java @@ -3,6 +3,7 @@ package com.corewing.app.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.corewing.app.common.Result; +import com.corewing.app.dto.FirmwareVersionRequest; import com.corewing.app.entity.Firmware; import org.springframework.web.multipart.MultipartFile; @@ -40,4 +41,11 @@ public interface FirmwareService extends IService { * @return */ boolean removeData(Long id); + + /** + * 校验固件是否有新固件 + * @param firmwareVersionRequest + * @return + */ + Firmware checkVersion(FirmwareVersionRequest firmwareVersionRequest); } diff --git a/src/main/java/com/corewing/app/service/impl/FirmwareServiceImpl.java b/src/main/java/com/corewing/app/service/impl/FirmwareServiceImpl.java index c3ae948..c34d9a1 100644 --- a/src/main/java/com/corewing/app/service/impl/FirmwareServiceImpl.java +++ b/src/main/java/com/corewing/app/service/impl/FirmwareServiceImpl.java @@ -4,8 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.corewing.app.common.page.PageContext; +import com.corewing.app.dto.FirmwareVersionRequest; +import com.corewing.app.entity.BizDeviceCategory; import com.corewing.app.entity.Firmware; import com.corewing.app.mapper.FirmwareMapper; +import com.corewing.app.service.BizDeviceCategoryService; import com.corewing.app.service.FirmwareService; import com.corewing.app.util.OSSUploadUtil; import org.springframework.stereotype.Service; @@ -13,7 +16,9 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import org.springframework.web.multipart.MultipartFile; +import javax.annotation.Resource; import java.io.IOException; +import java.util.Objects; /** * 固件 Service 实现类 @@ -21,6 +26,9 @@ import java.io.IOException; @Service public class FirmwareServiceImpl extends ServiceImpl implements FirmwareService { + @Resource + private BizDeviceCategoryService bizDeviceCategoryService; + @Override public Page page(Firmware firmware) { Page page = PageContext.getDefaultPage(Firmware.class); @@ -63,6 +71,30 @@ public class FirmwareServiceImpl extends ServiceImpl i return false; } + @Override + public Firmware checkVersion(FirmwareVersionRequest firmwareVersionRequest) { + + // 根据型号id搜索到设备分类id + LambdaQueryWrapper categoryLambdaQueryWrapper = new LambdaQueryWrapper<>(); + categoryLambdaQueryWrapper.eq(BizDeviceCategory::getModelId, firmwareVersionRequest.getModelId()); + BizDeviceCategory deviceCategory = bizDeviceCategoryService.getOne(categoryLambdaQueryWrapper); + if(Objects.isNull(deviceCategory)){ + throw new RuntimeException("该设备型号不存在设备"); + } + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.ge(Firmware::getVersionId, firmwareVersionRequest.getVersion()); + wrapper.eq(Firmware::getModelId, deviceCategory.getId()); + wrapper.eq(Firmware::getFirmwareType, firmwareVersionRequest.getFirmwareType()); + wrapper.orderByDesc(Firmware::getVersionId); + wrapper.last("LIMIT 1"); + Firmware firmware = this.getOne(wrapper); + if (firmware == null) { + throw new RuntimeException("未找到匹配的固件版本"); + } + return firmware; + } + /** * 获取 URL 路径的最后一节(忽略查询参数 ? 和锚点 #) * @param urlStr URL字符串 diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index eebba98..76c4960 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,9 +1,9 @@ # spring profiles configuration ######################################### -#spring.profiles.active=local +spring.profiles.active=local #spring.profiles.active=test -spring.profiles.active=prod +#spring.profiles.active=prod ######################################### # 应用服务 WEB 访问端口