【新增】APP版本更新校验功能接口

This commit is contained in:
2025-12-05 17:53:44 +08:00
parent 54cd851245
commit 9917e46c29
6 changed files with 151 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
package com.corewing.app.dto.biz.appVersion;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class CheckVersionRequest {
@NotBlank(message = "版本不能为空")
private String localVersion;
@NotBlank(message = "构建版本不能为空")
private int localBuildNumber;
@NotBlank(message = "类型不能为空")
private String type;
}

View File

@@ -0,0 +1,38 @@
package com.corewing.app.entity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.time.LocalDateTime;
/**
* app版本控制
*/
@Data
@TableName("app_version")
public class AppVersion {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String version;
private int versionNumber;
private int buildNumber;
private String updateContent;
private String downloadUrl;
private String type;
private Integer status;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
}

View File

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

View File

@@ -0,0 +1,40 @@
package com.corewing.app.modules.app;
import com.corewing.app.common.Result;
import com.corewing.app.dto.biz.appVersion.CheckVersionRequest;
import com.corewing.app.entity.AppVersion;
import com.corewing.app.service.AppVersionService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
/**
* app升级校验接口
*/
@RestController
@RequestMapping("/app_version")
public class AppVersionController {
@Resource
private AppVersionService appVersionService;
/**
* 校验是否存在新版本
* @param checkVersionRequest
* @return
*/
@GetMapping("/checkUpdate")
public Result<Object> checkUpdate(CheckVersionRequest checkVersionRequest) {
AppVersion version = appVersionService.getNewAppVersion(checkVersionRequest);
if(version == null) {
return Result.error("暂无新版本");
}
return Result.success(version);
}
}

View File

@@ -0,0 +1,13 @@
package com.corewing.app.service;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.corewing.app.dto.biz.appVersion.CheckVersionRequest;
import com.corewing.app.entity.AppVersion;
import javax.validation.Valid;
public interface AppVersionService extends IService<AppVersion> {
AppVersion getNewAppVersion(@Valid CheckVersionRequest checkVersionRequest);
}

View File

@@ -0,0 +1,32 @@
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.biz.appVersion.CheckVersionRequest;
import com.corewing.app.entity.AppVersion;
import com.corewing.app.mapper.AppVersionMapper;
import com.corewing.app.service.AppVersionService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class AppVersionServiceImpl extends ServiceImpl<AppVersionMapper, AppVersion> implements AppVersionService {
@Override
public AppVersion getNewAppVersion(CheckVersionRequest checkVersionRequest) {
int checkVersionNumber = Integer.parseInt(checkVersionRequest.getLocalVersion().replace(".", ""));
LambdaQueryWrapper<AppVersion> wrapper = new LambdaQueryWrapper<>();
wrapper.gt(AppVersion::getVersionNumber, checkVersionNumber)
.or().gt(AppVersion::getBuildNumber, checkVersionRequest.getLocalBuildNumber());
wrapper.eq(AppVersion::getType, checkVersionRequest.getType());
wrapper.eq(AppVersion::getStatus, 1);
wrapper.orderByDesc(AppVersion::getVersionNumber, AppVersion::getBuildNumber);
wrapper.last("limit 1");
List<AppVersion> list = list(wrapper);
if (list == null || list.isEmpty()) {
return null;
}
return list.get(0);
}
}