Compare commits

..

5 Commits

Author SHA1 Message Date
MichaelWin
dca88d28cd 【新增】获取公共固件板载类型集合 2026-01-08 16:28:28 +08:00
MichaelWin
c07537c527 【废除】mongoDBjar包 2026-01-08 16:26:17 +08:00
MichaelWin
978eb7501b 【新增】获取公共固件版本接口 2026-01-08 15:58:34 +08:00
MichaelWin
a13fcf8440 【改进】废除mongoDB连接池 2026-01-08 15:39:10 +08:00
MichaelWin
bd8fd15b32 【新增】获取公共固件类型接口 2026-01-08 15:38:36 +08:00
19 changed files with 485 additions and 4 deletions

View File

@@ -38,7 +38,7 @@ dependencies {
implementation 'org.apache.commons:commons-pool2' // 提供 Redis 连接池
implementation 'com.alibaba:druid-spring-boot-starter:1.2.27' // 数据库连接池
implementation 'org.lionsoul:ip2region:2.7.0' // IP 归属地
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' // mongodb
// implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' // mongodb
compileOnly 'org.projectlombok:lombok' // Lombok
developmentOnly 'org.springframework.boot:spring-boot-devtools' // 热重载
runtimeOnly 'com.mysql:mysql-connector-j' // MySQL 驱动

View File

@@ -38,6 +38,8 @@ public class SaTokenConfig implements WebMvcConfigurer {
.excludePathPatterns("/privacy_policy", "/privacy_policy/**")
// 排除固件查询接口(不需要登录)
.excludePathPatterns("/firmware/**")
// 排除公共固件
.excludePathPatterns("/public_firmware/**")
// 排除系统登录页(不需要登录)
// .excludePathPatterns("/loading.html", "/admin/login.html")
// 排除静态资源

View File

@@ -0,0 +1,19 @@
package com.corewing.app.dto.publicFirmware;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class PublicBoardTypeListRequest {
@ApiModelProperty(value = "固件类型", required = true)
@NotBlank(message = "固件类型不能为空")
public String firmwareType;
@ApiModelProperty(value = "固件版本id", required = true)
@NotBlank(message = "固件版本id不能为空")
public String versionId;
}

View File

@@ -0,0 +1,23 @@
package com.corewing.app.dto.publicFirmware;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class PublicFirmwareListRequest {
@ApiModelProperty(value = "固件类型", required = true)
@NotBlank(message = "固件类型不能为空")
public String firmwareType;
@ApiModelProperty(value = "固件版本id", required = true)
@NotBlank(message = "固件版本id不能为空")
public String versionId;
@ApiModelProperty(value = "板载类型", required = true)
@NotBlank(message = "板载类型不能为空")
public String boardType;
}

View File

@@ -0,0 +1,15 @@
package com.corewing.app.dto.publicFirmware;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class PublicFirmwareVersionListRequest {
@ApiModelProperty(value = "固件类型", required = true)
@NotBlank(message = "固件类型不能为空")
public String firmwareType;
}

View File

@@ -0,0 +1,86 @@
package com.corewing.app.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.corewing.app.common.base.CommonEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 固件详情表
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("app_public_firmware_plane")
public class AppPublicFirmwarePlane extends CommonEntity {
/**
* 主键
*/
@TableId
private String id;
/**
* 版本号Id
*/
private String versionId;
/**
* 板载类型
*/
private String boardType;
/**
* 固件类型
*/
private String type;
/**
* 固件下载地址
*/
private String downloadUrl;
/**
* 固件名称
*/
private String firmwareName;
/**
* 固件大小
*/
private Long fileSize;
/**
* 固件发布时间
*/
private Date releaseTime;
/**
* 固件同步时间
*/
private Date crawlTime;
/**
* 是否有效
*/
private int isValid;
/**
* 排序
*/
private int sortCode;
/**
* 备注
*/
private String remark;
/**
* 扩展字段
*/
private String extJson;
}

View File

@@ -0,0 +1,65 @@
package com.corewing.app.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.corewing.app.common.base.CommonEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 公共固件版本表
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("app_public_firmware_version")
public class AppPublicFirmwareVersion extends CommonEntity {
/**
* 主键
*/
@TableId
public String id;
/**
* 固件版本类型
*/
private String type;
/**
* 版本类型
*/
private String versionType;
/**
* 版本号
*/
private String versionNumber;
/**
* 数字版本号
*/
private int versionCode;
/**
* 发布时间
*/
private Date releaseDate;
/**
* 排序
*/
private int sortCode;
/**
* 备注
*/
private String remark;
/**
* 扩展字段
*/
private String extJson;
}

View File

@@ -0,0 +1,50 @@
package com.corewing.app.entity;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.corewing.app.common.base.CommonEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* 字典实体
*
* @author xuyuxiang
* @date 2022/2/23 18:27
**/
@Getter
@Setter
@TableName("DEV_DICT")
public class BizDict extends CommonEntity {
/** id */
@ApiModelProperty("id")
private String id;
/** 父id */
@ApiModelProperty("父级id")
private String parentId;
/** 字典文字 */
@ApiModelProperty("字典文字")
private String dictLabel;
/** 字典值 */
@ApiModelProperty("字典值")
private String dictValue;
/** 分类 */
@ApiModelProperty("分类")
private String category;
/** 排序码 */
@ApiModelProperty("排序码")
private Integer sortCode;
/** 扩展信息 */
@ApiModelProperty("扩展信息")
@TableField(insertStrategy = FieldStrategy.ALWAYS, updateStrategy = FieldStrategy.ALWAYS)
private String extJson;
}

View File

@@ -0,0 +1,9 @@
package com.corewing.app.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.corewing.app.entity.AppPublicFirmwarePlane;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AppPublicFirmwarePlaneMapper extends BaseMapper<AppPublicFirmwarePlane> {
}

View File

@@ -0,0 +1,9 @@
package com.corewing.app.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.corewing.app.entity.AppPublicFirmwareVersion;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AppPublicFirmwareVersionMapper extends BaseMapper<AppPublicFirmwareVersion> {
}

View File

@@ -0,0 +1,9 @@
package com.corewing.app.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.corewing.app.entity.BizDict;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface BizDictMapper extends BaseMapper<BizDict> {
}

View File

@@ -0,0 +1,66 @@
package com.corewing.app.modules.app;
import com.corewing.app.common.Result;
import com.corewing.app.dto.publicFirmware.PublicBoardTypeListRequest;
import com.corewing.app.dto.publicFirmware.PublicFirmwareListRequest;
import com.corewing.app.dto.publicFirmware.PublicFirmwareVersionListRequest;
import com.corewing.app.entity.AppPublicFirmwarePlane;
import com.corewing.app.entity.AppPublicFirmwareVersion;
import com.corewing.app.entity.BizDict;
import com.corewing.app.service.AppPublicFirmwarePlaneService;
import com.corewing.app.service.AppPublicFirmwareVersionService;
import com.corewing.app.service.BizDictService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@Api(tags = "公共固件接口")
@RestController
@RequestMapping("/public_firmware")
public class AppPublicFirmwareController {
@Resource
private BizDictService bizDictService;
@Resource
private AppPublicFirmwareVersionService appPublicFirmwareVersionService;
@Resource
private AppPublicFirmwarePlaneService appPublicFirmwarePlaneService;
@ApiOperation("获取固件类型集合")
@GetMapping("/getFirmwareTypeAll")
public Result<List<BizDict>> getFirmwareTypeAll() {
return Result.success(bizDictService.getDataListByKey());
}
@ApiOperation("根据固件类型获取版本集合")
@GetMapping("/getVersionList")
public Result<List<AppPublicFirmwareVersion>> getVersionList(PublicFirmwareVersionListRequest publicFirmwareVersionListRequest) {
return Result.success(appPublicFirmwareVersionService.getVersionList(publicFirmwareVersionListRequest));
}
@ApiOperation("根据固件类型&版本获取板载类型集合")
@GetMapping("/getBoardTypeList")
public Result<List<String>> getBoardTypeList(PublicBoardTypeListRequest publicBoardTypeListRequest) {
return Result.success(appPublicFirmwarePlaneService.getBoardTypeList(publicBoardTypeListRequest));
}
@ApiOperation("根据固件类型&版本&板载获取固件集合")
@GetMapping("/getFirmwareList")
public Result<List<AppPublicFirmwarePlane>> getFirmwareList(PublicFirmwareListRequest publicFirmwareListRequest) {
return Result.success(appPublicFirmwarePlaneService.getFirmwareList(publicFirmwareListRequest));
}
}

View File

@@ -0,0 +1,15 @@
package com.corewing.app.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.corewing.app.dto.publicFirmware.PublicBoardTypeListRequest;
import com.corewing.app.dto.publicFirmware.PublicFirmwareListRequest;
import com.corewing.app.entity.AppPublicFirmwarePlane;
import java.util.List;
public interface AppPublicFirmwarePlaneService extends IService<AppPublicFirmwarePlane> {
List<String> getBoardTypeList(PublicBoardTypeListRequest publicBoardTypeListRequest);
List<AppPublicFirmwarePlane> getFirmwareList(PublicFirmwareListRequest publicFirmwareListRequest);
}

View File

@@ -0,0 +1,16 @@
package com.corewing.app.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.corewing.app.dto.publicFirmware.PublicBoardTypeListRequest;
import com.corewing.app.dto.publicFirmware.PublicFirmwareListRequest;
import com.corewing.app.dto.publicFirmware.PublicFirmwareVersionListRequest;
import com.corewing.app.entity.AppPublicFirmwarePlane;
import com.corewing.app.entity.AppPublicFirmwareVersion;
import java.util.List;
public interface AppPublicFirmwareVersionService extends IService<AppPublicFirmwareVersion> {
List<AppPublicFirmwareVersion> getVersionList(PublicFirmwareVersionListRequest publicFirmwareVersionListRequest);
}

View File

@@ -0,0 +1,11 @@
package com.corewing.app.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.corewing.app.entity.BizDict;
import java.util.List;
public interface BizDictService extends IService<BizDict> {
List<BizDict> getDataListByKey();
}

View File

@@ -0,0 +1,34 @@
package com.corewing.app.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.corewing.app.dto.publicFirmware.PublicBoardTypeListRequest;
import com.corewing.app.dto.publicFirmware.PublicFirmwareListRequest;
import com.corewing.app.entity.AppPublicFirmwarePlane;
import com.corewing.app.mapper.AppPublicFirmwarePlaneMapper;
import com.corewing.app.service.AppPublicFirmwarePlaneService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
public class AppPublicFirmwarePlaneServiceImpl extends ServiceImpl<AppPublicFirmwarePlaneMapper, AppPublicFirmwarePlane> implements AppPublicFirmwarePlaneService {
@Override
public List<String> getBoardTypeList(PublicBoardTypeListRequest publicBoardTypeListRequest) {
LambdaQueryWrapper<AppPublicFirmwarePlane> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AppPublicFirmwarePlane::getType, publicBoardTypeListRequest.getFirmwareType());
queryWrapper.eq(AppPublicFirmwarePlane::getVersionId, publicBoardTypeListRequest.getVersionId());
return list(queryWrapper).stream().map(AppPublicFirmwarePlane::getBoardType).filter(Objects::nonNull).collect(Collectors.toList());
}
@Override
public List<AppPublicFirmwarePlane> getFirmwareList(PublicFirmwareListRequest publicFirmwareListRequest) {
LambdaQueryWrapper<AppPublicFirmwarePlane> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AppPublicFirmwarePlane::getType, publicFirmwareListRequest.getFirmwareType());
queryWrapper.eq(AppPublicFirmwarePlane::getVersionId, publicFirmwareListRequest.getVersionId());
queryWrapper.eq(AppPublicFirmwarePlane::getBoardType, publicFirmwareListRequest.getBoardType());
return list(queryWrapper);
}
}

