DESKTOP-71BH0QO\L、ming
2021-04-21 f1927647ff9ca926b0a169c31e6cda09018c083d
Merge remote-tracking branch 'origin/master'
1个文件已添加
1个文件已修改
613 ■■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java 608 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOrderServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java
New file
@@ -0,0 +1,608 @@
package com.panzhihua.common.utlis;
import lombok.extern.slf4j.Slf4j;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
@Slf4j
public class DateUtils {
    public static DateTimeFormatter format_ymdhms = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    private static DateTimeFormatter format_ymdhmssss = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
    private static DateTimeFormatter format_ymds = DateTimeFormatter.ofPattern("yyyyMMdd");
    public static DateTimeFormatter format_ymd = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    public static DateTimeFormatter format_ymdhms_string = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
    public static DateTimeFormatter format_ymdhms_no_signal = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
    public static SimpleDateFormat yyyyMMdd_format = new SimpleDateFormat("yyyy-MM-dd");
    public static SimpleDateFormat yyyy_MM_dd_format = new SimpleDateFormat("yyyy/MM/ddHH:mm:ss");
    public static SimpleDateFormat ymdhms_format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    public static DateTimeFormatter format_ymd_String = DateTimeFormatter.ofPattern("yyMMdd");
    /**
     * 将日期对象格式化成指定的字符串格式
     *
     * @param date         日期对象
     * @param formatString 格式化字符串
     * @return String
     */
    public static String getDateFormatString(Date date, String formatString) {
        String dateString = "";
        SimpleDateFormat format = new SimpleDateFormat(formatString);
        if (date != null) {
            dateString = format.format(date);
        }
        return dateString;
    }
    /**
     * 字符串转date
     * @param date 时间戳
     * @param format format
     * @return 时间
     */
    public static Date stringToDate(String date,SimpleDateFormat format){
        try {
            if(StringUtils.isBlank(date)){
                return null;
            }
            return format.parse(date);
        } catch (ParseException e) {
            log.error(e.getMessage(),e);
        }
        return null;
    }
    /**
     * 字符串转date
     * @param date 时间戳
     * @return 时间
     */
    public static Date stringToDateStandard (String date){
        SimpleDateFormat format = ymdhms_format;
        if(StringUtils.isNotBlank(date)){
            if(date.split("-").length==3){
                if(date.split(":").length!=3){
                    format = yyyyMMdd_format;
                }
            }else if(date.split("-").length==2){
                format = new SimpleDateFormat("yyyy-MM");
            }
            try {
                return format.parse(date);
            } catch (ParseException e) {
                log.error(e.getMessage(),e);
            }
        }
        return null;
    }
    /**
     * 字符串转date
     * @param date 时间戳
     * @return 时间
     */
    public static Date stringToDateStandardByYYYY_MM_dd (String date){
        SimpleDateFormat format = yyyy_MM_dd_format;
        if(StringUtils.isNotBlank(date)){
            try {
                return format.parse(date);
            } catch (ParseException e) {
                log.error(e.getMessage(),e);
            }
        }
        return null;
    }
    /**
     * 获取当前时间
     * @return
     * @throws Exception
     */
    public static LocalDateTime getCurrentDate(){
        LocalDateTime now = LocalDateTime.now();
        return now;
    }
    /**
     * 获取当前时间字符串,格式为yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static String getCurrentDateStr(){
        String nowtime=getCurrentDate().format(format_ymdhms);
        return nowtime;
    }
    public static String getCurrentDateymd(){
        String nowtime=getCurrentDate().format(format_ymdhms_string);
        return nowtime;
    }
    public static String getCurrentDateyymd(){
        String nowtime=getCurrentDate().format(format_ymd_String);
        return nowtime;
    }
    /**
     * 获取当前时间字符串,格式为yyyyMMdd
     * @return
     */
    public static String getCurrentDateString(){
        String nowtime=getCurrentDate().format(format_ymds);
        return nowtime;
    }
    /**
     * 获取当前时间字符串,格式为yyyy-MM-dd
     * @return
     */
    public static String getCurrentDateStrymd(){
        String nowtime=getCurrentDate().format(format_ymd);
        return nowtime;
    }
    public static String getCurrentDateStr_MS(){
        String nowtime=getCurrentDate().format(format_ymdhmssss);
        return nowtime;
    }
    /**
     * 获取当前时间long值
     * @return
     */
    public static long getCurrentDataLong(){
        return new Date().getTime();
    }
    /**
     * 获取当前时间
     * @param format
     * @return
     * @throws Exception
     */
    public static Date getCurrentDate(SimpleDateFormat format){
        String tempDate = format.format(new Date());
        try {
            return format.parse(tempDate);
        } catch (ParseException e) {
            log.error(e.getMessage(),e);
        }
        return null;
    }
    /**
     * @param date
     * @param newFormat
     * @return
     * @throws Exception
     */
    public static Date getDate(Date date, SimpleDateFormat newFormat) {
        String tempDate = newFormat.format(date);
        try {
            return newFormat.parse(tempDate);
        } catch (ParseException e) {
            log.error(e.getMessage(),e);
        }
        return null;
    }
    public static String format(Date date, SimpleDateFormat format) {
        if(null == date){
            return "";
        }
        return format.format(date);
    }
    /**
     * 将给定的时间秒转换为中文格式的时分秒
     *
     * @param second
     * @return
     */
    public static String formatSecond_ZH_HMS(Integer second) {
        String result = "0秒";
        if (null != second) {
            int hours = (int) (second / (60 * 60));
            int minutes = (int) (second / 60 - hours * 60);
            int seconds = (int) (second - minutes * 60 - hours * 60 * 60);
            String format;
            Object[] array;
            if (hours > 0) {
                format = "%1$,d时%2$,d分%3$,d秒";
                array = new Object[]{hours, minutes, seconds};
            } else if (minutes > 0) {
                format = "%1$,d分%2$,d秒";
                array = new Object[]{minutes, seconds};
            } else {
                format = "%1$,d秒";
                array = new Object[]{seconds};
            }
            result = String.format(format, array);
        }
        return result;
    }
    /**
     * 对日期进行加法操作
     *
     * @param date
     * @param days
     * @return
     */
    public static Date addDay(Date date, Integer days) {
        if (null != date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(Calendar.DATE, days);
            return cal.getTime();
        }
        return null;
    }
    /**
     * 对日期进行加法操作
     *
     * @param date
     * @param month
     * @return
     */
    public static Date addMonth(Date date, Integer month) {
        if (null != date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(Calendar.MONTH, month);
            return cal.getTime();
        }
        return null;
    }
    /**
     * 对日期进行加法操作
     * @param date
     * @param hours
     * @return
     */
    public static Date addHours(Date date, Integer hours) {
        if (null != date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(Calendar.HOUR_OF_DAY, hours);
            return cal.getTime();
        }
        return null;
    }
    /**
     * 对日期的分钟进行加法操作
     * @param date
     * @param minutes
     * @return
     */
    public static Date addMinutes(Date date, Integer minutes) {
        if (null != date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(Calendar.MINUTE, minutes);
            return cal.getTime();
        }
        return null;
    }
    /**
     * 比较两个日期的大小
     *
     * @param date1
     * @param date2
     * @return 日期相等,返回0;前者大,返回1;后者大,返回-1;
     */
    public static int dateCompare(Date date1, Date date2) {
        Calendar c1 = Calendar.getInstance();
        c1.setTime(date1);
        Calendar c2 = Calendar.getInstance();
        c2.setTime(date2);
        return c1.compareTo(c2);
    }
    /**
     * 判断当前日期是否在指定日期区域内(包含起止日期) [startDate,endDate]
     * <p/>
     * [null,null] --> return 1;
     *
     * @param now
     * @param startDate
     * @param endDate
     * @return -1:超出并小于startDate;0:在范围内;1:超出并大于endDate;
     */
    public static int validateDate(Date now, Date startDate, Date endDate) {
        if (null == startDate && null == endDate) {
            return 0;
        }
        if (null == startDate) {
            //当前时间大于endDate
            if (dateCompare(now, endDate) == 1) {
                return 1;
            } else {
                return 0;
            }
        } else {
            if (null == endDate) {
                //当前时间小于startDate
                if (dateCompare(startDate, now) == 1) {
                    return -1;
                } else {
                    return 0;
                }
            } else {
                if (dateCompare(startDate, now) == 1) {
                    return -1;
                } else if (dateCompare(now, endDate) == 1) {
                    return 1;
                } else {
                    return 0;
                }
            }
        }
    }
    /**
     * 计算两个日期先差多少秒
     * @param pre 前一个日期
     * @param after 后一个日期
     * @return
     */
    public static long calTimeDifference(Date pre,Date after){
        return (after.getTime()-pre.getTime())/1000;
    }
    /**
     * 计算两个时间相差的天数
     * @param stardate
     * @param enddate
     * @return
     */
    public static int getHour(Date stardate,Date enddate){
        long nd = 1000 * 24 * 60 * 60;
        long nh = 1000 * 60 * 60;
        long nm = 1000 * 60;
        long diff=enddate.getTime()-stardate.getTime();
        long day = diff / nd;
        long hour = diff % nd / nh;
        long min = diff % nd % nh / nm;
        return (int)day;
    }
    /**
     * 结束时间与当前时间计算相差的月数
     * @param enddate
     * @return
     */
    public static int getMonthSpace(String enddate, DateTimeFormatter format) {
        LocalDate formatted = LocalDate.parse(enddate,format);
        LocalDate today = LocalDate.now();
        Period per = Period.between(today,formatted);
        if(per.getYears() == 0 ){
            return per.getMonths();
        }else if(per.getYears() > 0 ){
            return (per.getYears() * 12) + per.getMonths();
        }
        return (per.getYears() * 12) + per.getMonths();
    }
    /**
     * 获取某个时间段之前的时间点
     * @return
     */
    public static String getSomeTimeStapStr(String sign){
        LocalDateTime beginDateTime =null;
        if (sign.equals("day")) {//一天前时间
            beginDateTime =LocalDateTime.now().minusDays(1L);
        }else if(sign.equals("week")){
            beginDateTime =LocalDateTime.now().minusWeeks(1L);
        }else if (sign.equals("month")) {
            beginDateTime =LocalDateTime.now().minusMonths(1L);
        }else if (sign.equals("year")) {
            beginDateTime =LocalDateTime.now().minusYears(1L);
        }
        String beginTime=beginDateTime.format(format_ymdhms);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            long timestap = sdf.parse(beginTime).getTime();
            beginTime = timestap+"";
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return beginTime;
    }
    public static String getSomeTimeDateStr(String sign){
        String beginTime="";
        LocalDateTime beginDateTime =null;
        if (sign.equals("day")) {//一天前时间
            beginDateTime =LocalDateTime.now().minusDays(1L);
        }else if(sign.equals("week")){
            beginDateTime =LocalDateTime.now().minusWeeks(1L);
        }else if (sign.equals("month")) {
            beginDateTime =LocalDateTime.now().minusMonths(1L);
        }else if (sign.equals("year")) {
            beginDateTime =LocalDateTime.now().minusYears(1L);
        }
        if (beginDateTime!=null) {
            beginTime = beginDateTime.format(format_ymdhms);
        }
        return beginTime;
    }
    /**
     * 获取失效时间点(在什么时间失效)
     * @param minutes       有效分钟数
     * @return
     */
    public static LocalDateTime getInvalidLocalDateTime(Long minutes){
        return LocalDateTime.now().minusMinutes(minutes);
    }
    /**
     * 获取当前年份
     * @return
     */
    public static String getCurrentYear(){
        Calendar instance = Calendar.getInstance();
        return instance.get(Calendar.YEAR)+"";
    }
    /**
     * 获取当前月份
     * @return
     */
    public static String getCurrentMonth(){
        Calendar instance = Calendar.getInstance();
        int month = instance.get(Calendar.MONTH);
        String result;
        if (month < 10){
            result = "0" + month;
        }else {
            result = month+"";
        }
        return result;
    }
    /** 获取无符号的当前时间
     * @return
     */
    public static String getCurrentDateStrNoSignal(){
        return getCurrentDate().format(format_ymdhms_no_signal);
    }
    /**
     * 获取前几个小时的时间
     * @param hours
     * @return
     */
    public static String getNextHourDateStrNoSignal(long hours){
        return LocalDateTime.now().plusHours(hours).format(format_ymdhms_no_signal);
    }
    public static Date localDateTimeToDate(LocalDateTime localDateTime) {
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDateTime.atZone(zone).toInstant();
        return Date.from(instant);
    }
    /**
     * 小时取整
     * @param date
     * @param hour
     * @return
     */
    public static Date integralHour(Date date,Integer hour) {
        if(date==null||hour==null){
            return null;
        }
        long l = date.getTime()- 1;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
        try {
            Date parse = sdf.parse(sdf.format(new Date(l)));
            return addHours(parse, hour);
        } catch (ParseException e) {
            return null;
        }
    }
    /**
     * 分钟取整
     * 以十分钟为单位 ,去除尾端,加上 参数  46->40+minutes*10
     * @param date
     * @param minutes
     * @return
     */
    public static Date integral10Min(Date date,Integer minutes) {
        if(date==null||minutes==null){
            return null;
        }
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int i = cal.get(Calendar.MINUTE);//获取分钟
        if(i%10==0){
            minutes--;
        }
        minutes=minutes*10-i%10;
        long l = date.getTime()- 1;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:00");
        try {
            Date parse = sdf.parse(sdf.format(new Date(l)));
            return addMinutes(parse, minutes);
        } catch (ParseException e) {
            return null;
        }
    }
    /**
     * 天数取整
     * @param date
     * @param day
     * @return
     */
    public static Date integralDay(Date date,Integer day) {
        if(date==null||day==null){
            return null;
        }
        long l = date.getTime()- 1;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
        try {
            Date parse = sdf.parse(sdf.format(new Date(l)));
            return addDay(parse, day);
        } catch (ParseException e) {
            return null;
        }
    }
    public static void main(String[]args)throws Exception{
//        Date date= new Date();
//        Date after = new Date();
//        System.out.println(calTimeDifference(date,after));
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOrderServiceImpl.java
@@ -8,6 +8,7 @@
import com.panzhihua.common.model.dtos.PageDTO;
import com.panzhihua.common.model.dtos.shop.*;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.utlis.DateUtils;
import com.panzhihua.common.utlis.WxPayUtils;
import com.panzhihua.service_community.dao.ComShopOrderDAO;
import com.panzhihua.service_community.model.dos.ComShopOrderDO;
@@ -680,11 +681,13 @@
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void wxOrderPayNotify(WxPayNotifyOrderDTO wxPayNotifyOrderDTO){
        log.info("微信订单支付回调开始处理逻辑");
        if(StringUtils.isEmpty(wxPayNotifyOrderDTO.getOrderTradeNo())){
            log.error("微信支付回调失败,订单号为空");
            return;
        }
        log.info("微信订单支付回调开始查询订单");
        //查询订单
        ComShopOrderDO shopOrderDO = this.baseMapper.selectOne(new QueryWrapper<ComShopOrderDO>().lambda().eq(ComShopOrderDO::getOrderNo,wxPayNotifyOrderDTO.getOrderTradeNo()));
        if(shopOrderDO == null){
@@ -696,7 +699,7 @@
        shopOrderDO.setPayStatus(ComShopOrderDO.payStatus.yes);
        shopOrderDO.setPayAmount(BigDecimal.valueOf(Integer.parseInt(wxPayNotifyOrderDTO.getCashFee()) / 100));
        shopOrderDO.setWxTardeNo(wxPayNotifyOrderDTO.getWxTradeNo());
        shopOrderDO.setPayTime(new Date(Long.parseLong(wxPayNotifyOrderDTO.getPayTime() + "000")));
        shopOrderDO.setPayTime(DateUtils.stringToDate(wxPayNotifyOrderDTO.getPayTime(),new SimpleDateFormat("yyyyMMddHHmmss")));
        this.baseMapper.updateById(shopOrderDO);
        //查询订单商品