Commit 62fa82b7 authored by tangtuo's avatar tangtuo

纪念版nft页面开放游客模式

parent 43f2e6a1
......@@ -20,6 +20,7 @@ import com.fzm.common.utils.RedisUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RSemaphore;
import org.redisson.api.RedissonClient;
import org.springframework.web.bind.annotation.*;
......@@ -99,7 +100,7 @@ public class CommemorateNftController {
//@Authentication
@GetMapping("/get/{id}")
@ApiOperation(value = "纪念版nft详情页")
public ResponseModel<CommemorateNftVo> getById(@PathVariable Integer id, @RequestHeader String Authorization) {
public ResponseModel<CommemorateNftVo> getById(@PathVariable Integer id, @RequestHeader(required = false) String Authorization) {
CommemorateNft nft = commemorateNftService.getById(id);
if (nft == null) {
throw GlobalException.newException(ResultCode.DATA_ERROR, "此纪念版nft已下架");
......@@ -107,21 +108,28 @@ public class CommemorateNftController {
User user = userService.getById(nft.getUserId());
CommemorateNftVo commemorateNftVo = new CommemorateNftVo(nft, user);
commemorateNftVo.setCategory(categoryService.getById(nft.getCategoryId()).getCategoryName());
RSemaphore semaphore = redisson.getSemaphore(RedisConstant.COMMEMORATE_NFT_PREFIX + id);
int permits = semaphore.availablePermits();
commemorateNftVo.setReceiveCount(nft.getCount() - permits);
Boolean receive = redisUtil.sIsMember(RedisConstant.COMMEMORATE_NFT_MEMBERS_PREFIX + id, JwtUtil.getUserIdFromToken(Authorization).toString());
// 当前用户已领取
if (receive) {
commemorateNftVo.setStatus(0);
// 未登录状态
if (StringUtils.isBlank(Authorization) || "Bearer null".equals(Authorization)) {
commemorateNftVo.setStatus(1);
} else {
// 未领取完毕
if (commemorateNftVo.getPublishCount() > commemorateNftVo.getReceiveCount()) {
commemorateNftVo.setStatus(1);
// 已登录
RSemaphore semaphore = redisson.getSemaphore(RedisConstant.COMMEMORATE_NFT_PREFIX + id);
int permits = semaphore.availablePermits();
commemorateNftVo.setReceiveCount(nft.getCount() - permits);
Boolean receive = redisUtil.sIsMember(RedisConstant.COMMEMORATE_NFT_MEMBERS_PREFIX + id, JwtUtil.getUserIdFromToken(Authorization).toString());
// 当前用户已领取
if (receive) {
commemorateNftVo.setStatus(0);
} else {
commemorateNftVo.setStatus(2);
// 未领取完毕
if (commemorateNftVo.getPublishCount() > commemorateNftVo.getReceiveCount()) {
commemorateNftVo.setStatus(1);
} else {
commemorateNftVo.setStatus(2);
}
}
}
return ResponseModel.success(commemorateNftVo);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment