Commit 6f3ddcc5 by ping.wu

Merge branches 'feature/20210901_积分商城兑换券校验券有效期_wuping' and 'master' of…

Merge branches 'feature/20210901_积分商城兑换券校验券有效期_wuping' and 'master' of http://gitlab.freemud.com/order-group-application/order-group

# Conflicts:
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/MemberDiscountServiceImpl.java
parents e44d7cbe 5604e2c3
package cn.freemud.entities; //package cn.freemud.entities;
//
import java.util.List; //import java.util.List;
//
public class BatchQueryActivityInfoResponse { //public class BatchQueryActivityInfoResponse {
//
/** // /**
* 状态码 // * 状态码
*/ // */
private String statusCode; // private String statusCode;
//
/** // /**
* 状态码描述 // * 状态码描述
*/ // */
private String msg; // private String msg;
//
private List<Active> activities; // private List<Active> activities;
//
} //}
package cn.freemud.enums;
public enum CouponActiveStateEnum {
/**
* 只有1和2能发,一般没有2
*/
STATE_0(0, "未启用"),
STATE_1(1, "启用"),
STATE_2(2, "开始"),
STATE_3(3, "结束"),
STATE_4(4, "暂停"),
STATE_5(5, "作废"),
STATE_6(6, "禁用")
;
private Integer code;
private String desc;
CouponActiveStateEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public static CouponActiveStateEnum getByCode(Integer code) {
for (CouponActiveStateEnum type : values()) {
if (type.getCode().equals(code)) {
return type;
}
}
return null;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
...@@ -14,6 +14,7 @@ import cn.freemud.entities.dto.user.StatislScoreResponse; ...@@ -14,6 +14,7 @@ import cn.freemud.entities.dto.user.StatislScoreResponse;
import cn.freemud.entities.dto.user.StatisticalScoreRequestVo; import cn.freemud.entities.dto.user.StatisticalScoreRequestVo;
import cn.freemud.entities.dto.user.UseScoreRequest; import cn.freemud.entities.dto.user.UseScoreRequest;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.CouponActiveStateEnum;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.integralproduct.IntegralProductStatusEnum; import cn.freemud.enums.integralproduct.IntegralProductStatusEnum;
import cn.freemud.service.CouponService; import cn.freemud.service.CouponService;
...@@ -121,16 +122,26 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService { ...@@ -121,16 +122,26 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
Active active = null; Active active = null;
if (isCoupon) { if (isCoupon) {
String activityCode = integralProductType.getCouponCode(); String activityCode = integralProductType.getCouponCode();
//券商品查询券活动信息校验券有效 
BatchQueryActivityInfoRequestDto queryActivityInfoRequestDto = new BatchQueryActivityInfoRequestDto(); BatchQueryActivityInfoRequestDto queryActivityInfoRequestDto = new BatchQueryActivityInfoRequestDto();
queryActivityInfoRequestDto.setActiveCode(Arrays.asList(activityCode)); queryActivityInfoRequestDto.setActiveCode(Arrays.asList(activityCode));
// queryActivityInfoRequestDto.setActiveCode(Arrays.asList("V1628760321931083"));
queryActivityInfoRequestDto.setPartnerId(Integer.valueOf(partnerId)); queryActivityInfoRequestDto.setPartnerId(Integer.valueOf(partnerId));
BatchQueryActivityInfoResponseDto batchQueryActivityInfoResponseDto = couponService.batchQueryActivityInfo(queryActivityInfoRequestDto); BatchQueryActivityInfoResponseDto batchQueryActivityInfoResponseDto = couponService.batchQueryActivityInfo(queryActivityInfoRequestDto);
if (!Objects.equals("0", batchQueryActivityInfoResponseDto.getStatusCode())) { if (!Objects.equals("0", batchQueryActivityInfoResponseDto.getStatusCode())) {
return ResponseUtil.error(batchQueryActivityInfoResponseDto.getStatusCode(), "优惠券异常"); return ResponseUtil.error(batchQueryActivityInfoResponseDto.getStatusCode(), "优惠券异常");
} }
active = batchQueryActivityInfoResponseDto.getActivities().get(0); active = batchQueryActivityInfoResponseDto.getActivities().get(0);
Date couponValidEnd = getCouponValidEnd(active);
//券商品查询券活动信息校验券有效
//只有1和2能发,一般没有2
List<Integer> canSendCoupon = Arrays.asList(CouponActiveStateEnum.STATE_1.getCode(),CouponActiveStateEnum.STATE_2.getCode());
if(!canSendCoupon.contains(active.getState()) || couponValidEnd == null){
return ResponseUtil.error(ResponseCodeConstant.RESPONSE_ERROR_STR, "优惠券异常");
}
//券已过期
if(getCouponValidEnd(active).before(new Date())){
return ResponseUtil.error(ResponseCodeConstant.RESPONSE_ERROR_STR, "优惠券已过期,无法兑换");
}
} }
if (exchangeType != 2) { if (exchangeType != 2) {
...@@ -538,5 +549,37 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService { ...@@ -538,5 +549,37 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
} }
/**
* 获取券的有效结束时间
*/
private Date getCouponValidEnd(Active activeInfo){
Date returnDate = null;
if (activeInfo.getEffective() != null && activeInfo.getEffective() > 0) { // 根据固定时长来计算 天来计算
int delayTimes = activeInfo.getFromDayEffective() != null ? activeInfo.getFromDayEffective() : 0;
int validityPeriod = activeInfo.getEffective() != null ? activeInfo.getEffective() : 1;
if (activeInfo.getEffectiveStart() != null && activeInfo.getEffectiveEnd() != null) {
// 有效期为0 默认传1天,做兼容处理
Date effectiveStart = activeInfo.getEffectiveStart();
Date effectiveEnd = activeInfo.getEffectiveEnd();
Date date = new Date();
Date startDate = cn.freemud.base.util.DateUtil.addDays(date, delayTimes);
Date endDate = cn.freemud.base.util.DateUtil.addDays(date, (delayTimes + validityPeriod));
if (startDate.before(effectiveStart)) {
startDate = effectiveStart;
}
if (endDate.after(effectiveEnd)) {
endDate = effectiveEnd;
}
returnDate = endDate;
} else {
// 有效期为0 默认传1天,做兼容处理
returnDate = DateUtil.addDays(new Date(), (delayTimes + validityPeriod - 1));
}
} else {
returnDate = activeInfo.getEffectiveEndTime();
}
return returnDate;
}
} }
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