diff --git a/server/src/main/java/cn/keking/service/FileHandlerService.java b/server/src/main/java/cn/keking/service/FileHandlerService.java index 28f495a9..0aae8722 100644 --- a/server/src/main/java/cn/keking/service/FileHandlerService.java +++ b/server/src/main/java/cn/keking/service/FileHandlerService.java @@ -175,8 +175,8 @@ public class FileHandlerService implements InitializingBean { } // 添加sheet控制头 sb.append(""); - sb.append(""); - sb.append(""); + sb.append(""); + sb.append(""); } catch (IOException e) { e.printStackTrace(); } diff --git a/server/src/main/java/cn/keking/utils/CaptchaUtil.java b/server/src/main/java/cn/keking/utils/CaptchaUtil.java index 0fe25262..db9dbdff 100644 --- a/server/src/main/java/cn/keking/utils/CaptchaUtil.java +++ b/server/src/main/java/cn/keking/utils/CaptchaUtil.java @@ -8,16 +8,14 @@ import java.util.Random; public class CaptchaUtil { - public static final String captcha_code = "captchaCode"; - public static final String captcha_generate_time = "captchaTime"; + public static final String CAPTCHA_CODE = "captchaCode"; + public static final String CAPTCHA_GENERATE_TIME = "captchaTime"; - private static final int width = 100;// 定义图片的width - private static final int height = 30;// 定义图片的height - private static final int codeLength = 4;// 定义图片上显示验证码的个数 - private static final int xx = 18; - private static final int fontHeight = 28; - private static final int codeY = 27; - private static final char[] codeSequence = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'M', 'N', 'P', 'Q', 'R', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + private static final int WIDTH = 100;// 定义图片的width + private static final int HEIGHT = 30;// 定义图片的height + private static final int CODE_LENGTH = 4;// 定义图片上显示验证码的个数 + private static final int FONT_HEIGHT = 28; + private static final char[] CODE_SEQUENCE = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'M', 'N', 'P', 'Q', 'R', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', '2', '3', '4', '5', '6', '7', '8', '9'}; /** @@ -28,23 +26,23 @@ public class CaptchaUtil { public static BufferedImage generateCaptchaPic(final String captchaCode) { Assert.notNull(captchaCode, "captchaCode must not be null"); // 定义图像buffer - BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + BufferedImage buffImg = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics gd = buffImg.getGraphics(); Random random = new Random(); // 将图像填充为白色 gd.setColor(Color.WHITE); - gd.fillRect(0, 0, width, height); - Font font = new Font("Times New Roman", Font.BOLD, fontHeight); + gd.fillRect(0, 0, WIDTH, HEIGHT); + Font font = new Font("Times New Roman", Font.BOLD, FONT_HEIGHT); gd.setFont(font); // 画边框。 gd.setColor(Color.BLACK); - gd.drawRect(0, 0, width - 1, height - 1); + gd.drawRect(0, 0, WIDTH - 1, HEIGHT - 1); // 随机产生40条干扰线,使图象中的认证码不易被其它程序探测到。 gd.setColor(Color.BLACK); for (int i = 0; i < 30; i++) { - int x = random.nextInt(width); - int y = random.nextInt(height); + int x = random.nextInt(WIDTH); + int y = random.nextInt(HEIGHT); int xl = random.nextInt(12); int yl = random.nextInt(12); gd.drawLine(x, y, x + xl, y + yl); @@ -57,7 +55,7 @@ public class CaptchaUtil { blue = random.nextInt(255); // 用随机产生的颜色将验证码绘制到图像中。 gd.setColor(new Color(red, green, blue)); - gd.drawString(captchaCode, 18, codeY); + gd.drawString(captchaCode, 18, 27); return buffImg; } @@ -68,8 +66,8 @@ public class CaptchaUtil { public static String generateCaptchaCode() { Random random = new Random(); StringBuilder randomCode = new StringBuilder(); - for (int i = 0; i < codeLength; i++) { - randomCode.append(codeSequence[random.nextInt(52)]); + for (int i = 0; i < CODE_LENGTH; i++) { + randomCode.append(CODE_SEQUENCE[random.nextInt(52)]); } return randomCode.toString(); } diff --git a/server/src/main/java/cn/keking/web/controller/FileController.java b/server/src/main/java/cn/keking/web/controller/FileController.java index 41330e7c..9a145d32 100644 --- a/server/src/main/java/cn/keking/web/controller/FileController.java +++ b/server/src/main/java/cn/keking/web/controller/FileController.java @@ -35,8 +35,8 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import static cn.keking.utils.CaptchaUtil.captcha_code; -import static cn.keking.utils.CaptchaUtil.captcha_generate_time; +import static cn.keking.utils.CaptchaUtil.CAPTCHA_CODE; +import static cn.keking.utils.CaptchaUtil.CAPTCHA_GENERATE_TIME; /** * @author yudian-it @@ -88,7 +88,7 @@ public class FileController { logger.error(msg); return ReturnResponse.failure(msg); } - WebUtils.removeSessionAttr(request, captcha_code); //删除缓存验证码 + WebUtils.removeSessionAttr(request, CAPTCHA_CODE); //删除缓存验证码 return ReturnResponse.success(); } @@ -105,16 +105,16 @@ public class FileController { response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", -1); - String captchaCode = WebUtils.getSessionAttr(request, captcha_code); - long captchaGenerateTime = WebUtils.getLongSessionAttr(request, captcha_generate_time); + String captchaCode = WebUtils.getSessionAttr(request, CAPTCHA_CODE); + long captchaGenerateTime = WebUtils.getLongSessionAttr(request, CAPTCHA_GENERATE_TIME); long timeDifference = DateUtils.calculateCurrentTimeDifference(captchaGenerateTime); // 验证码为空,且生成验证码超过50秒,重新生成验证码 if (timeDifference > 50 && ObjectUtils.isEmpty(captchaCode)) { captchaCode = CaptchaUtil.generateCaptchaCode(); // 更新验证码 - WebUtils.setSessionAttr(request, captcha_code, captchaCode); - WebUtils.setSessionAttr(request, captcha_generate_time, DateUtils.getCurrentSecond()); + WebUtils.setSessionAttr(request, CAPTCHA_CODE, captchaCode); + WebUtils.setSessionAttr(request, CAPTCHA_GENERATE_TIME, DateUtils.getCurrentSecond()); } else { captchaCode = ObjectUtils.isEmpty(captchaCode) ? "wait" : captchaCode; } @@ -195,7 +195,7 @@ public class FileController { return ReturnResponse.failure("密码 or 验证码为空,删除失败!"); } - String expectedPassword = ConfigConstants.getDeleteCaptcha() ? WebUtils.getSessionAttr(request, captcha_code) : ConfigConstants.getPassword(); + String expectedPassword = ConfigConstants.getDeleteCaptcha() ? WebUtils.getSessionAttr(request, CAPTCHA_CODE) : ConfigConstants.getPassword(); if (!password.equalsIgnoreCase(expectedPassword)) { logger.error("删除文件【{}】失败,密码错误!", fileName); diff --git a/server/src/main/resources/static/bootstrap/css/xlsx.css b/server/src/main/resources/static/excel/excel.css similarity index 100% rename from server/src/main/resources/static/bootstrap/css/xlsx.css rename to server/src/main/resources/static/excel/excel.css diff --git a/server/src/main/resources/static/excel/excel.header.js b/server/src/main/resources/static/excel/excel.header.js new file mode 100644 index 00000000..eaa72bae --- /dev/null +++ b/server/src/main/resources/static/excel/excel.header.js @@ -0,0 +1,56 @@ +/**创建一个div并固定在底部,将center中的所有a标签放在改div中**/ +$("body").append($("