Commit 9bbd1877 by 周晓航

额外配送费逻辑开发

Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent 2cdc02ce
......@@ -2,8 +2,6 @@ package cn.freemud.entities.dto.console;
import lombok.Data;
import java.util.Date;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
......@@ -25,12 +23,12 @@ public class NightDeliveryuInfo {
/**
* 开始时间
*/
private Date startTime;
private String startTime;
/**
* 结束时间
*/
private Date endTime;
private String endTime;
/**
* 是否开启 1开启 0关闭
......
......@@ -13,14 +13,18 @@
package cn.freemud.service.delivery;
import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.ExtraDeliveryDto;
import cn.freemud.entities.dto.console.DeliveryInfoExpandFieldDTO;
import cn.freemud.entities.dto.console.NightDeliveryuInfo;
import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo;
import cn.freemud.utils.DateTimeUtil;
import com.alibaba.fastjson.JSON;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
......@@ -56,16 +60,24 @@ public interface DeliveryService {
if (StringUtils.isNotBlank(expandFields)) {
DeliveryInfoExpandFieldDTO expandField = JSON.parseObject(expandFields, DeliveryInfoExpandFieldDTO.class);
if (Objects.nonNull(expandField) && CollectionUtils.isNotEmpty(expandField.getNightDeliveryInfo())) {
Date currentDate = new Date();
for (NightDeliveryuInfo info : expandField.getNightDeliveryInfo()) {
if (info.getStatus() == NightDeliveryuInfo.COMMON_STATUS_OPEN) {
// 当前时间在区间内
if (currentDate.after(info.getStartTime()) && currentDate.before(info.getEndTime())) {
ExtraDeliveryDto extraDeliveryDto = new ExtraDeliveryDto(info.getType(), amount);
list.add(extraDeliveryDto);
// 金额 增加
amount += info.getPrice();
try {
Date nowTime = new SimpleDateFormat(DateUtil.FORMAT_time).parse(DateTimeUtil.getCurrentTimeStr());
Date startTime = new SimpleDateFormat(DateUtil.FORMAT_time).parse(info.getStartTime());
Date endTime = new SimpleDateFormat(DateUtil.FORMAT_time).parse(info.getEndTime());
if (DateTimeUtil.isEffectiveDate(nowTime, startTime, endTime)) {
ExtraDeliveryDto extraDeliveryDto = new ExtraDeliveryDto(info.getType(), amount);
list.add(extraDeliveryDto);
// 金额 增加
amount += info.getPrice();
}
} catch (ParseException e) {
// 报错表示 时间格式设置错误, 默认当做不计算
e.printStackTrace();
}
}
}
}
......
......@@ -6,6 +6,7 @@ import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoUnit;
import java.time.temporal.Temporal;
import java.time.temporal.TemporalAdjusters;
import java.util.Calendar;
import java.util.Date;
/**
......@@ -281,4 +282,32 @@ public class DateTimeUtil {
return getCurrentLocalDate().plus(2, ChronoUnit.DECADES).format(DATE_FORMATTER);
}
/**
* 是否在这个时间范围内
* @param nowTime
* @param startTime
* @param endTime
* @return
*/
public static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
if (nowTime.getTime() == startTime.getTime()
|| nowTime.getTime() == endTime.getTime()) {
return true;
}
Calendar date = Calendar.getInstance();
date.setTime(nowTime);
Calendar begin = Calendar.getInstance();
begin.setTime(startTime);
Calendar end = Calendar.getInstance();
end.setTime(endTime);
if (date.after(begin) && date.before(end)) {
return true;
} else {
return false;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment