| | |
| | | |
| | | public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; |
| | | |
| | | private static String[] parsePatterns = { |
| | | private static final String[] PARSE_PATTERNS = { |
| | | "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", |
| | | "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", |
| | | "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; |
| | |
| | | return null; |
| | | } |
| | | try { |
| | | return parseDate(str.toString(), parsePatterns); |
| | | return parseDate(str.toString(), PARSE_PATTERNS); |
| | | } catch (ParseException e) { |
| | | return null; |
| | | } |
| | |
| | | /** |
| | | * 计算相差天数 |
| | | */ |
| | | public static int differentDaysByMillisecond(Date date1, Date date2) |
| | | { |
| | | public static int differentDaysByMillisecond(Date date1, Date date2) { |
| | | return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24))); |
| | | } |
| | | |
| | |
| | | @Configuration |
| | | public class CaptchaConfig { |
| | | |
| | | private final int width = 160; |
| | | private final int height = 60; |
| | | private final Color background = Color.PINK; |
| | | private final Font font = new Font("Arial", Font.BOLD, 48); |
| | | private static final int WIDTH = 160; |
| | | private static final int HEIGHT = 60; |
| | | private static final Color BACKGROUND = Color.PINK; |
| | | private static final Font FONT = new Font("Arial", Font.BOLD, 48); |
| | | |
| | | /** |
| | | * 圆圈干扰验证码 |
| | |
| | | @Lazy |
| | | @Bean |
| | | public CircleCaptcha circleCaptcha() { |
| | | CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(width, height); |
| | | captcha.setBackground(background); |
| | | captcha.setFont(font); |
| | | CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(WIDTH, HEIGHT); |
| | | captcha.setBackground(BACKGROUND); |
| | | captcha.setFont(FONT); |
| | | return captcha; |
| | | } |
| | | |
| | |
| | | @Lazy |
| | | @Bean |
| | | public LineCaptcha lineCaptcha() { |
| | | LineCaptcha captcha = CaptchaUtil.createLineCaptcha(width, height); |
| | | captcha.setBackground(background); |
| | | captcha.setFont(font); |
| | | LineCaptcha captcha = CaptchaUtil.createLineCaptcha(WIDTH, HEIGHT); |
| | | captcha.setBackground(BACKGROUND); |
| | | captcha.setFont(FONT); |
| | | return captcha; |
| | | } |
| | | |
| | |
| | | @Lazy |
| | | @Bean |
| | | public ShearCaptcha shearCaptcha() { |
| | | ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(width, height); |
| | | captcha.setBackground(background); |
| | | captcha.setFont(font); |
| | | ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(WIDTH, HEIGHT); |
| | | captcha.setBackground(BACKGROUND); |
| | | captcha.setFont(FONT); |
| | | return captcha; |
| | | } |
| | | |
| | |
| | | import com.ruoyi.generator.config.GenConfig; |
| | | import com.ruoyi.generator.domain.GenTable; |
| | | import com.ruoyi.generator.domain.GenTableColumn; |
| | | import lombok.AccessLevel; |
| | | import lombok.NoArgsConstructor; |
| | | import org.apache.commons.lang3.RegExUtils; |
| | | |
| | | import java.util.Arrays; |
| | |
| | | * |
| | | * @author ruoyi |
| | | */ |
| | | @NoArgsConstructor(access = AccessLevel.PRIVATE) |
| | | public class GenUtils { |
| | | |
| | | /** |
| | |
| | | package com.ruoyi.generator.util; |
| | | |
| | | import com.ruoyi.common.constant.Constants; |
| | | import lombok.AccessLevel; |
| | | import lombok.NoArgsConstructor; |
| | | import org.apache.velocity.app.Velocity; |
| | | |
| | | import java.util.Properties; |
| | |
| | | * |
| | | * @author ruoyi |
| | | */ |
| | | @NoArgsConstructor(access = AccessLevel.PRIVATE) |
| | | public class VelocityInitializer { |
| | | |
| | | /** |
| | |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.generator.domain.GenTable; |
| | | import com.ruoyi.generator.domain.GenTableColumn; |
| | | import lombok.AccessLevel; |
| | | import lombok.NoArgsConstructor; |
| | | import org.apache.velocity.VelocityContext; |
| | | |
| | | import java.util.*; |
| | |
| | | * |
| | | * @author ruoyi |
| | | */ |
| | | @NoArgsConstructor(access = AccessLevel.PRIVATE) |
| | | public class VelocityUtils { |
| | | |
| | | /** |
| | |
| | | */ |
| | | public interface IOssStrategy { |
| | | |
| | | /** |
| | | * 创建存储桶 |
| | | */ |
| | | void createBucket(); |
| | | |
| | | /** |
| | | * 获取服务商类型 |
| | | * @return |
| | | * @return 对象存储服务商枚举 |
| | | */ |
| | | OssEnumd getServiceType(); |
| | | |
| | |
| | | * |
| | | * @param data 文件字节数组 |
| | | * @param path 文件路径,包含文件名 |
| | | * @param contentType 文件类型 |
| | | * @return 返回http地址 |
| | | */ |
| | | UploadResult upload(byte[] data, String path, String contentType); |
| | |
| | | * |
| | | * @param data 文件字节数组 |
| | | * @param suffix 后缀 |
| | | * @param contentType 文件类型 |
| | | * @return 返回http地址 |
| | | */ |
| | | UploadResult uploadSuffix(byte[] data, String suffix, String contentType); |
| | |
| | | * |
| | | * @param inputStream 字节流 |
| | | * @param path 文件路径,包含文件名 |
| | | * @param contentType 文件类型 |
| | | * @return 返回http地址 |
| | | */ |
| | | UploadResult upload(InputStream inputStream, String path, String contentType); |
| | |
| | | * |
| | | * @param inputStream 字节流 |
| | | * @param suffix 后缀 |
| | | * @param contentType 文件类型 |
| | | * @return 返回http地址 |
| | | */ |
| | | UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType); |
| | |
| | | @Override |
| | | public abstract UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType); |
| | | |
| | | /** |
| | | * 获取域名访问链接 |
| | | * |
| | | * @return 域名访问链接 |
| | | */ |
| | | public abstract String getEndpointLink(); |
| | | } |