|
@@ -7,9 +7,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
|
import com.cyksj.mapper.GoodsDonSkuMapper;
|
|
import com.cyksj.mapper.GoodsDonSkuMapper;
|
|
|
import com.cyksj.mapper.GroupsRelationMapper;
|
|
import com.cyksj.mapper.GroupsRelationMapper;
|
|
|
-import com.cyksj.model.entity.GoodsDonSku;
|
|
|
|
|
-import com.cyksj.model.entity.GroupsRelation;
|
|
|
|
|
-import com.cyksj.model.entity.OrderDon;
|
|
|
|
|
|
|
+import com.cyksj.mapper.manage.distribute.equipment.EquipmentUserChanceMapper;
|
|
|
|
|
+import com.cyksj.mapper.manage.distribute.equipment.EquipmentUserReceiveBenefitsRecordMapper;
|
|
|
|
|
+import com.cyksj.model.entity.*;
|
|
|
import com.cyksj.model.manage.views.GroupsRelationView;
|
|
import com.cyksj.model.manage.views.GroupsRelationView;
|
|
|
import com.cyksj.service.distribute.equipment.EquipmentDistributeFrontService;
|
|
import com.cyksj.service.distribute.equipment.EquipmentDistributeFrontService;
|
|
|
import com.cyksj.service.exchange.ExchangeCodeService;
|
|
import com.cyksj.service.exchange.ExchangeCodeService;
|
|
@@ -39,8 +39,24 @@ public class EquipmentDistributeFrontServiceImpl implements EquipmentDistributeF
|
|
|
|
|
|
|
|
private final GoodsDonSkuMapper goodsDonSkuMapper;
|
|
private final GoodsDonSkuMapper goodsDonSkuMapper;
|
|
|
|
|
|
|
|
|
|
+ private final EquipmentUserChanceMapper equipmentUserChanceMapper;
|
|
|
|
|
+
|
|
|
|
|
+ private final EquipmentUserReceiveBenefitsRecordMapper equipmentUserReceiveBenefitsRecordMapper;
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public GroupsRelationView useBenefits(Long userId, Long skuId) {
|
|
public GroupsRelationView useBenefits(Long userId, Long skuId) {
|
|
|
|
|
+ //减少获取权益机会
|
|
|
|
|
+ EquipmentUserChance chance = equipmentUserChanceMapper.selectOne(Wrappers.lambdaQuery(EquipmentUserChance.class)
|
|
|
|
|
+ .eq(EquipmentUserChance::getUserId, userId).last("limit 1"));
|
|
|
|
|
+ if (chance == null || chance.getNum() <= 0) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("可领取次数为0");
|
|
|
|
|
+ }
|
|
|
|
|
+ Integer num = chance.getNum();
|
|
|
|
|
+ Integer update = equipmentUserChanceMapper.subUserChanceNoRepeat(userId, num);
|
|
|
|
|
+ if (update != 1) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("操作频繁,请刷新页面后重试");
|
|
|
|
|
+ }
|
|
|
|
|
+ Long relationId = null;
|
|
|
GroupsRelationView groupsRelationView = beanSearcher.searchFirst(GroupsRelationView.class, MapUtils.builder()
|
|
GroupsRelationView groupsRelationView = beanSearcher.searchFirst(GroupsRelationView.class, MapUtils.builder()
|
|
|
.field(GroupsRelationView::getSkuId, skuId)
|
|
.field(GroupsRelationView::getSkuId, skuId)
|
|
|
.orderBy(GroupsRelationView::getExpiryTime).asc()
|
|
.orderBy(GroupsRelationView::getExpiryTime).asc()
|
|
@@ -49,8 +65,9 @@ public class EquipmentDistributeFrontServiceImpl implements EquipmentDistributeF
|
|
|
GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(skuId);
|
|
GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(skuId);
|
|
|
if (groupsRelationView == null) {
|
|
if (groupsRelationView == null) {
|
|
|
//领取权益时,没有车票的用户自动上车,获得对应车票
|
|
//领取权益时,没有车票的用户自动上车,获得对应车票
|
|
|
- exchangeCodeService.getGroupTripsTicket(goodsDonSku, userId, null, OrderDon.Type.EQUIPMENT);
|
|
|
|
|
- }else {
|
|
|
|
|
|
|
+ GroupsRelation relation = exchangeCodeService.getGroupTripsTicket(goodsDonSku, userId, null, OrderDon.Type.EQUIPMENT);
|
|
|
|
|
+ relationId = relation.getId();
|
|
|
|
|
+ } else {
|
|
|
Date expiryTime = groupsRelationView.getExpiryTime();
|
|
Date expiryTime = groupsRelationView.getExpiryTime();
|
|
|
if (expiryTime == null) {
|
|
if (expiryTime == null) {
|
|
|
throw BusinessRuntimeException.getInstance("该车位暂未发车,请发车后再领取权益");
|
|
throw BusinessRuntimeException.getInstance("该车位暂未发车,请发车后再领取权益");
|
|
@@ -61,7 +78,21 @@ public class EquipmentDistributeFrontServiceImpl implements EquipmentDistributeF
|
|
|
.eq(GroupsRelation::getUserId, userId)
|
|
.eq(GroupsRelation::getUserId, userId)
|
|
|
.set(GroupsRelation::getExpiryTime, updateExpiryTime));
|
|
.set(GroupsRelation::getExpiryTime, updateExpiryTime));
|
|
|
groupsRelationView.setUpdateExpiryTime(updateExpiryTime);
|
|
groupsRelationView.setUpdateExpiryTime(updateExpiryTime);
|
|
|
|
|
+ relationId = groupsRelationView.getId();
|
|
|
}
|
|
}
|
|
|
|
|
+ //记录领取记录
|
|
|
|
|
+ saveReceiveBenefitsRecord(userId, skuId, goodsDonSku.getMonths(), relationId, null, 1);
|
|
|
return groupsRelationView;
|
|
return groupsRelationView;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ public void saveReceiveBenefitsRecord(Long userId, Long skuId, Integer num, Long relationId, Long orderId, Integer statusCode) {
|
|
|
|
|
+ EquipmentUserReceiveBenefitsRecord record = new EquipmentUserReceiveBenefitsRecord();
|
|
|
|
|
+ record.setUserId(userId);
|
|
|
|
|
+ record.setSkuId(skuId);
|
|
|
|
|
+ record.setNum(num);
|
|
|
|
|
+ record.setOrderId(orderId);
|
|
|
|
|
+ record.setRelationId(relationId);
|
|
|
|
|
+ record.setStatusCode(statusCode);
|
|
|
|
|
+ equipmentUserReceiveBenefitsRecordMapper.insert(record);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|