|
|
@@ -11,11 +11,13 @@ import com.cyksj.common.constant.Constant;
|
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
|
import com.cyksj.common.snowflake.Sequence;
|
|
|
import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
|
|
|
+import com.cyksj.common.util.Jsons;
|
|
|
import com.cyksj.common.util.StringUtil;
|
|
|
import com.cyksj.dto.RedisKey;
|
|
|
import com.cyksj.dto.Result;
|
|
|
import com.cyksj.enums.GatewayResponse;
|
|
|
import com.cyksj.mapper.*;
|
|
|
+import com.cyksj.mapper.channel.ChannelPopularizeMapper;
|
|
|
import com.cyksj.mapper.manage.exchange.ExchangeCodeMapper;
|
|
|
import com.cyksj.mapper.market.draw.LuckyDrawRecordMapper;
|
|
|
import com.cyksj.model.entity.*;
|
|
|
@@ -81,6 +83,10 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
|
|
|
|
|
|
private final GroupRelationFrontService groupRelationFrontService;
|
|
|
|
|
|
+ private final ChannelPopularizeMapper channelPopularizeMapper;
|
|
|
+
|
|
|
+ private final OrderDiscountPlusPurchaseSkuRelationMapper orderDiscountPlusPurchaseSkuRelationMapper;
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
|
public List<ExcelExchangeCodeData> createExchangeCode(ExchangeCodeReq exchangeCodeReq) {
|
|
|
@@ -153,6 +159,22 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
|
|
|
.eq(OrderDon::getExCode, exchangeCode.getCode())
|
|
|
.notIn(OrderDon::getStatus, Constant.noOrderStatus)
|
|
|
.last("limit 1"));
|
|
|
+ Long popularizeId = orderDon.getPopularizeId();
|
|
|
+
|
|
|
+ //360 渠道兑换规则验证.
|
|
|
+ if(popularizeId != null && popularizeId != 0){
|
|
|
+ String channel = channelPopularizeMapper.selectChannelByPid(popularizeId);
|
|
|
+ if (Constant.CHANNEL_NAME_360.equals(channel)) {
|
|
|
+ //查询该用户之前是否存在订单.
|
|
|
+ Integer count = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
|
|
|
+ .eq(OrderDon::getUserId, userId)
|
|
|
+ .notIn(OrderDon::getStatus, Constant.noOrderStatus));
|
|
|
+ if (count > 0) {
|
|
|
+ throw new BusinessRuntimeException("您不符合360活动条件.");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (orderDon != null && orderDon.getStatus() == OrderDon.Status.refund) {
|
|
|
throw BusinessRuntimeException.getInstance("您的订单已退款,无法使用该兑换码");
|
|
|
}
|
|
|
@@ -237,6 +259,37 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
|
|
|
orderDon.setUserId(userId);
|
|
|
orderDon.setStatus(goodsDon.getType() == 1 && goodsDon.getSecondType() == 2 ? OrderDon.Status.complete : OrderDon.Status.hasPayment);
|
|
|
orderDonMapper.updateById(orderDon);
|
|
|
+ if (orderDon.getIsDp()) {
|
|
|
+ //是否已经发送优惠加购车票
|
|
|
+ OrderDiscountPlusPurchaseSkuRelation purchaseSkuRelation = orderDiscountPlusPurchaseSkuRelationMapper.selectOne(Wrappers.lambdaQuery(OrderDiscountPlusPurchaseSkuRelation.class)
|
|
|
+ .eq(OrderDiscountPlusPurchaseSkuRelation::getOrderId, orderDon.getId()));
|
|
|
+ if (purchaseSkuRelation != null) {
|
|
|
+ String plusSkuIdsStr = purchaseSkuRelation.getPlusSkuIds();
|
|
|
+ String relationIdsStr = purchaseSkuRelation.getRelationIds();
|
|
|
+ if (StrUtil.isNotEmpty(plusSkuIdsStr) && StrUtil.isEmpty(relationIdsStr)) {
|
|
|
+ try {
|
|
|
+ List<Long> plusSkuIds = Jsons.parseList(plusSkuIdsStr, Long.class);
|
|
|
+ //发送优惠加购 规格车票
|
|
|
+ List<Long> dis_relation_ids = new ArrayList<>();
|
|
|
+ plusSkuIds.forEach(plus_skuId -> {
|
|
|
+ GoodsDonSku plus_sku = goodsDonSkuMapper.selectById(plus_skuId);
|
|
|
+ if (plus_sku == null) {
|
|
|
+ log.error("订单id:{}优惠加购规格已被删除 skuId:{},车票未发送", orderDon.getId(), plus_skuId);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ GroupsRelation relationNoOrder = getRelationNoOrder(plus_sku, orderDon.getUserId());
|
|
|
+ dis_relation_ids.add(relationNoOrder.getId());
|
|
|
+ });
|
|
|
+ //保存订单关联优惠加购车票
|
|
|
+ orderDiscountPlusPurchaseSkuRelationMapper.update(null, Wrappers.lambdaUpdate(OrderDiscountPlusPurchaseSkuRelation.class)
|
|
|
+ .set(OrderDiscountPlusPurchaseSkuRelation::getRelationIds, dis_relation_ids.toString())
|
|
|
+ .eq(OrderDiscountPlusPurchaseSkuRelation::getOrderId, orderDon.getId())
|
|
|
+ .isNull(OrderDiscountPlusPurchaseSkuRelation::getRelationIds));
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
} else {
|
|
|
/* 生成订单 */
|
|
|
String donNo = SEQUENCE.nextId().toString();
|