| | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yami.trading.api.dto.OpenAction; |
| | | import com.yami.trading.bean.ico.domain.Ico; |
| | | import com.yami.trading.bean.ico.domain.UserSubscriptionRecord; |
| | | import com.yami.trading.bean.ico.domain.UserSubscription; |
| | | import com.yami.trading.bean.item.query.ItemQuery; |
| | | import com.yami.trading.common.domain.Result; |
| | | import com.yami.trading.common.exception.YamiShopBindException; |
| | |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.redisson.api.RLock; |
| | | import org.redisson.api.RedissonClient; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.validation.Valid; |
| | | import java.io.IOException; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | @RestController |
| | |
| | | @ApiOperation(value = "新币申购") |
| | | @PostMapping("subscribe") |
| | | @ResponseBody |
| | | public Result<String> subscribe(@Valid UserSubscriptionRecord model) throws IOException, InterruptedException { |
| | | public Result<String> subscribe(@Valid UserSubscription model) { |
| | | String partyId = SecurityUtils.getUser().getUserId(); |
| | | if (StringUtils.isEmpty(partyId)) { |
| | | throw new YamiShopBindException("请重新登录"); |
| | | } |
| | | RLock rLock = redissonClient.getLock("subscribe" + partyId); |
| | | boolean lockAcquired = false; |
| | | try { |
| | |
| | | log.warn("无法获取锁: subscribe{}", partyId); |
| | | throw new YamiShopBindException("请稍后再试"); |
| | | } |
| | | subscribe(model); |
| | | model.setUserId(partyId); |
| | | icoService.subscribe(model); |
| | | } catch (YamiShopBindException e) { |
| | | log.error("错误信息: {}", e.getMessage(), e); |
| | | throw e; // 重新抛出自定义异常 |