package com.tievd.jyz.controller; import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.tievd.cube.commons.annotations.AutoLog; import com.tievd.cube.commons.annotations.DictApi; import com.tievd.cube.commons.base.CubeController; import com.tievd.cube.commons.base.Result; import com.tievd.cube.commons.mybatisplus.QueryGenerator; import com.tievd.jyz.entity.SysInfo; import com.tievd.jyz.service.ISysInfoService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; 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.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.Arrays; import java.util.HashMap; import java.util.Map; /** * SysInfo * * @author cube * @version V2.0.0 * @since 2023-02-27 */ @Slf4j @DictApi @RestController @RequestMapping("/jyz/sysInfo") public class SysInfoController extends CubeController { /** * 路径名 */ private static final String LOGO_PATH = "/sysLogo/"; //预改标记 private static final String prefix = "_pre"; private static final Map pathMap = new HashMap(){{ put(1, "logo"); put(2, "login"); put(3, "big_data"); }}; @Value("${cube.resources.logo-path:/usr/local/uploadFile}") private String uploadFilePath; @Autowired private ISysInfoService sysInfoService; /** * 分页列表查询 */ @GetMapping("/list") public Result queryPageList(SysInfo sysInfo, @RequestParam(defaultValue = "1") Integer pageNo, @RequestParam(defaultValue = "10") Integer pageSize, HttpServletRequest req) { QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(sysInfo, req.getParameterMap()); Page page = new Page<>(pageNo, pageSize); IPage pageList = sysInfoService.page(page, queryWrapper); return Result.ok(pageList); } /** * 添加 */ @AutoLog("SysInfo-添加") @PostMapping("/add") public Result add(@RequestBody SysInfo sysInfo) { sysInfoService.save(sysInfo); return Result.ok(); } private String saveLogo(String filePath, int type) { File file = new File(uploadFilePath + filePath); if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } String name = file.getName(); String suffixName = name.substring(name.lastIndexOf(".")); String logoName = pathMap.get(type) + suffixName; FileUtil.copy(file, FileUtil.file(uploadFilePath, LOGO_PATH, logoName), true); return LOGO_PATH + logoName; } /** * 编辑 */ @AutoLog("SysInfo-编辑") @PutMapping("/edit") public Result edit(@RequestBody SysInfo sysInfo) { String logoPath = sysInfo.getLogoPath(); String backgroundPath = sysInfo.getBackground(); if (StringUtils.isNotBlank(logoPath) && logoPath.contains(prefix)) { sysInfo.setLogoPath(saveLogo(logoPath, 1)); } if (StringUtils.isNotBlank(backgroundPath) && backgroundPath.contains(prefix)) { sysInfo.setBackground(saveLogo(backgroundPath, 2)); } if (StringUtils.isNotBlank(sysInfo.getBigDataPath()) && sysInfo.getBigDataPath().contains(prefix)) { sysInfo.setBigDataPath(saveLogo(sysInfo.getBigDataPath(), 3)); } sysInfoService.updateById(sysInfo); return Result.ok(); } /** * 通过id删除 */ @AutoLog("SysInfo-通过id删除") @DeleteMapping("/delete") public Result delete(@RequestParam String id) { sysInfoService.removeById(id); return Result.ok(); } /** * 批量删除 */ @AutoLog("SysInfo-批量删除") @DeleteMapping("/deleteBatch") public Result deleteBatch(@RequestParam String ids) { this.sysInfoService.removeByIds(Arrays.asList(ids.split(","))); return Result.ok(); } /** * 通过id查询 */ @GetMapping("/queryById") public Result queryById(@RequestParam String id) { SysInfo sysInfo = sysInfoService.getById(id); return Result.ok(sysInfo); } /** * 导出excel */ @RequestMapping("/exportXls") public void exportXls(HttpServletRequest request, HttpServletResponse response, SysInfo sysInfo) throws IOException { super.exportXls(request, response, sysInfo, "SysInfo"); } /** * 通过excel导入数据 */ @PostMapping("/importExcel") public Result importExcel(HttpServletRequest request) throws Exception { return super.importExcel(request, SysInfo.class); } @GetMapping("/localInfo") public Result getLocalInfo() { SysInfo info = service.getOne(new QueryWrapper<>(), false); return Result.ok(info); } @RequestMapping(value = "/uploadLogo", method = RequestMethod.POST) public Result importLogo(MultipartFile file, Integer type) throws IOException { String filename = file.getOriginalFilename(); if (StringUtils.isBlank(filename)) { return Result.error("上传失败,请选择文件"); } String suffixName = filename.substring(filename.lastIndexOf(".")); if (!".png".equals(suffixName) && !".jpg".equals(suffixName) && !".gif".equals(suffixName)) { return Result.error("文件格式错误,请选择PNG,JPG,GIF文件"); } if (file.isEmpty()) { return Result.error("上传失败,请选择文件"); } return Result.ok("上传成功", getLogoUrl(file, suffixName, type)); } private String getLogoUrl(MultipartFile file, String suffixName, int type) throws IOException { String logoName = StringUtils.EMPTY; logoName = pathMap.get(type) + prefix + suffixName; if (StringUtils.isBlank(logoName)) { return logoName; } InputStream inputStream; try { inputStream = file.getInputStream(); FileUtil.writeFromStream(inputStream, FileUtil.file(uploadFilePath, LOGO_PATH, logoName)); } catch (IOException e) { e.printStackTrace(); } return LOGO_PATH + logoName; } }