diff --git a/src/main/java/com/corewing/app/dto/biz/appVersion/CheckVersionRequest.java b/src/main/java/com/corewing/app/dto/biz/appVersion/CheckVersionRequest.java new file mode 100644 index 0000000..b01901c --- /dev/null +++ b/src/main/java/com/corewing/app/dto/biz/appVersion/CheckVersionRequest.java @@ -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; + +} diff --git a/src/main/java/com/corewing/app/entity/AppVersion.java b/src/main/java/com/corewing/app/entity/AppVersion.java new file mode 100644 index 0000000..2f11906 --- /dev/null +++ b/src/main/java/com/corewing/app/entity/AppVersion.java @@ -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; + +} diff --git a/src/main/java/com/corewing/app/mapper/AppVersionMapper.java b/src/main/java/com/corewing/app/mapper/AppVersionMapper.java new file mode 100644 index 0000000..f75417d --- /dev/null +++ b/src/main/java/com/corewing/app/mapper/AppVersionMapper.java @@ -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 { +} diff --git a/src/main/java/com/corewing/app/modules/app/AppVersionController.java b/src/main/java/com/corewing/app/modules/app/AppVersionController.java new file mode 100644 index 0000000..dad45cf --- /dev/null +++ b/src/main/java/com/corewing/app/modules/app/AppVersionController.java @@ -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 checkUpdate(CheckVersionRequest checkVersionRequest) { + AppVersion version = appVersionService.getNewAppVersion(checkVersionRequest); + if(version == null) { + return Result.error("暂无新版本"); + } + return Result.success(version); + + } + +} diff --git a/src/main/java/com/corewing/app/service/AppVersionService.java b/src/main/java/com/corewing/app/service/AppVersionService.java new file mode 100644 index 0000000..35297cc --- /dev/null +++ b/src/main/java/com/corewing/app/service/AppVersionService.java @@ -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 getNewAppVersion(@Valid CheckVersionRequest checkVersionRequest); +} diff --git a/src/main/java/com/corewing/app/service/impl/AppVersionServiceImpl.java b/src/main/java/com/corewing/app/service/impl/AppVersionServiceImpl.java new file mode 100644 index 0000000..30787fc --- /dev/null +++ b/src/main/java/com/corewing/app/service/impl/AppVersionServiceImpl.java @@ -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 implements AppVersionService { + + @Override + public AppVersion getNewAppVersion(CheckVersionRequest checkVersionRequest) { + int checkVersionNumber = Integer.parseInt(checkVersionRequest.getLocalVersion().replace(".", "")); + LambdaQueryWrapper 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 list = list(wrapper); + if (list == null || list.isEmpty()) { + return null; + } + return list.get(0); + } +}