|
|
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
import shop.alien.entity.result.R;
|
|
|
@@ -22,10 +23,7 @@ import shop.alien.util.common.UniqueRandomNumGenerator;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
-import java.time.DayOfWeek;
|
|
|
-import java.time.LocalDate;
|
|
|
-import java.time.LocalDateTime;
|
|
|
-import java.time.ZoneId;
|
|
|
+import java.time.*;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.time.format.TextStyle;
|
|
|
import java.util.*;
|
|
|
@@ -227,7 +225,9 @@ public class LifeCouponServiceImpl extends ServiceImpl<LifeCouponMapper, LifeCou
|
|
|
return resultMap;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public Map<String, String> newCouponVerify(String storeId, String quanCode) {
|
|
|
Map<String, String> resultMap = new HashMap<>();
|
|
|
OrderCouponMiddle orderCouponMiddle = orderCouponMiddleMapper.selectOne(new LambdaQueryWrapper<OrderCouponMiddle>().eq(OrderCouponMiddle::getCouponCode, quanCode));
|
|
|
@@ -238,6 +238,15 @@ public class LifeCouponServiceImpl extends ServiceImpl<LifeCouponMapper, LifeCou
|
|
|
orderCouponMiddle.setStatus(2);
|
|
|
orderCouponMiddle.setUsedTime(new Date());
|
|
|
orderCouponMiddleMapper.updateById(orderCouponMiddle);
|
|
|
+ //通过订单id查询中间表 如果该订单下所有劵都为已核销状态更改订单表状态为已核销
|
|
|
+ List<OrderCouponMiddle> couponMiddleList = orderCouponMiddleMapper.selectList(new LambdaQueryWrapper<OrderCouponMiddle>()
|
|
|
+ .eq(OrderCouponMiddle::getOrderId,lifeUserOrder.getId()));
|
|
|
+ boolean isExist = couponMiddleList.stream()
|
|
|
+ .allMatch(str -> str.getStatus()==2);
|
|
|
+ if(isExist){
|
|
|
+ lifeUserOrder.setStatus(2);
|
|
|
+ lifeUserOrderMapper.updateById(lifeUserOrder);
|
|
|
+ }
|
|
|
// TODO 抽成比例应该从商户里取
|
|
|
BigDecimal amounts = new BigDecimal(lifeUserOrder.getFinalPrice()).multiply(new BigDecimal(100));
|
|
|
BigDecimal commission = amounts.multiply(new BigDecimal(0.04)).setScale(0, RoundingMode.HALF_UP);
|
|
|
@@ -528,10 +537,17 @@ public class LifeCouponServiceImpl extends ServiceImpl<LifeCouponMapper, LifeCou
|
|
|
return R.fail("该劵不在有效期内");
|
|
|
}
|
|
|
} else if (lifeCoupon.getExpirationType().equals("2")) {//类型为:2 指定时间段
|
|
|
- LocalDate localStartDate = lifeCoupon.getStartDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
- LocalDate localEndDate = lifeCoupon.getEndDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
+ String[] strings = lifeCoupon.getValidityPeriod() .split(",");
|
|
|
+ long start = Long.parseLong(strings[0]);
|
|
|
+ long end = Long.parseLong(strings[1]);
|
|
|
+ LocalDate startDate = Instant.ofEpochMilli(start)
|
|
|
+ .atZone(ZoneId.systemDefault())
|
|
|
+ .toLocalDate();
|
|
|
+ LocalDate endDate = Instant.ofEpochMilli(end)
|
|
|
+ .atZone(ZoneId.systemDefault())
|
|
|
+ .toLocalDate();
|
|
|
LocalDate nowDate = LocalDate.now(); // 获取当前时间
|
|
|
- if (nowDate.isAfter(localEndDate) || nowDate.isBefore(localStartDate)) {
|
|
|
+ if (nowDate.isAfter(endDate) || nowDate.isBefore(startDate)) {
|
|
|
return R.fail("该劵不在有效期内");
|
|
|
}
|
|
|
}
|
|
|
@@ -542,7 +558,7 @@ public class LifeCouponServiceImpl extends ServiceImpl<LifeCouponMapper, LifeCou
|
|
|
LocalDate nowDate = LocalDate.now(); // 获取当前时间
|
|
|
DayOfWeek dayOfWeek = nowDate.getDayOfWeek();
|
|
|
String week = dayOfWeek.getDisplayName(TextStyle.FULL, Locale.CHINA);
|
|
|
- String beforeSemicolon = lifeCoupon.getUnusedDate().split(";")[0];
|
|
|
+ String beforeSemicolon = lifeCoupon.getUnavaiLableDate().split(";")[0];
|
|
|
if (!StringUtils.isEmpty(beforeSemicolon)) {
|
|
|
List<String> collectUnavailableDate = Arrays.stream(beforeSemicolon.split(",")).map(String::trim).collect(Collectors.toList());
|
|
|
boolean isExist = collectUnavailableDate.stream().anyMatch(s -> s.equals(week));
|
|
|
@@ -552,9 +568,9 @@ public class LifeCouponServiceImpl extends ServiceImpl<LifeCouponMapper, LifeCou
|
|
|
}
|
|
|
|
|
|
//判断当前日期是否在不可用节日
|
|
|
- String[] strings = lifeCoupon.getUnusedDate().split(";");
|
|
|
+ String[] strings = lifeCoupon.getUnavaiLableDate().split(";");
|
|
|
if (strings.length > 1) {
|
|
|
- String afterSemicolon = lifeCoupon.getUnusedDate().split(";")[1];
|
|
|
+ String afterSemicolon = lifeCoupon.getUnavaiLableDate().split(";")[1];
|
|
|
List<String> collectUnavailableDate = Arrays.stream(afterSemicolon.split(",")).map(String::trim).collect(Collectors.toList());
|
|
|
List<EssentialHolidayComparison> essentialHolidayComparisons = essentialHolidayComparisonMapper.
|
|
|
selectList(new LambdaQueryWrapper<EssentialHolidayComparison>().in(EssentialHolidayComparison::getId, collectUnavailableDate));
|
|
|
@@ -567,7 +583,7 @@ public class LifeCouponServiceImpl extends ServiceImpl<LifeCouponMapper, LifeCou
|
|
|
}
|
|
|
//判断当前日期是否在自定义不可用日期内
|
|
|
if (lifeCoupon.getUnusedType().equals("3")) {
|
|
|
- String[] customDate = lifeCoupon.getUnusedDate().split(";");
|
|
|
+ String[] customDate = lifeCoupon.getUnavaiLableDate().split(";");
|
|
|
boolean isExist = isCurrentDateInAnyRange(customDate);
|
|
|
if (isExist) {
|
|
|
return R.fail("该劵在不可用日期内");
|