目录
1、业务场景
(1)、需求分析
1)、总计七个接口,主要为查询和新增;
2)、查询分为对系统基本信息的查询和对系统版本信息的查询;
3)、新增为新增系统版本信息;
4)、每个接口的具体需求我会注释在参考代码和数据库设计里,代码思路也会提到;
5)、一张主表(system_manage_info),两张子表(app_update_manage + system_update_log);
2、开发环境和工具
因为该业务功能是已有项目下的拓展,所以环境依赖较多,我将重点阐述代码逻辑,开发环境和工具只会简单带过;
(1)、IDE:IntelliJ IDEA 2022.1;
(2)、数据库:Navicat 16;
(3)、测试:Postman;
(4)、JDK:jdk-11.0.15;
(5)、Spring Boot Version:2.2.5.RELEASE;
(6)、modelVersion:4.0.0;
(7)、pomVersion:0.0.1-SNAPSHOT;
(8)、数据库表设计:
主表:system_manage_info
子表1:app_update_manage
子表2:system_update_log
3、代码思路
4、参考代码
controller
//controller所在的包目录
package xxx.system.controller;
//注入所需的实体类和其他东西,我使用idea时一般可以手动快捷添加甚至自动添加
import xxx.entity.model.AppUpdateManage;
import xxx.entity.model.SystemManageInfo;
import xxx.entity.model.SystemUpdateLog;
import xxx.util.CommonResponse;
import xxx.system.controller.vo.AppVersionVo;
import xxx.system.controller.vo.HistoryVersionVo;
import xxx.system.controller.vo.SystemInfoSelectVo;
import xxx.system.service.IVersionManageService;
import com.baomidou.mybatisplus.plugins.Page;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Optional;
/**
* @author Mike-GY
*/
// 告知Spring这是一个控制器
@RestController
// 告知Spring,下面的这个函数或者类是用来映射到哪个URL地址
@RequestMapping("/system/VersionManage")
public class VersionManageController {
// 注入service服务接口
private final IVersionManageService iVersionManageService;
public VersionManageController(IVersionManageService iVersionManageService) {
this.iVersionManageService = iVersionManageService;
}
/**
* 查询系统信息
*
* @param systemInfoSelectVo 系统基本信息对象
* @return res 查询结果
* @author Mike-GY
* @since 2022/8/10
*/
@PostMapping(value = "/querySystemInfo")
public CommonResponse querySystemInfo(@RequestBody SystemInfoSelectVo systemInfoSelectVo) {
CommonResponse res = CommonResponse.getInstance();
Integer systemSelectCode = systemInfoSelectVo.getSystemSelectCode();
Integer systemId = systemInfoSelectVo.getSystemId();
String systemName = systemInfoSelectVo.getSystemName();
Integer systemType = systemInfoSelectVo.getSystemType();
Integer current = systemInfoSelectVo.getCurrent();
Integer size = systemInfoSelectVo.getSize();
// 如果前端未传值给current和size,则将括号内的指定值赋给current和size
int c = Optional.ofNullable(current).orElse(1);
int s = Optional.ofNullable(size).orElse(5);
// 分页操作
Page<SystemManageInfo> page;
page = new Page<>(c, s);
List<SystemManageInfo> systemInfo = iVersionManageService.querySystemInfo(systemSelectCode, systemId, systemName, systemType, page);
res.setTotalRowNumber(page.getTotal());
res.setResultData(systemInfo);
return res;
}
/**
* 新增app系统版本
*
* @param newAppVersionVo 新app系统版本对象
* @return res 新增成功或失败提示
* @author Mike-GY
* @since 2022/8/11
*/
@PostMapping(value = "/addAppVersionInfo")
public CommonResponse addAppVersionInfo(@RequestBody @Validated AppVersionVo newAppVersionVo) {
CommonResponse res = CommonResponse.getInstance();
Integer result = iVersionManageService.addAppVersionInfo(newAppVersionVo);
res.setResultData(result > 0);
return res;
}
/**
* 获取app系统对应最新版本信息
*
* @param historyVersionVo 历史版本信息对象
* @return res 查询结果
* @author Mike-GY
* @since 2022/8/17
*/
@PostMapping(value = "/getAppVersionInfo")
public CommonResponse getAppVersionInfo(@RequestBody HistoryVersionVo historyVersionVo) {
CommonResponse res = CommonResponse.getInstance();
Integer systemId = historyVersionVo.getSystemId();
List<AppUpdateManage> appVersionInfo = iVersionManageService.getAppVersionInfo(systemId);
res.setResultData(appVersionInfo);
return res;
}
/**
* 查询app系统历史版本
*
* @param historyVersionVo 历史版本信息对象
* @return res 查询结果
* @author Mike-GY
* @since 2022/8/11
*/
@PostMapping(value = "/queryAppHistoryVersion")
public CommonResponse queryAppHistoryVersion(@RequestBody HistoryVersionVo historyVersionVo) {
CommonResponse res = CommonResponse.getInstance();
Integer systemId = historyVersionVo.getSystemId();
Integer current = historyVersionVo.getCurrent();
Integer size = historyVersionVo.getSize();
int c = Optional.ofNullable(current).orElse(1);
int s = Optional.ofNullable(size).orElse(5);
Page<SystemUpdateLog> page = new Page<>(c, s);
List<SystemUpdateLog> appHistoryVersion = iVersionManageService.queryAppHistoryVersion(systemId, page);
res.setResultData(appHistoryVersion);
res.setTotalRowNumber(page.getTotal());
return res;
}
/**
* 新增web系统版本
*
* @param newSystemUpdateLog 新web系统版本对象
* @return res 新增成功或失败提示
* @author Mike-GY
* @since 2022/8/11
*/
@PostMapping(value = "/addWebVersionInfo")
public CommonResponse addWebVersionInfo(@RequestBody @Validated SystemUpdateLog newSystemUpdateLog) {
CommonResponse res = CommonResponse.getInstance();
Integer result = iVersionManageService.addWebVersionInfo(newSystemUpdateLog);
res.setResultData(result > 0);
return res;
}
/**
* 获取web系统对应最新版本信息
*
* @param historyVersionVo 历史版本信息对象
* @return res 查询结果
* @author Mike-GY
* @since 2022/8/17
*/
@PostMapping("/getWebVersionInfo")
public CommonResponse getWebVersionInfo(@RequestBody HistoryVersionVo historyVersionVo) {
CommonResponse res = CommonResponse.getInstance();
Integer systemId = historyVersionVo.getSystemId();
List<SystemUpdateLog> webVersionInfo = iVersionManageService.getWebVersionInfo(systemId);
res.setResultData(webVersionInfo.get(0));
return res;
}
/**
* 查询web系统历史版本
*
* @param historyVersionVo 历史版本信息对象
* @return res
* @author Mike-GY
* @since 2022/8/11
*/
@PostMapping(value = "/queryWebHistoryVersion")
public CommonResponse queryWebHistoryVersion(@RequestBody HistoryVersionVo historyVersionVo) {
CommonResponse res = CommonResponse.getInstance();
Integer systemId = historyVersionVo.getSystemId();
Integer current = historyVersionVo.getCurrent();
Integer size = historyVersionVo.getSize();
int c = Optional.ofNullable(current).orElse(1);
int s = Optional.ofNullable(size).orElse(5);
Page<SystemUpdateLog> page = new Page<>(c, s);
List<SystemUpdateLog> webHistoryVersion = iVersionManageService.queryWebHistoryVersion(systemId, page);
res.setResultData(webHistoryVersion);
res.setTotalRowNumber(page.getTo