收银后台上传!
This commit is contained in:
57
oss-service/pom.xml
Normal file
57
oss-service/pom.xml
Normal file
@@ -0,0 +1,57 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>eladmin</artifactId>
|
||||
<groupId>me.zhengjie</groupId>
|
||||
<version>2.6</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>oss-service</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<properties>
|
||||
<qiniu.version>7.2.27</qiniu.version>
|
||||
<aliyun.oss.version>2.8.3</aliyun.oss.version>
|
||||
<aliyun.core.version>3.2.2</aliyun.core.version>
|
||||
<qcloud.cos.version>5.4.4</qcloud.cos.version>
|
||||
</properties>
|
||||
|
||||
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.aliyun.oss</groupId>
|
||||
<artifactId>aliyun-sdk-oss</artifactId>
|
||||
<version>${aliyun.oss.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.qiniu</groupId>
|
||||
<artifactId>qiniu-java-sdk</artifactId>
|
||||
<version>${qiniu.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.qcloud</groupId>
|
||||
<artifactId>cos_api</artifactId>
|
||||
<version>${qcloud.cos.version}</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-log4j12</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.huaweicloud</groupId>
|
||||
<artifactId>esdk-obs-java-bundle</artifactId>
|
||||
<version>3.22.3</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.dianguang.cloud.ossservice;
|
||||
|
||||
|
||||
import org.springframework.boot.autoconfigure.domain.EntityScan;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
@EntityScan(basePackageClasses = OssServiceConfig.class)
|
||||
@ComponentScan(basePackageClasses = OssServiceConfig.class)
|
||||
public class OssServiceConfig {
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.dianguang.cloud.ossservice.config;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
public class CloudStorageConfig implements Serializable {
|
||||
|
||||
/**
|
||||
* 类型 1:七牛 2:阿里 3 :腾讯云 4: fastDfs 5:本地上传 6:minio
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 域名
|
||||
*/
|
||||
private String url;
|
||||
|
||||
/**
|
||||
* 路径前缀
|
||||
*/
|
||||
private String prefix;
|
||||
|
||||
/**
|
||||
* access_key
|
||||
*/
|
||||
private String accessKey;
|
||||
|
||||
/**
|
||||
* secret_key
|
||||
*/
|
||||
private String secretKey;
|
||||
|
||||
/**
|
||||
* 存储空间命
|
||||
*/
|
||||
private String bucketName;
|
||||
|
||||
/**
|
||||
* 阿里
|
||||
*/
|
||||
private String endPoint;
|
||||
|
||||
|
||||
/**
|
||||
* qc
|
||||
*/
|
||||
private String qcloudRegion;
|
||||
|
||||
/**
|
||||
* qc
|
||||
*/
|
||||
private String qcloudAppId;
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Copyright (c) 2018 人人开源 All rights reserved.
|
||||
*
|
||||
* https://www.renren.io
|
||||
*
|
||||
* 版权所有,侵权必究!
|
||||
*/
|
||||
|
||||
package com.dianguang.cloud.ossservice.model;
|
||||
|
||||
/**
|
||||
* 常量
|
||||
*
|
||||
* @author Mark sunlightcs@gmail.com
|
||||
*/
|
||||
public interface Constant {
|
||||
/**
|
||||
* 云服务商
|
||||
*/
|
||||
enum CloudService {
|
||||
/**
|
||||
* 七牛云
|
||||
*/
|
||||
QINIU(1),
|
||||
/**
|
||||
* 阿里云
|
||||
*/
|
||||
ALIYUN(2),
|
||||
/**
|
||||
* 腾讯云
|
||||
*/
|
||||
QCLOUD(3),
|
||||
/**
|
||||
* 华为云
|
||||
*/
|
||||
HUAWEI(4);
|
||||
|
||||
private int value;
|
||||
|
||||
CloudService(int value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,471 @@
|
||||
package com.dianguang.cloud.ossservice.model;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* Created by SEELE on 2018/4/19.
|
||||
*/
|
||||
public class DateUtils {
|
||||
|
||||
private final static SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");
|
||||
private final static SimpleDateFormat sdfDay = new SimpleDateFormat("yyyy-MM-dd");
|
||||
private final static SimpleDateFormat sdfDays = new SimpleDateFormat("yyyyMMdd");
|
||||
private final static SimpleDateFormat sdfTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
private final static SimpleDateFormat sdfTimeSS = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
|
||||
private final static SimpleDateFormat sdfTimes = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||
private final static SimpleDateFormat times=new SimpleDateFormat("HH:mm:ss");
|
||||
|
||||
private final static SimpleDateFormat sdfTimesSS = new SimpleDateFormat("yyyyMMddHHmmssSSS");
|
||||
|
||||
public static int daysOfTwoDate(String startTime, String endTime) {
|
||||
SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd");
|
||||
Date date1=null;
|
||||
Date date = null;
|
||||
Long l = 0L;
|
||||
try {
|
||||
date = formatter.parse(startTime);
|
||||
long startLongTime = date.getTime();
|
||||
date1 = formatter.parse(endTime);
|
||||
long endLongTime = date1.getTime();
|
||||
|
||||
l = (endLongTime - startLongTime) / (1000 * 60 * 60 * 24);
|
||||
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return l.intValue();
|
||||
}
|
||||
|
||||
public static Date getNewDate(Date date, Integer type, Integer interval) throws ParseException {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTime(date);
|
||||
switch (type) {
|
||||
case 1:
|
||||
c.set(Calendar.YEAR, (c.get(Calendar.YEAR) + interval));
|
||||
break;
|
||||
case 2:
|
||||
c.set(Calendar.MONTH, (c.get(Calendar.MONTH) + interval));
|
||||
break;
|
||||
case 3:
|
||||
c.set(Calendar.DATE, (c.get(Calendar.DATE) + interval));
|
||||
break;
|
||||
case 4:
|
||||
c.set(Calendar.HOUR, (c.get(Calendar.HOUR) + interval));
|
||||
break;
|
||||
case 5:
|
||||
c.set(Calendar.MINUTE, (c.get(Calendar.MINUTE) + interval));
|
||||
break;
|
||||
default:
|
||||
c.set(Calendar.SECOND, (c.get(Calendar.SECOND) + interval));
|
||||
break;
|
||||
}
|
||||
Date newDate = c.getTime();
|
||||
return sdfTime.parse(sdfTime.format(newDate));
|
||||
}
|
||||
|
||||
public static Date getEndDate(Date date) throws ParseException {
|
||||
return sdfTime.parse(sdfDay.format(date).concat(" 23:59:59"));
|
||||
}
|
||||
|
||||
public static Date getNewDateH(Date date, Integer type, Integer interval) throws ParseException {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTime(date);
|
||||
switch (type) {
|
||||
case 1:
|
||||
c.set(Calendar.YEAR, (c.get(Calendar.YEAR) + interval));
|
||||
break;
|
||||
case 2:
|
||||
c.set(Calendar.MONTH, (c.get(Calendar.MONTH) + interval));
|
||||
break;
|
||||
case 3:
|
||||
c.set(Calendar.DATE, (c.get(Calendar.DATE) + interval));
|
||||
break;
|
||||
case 4:
|
||||
c.set(Calendar.HOUR, (c.get(Calendar.HOUR) + interval));
|
||||
break;
|
||||
case 5:
|
||||
c.set(Calendar.MINUTE, (c.get(Calendar.MINUTE) + interval));
|
||||
break;
|
||||
default:
|
||||
c.set(Calendar.SECOND, (c.get(Calendar.SECOND) + interval));
|
||||
break;
|
||||
}
|
||||
Date newDate = c.getTime();
|
||||
return sdfDay.parse(sdfDay.format(newDate));
|
||||
}
|
||||
|
||||
public static String getNewDate2(Date date, Integer type, Integer interval) throws ParseException {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTime(date);
|
||||
switch (type) {
|
||||
case 1:
|
||||
c.set(Calendar.YEAR, (c.get(Calendar.YEAR) + interval));
|
||||
break;
|
||||
case 2:
|
||||
c.set(Calendar.MONTH, (c.get(Calendar.MONTH) + interval));
|
||||
break;
|
||||
case 3:
|
||||
c.set(Calendar.DATE, (c.get(Calendar.DATE) + interval));
|
||||
break;
|
||||
case 4:
|
||||
c.set(Calendar.HOUR, (c.get(Calendar.HOUR) + interval));
|
||||
break;
|
||||
case 5:
|
||||
c.set(Calendar.MINUTE, (c.get(Calendar.MINUTE) + interval));
|
||||
break;
|
||||
default:
|
||||
c.set(Calendar.SECOND, (c.get(Calendar.SECOND) + interval));
|
||||
break;
|
||||
}
|
||||
Date newDate = c.getTime();
|
||||
return sdfDay.format(newDate);
|
||||
}
|
||||
|
||||
public static Date getNewDate3(Date date, Integer type, Integer interval) throws ParseException {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTime(date);
|
||||
switch (type) {
|
||||
case 1:
|
||||
c.set(Calendar.YEAR, (c.get(Calendar.YEAR) + interval));
|
||||
break;
|
||||
case 2:
|
||||
c.set(Calendar.MONTH, (c.get(Calendar.MONTH) + interval));
|
||||
break;
|
||||
case 3:
|
||||
c.set(Calendar.DATE, (c.get(Calendar.DATE) + interval));
|
||||
break;
|
||||
case 4:
|
||||
c.set(Calendar.HOUR, (c.get(Calendar.HOUR) + interval));
|
||||
break;
|
||||
case 5:
|
||||
c.set(Calendar.MINUTE, (c.get(Calendar.MINUTE) + interval));
|
||||
break;
|
||||
default:
|
||||
c.set(Calendar.SECOND, (c.get(Calendar.SECOND) + interval));
|
||||
break;
|
||||
}
|
||||
Date newDate = c.getTime();
|
||||
return newDate;
|
||||
}
|
||||
|
||||
public static String getNewDate4(Date date, Integer type, Integer interval) throws ParseException {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTime(date);
|
||||
switch (type) {
|
||||
case 1:
|
||||
c.set(Calendar.YEAR, (c.get(Calendar.YEAR) + interval));
|
||||
break;
|
||||
case 2:
|
||||
c.set(Calendar.MONTH, (c.get(Calendar.MONTH) + interval));
|
||||
break;
|
||||
case 3:
|
||||
c.set(Calendar.DATE, (c.get(Calendar.DATE) + interval));
|
||||
break;
|
||||
case 4:
|
||||
c.set(Calendar.HOUR, (c.get(Calendar.HOUR) + interval));
|
||||
break;
|
||||
case 5:
|
||||
c.set(Calendar.MINUTE, (c.get(Calendar.MINUTE) + interval));
|
||||
break;
|
||||
default:
|
||||
c.set(Calendar.SECOND, (c.get(Calendar.SECOND) + interval));
|
||||
break;
|
||||
}
|
||||
Date newDate = c.getTime();
|
||||
return sdfDays.format(newDate);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取YYYY格式
|
||||
* @return
|
||||
*/
|
||||
public static String getSdfTimes() {
|
||||
return sdfTimes.format(new Date());
|
||||
}
|
||||
|
||||
public static String getSdfTimesSS() {
|
||||
return sdfTimesSS.format(new Date());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取YYYY格式
|
||||
* @return
|
||||
*/
|
||||
public static String getYear() {
|
||||
return sdfYear.format(new Date());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取YYYY-MM-DD格式
|
||||
* @return
|
||||
*/
|
||||
public static String getDay() {
|
||||
return sdfDay.format(new Date());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取YYYYMMDD格式
|
||||
* @return
|
||||
*/
|
||||
public static String getDays(){
|
||||
return sdfDays.format(new Date());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取YYYY-MM-DD HH:mm:ss格式
|
||||
* @return
|
||||
*/
|
||||
public static String getTime() {
|
||||
return sdfTime.format(new Date());
|
||||
}
|
||||
|
||||
/**
|
||||
* @Title: compareDate
|
||||
* @Description: TODO(日期比较,如果s>=e 返回true 否则返回false)
|
||||
* @param s
|
||||
* @param e
|
||||
* @return boolean
|
||||
* @throws
|
||||
* @author fh
|
||||
*/
|
||||
public static boolean compareDate(String s, String e) {
|
||||
if(fomatDate(s)==null||fomatDate(e)==null){
|
||||
return false;
|
||||
}
|
||||
return fomatDate(s).getTime() >=fomatDate(e).getTime();
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化日期
|
||||
* @return
|
||||
*/
|
||||
public static Date fomatDate(String date) {
|
||||
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
|
||||
try {
|
||||
return fmt.parse(date);
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验日期是否合法
|
||||
* @return
|
||||
*/
|
||||
public static boolean isValidDate(String s) {
|
||||
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
|
||||
try {
|
||||
fmt.parse(s);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
// 如果throw java.text.ParseException或者NullPointerException,就说明格式不对
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param startTime
|
||||
* @param endTime
|
||||
* @return
|
||||
*/
|
||||
public static int getDiffYear(String startTime, String endTime) {
|
||||
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
|
||||
try {
|
||||
//long aa=0;
|
||||
int years=(int) (((fmt.parse(endTime).getTime()-fmt.parse(startTime).getTime())/ (1000 * 60 * 60 * 24))/365);
|
||||
return years;
|
||||
} catch (Exception e) {
|
||||
// 如果throw java.text.ParseException或者NullPointerException,就说明格式不对
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <li>功能描述:时间相减得到天数
|
||||
* @param beginDateStr
|
||||
* @param endDateStr
|
||||
* @return
|
||||
* long
|
||||
* @author Administrator
|
||||
*/
|
||||
public static long getDaySub(String beginDateStr, String endDateStr){
|
||||
long day=0;
|
||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
||||
Date beginDate = null;
|
||||
Date endDate = null;
|
||||
|
||||
try {
|
||||
beginDate = format.parse(beginDateStr);
|
||||
endDate= format.parse(endDateStr);
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000);
|
||||
//System.out.println("相隔的天数="+day);
|
||||
|
||||
return day;
|
||||
}
|
||||
|
||||
/**
|
||||
* 得到n天之后的日期
|
||||
* @param days
|
||||
* @return
|
||||
*/
|
||||
public static String getAfterDayDate(String days) {
|
||||
int daysInt = Integer.parseInt(days);
|
||||
|
||||
Calendar canlendar = Calendar.getInstance(); // java.util包
|
||||
canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动
|
||||
Date date = canlendar.getTime();
|
||||
|
||||
SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
String dateStr = sdfd.format(date);
|
||||
|
||||
return dateStr;
|
||||
}
|
||||
/**
|
||||
* 得到n天之后的日期
|
||||
* @param days
|
||||
* @return
|
||||
*/
|
||||
public static String getAfterDate(Date openDate, String days) {
|
||||
int daysInt = Integer.parseInt(days);
|
||||
|
||||
Calendar canlendar = Calendar.getInstance(); // java.util包
|
||||
canlendar.setTime(openDate);
|
||||
canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动
|
||||
Date date = canlendar.getTime();
|
||||
SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
String dateStr = sdfd.format(date);
|
||||
return dateStr;
|
||||
}
|
||||
public static String getAfterDate1(Date openDate, String year) {
|
||||
int daysInt = Integer.parseInt(year);
|
||||
|
||||
Calendar canlendar = Calendar.getInstance(); // java.util包
|
||||
canlendar.setTime(openDate);
|
||||
canlendar.add(Calendar.YEAR, daysInt); // 日期减 如果不够减会将月变动
|
||||
Date date = canlendar.getTime();
|
||||
SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
String dateStr = sdfd.format(date);
|
||||
return dateStr;
|
||||
}
|
||||
public static Date getAfterDateStr(Date openDate, String days) {
|
||||
int daysInt = Integer.parseInt(days);
|
||||
|
||||
Calendar canlendar = Calendar.getInstance(); // java.util包
|
||||
canlendar.setTime(openDate);
|
||||
canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动
|
||||
Date date = canlendar.getTime();
|
||||
return date;
|
||||
}
|
||||
|
||||
/**
|
||||
* 得到n天之后是周几
|
||||
* @param days
|
||||
* @return
|
||||
*/
|
||||
public static String getAfterDayWeek(String days) {
|
||||
int daysInt = Integer.parseInt(days);
|
||||
Calendar canlendar = Calendar.getInstance(); // java.util包
|
||||
canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动
|
||||
Date date = canlendar.getTime();
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("E");
|
||||
String dateStr = sdf.format(date);
|
||||
return dateStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化日期为时分秒
|
||||
* @param date
|
||||
* @return
|
||||
*/
|
||||
public static Date fomatDateTime(String date) {
|
||||
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
try {
|
||||
return fmt.parse(date);
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static String formatDateToStr(Date date) {
|
||||
return sdfTime.format(date);
|
||||
}
|
||||
|
||||
/** 功能描述:获取前一天日期
|
||||
* @params: [date]
|
||||
* @return: java.lang.String
|
||||
* @Author: Administrator
|
||||
* @Date: 2020-10-09 15:51
|
||||
*/
|
||||
public static String getYsetDate(Date date) {
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(date);
|
||||
cal.add(Calendar.DATE, -1);
|
||||
Date start = cal.getTime();
|
||||
String day= sdfDay.format(start);
|
||||
return day;
|
||||
}
|
||||
|
||||
/** 功能描述:获取前一天日期
|
||||
* @params: [date]
|
||||
* @return: java.lang.String
|
||||
* @Author: Administrator
|
||||
* @Date: 2020-10-09 15:51
|
||||
*/
|
||||
public static String getYsetDates(Date date) {
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(date);
|
||||
cal.add(Calendar.DATE, -1);
|
||||
Date start = cal.getTime();
|
||||
String day= sdfDays.format(start);
|
||||
return day;
|
||||
}
|
||||
|
||||
|
||||
public static boolean getThreadTime(String quittime, String DZtime) {
|
||||
boolean flag = false;
|
||||
String quitT[] = quittime.split(":");
|
||||
String DZT[] = DZtime.split(":");
|
||||
Calendar ca = Calendar.getInstance();
|
||||
Calendar ca1 = Calendar.getInstance();
|
||||
Calendar ca2 = Calendar.getInstance();
|
||||
ca1.set(ca.get(Calendar.YEAR), ca.get(Calendar.MONTH), ca.get(Calendar.DAY_OF_MONTH), Integer.valueOf(quitT[0]), Integer.valueOf(quitT[1]), Integer.valueOf(quitT[2]));
|
||||
ca2.set(ca.get(Calendar.YEAR), ca.get(Calendar.MONTH), ca.get(Calendar.DAY_OF_MONTH), Integer.valueOf(DZT[0]), Integer.valueOf(DZT[1]), Integer.valueOf(DZT[2]));
|
||||
if (ca1.after(ca2)) {
|
||||
if (ca.equals(ca1) || ca.after(ca1) || ca.before(ca2) || ca.equals(ca2)) {
|
||||
flag = true;
|
||||
} else {
|
||||
flag = false;
|
||||
}
|
||||
} else if (ca1.before(ca2)) {
|
||||
if ((ca.equals(ca1) || ca.after(ca1)) && (ca.equals(ca2) || ca.before(ca2))) {
|
||||
flag = true;
|
||||
} else {
|
||||
flag = false;
|
||||
}
|
||||
} else if (ca1.equals(ca2)) {
|
||||
flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static String getTimes(Date date){
|
||||
return times.format(date);
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args){
|
||||
System.out.println(getTimes(new Date()));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
/**
|
||||
* Copyright (c) 2018 人人开源 All rights reserved.
|
||||
*
|
||||
* https://www.renren.io
|
||||
*
|
||||
* 版权所有,侵权必究!
|
||||
*/
|
||||
|
||||
package com.dianguang.cloud.ossservice.service;
|
||||
|
||||
import com.dianguang.cloud.ossservice.config.CloudStorageConfig;
|
||||
import com.dianguang.cloud.ossservice.model.DateUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* 云存储(支持七牛、阿里云、腾讯云)
|
||||
*
|
||||
* @author Mark sunlightcs@gmail.com
|
||||
*/
|
||||
public abstract class AbstractCloudStorageService {
|
||||
/** 云存储配置信息 */
|
||||
CloudStorageConfig config;
|
||||
|
||||
/**
|
||||
* 文件路径
|
||||
* @param prefix 前缀
|
||||
* @param suffix 后缀
|
||||
* @return 返回上传路径
|
||||
*/
|
||||
public String getPath(String prefix, String suffix) {
|
||||
//生成uuid
|
||||
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
|
||||
//文件路径
|
||||
String path = DateUtils.getDays() + "/" + uuid;
|
||||
|
||||
if(StringUtils.isNotBlank(prefix)){
|
||||
path = prefix + "/" + path;
|
||||
}
|
||||
|
||||
return path + "." + suffix;
|
||||
}
|
||||
|
||||
/**
|
||||
* 文件上传
|
||||
* @param data 文件字节数组
|
||||
* @param path 文件路径,包含文件名
|
||||
* @return 返回http地址
|
||||
*/
|
||||
public abstract String upload(byte[] data, String path) throws Exception;
|
||||
|
||||
/**
|
||||
* 文件上传
|
||||
* @param data 文件字节数组
|
||||
* @param suffix 后缀
|
||||
* @return 返回http地址
|
||||
*/
|
||||
public abstract String uploadSuffix(byte[] data, String suffix) throws Exception;
|
||||
|
||||
/**
|
||||
* 文件上传
|
||||
* @param inputStream 字节流
|
||||
* @param path 文件路径,包含文件名
|
||||
* @return 返回http地址
|
||||
*/
|
||||
public abstract String upload(InputStream inputStream, String path) throws Exception;
|
||||
|
||||
/**
|
||||
* 文件上传
|
||||
* @param inputStream 字节流
|
||||
* @param suffix 后缀
|
||||
* @return 返回http地址
|
||||
*/
|
||||
public abstract String uploadSuffix(InputStream inputStream, String suffix) throws Exception;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
/**
|
||||
* Copyright (c) 2018 人人开源 All rights reserved.
|
||||
*
|
||||
* https://www.renren.io
|
||||
*
|
||||
* 版权所有,侵权必究!
|
||||
*/
|
||||
|
||||
package com.dianguang.cloud.ossservice.service;
|
||||
|
||||
import com.aliyun.oss.OSSClient;
|
||||
import com.dianguang.cloud.ossservice.config.CloudStorageConfig;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* 阿里云存储
|
||||
*
|
||||
* @author Mark sunlightcs@gmail.com
|
||||
*/
|
||||
public class AliyunCloudStorageService extends AbstractCloudStorageService {
|
||||
|
||||
public AliyunCloudStorageService(CloudStorageConfig config){
|
||||
this.config = config;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String upload(byte[] data, String path) throws Exception {
|
||||
return upload(new ByteArrayInputStream(data), path);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String upload(InputStream inputStream, String path) throws Exception {
|
||||
OSSClient client = new OSSClient(config.getEndPoint(), config.getAccessKey(),
|
||||
config.getSecretKey());
|
||||
try {
|
||||
client.putObject(config.getBucketName(), path, inputStream);
|
||||
client.shutdown();
|
||||
} catch (Exception e){
|
||||
throw new Exception("上传异常");
|
||||
}
|
||||
|
||||
return "https://"+config.getUrl() + "/" + path;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String uploadSuffix(byte[] data, String suffix) throws Exception {
|
||||
return upload(data, getPath(config.getPrefix(), suffix));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String uploadSuffix(InputStream inputStream, String suffix) throws Exception {
|
||||
return upload(inputStream, getPath(config.getPrefix(), suffix));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.dianguang.cloud.ossservice.service;
|
||||
|
||||
import com.dianguang.cloud.ossservice.config.CloudStorageConfig;
|
||||
import com.obs.services.ObsClient;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.InputStream;
|
||||
|
||||
public class HuaweiCloudStorageService extends AbstractCloudStorageService {
|
||||
|
||||
|
||||
|
||||
public HuaweiCloudStorageService(CloudStorageConfig config){
|
||||
this.config = config;
|
||||
}
|
||||
@Override
|
||||
public String upload(byte[] data, String path) throws Exception {
|
||||
|
||||
return upload(new ByteArrayInputStream(data), path);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String uploadSuffix(byte[] data, String suffix) throws Exception {
|
||||
return upload(data, getPath(config.getPrefix(), suffix));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String upload(InputStream inputStream, String path) throws Exception {
|
||||
ObsClient client = new ObsClient(config.getAccessKey(),config.getSecretKey(),config.getEndPoint());
|
||||
try {
|
||||
client.putObject(config.getBucketName(), path, inputStream);
|
||||
} catch (Exception e){
|
||||
throw new Exception("上传失败");
|
||||
}
|
||||
return config.getUrl() + "/" + path;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String uploadSuffix(InputStream inputStream, String suffix) throws Exception {
|
||||
return upload(inputStream, getPath(config.getPrefix(), suffix));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* Copyright (c) 2018 人人开源 All rights reserved.
|
||||
*
|
||||
* https://www.renren.io
|
||||
*
|
||||
* 版权所有,侵权必究!
|
||||
*/
|
||||
|
||||
package com.dianguang.cloud.ossservice.service;
|
||||
|
||||
|
||||
import com.dianguang.cloud.ossservice.config.CloudStorageConfig;
|
||||
import com.dianguang.cloud.ossservice.model.Constant;
|
||||
|
||||
/**
|
||||
* 文件上传Factory
|
||||
* @author Mark sunlightcs@gmail.com
|
||||
*/
|
||||
public final class OSSFactory {
|
||||
public static AbstractCloudStorageService build(CloudStorageConfig config){
|
||||
|
||||
if(config.getType() == Constant.CloudService.QINIU.getValue()){
|
||||
return new QiniuCloudStorageService(config);
|
||||
}else if(config.getType() == Constant.CloudService.ALIYUN.getValue()){
|
||||
return new AliyunCloudStorageService(config);
|
||||
}else if(config.getType() == Constant.CloudService.QCLOUD.getValue()){
|
||||
return new QcloudCloudStorageService(config);
|
||||
}else if(config.getType() == Constant.CloudService.HUAWEI.getValue()){
|
||||
return new HuaweiCloudStorageService(config);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
/**
|
||||
* Copyright (c) 2018 人人开源 All rights reserved.
|
||||
*
|
||||
* https://www.renren.io
|
||||
*
|
||||
* 版权所有,侵权必究!
|
||||
*/
|
||||
|
||||
package com.dianguang.cloud.ossservice.service;
|
||||
|
||||
import com.dianguang.cloud.ossservice.config.CloudStorageConfig;
|
||||
import com.qcloud.cos.COSClient;
|
||||
import com.qcloud.cos.ClientConfig;
|
||||
import com.qcloud.cos.auth.BasicCOSCredentials;
|
||||
import com.qcloud.cos.auth.COSCredentials;
|
||||
import com.qcloud.cos.model.ObjectMetadata;
|
||||
import com.qcloud.cos.model.PutObjectRequest;
|
||||
import com.qcloud.cos.model.PutObjectResult;
|
||||
import com.qcloud.cos.region.Region;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* 腾讯云存储
|
||||
*
|
||||
* @author Mark sunlightcs@gmail.com
|
||||
*/
|
||||
public class QcloudCloudStorageService extends AbstractCloudStorageService {
|
||||
private COSCredentials credentials;
|
||||
private ClientConfig clientConfig;
|
||||
|
||||
public QcloudCloudStorageService(CloudStorageConfig config){
|
||||
this.config = config;
|
||||
|
||||
//初始化
|
||||
init();
|
||||
}
|
||||
|
||||
private void init(){
|
||||
//1、初始化用户身份信息(secretId, secretKey)
|
||||
credentials = new BasicCOSCredentials(config.getAccessKey(), config.getSecretKey());
|
||||
|
||||
//2、设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
|
||||
clientConfig = new ClientConfig(new Region(config.getQcloudRegion()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String upload(byte[] data, String path) throws Exception {
|
||||
return upload(new ByteArrayInputStream(data), path);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String upload(InputStream inputStream, String path) throws Exception {
|
||||
try {
|
||||
COSClient client = new COSClient(credentials, clientConfig);
|
||||
|
||||
ObjectMetadata metadata = new ObjectMetadata();
|
||||
metadata.setContentLength(inputStream.available());
|
||||
String bucketName = config.getBucketName() +"-"+ config.getQcloudAppId();
|
||||
PutObjectRequest request = new PutObjectRequest(bucketName, path, inputStream, metadata);
|
||||
PutObjectResult result = client.putObject(request);
|
||||
|
||||
client.shutdown();
|
||||
if(result.getETag() == null){
|
||||
throw new Exception("上传失败");
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new Exception("上传失败");
|
||||
}
|
||||
|
||||
return config.getUrl() + "/" + path;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String uploadSuffix(byte[] data, String suffix) throws Exception {
|
||||
return upload(data, getPath(config.getPrefix(), suffix));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String uploadSuffix(InputStream inputStream, String suffix) throws Exception {
|
||||
return upload(inputStream, getPath(config.getPrefix(), suffix));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
/**
|
||||
* Copyright (c) 2018 人人开源 All rights reserved.
|
||||
*
|
||||
* https://www.renren.io
|
||||
*
|
||||
* 版权所有,侵权必究!
|
||||
*/
|
||||
|
||||
package com.dianguang.cloud.ossservice.service;
|
||||
|
||||
import com.dianguang.cloud.ossservice.config.CloudStorageConfig;
|
||||
import com.qiniu.http.Response;
|
||||
import com.qiniu.storage.Configuration;
|
||||
import com.qiniu.storage.Region;
|
||||
import com.qiniu.storage.UploadManager;
|
||||
import com.qiniu.util.Auth;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* 七牛云存储
|
||||
*
|
||||
* @author Mark sunlightcs@gmail.com
|
||||
*/
|
||||
public class QiniuCloudStorageService extends AbstractCloudStorageService {
|
||||
private UploadManager uploadManager;
|
||||
private String token;
|
||||
|
||||
public QiniuCloudStorageService(CloudStorageConfig config){
|
||||
this.config = config;
|
||||
|
||||
//初始化
|
||||
init();
|
||||
}
|
||||
|
||||
private void init(){
|
||||
uploadManager = new UploadManager(new Configuration(Region.autoRegion()));
|
||||
token = Auth.create(config.getAccessKey(), config.getSecretKey()).
|
||||
uploadToken(config.getBucketName());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String upload(byte[] data, String path) throws Exception {
|
||||
try {
|
||||
Response res = uploadManager.put(data, path, token);
|
||||
if (!res.isOK()) {
|
||||
throw new Exception("上传失败");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new Exception("上传失败");
|
||||
}
|
||||
|
||||
return config.getUrl() + "/" + path;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String upload(InputStream inputStream, String path) throws Exception {
|
||||
try {
|
||||
byte[] data = IOUtils.toByteArray(inputStream);
|
||||
return this.upload(data, path);
|
||||
} catch (IOException e) {
|
||||
throw new IOException("上传失败");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String uploadSuffix(byte[] data, String suffix) throws Exception {
|
||||
return upload(data, getPath(config.getPrefix(), suffix));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String uploadSuffix(InputStream inputStream, String suffix) throws Exception {
|
||||
return upload(inputStream, getPath(config.getPrefix(), suffix));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user