|
|
@@ -76,7 +76,7 @@ public class UserRealOrderBenefitsImpl implements UserRealOrderBenefitsService {
|
|
|
groupsRelationMapper.update(null, Wrappers.lambdaUpdate(GroupsRelation.class)
|
|
|
.set(GroupsRelation::getExpiryTime, expiryTime)
|
|
|
.eq(GroupsRelation::getId, relation.getId()));
|
|
|
- saveReceiveBenefitsRecord(userId, skuId, orderId, relation.getOrderId(), relation.getId(), sku.getMonths(), 1);
|
|
|
+ saveReceiveBenefitsRecord(userId, skuId, orderId, relation.getOrderId(), relation.getId(), sku.getMonths(), sku.getDays(), 1);
|
|
|
} else if (relationViewList.size() == 1) {
|
|
|
//若有且只有一张增加时长
|
|
|
GroupsRelationView groupsRelationView = relationViewList.get(0);
|
|
|
@@ -91,7 +91,7 @@ public class UserRealOrderBenefitsImpl implements UserRealOrderBenefitsService {
|
|
|
.eq(GroupsRelation::getUserId, userId)
|
|
|
.set(GroupsRelation::getExpiryTime, updateExpiryTime));
|
|
|
groupsRelationView.setUpdateExpiryTime(updateExpiryTime);
|
|
|
- saveReceiveBenefitsRecord(userId, skuId, orderId, null, groupsRelationView.getId(), sku.getMonths(), 1);
|
|
|
+ saveReceiveBenefitsRecord(userId, skuId, orderId, null, groupsRelationView.getId(), sku.getMonths(), sku.getDays(), 1);
|
|
|
} else {
|
|
|
//若有该规格多张车票,保存可获取的车票权益 以供用户自行选择
|
|
|
saveAvailableBenefits(userId, skuId, orderId);
|
|
|
@@ -110,7 +110,7 @@ public class UserRealOrderBenefitsImpl implements UserRealOrderBenefitsService {
|
|
|
.eq(UserPayEquipmentReceiveBenefitsRecord::getRealOrderId, orderId))).orElse(new ArrayList<>());
|
|
|
benefitsRecords.forEach(benefitsRecord -> {
|
|
|
//扣除领取的权益
|
|
|
- deductReceivedBenefits(benefitsRecord.getUserId(), benefitsRecord.getTicketOrderId(), benefitsRecord.getRelationId(), benefitsRecord.getMonths());
|
|
|
+ deductReceivedBenefits(benefitsRecord.getUserId(), benefitsRecord.getTicketOrderId(), benefitsRecord.getRelationId(), benefitsRecord.getMonths(), benefitsRecord.getDays());
|
|
|
benefitsRecord.setStatusCode(0);
|
|
|
receiveBenefitsRecordMapper.updateById(benefitsRecord);
|
|
|
});
|
|
|
@@ -162,7 +162,12 @@ public class UserRealOrderBenefitsImpl implements UserRealOrderBenefitsService {
|
|
|
if (update != 1) {
|
|
|
throw BusinessRuntimeException.getInstance("系统错误,请刷新页面重试");
|
|
|
}
|
|
|
- DateTime updateExpiryTime = DateUtil.offset(expiryTime, DateField.MONTH, goodsDonSku.getMonths());
|
|
|
+ DateTime updateExpiryTime;
|
|
|
+ if (goodsDonSku.getDays() != null && goodsDonSku.getDays() > 0) {
|
|
|
+ updateExpiryTime = DateUtil.offsetDay(expiryTime, goodsDonSku.getDays());
|
|
|
+ } else {
|
|
|
+ updateExpiryTime = DateUtil.offset(expiryTime, DateField.MONTH, goodsDonSku.getMonths());
|
|
|
+ }
|
|
|
updateExpiryTime = DateUtil.offsetDay(updateExpiryTime, 3);
|
|
|
groupsRelationMapper.update(null, Wrappers.lambdaUpdate(GroupsRelation.class)
|
|
|
.eq(GroupsRelation::getId, groupsRelationView.getId())
|
|
|
@@ -170,7 +175,7 @@ public class UserRealOrderBenefitsImpl implements UserRealOrderBenefitsService {
|
|
|
.set(GroupsRelation::getExpiryTime, updateExpiryTime));
|
|
|
groupsRelationView.setUpdateExpiryTime(updateExpiryTime);
|
|
|
//保存领取权益
|
|
|
- saveReceiveBenefitsRecord(userId, skuId, availableBenefits.getRealOrderId(), null, relationId, goodsDonSku.getMonths(), 1);
|
|
|
+ saveReceiveBenefitsRecord(userId, skuId, availableBenefits.getRealOrderId(), null, relationId, goodsDonSku.getMonths(), goodsDonSku.getDays(), 1);
|
|
|
}, () -> {
|
|
|
throw BusinessRuntimeException.getInstance("对应规格车票不存在");
|
|
|
});
|
|
|
@@ -199,13 +204,14 @@ public class UserRealOrderBenefitsImpl implements UserRealOrderBenefitsService {
|
|
|
/**
|
|
|
* 保存获取权益记录
|
|
|
*/
|
|
|
- private void saveReceiveBenefitsRecord(Long userId, Long skuId, Long realOrderId, Long ticketOrderId, Long relationId, Integer months, Integer statusCode) {
|
|
|
+ private void saveReceiveBenefitsRecord(Long userId, Long skuId, Long realOrderId, Long ticketOrderId, Long relationId, Integer months, Integer days, Integer statusCode) {
|
|
|
UserPayEquipmentReceiveBenefitsRecord userPayEquipmentReceiveBenefitsRecord = new UserPayEquipmentReceiveBenefitsRecord()
|
|
|
.setUserId(userId)
|
|
|
.setSkuId(skuId)
|
|
|
.setRealOrderId(realOrderId)
|
|
|
.setTicketOrderId(ticketOrderId)
|
|
|
.setRelationId(relationId)
|
|
|
+ .setDays(days)
|
|
|
.setMonths(months)
|
|
|
.setStatusCode(statusCode);
|
|
|
receiveBenefitsRecordMapper.insert(userPayEquipmentReceiveBenefitsRecord);
|
|
|
@@ -226,7 +232,7 @@ public class UserRealOrderBenefitsImpl implements UserRealOrderBenefitsService {
|
|
|
/**
|
|
|
* 扣除用户领取的权益
|
|
|
*/
|
|
|
- private void deductReceivedBenefits(Long userId, Long ticketOrderId, Long relationId, Integer months) {
|
|
|
+ private void deductReceivedBenefits(Long userId, Long ticketOrderId, Long relationId, Integer months, Integer days) {
|
|
|
GroupsRelation relation = groupsRelationMapper.selectOne(Wrappers.lambdaQuery(GroupsRelation.class)
|
|
|
.eq(GroupsRelation::getUserId, userId)
|
|
|
.eq(GroupsRelation::getId, relationId)
|
|
|
@@ -241,7 +247,12 @@ public class UserRealOrderBenefitsImpl implements UserRealOrderBenefitsService {
|
|
|
groupRelationClearService.clearTicket(relation, UserTicketClearedRecord.Source.pay_equipment);
|
|
|
} else {
|
|
|
DateTime now = DateTime.now();
|
|
|
- Date finalDate = DateUtil.offset(expiryTime, DateField.MONTH, -months);
|
|
|
+ Date finalDate;
|
|
|
+ if (days != null && days > 0) {
|
|
|
+ finalDate = DateUtil.offsetDay(expiryTime, -days);
|
|
|
+ } else {
|
|
|
+ finalDate = DateUtil.offset(expiryTime, DateField.MONTH, -months);
|
|
|
+ }
|
|
|
finalDate = DateUtil.offsetDay(finalDate, -3);
|
|
|
if (now.isAfter(finalDate)) {
|
|
|
//过期 直接清除车票
|