| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- package cn.com.goldenwater.dcproj.controller.system;
- import cn.com.goldenwater.core.web.BaseController;
- import cn.com.goldenwater.core.web.BaseResponse;
- import cn.com.goldenwater.dcproj.model.Version;
- import cn.com.goldenwater.dcproj.service.GwComFileService;
- import cn.com.goldenwater.dcproj.service.VersionService;
- import cn.com.goldenwater.id.util.UuidUtil;
- import cn.com.goldenwater.util.common.FileUtils;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import io.swagger.annotations.ApiParam;
- import org.apache.commons.lang3.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.web.bind.annotation.*;
- import org.springframework.web.multipart.MultipartFile;
- import javax.servlet.http.HttpServletResponse;
- import java.io.*;
- import java.util.Calendar;
- import java.util.Date;
- /**
- * @author zhaohg
- * @date 2018-11-9
- */
- @Api(value = "获取版本号信息", tags = "04获取版本号信息")
- @RestController
- @RequestMapping("/version")
- public class VersionController extends BaseController {
- private Logger logger = LoggerFactory.getLogger(getClass());
- @Autowired
- private VersionService versionService;
- @Value("${web.apk-path}")
- public String apkPath;
- @Autowired
- private GwComFileService gwComFileService;
- @ApiOperation(value = "添加文件", notes = "参数字段说明:{\n\r" +
- " \"file\":\"上传文件\",\n\r" +
- " \"versions\":\"版本号\",\n\r" +
- " \"updateContent\":\"更新内容\",\n\r" +
- " \"appName\":\"APP名称\",\n\r" +
- " \"forceUpdate\":\"是否强制更新\",\n\r" +
- " };\n\r" +
- "返回结构说明:{\n\r" +
- " \"success\":\"是否成功(true为成功,false为失败)\",\n\r" +
- " \"code\":\"错误代码\",\n\r" +
- " \"message\":\"描述信息\",\n\r" +
- " \"throwable\":\"异常信息\",\n\r" +
- " \"data(数据信息)\":{\n\r" +
- " {\n\r" +
- " \"id \":\"主键id\",\n\r" +
- " }\n\r" +
- " }")
- @RequestMapping(value = "/insert", method = RequestMethod.POST)
- public BaseResponse<String> insert(@RequestParam("file") MultipartFile file, String versions,
- String updateContent, String appName, Integer forceUpdate) {
- String uuid = UuidUtil.uuid(); // 生成uuid
- Version version = new Version();
- version.setId(uuid);
- version.setAppName(appName);
- version.setVersion(versions);
- version.setUpdateContent(updateContent);
- version.setForceUpdate(forceUpdate);
- version.setPubDate(new Date());
- version.setFileSize(file.getSize());
- String originalFilename = file.getOriginalFilename();
- version.setFileName(originalFilename);
- String ext = originalFilename.substring(1 + originalFilename.lastIndexOf("."));
- //按时间日期存文件
- Calendar dat = Calendar.getInstance();
- String filePath = apkPath + dat.get(Calendar.YEAR) + File.separator + (dat.get(Calendar.MONTH) + 1) + File.separator + dat.get(Calendar.DAY_OF_MONTH) + File.separator + uuid + "." + ext;
- version.setStorePath(filePath);
- //写入文件
- filePath = apkPath + dat.get(Calendar.YEAR) + File.separator + (dat.get(Calendar.MONTH) + 1) + File.separator + dat.get(Calendar.DAY_OF_MONTH);
- boolean success = gwComFileService.writeFile(uuid, ext, file, filePath);
- if (success) {
- int ret = versionService.insert(version);
- } else {
- return buildFailResponse(1001, "文件上传失败");
- }
- return buildSuccessResponse(uuid);
- }
- @ApiOperation(value = "获取最新版本号信息", notes = "参数字段说明:{\n\r" +
- " (无)\",\n\r" +
- " };\n\r" +
- "返回结构说明:{\n\r" +
- " \"success\":\"是否成功(true为成功,false为失败)\",\n\r" +
- " \"code\":\"错误代码\",\n\r" +
- " \"message\":\"描述信息\",\n\r" +
- " \"throwable\":\"异常信息\",\n\r" +
- " \"data(数据信息)\":\n\r" +
- " {\n\r" +
- " \"id \":\"主键\",\n\r" +
- " \"version \":\"版本号\",\n\r" +
- " \"updateContent \":\"更新内容\",\n\r" +
- " \"storePath \":\"下载地址\",\n\r" +
- " \"appName \":\"APP名称\",\n\r" +
- " \"fileName \":\"文件名称\",\n\r" +
- " \"forceUpdate \":\"是否强制更新\",\n\r" +
- " \"pubDate \":\"发布时间\",\n\r" +
- " }")
- @RequestMapping(value = "/getLastest", method = {RequestMethod.POST})
- public BaseResponse<Version> getLastest(@ApiParam(name = "version", value = "当前版本号", required = false) @RequestParam(required = false) String version) {
- Version v = versionService.getLatestVersion();
- String v1 = v.getVersion();
- int num1 = 0;
- if (!StringUtils.isBlank(v1)) {
- num1 = Integer.parseInt(v1);
- }
- int num2 = 0;
- if (StringUtils.isBlank(version)) {
- v.setForceUpdate(1);
- } else {
- num2 = Integer.parseInt(version);
- }
- if (num1 - num2 > 1) {
- v.setForceUpdate(1);
- }
- if (v.getUpdateContent() != null) {
- String content = v.getUpdateContent().replaceAll("\\\\n", "\n");
- v.setUpdateContent(content);
- }
- return buildSuccessResponse(v);
- }
- @ApiOperation(value = "下载文件", notes = "参数字段说明:{\n\r" +
- " \"id\":\"版本id\",\n\r" +
- " };\n\r" +
- "返回结构说明:{\n\r" +
- " \"success\":\"是否成功(true为成功,false为失败)\",\n\r" +
- " \"code\":\"错误代码\",\n\r" +
- " \"message\":\"描述信息\",\n\r" +
- " \"throwable\":\"异常信息\",\n\r" +
- " \"data(数据信息)\":{\n\r" +
- " {\n\r" +
- " \"file \":\"文件\",\n\r" +
- " }\n\r" +
- " }")
- @RequestMapping(value = "/download", method = RequestMethod.GET)
- public void download(HttpServletResponse response) {
- Version version = versionService.getLatestVersion();
- if (version != null) {
- //获取文件路径
- String filePath = version.getStorePath();
- File file = new File(filePath);
- //判断文件是否存在
- if (FileUtils.exist(filePath)) {
- String fileName = org.apache.commons.lang3.StringUtils.defaultString(version.getFileName(), "文件");
- try {
- response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
- response.setHeader("Content-Length", "" + version.getFileSize());
- //response.setHeader("Content-Type","application/vnd.android.package-archive");
- InputStream inputStream = new FileInputStream(file);
- if (inputStream != null) {
- OutputStream os = response.getOutputStream();
- try {
- int len = 0;
- byte[] buffer = new byte[4096];
- while ((len = inputStream.read(buffer, 0, buffer.length)) != -1) {
- os.write(buffer, 0, len);
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- inputStream.close();
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
|