package com.ruoyi.web.controller.api; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.framework.config.ServerConfig; import com.ruoyi.system.dto.SysVersionUpdateAddRequest; import com.ruoyi.system.dto.SysVersionUpdateDeleteRequest; import com.ruoyi.system.dto.SysVersionUpdateDetailRequest; import com.ruoyi.system.dto.SysVersionUpdateEditRequest; import com.ruoyi.system.dto.SysVersionUpdatePageRequest; import com.ruoyi.system.service.ISysVersionUpdateService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; /** * 版本更新接口 * * @author ruoyi */ @RestController @RequestMapping("/system/version/update") public class SysVersionUpdateController extends BaseController { private static final long MAX_PACKAGE_SIZE = 200L * 1024 * 1024; private static final String[] ALLOWED_PACKAGE_EXTENSION = { "apk" }; @Autowired private ISysVersionUpdateService versionUpdateService; @Autowired private ServerConfig serverConfig; /** * 分页查询版本更新列表 */ @Log(title = "版本更新", businessType = BusinessType.SELECT) @PreAuthorize("@ss.hasPermi('visitor:version:view')") @PostMapping("/page") public AjaxResult page(@RequestBody(required = false) SysVersionUpdatePageRequest request) { return success(versionUpdateService.pageList(request)); } /** * 查看版本更新详情 */ @Log(title = "版本更新", businessType = BusinessType.SELECT) @PreAuthorize("@ss.hasPermi('visitor:version:view')") @PostMapping("/detail") public AjaxResult detail(@RequestBody SysVersionUpdateDetailRequest request) { return success(versionUpdateService.detail(request)); } /** * 新增版本更新 */ @Log(title = "版本更新", businessType = BusinessType.INSERT) @PreAuthorize("@ss.hasPermi('visitor:version:add')") @PostMapping("/add") public AjaxResult add(@RequestBody SysVersionUpdateAddRequest request) { return toAjax(versionUpdateService.add(request, getUsername())); } /** * 编辑版本更新 */ @Log(title = "版本更新", businessType = BusinessType.UPDATE) @PreAuthorize("@ss.hasPermi('visitor:version:edit')") @PostMapping("/edit") public AjaxResult edit(@RequestBody SysVersionUpdateEditRequest request) { return toAjax(versionUpdateService.edit(request, getUsername())); } @Log(title = "版本更新", businessType = BusinessType.INSERT) @PreAuthorize("@ss.hasAnyPermi('visitor:version:add,visitor:version:edit')") @PostMapping("/upload") public AjaxResult upload(MultipartFile file) { if (file == null || file.isEmpty()) { return error("请上传安装包"); } if (file.getSize() >= MAX_PACKAGE_SIZE) { return error("安装包大小必须小于200M"); } try { String fileName = FileUploadUtils.upload(RuoYiConfig.getUploadPath(), file, ALLOWED_PACKAGE_EXTENSION, MAX_PACKAGE_SIZE); AjaxResult ajax = success(); ajax.put("url", serverConfig.getUrl() + fileName); ajax.put("fileName", fileName); ajax.put("newFileName", FileUtils.getName(fileName)); ajax.put("originalFilename", file.getOriginalFilename()); return ajax; } catch (Exception e) { return error(e.getMessage()); } } /** * 删除版本更新 */ @Log(title = "版本更新", businessType = BusinessType.DELETE) @PreAuthorize("@ss.hasPermi('visitor:version:remove')") @PostMapping("/delete") public AjaxResult delete(@RequestBody SysVersionUpdateDeleteRequest request) { return toAjax(versionUpdateService.delete(request)); } }