Commit b4d93ef2 by chongfu.liang

重构

parent 67749415
...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; ...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.List; import java.util.List;
@Data @Data
...@@ -31,6 +32,10 @@ public class GetCouponDetailResponseDto { ...@@ -31,6 +32,10 @@ public class GetCouponDetailResponseDto {
private Active active; private Active active;
private List<ActiveProduct> activeProduct; private List<ActiveProduct> activeProduct;
private List<ActiveRestrictionVOS> activeRestrictionVOS; private List<ActiveRestrictionVOS> activeRestrictionVOS;
/**
* 可核销周,时间段设置
*/
private List<ActiveRedeemTimeInterval> activeRedeemTimeIntervalList;
} }
@Data @Data
public static class Active{ public static class Active{
...@@ -122,4 +127,32 @@ public class GetCouponDetailResponseDto { ...@@ -122,4 +127,32 @@ public class GetCouponDetailResponseDto {
private String errorCode; private String errorCode;
private String parameter; private String parameter;
} }
@Data
public static class ActiveRedeemTimeInterval{
private Long id;
private Integer partnerid;
private Integer activeid;
/**
* 启用时间 时分秒
*/
private String begintime;
/**
* 结束时间 时分秒
*/
private String endtime;
private Integer status;
private Date createdate;
private String createuser;
/**
* 周几可用, 7位数字,第一位为周日
*/
private String weekday;
/**
* 限制使用日期, 年-月-, 多个竖线分割,仅在列表内的日期可用
*/
private String limitdates;
}
} }
...@@ -73,6 +73,8 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -73,6 +73,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.*; import java.util.*;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -708,6 +710,12 @@ public class CouponServiceImpl implements CouponService { ...@@ -708,6 +710,12 @@ public class CouponServiceImpl implements CouponService {
if (null == productsVo || !Objects.equals(productsVo.getStatus(), StoreItemStatus.PUT_ON_SALE.getCode())) { if (null == productsVo || !Objects.equals(productsVo.getStatus(), StoreItemStatus.PUT_ON_SALE.getCode())) {
return null; return null;
} }
// 校验券的可用时间
List<GetCouponDetailResponseDto.ActiveRedeemTimeInterval> activeRedeemTimeIntervalList = couponDetailResponseDto.getDetails().get(0).getActiveRedeemTimeIntervalList();
boolean verificationPassed = checkCouonRedeemTime(activeRedeemTimeIntervalList);
if (!verificationPassed){
return null;
}
// 校验商品可用时间 // 校验商品可用时间
ValidateShopProductRequest request = getValidateShopProductRequest(productsVo, requestDto); ValidateShopProductRequest request = getValidateShopProductRequest(productsVo, requestDto);
ProductResponseDTO<ValiadShopProductResponse> valiadProductResponse = storeItemClient.validateShopProduct(request); ProductResponseDTO<ValiadShopProductResponse> valiadProductResponse = storeItemClient.validateShopProduct(request);
...@@ -732,6 +740,48 @@ public class CouponServiceImpl implements CouponService { ...@@ -732,6 +740,48 @@ public class CouponServiceImpl implements CouponService {
return dto; return dto;
} }
private boolean checkCouonRedeemTime(List<GetCouponDetailResponseDto.ActiveRedeemTimeInterval> activeRedeemTimeIntervalList) {
boolean verificationPassed = false;
if (CollectionUtils.isNotEmpty(activeRedeemTimeIntervalList)){
for (GetCouponDetailResponseDto.ActiveRedeemTimeInterval dateLimit : activeRedeemTimeIntervalList){
boolean dayCheck = true;
String weekday = dateLimit.getWeekday(); // 日期限制 0011100 周日开始,0表示不可用
if (StringUtils.isNotBlank(weekday)){ // 存在校验周几
char[] chars = weekday.toCharArray();
int dayOfWeek = LocalDate.now().getDayOfWeek().getValue(); // 从周一开始
if (dayOfWeek == 7){
dayOfWeek = 0;
}
if (Integer.parseInt(String.valueOf(chars[dayOfWeek])) == 0){ //限制
dayCheck = false;
}
}
boolean timeCheck = true;
String begintime = dateLimit.getBegintime(); // 开始时间 00:00:00
String endtime = dateLimit.getEndtime(); // 结束时间 12:59:59
if (StringUtils.isNotBlank(begintime) && StringUtils.isNotBlank(endtime)){ // 存在校验时段
String[] beginTimeArr = begintime.split(":");
String[] endTimeArr = endtime.split(":");
LocalTime beginLocalTime = LocalTime.of(Integer.valueOf(beginTimeArr[0]), Integer.valueOf(beginTimeArr[1]), Integer.valueOf(beginTimeArr[2]));
LocalTime endLocalTime = LocalTime.of(Integer.valueOf(endTimeArr[0]), Integer.valueOf(endTimeArr[1]), Integer.valueOf(endTimeArr[2]));
LocalTime now = LocalTime.now();
if (now.isBefore(beginLocalTime) || now.isAfter(endLocalTime)){
timeCheck = false;
}
}
if (dayCheck && timeCheck){
verificationPassed = true;
break;
}
}
} else {
verificationPassed = true;
}
return verificationPassed;
}
private ValidateShopProductRequest getValidateShopProductRequest(GetProductsVo product, CheckSpqInfoRequestDto requestDto) { private ValidateShopProductRequest getValidateShopProductRequest(GetProductsVo product, CheckSpqInfoRequestDto requestDto) {
ValidateShopProductRequest request = new ValidateShopProductRequest(); ValidateShopProductRequest request = new ValidateShopProductRequest();
request.setChannel(requestDto.getMenuType()); request.setChannel(requestDto.getMenuType());
......
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