记得上下班打卡 | git大法好,push需谨慎

Commit b1b8c24f authored by jiangxiulong's avatar jiangxiulong

增加异常处理 锁; 用户订单列表redis处理位置改变

parent 86f3f53c
...@@ -119,12 +119,14 @@ public class GoblinRedisConst { ...@@ -119,12 +119,14 @@ public class GoblinRedisConst {
public static final String REDIS_GOBLIN_TEMP_COUPON = PREFIX.concat("temp:coupon:");//详情 $key:$ucouponId public static final String REDIS_GOBLIN_TEMP_COUPON = PREFIX.concat("temp:coupon:");//详情 $key:$ucouponId
/* --------------------------------NFT--------------------------------- */ /* --------------------------------NFT--------------------------------- */
public static final String REDIS_GOBLIN_NFT_ORDER_INFO = PREFIX.concat("nftOrder:");// nft订单详情 public static final String REDIS_GOBLIN_NFT_ORDER_INFO = PREFIX.concat("nftOrder:");// nft订单详情 orderId
public static final String REDIS_GOBLIN_NFT_ORDER_USER_ID_LIST = PREFIX.concat("nftOrder:idList:user:");// nft用户订单id列表 public static final String REDIS_GOBLIN_NFT_ORDER_USER_ID_LIST = PREFIX.concat("nftOrder:idList:user:");// nft用户订单id列表 userId
public static final String REDIS_GOBLIN_NFT_ORDER_REFUND_INFO = PREFIX.concat("nftOrder:refund:");// nft退款订单详情 public static final String REDIS_GOBLIN_NFT_ORDER_REFUND_INFO = PREFIX.concat("nftOrder:refund:");// nft退款订单详情 orderId
public static final String REDIS_GOBLIN_NFT_ORDER_BUG_LOCK = PREFIX.concat("nftOrder:lock:userId:");// nft购买用户锁 userId
public static final String REDIS_GOBLIN_NFT_GOODS_LIST = PREFIX.concat("nftGoodsList");// nft商品列表 public static final String REDIS_GOBLIN_NFT_GOODS_LIST = PREFIX.concat("nftGoodsList");// nft商品列表
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* SKU剩余库存 * SKU剩余库存
......
...@@ -189,11 +189,11 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin ...@@ -189,11 +189,11 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin
sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_ORDER_CLOSE.getKey(), sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_ORDER_CLOSE.getKey(),
SqlMapping.gets(sqls, sqlDataOrder)); SqlMapping.gets(sqls, sqlDataOrder));
} }
return true;
} catch (Exception e) { } catch (Exception e) {
log.error("checkNftOrderTime异常 [valueData:{}, e:{}]", orderId, e); log.error("checkNftOrderTime异常 [valueData:{}, e:{}]", orderId, e);
return false; return false;
} }
return true;
} }
private UpdateResult updateGoblinStoreOrderVo(String orderId, GoblinStoreOrderVo data) { private UpdateResult updateGoblinStoreOrderVo(String orderId, GoblinStoreOrderVo data) {
......
...@@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid; import javax.validation.Valid;
@Slf4j @Slf4j
@Api(tags = "用户NFT订单相关-App") @Api(tags = "NFT订单相关-App")
@RestController @RestController
@RequestMapping("/nftOrder") @RequestMapping("/nftOrder")
public class GoblinNftOrderAppController { public class GoblinNftOrderAppController {
......
...@@ -10,12 +10,15 @@ import com.liquidnet.service.goblin.param.GoblinNftOrderRefundCallbackParam; ...@@ -10,12 +10,15 @@ import com.liquidnet.service.goblin.param.GoblinNftOrderRefundCallbackParam;
import com.liquidnet.service.goblin.service.IGoblinNftOrderService; import com.liquidnet.service.goblin.service.IGoblinNftOrderService;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
@Api(tags = "NFT-支付相关") @Api(tags = "NFT-支付相关")
@RestController @RestController
@Validated
@RequestMapping("/goblin/nft") @RequestMapping("/goblin/nft")
public class GoblinNftOrderController { public class GoblinNftOrderController {
...@@ -25,14 +28,14 @@ public class GoblinNftOrderController { ...@@ -25,14 +28,14 @@ public class GoblinNftOrderController {
@PostMapping("pre") @PostMapping("pre")
// @ApiOperation("下单(加密)") // @ApiOperation("下单(加密)")
@ApiResponse(code = 200, message = "接口返回对象参数") @ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<GoblinNftPayResultVo> checkOrder(@RequestBody EncryptedReq<GoblinNftOrderPayParam> payParam) { public ResponseDto<GoblinNftPayResultVo> checkOrder(@RequestBody @Valid EncryptedReq<GoblinNftOrderPayParam> payParam) {
return iGoblinNftOrderService.checkOrder(payParam.getData()); return iGoblinNftOrderService.checkOrder(payParam.getData());
} }
@PostMapping("fc7bce6d6c2213b866f76493f92224b8") @PostMapping("fc7bce6d6c2213b866f76493f92224b8")
@ApiOperation("下单(非加密)") @ApiOperation("下单(非加密)")
@ApiResponse(code = 200, message = "接口返回对象参数") @ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<GoblinNftPayResultVo> checkOrder(@RequestBody GoblinNftOrderPayParam payParam) { public ResponseDto<GoblinNftPayResultVo> checkOrder(@RequestBody @Valid GoblinNftOrderPayParam payParam) {
return iGoblinNftOrderService.checkOrder(payParam); return iGoblinNftOrderService.checkOrder(payParam);
} }
...@@ -47,16 +50,16 @@ public class GoblinNftOrderController { ...@@ -47,16 +50,16 @@ public class GoblinNftOrderController {
@ApiOperation("查询订单状态") @ApiOperation("查询订单状态")
@ApiResponse(code = 200, message = "接口返回对象参数") @ApiResponse(code = 200, message = "接口返回对象参数")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "orderId", value = "订单id", example = "1"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "orderId", value = "订单ID", example = "1"),
}) })
public ResponseDto<Integer> checkOrderResult(@RequestParam("orderId") @Valid String orderId) { public ResponseDto<Integer> checkOrderResult(@RequestParam("orderId") @NotBlank(message = "订单ID不能为空") String orderId) {
return iGoblinNftOrderService.checkOrderResult(orderId); return iGoblinNftOrderService.checkOrderResult(orderId);
} }
@PostMapping("syncOrder") @PostMapping("syncOrder")
@ApiOperation("支付回调") @ApiOperation("支付回调")
@ApiResponse(code = 200, message = "接口返回对象参数") @ApiResponse(code = 200, message = "接口返回对象参数")
public String syncOrder(@ModelAttribute @Valid GoblinNftOrderPayCallbackParam syncOrderParam) { public String syncOrder(GoblinNftOrderPayCallbackParam syncOrderParam) {
return iGoblinNftOrderService.syncOrder(syncOrderParam); return iGoblinNftOrderService.syncOrder(syncOrderParam);
} }
......
...@@ -114,6 +114,18 @@ public class GoblinNftOrderUtils { ...@@ -114,6 +114,18 @@ public class GoblinNftOrderUtils {
redisUtil.set(redisKey, vo); redisUtil.set(redisKey, vo);
} }
public boolean setNftOrderBuyLock(String userId) {
String redisKey = GoblinRedisConst.REDIS_GOBLIN_NFT_ORDER_BUG_LOCK
.concat(userId);
return redisUtil.lock(redisKey, 1, 60);
}
public void delNftOrderBuyLock(String userId) {
String redisKey = GoblinRedisConst.REDIS_GOBLIN_NFT_ORDER_BUG_LOCK
.concat(userId);
redisUtil.uLock(redisKey);
}
/** /**
* 使用平台优惠券 只支持代金券 * 使用平台优惠券 只支持代金券
* *
......
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