View File

@@ -0,0 +1,27 @@
package com.corewing.app.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.corewing.app.dto.publicFirmware.PublicBoardTypeListRequest;
import com.corewing.app.dto.publicFirmware.PublicFirmwareListRequest;
import com.corewing.app.dto.publicFirmware.PublicFirmwareVersionListRequest;
import com.corewing.app.entity.AppPublicFirmwarePlane;
import com.corewing.app.entity.AppPublicFirmwareVersion;
import com.corewing.app.mapper.AppPublicFirmwareVersionMapper;
import com.corewing.app.service.AppPublicFirmwareVersionService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class AppPublicFirmwareVersionServiceImpl extends ServiceImpl<AppPublicFirmwareVersionMapper, AppPublicFirmwareVersion> implements AppPublicFirmwareVersionService {
@Override
public List<AppPublicFirmwareVersion> getVersionList(PublicFirmwareVersionListRequest publicFirmwareVersionListRequest) {
LambdaQueryWrapper<AppPublicFirmwareVersion> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(AppPublicFirmwareVersion::getType, publicFirmwareVersionListRequest.getFirmwareType());
wrapper.orderByAsc(AppPublicFirmwareVersion::getSortCode);
return list(wrapper);
}
}

View File

@@ -0,0 +1,25 @@
package com.corewing.app.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.corewing.app.entity.BizDict;
import com.corewing.app.mapper.BizDictMapper;
import com.corewing.app.service.BizDictService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BizDictServiceImpl extends ServiceImpl<BizDictMapper, BizDict> implements BizDictService {
@Override
public List<BizDict> getDataListByKey() {
LambdaQueryWrapper<BizDict> parentQueryWrapper = new LambdaQueryWrapper<>();
parentQueryWrapper.eq(BizDict::getDictValue, "PUBLIC_FIRMWARE_TYPE");
BizDict parentDict = getOne(parentQueryWrapper);
LambdaQueryWrapper<BizDict> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BizDict::getParentId, parentDict.getId());
return list(queryWrapper);
}
}

View File

@@ -58,9 +58,9 @@ spring.redis.lettuce.pool.min-idle=0
spring.redis.lettuce.pool.max-wait=-1ms
# MongoDB 配置
spring.data.mongodb.host=120.24.204.180
spring.data.mongodb.database=app
spring.data.mongodb.port=27017
#spring.data.mongodb.host=120.24.204.180
#spring.data.mongodb.database=app
#spring.data.mongodb.port=27017
# Sa-Token 配置
sa-token.token-name=Authorization