|
@@ -17,6 +17,7 @@ import com.cyksj.dto.RedisKey;
|
|
|
import com.cyksj.dto.Result;
|
|
import com.cyksj.dto.Result;
|
|
|
import com.cyksj.enums.GatewayResponse;
|
|
import com.cyksj.enums.GatewayResponse;
|
|
|
import com.cyksj.mapper.*;
|
|
import com.cyksj.mapper.*;
|
|
|
|
|
+import com.cyksj.mapper.manage.distribute.UserDistributeSharedMapper;
|
|
|
import com.cyksj.mapper.manage.exchange.ExchangeCodeMapper;
|
|
import com.cyksj.mapper.manage.exchange.ExchangeCodeMapper;
|
|
|
import com.cyksj.mapper.market.draw.LuckyDrawRecordMapper;
|
|
import com.cyksj.mapper.market.draw.LuckyDrawRecordMapper;
|
|
|
import com.cyksj.model.entity.*;
|
|
import com.cyksj.model.entity.*;
|
|
@@ -32,6 +33,7 @@ import com.ejlchina.searcher.BeanSearcher;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
+import org.springframework.dao.DuplicateKeyException;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
@@ -83,6 +85,12 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
|
|
|
|
|
|
|
|
private final YhShopFrontService yhShopFrontService;
|
|
private final YhShopFrontService yhShopFrontService;
|
|
|
|
|
|
|
|
|
|
+ private final UserDistributeSharedMapper userDistributeSharedMapper;
|
|
|
|
|
+
|
|
|
|
|
+ private final UserDistributeExchangeCodeMapper userDistributeExchangeCodeMapper;
|
|
|
|
|
+
|
|
|
|
|
+ private final UserDistributeExchangeCodeUseRecordMapper userDistributeExchangeCodeUseRecordMapper;
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
|
public List<ExcelExchangeCodeData> createExchangeCode(ExchangeCodeReq exchangeCodeReq) {
|
|
public List<ExcelExchangeCodeData> createExchangeCode(ExchangeCodeReq exchangeCodeReq) {
|
|
@@ -135,6 +143,53 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
|
|
|
if (StrUtil.isEmpty(exchangeCodeTicket.getCode())) {
|
|
if (StrUtil.isEmpty(exchangeCodeTicket.getCode())) {
|
|
|
throw BusinessRuntimeException.getInstance("兑换码有误,请使用正确的兑换码");
|
|
throw BusinessRuntimeException.getInstance("兑换码有误,请使用正确的兑换码");
|
|
|
}
|
|
}
|
|
|
|
|
+ //是渠道兑换码
|
|
|
|
|
+ String code = exchangeCodeTicket.getCode();
|
|
|
|
|
+ UserDistributeExchangeCode userDistributeExchangeCode = userDistributeExchangeCodeMapper.selectOne(Wrappers.lambdaQuery(UserDistributeExchangeCode.class)
|
|
|
|
|
+ .eq(UserDistributeExchangeCode::getCode, code)
|
|
|
|
|
+ .last("limit 1"));
|
|
|
|
|
+ if (userDistributeExchangeCode != null) {
|
|
|
|
|
+ //是否是该渠道下的用户
|
|
|
|
|
+ Integer bindCount = userDistributeSharedMapper.selectCount(Wrappers.lambdaQuery(UserDistributeShared.class)
|
|
|
|
|
+ .eq(UserDistributeShared::getSharedId, userDistributeExchangeCode.getUserId())
|
|
|
|
|
+ .eq(UserDistributeShared::getUserId, userId));
|
|
|
|
|
+ if (bindCount == 0) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("您不是该渠道下的分销用户");
|
|
|
|
|
+ }
|
|
|
|
|
+ //是否已经兑换过
|
|
|
|
|
+ Integer useCount = userDistributeExchangeCodeUseRecordMapper.selectCount(Wrappers.lambdaQuery(UserDistributeExchangeCodeUseRecord.class)
|
|
|
|
|
+ .eq(UserDistributeExchangeCodeUseRecord::getUserId, userId)
|
|
|
|
|
+ .eq(UserDistributeExchangeCodeUseRecord::getCode, code));
|
|
|
|
|
+ if (useCount > 0) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("您已使用该兑换码");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ UserDistributeExchangeCodeUseRecord userDistributeExchangeCodeUseRecord = new UserDistributeExchangeCodeUseRecord();
|
|
|
|
|
+ userDistributeExchangeCodeUseRecord.setUserId(userId);
|
|
|
|
|
+ userDistributeExchangeCodeUseRecord.setCode(code);
|
|
|
|
|
+ userDistributeExchangeCodeUseRecordMapper.insert(userDistributeExchangeCodeUseRecord);
|
|
|
|
|
+ log.info("用户userId:{}兑换渠道兑换码:{}", userId, code);
|
|
|
|
|
+ GoodsDonSku sku = goodsDonSkuMapper.selectById(userDistributeExchangeCode.getSkuId());
|
|
|
|
|
+ GroupsRelation relation = getRelationNoOrder(sku, userId, 0l);
|
|
|
|
|
+ //重新设置时间
|
|
|
|
|
+ DateField dateField = DateField.MONTH;
|
|
|
|
|
+ if (Constant.DAY_DATE.equals(userDistributeExchangeCode.getTimeType())) {
|
|
|
|
|
+ dateField = DateField.DAY_OF_YEAR;
|
|
|
|
|
+ } else if (Constant.HOUR_DAY_OF_DATE.equals(userDistributeExchangeCode.getTimeType())) {
|
|
|
|
|
+ dateField = DateField.HOUR_OF_DAY;
|
|
|
|
|
+ }
|
|
|
|
|
+ relation.setAqType(2);
|
|
|
|
|
+ relation.setExpiryTime(DateUtil.offset(relation.getStartTime(), dateField, userDistributeExchangeCode.getTime()));
|
|
|
|
|
+ groupsRelationMapper.updateById(relation);
|
|
|
|
|
+
|
|
|
|
|
+ userDistributeExchangeCodeUseRecord.setRelationId(relation.getId());
|
|
|
|
|
+ userDistributeExchangeCodeUseRecordMapper.updateById(userDistributeExchangeCodeUseRecord);
|
|
|
|
|
+ } catch (DuplicateKeyException e) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("您已使用该兑换码");
|
|
|
|
|
+ }
|
|
|
|
|
+ return GatewayResponse.SUCCESS.newBuilder().toResult();
|
|
|
|
|
+ }
|
|
|
ExchangeCode exchangeCode = this.getOne(Wrappers.lambdaQuery(ExchangeCode.class).eq(ExchangeCode::getCode, exchangeCodeTicket.getCode()).last("limit 1"));
|
|
ExchangeCode exchangeCode = this.getOne(Wrappers.lambdaQuery(ExchangeCode.class).eq(ExchangeCode::getCode, exchangeCodeTicket.getCode()).last("limit 1"));
|
|
|
if (exchangeCode == null) {
|
|
if (exchangeCode == null) {
|
|
|
throw BusinessRuntimeException.getInstance("兑换码有误,请使用正确的兑换码");
|
|
throw BusinessRuntimeException.getInstance("兑换码有误,请使用正确的兑换码");
|