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

Commit d19324c8 authored by anjiabin's avatar anjiabin

Merge branch 'dev_nft_411' of...

Merge branch 'dev_nft_411' of http://gitlab.zhengzai.tv/dongjingwei/liquidnet-bus-v1 into dev_nft_411
parents 2b1805b3 3cc6143e
...@@ -32,6 +32,11 @@ public class GoblinGoodsAnticipateParam{ ...@@ -32,6 +32,11 @@ public class GoblinGoodsAnticipateParam{
/** /**
* 预约名称 * 预约名称
*/ */
@ApiModelProperty("预约名称")
private String name; private String name;
} }
...@@ -130,23 +130,16 @@ public class ConsumerGoblinBizArtworkGenRdsReceiver extends AbstractBizRedisRece ...@@ -130,23 +130,16 @@ public class ConsumerGoblinBizArtworkGenRdsReceiver extends AbstractBizRedisRece
.getUpdateObject() .getUpdateObject()
); );
} }
} else {
redisUtil.incr(GoblinRedisConst.USER_DIGITAL_ARTWORK_CT.concat(uid), 1);
} }
// Redis记录VO // Redis记录VO
redisUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK.concat(digitalArtworkVo.getArtworkId()), digitalArtworkVo); redisUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK.concat(digitalArtworkVo.getArtworkId()), digitalArtworkVo);
// Redis更新藏品ID列表 // Redis更新藏品ID列表
List<String> userDigitalArtworkIds = this.getUserDigitalArtworkIdsFromRdb(uid); this.addGoblinUserDigitalArtworkIds(uid, artworkId);
if (CollectionUtils.isEmpty(userDigitalArtworkIds)) { // Redis生成标记(缓存三天),用于上面的生成检查
userDigitalArtworkIds = CollectionUtil.arrayListString(); redisUtil.set(genMarkerKey, 1, 259200);
userDigitalArtworkIds.add(artworkId);
} else {
userDigitalArtworkIds.add(0, artworkId);
if (fromBoxArtworkFlg) {
userDigitalArtworkIds.remove(fromArtworkId);
}
int size = userDigitalArtworkIds.size();
if (size > 30) userDigitalArtworkIds.remove(size - 1);
}
redisUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK_IDS.concat(uid), userDigitalArtworkIds);
StreamOperations<String, Object, Object> streamOperations = stringRedisTemplate.opsForStream(); StreamOperations<String, Object, Object> streamOperations = stringRedisTemplate.opsForStream();
// Mysql持久化 // Mysql持久化
HashMap<String, String> sqlArtworkMap = CollectionUtil.mapStringString(); HashMap<String, String> sqlArtworkMap = CollectionUtil.mapStringString();
...@@ -163,12 +156,6 @@ public class ConsumerGoblinBizArtworkGenRdsReceiver extends AbstractBizRedisRece ...@@ -163,12 +156,6 @@ public class ConsumerGoblinBizArtworkGenRdsReceiver extends AbstractBizRedisRece
.put("skuId", skuId).put("userId", uid).put("buyTimestamp", DateUtil.Formatter.yyyyMMddHHmmss.format(now)); .put("skuId", skuId).put("userId", uid).put("buyTimestamp", DateUtil.Formatter.yyyyMMddHHmmss.format(now));
bizNftBuyMap.put("message", bizNftBuyNode.toString()); bizNftBuyMap.put("message", bizNftBuyNode.toString());
streamOperations.add(StreamRecords.mapBacked(bizNftBuyMap).withStreamKey(MQConst.GalaxyQueue.JSON_NFT_PUBLISH_AND_BUY.getKey())); streamOperations.add(StreamRecords.mapBacked(bizNftBuyMap).withStreamKey(MQConst.GalaxyQueue.JSON_NFT_PUBLISH_AND_BUY.getKey()));
if (!fromBoxArtworkFlg) {
redisUtil.incr(GoblinRedisConst.USER_DIGITAL_ARTWORK_CT.concat(uid), 1);
}
// Redis生成标记(缓存三天),用于上面的生成检查
redisUtil.set(genMarkerKey, 1, 259200);
return true; return true;
} }
...@@ -198,6 +185,22 @@ public class ConsumerGoblinBizArtworkGenRdsReceiver extends AbstractBizRedisRece ...@@ -198,6 +185,22 @@ public class ConsumerGoblinBizArtworkGenRdsReceiver extends AbstractBizRedisRece
return (List<String>) redisUtil.get(GoblinRedisConst.USER_DIGITAL_ARTWORK_IDS.concat(uid)); return (List<String>) redisUtil.get(GoblinRedisConst.USER_DIGITAL_ARTWORK_IDS.concat(uid));
} }
/**
* 缓存并更新用户藏品ID集合
*/
public boolean addGoblinUserDigitalArtworkIds(String uid, String artworkId) {
List<String> ids = this.getUserDigitalArtworkIdsFromRdb(uid);
if (CollectionUtils.isEmpty(ids)) {
ids = CollectionUtil.arrayListString();
ids.add(artworkId);
} else {
ids.add(0, artworkId);
int size = ids.size();
if (size > 30) ids.remove(size - 1);
}
return redisUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK_IDS.concat(uid), ids);
}
public GoblinGoodsSkuInfoVo getGoodsSkuInfoVoFromRdb(String skuId) { public GoblinGoodsSkuInfoVo getGoodsSkuInfoVoFromRdb(String skuId) {
String rk = GoblinRedisConst.BASIC_GOODS_SKU.concat(skuId); String rk = GoblinRedisConst.BASIC_GOODS_SKU.concat(skuId);
GoblinGoodsSkuInfoVo vo = (GoblinGoodsSkuInfoVo) redisUtil.get(rk); GoblinGoodsSkuInfoVo vo = (GoblinGoodsSkuInfoVo) redisUtil.get(rk);
......
...@@ -456,6 +456,7 @@ public class GoblinFrontServiceImpl implements GoblinFrontService { ...@@ -456,6 +456,7 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
Pattern pattern = Pattern.compile("^.*"+name+".*$", Pattern.CASE_INSENSITIVE); Pattern pattern = Pattern.compile("^.*"+name+".*$", Pattern.CASE_INSENSITIVE);
Query query = new Query(); Query query = new Query();
query.addCriteria(new Criteria().orOperator( query.addCriteria(new Criteria().orOperator(
Criteria.where("spuType").is(0),
Criteria.where("name").regex(pattern), Criteria.where("name").regex(pattern),
Criteria.where("storeId").in(listStore), Criteria.where("storeId").in(listStore),
Criteria.where("extagVoList.tagName").is(name) Criteria.where("extagVoList.tagName").is(name)
......
...@@ -113,7 +113,8 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS ...@@ -113,7 +113,8 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
//mongodb新增 //mongodb新增
goblinMongoUtils.setGoblinGoodsAnticipateVo(goodsAnticipateVo); goblinMongoUtils.setGoblinGoodsAnticipateVo(goodsAnticipateVo);
return ResponseDto.success(); //返回预约id
return ResponseDto.success(antId);
} }
return ResponseDto.failure("参数有误"); return ResponseDto.failure("参数有误");
} }
...@@ -210,7 +211,7 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS ...@@ -210,7 +211,7 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
public ResponseDto<Object> addAnticipateValues(List<GoblinGoodsAnticipateValueParam> list) { public ResponseDto<Object> addAnticipateValues(List<GoblinGoodsAnticipateValueParam> list) {
if (list != null && list.size() > 0) { if (list != null && list.size() > 0) {
for (GoblinGoodsAnticipateValueParam vo : list) { for (GoblinGoodsAnticipateValueParam vo : list) {
if (goblinRedisUtils.getAnticipate(vo.getAntId(), vo.getSkuId())) if (goblinRedisUtils.getAnticipate(vo.getSkuId()))
return ResponseDto.failure("该预约已选择该sku"); return ResponseDto.failure("该预约已选择该sku");
} }
list.forEach(item -> { list.forEach(item -> {
...@@ -221,7 +222,7 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS ...@@ -221,7 +222,7 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
goodsAnticipateValueVo.setDelTag(0); goodsAnticipateValueVo.setDelTag(0);
//redis消息 //redis消息
//redis标识存入该sku处于预约列表 //redis标识存入该sku处于预约列表
goblinRedisUtils.setAnticipateValue(goodsAnticipateValueVo.getAntId(), goodsAnticipateValueVo.getSkuId()); goblinRedisUtils.setAnticipateValue(goodsAnticipateValueVo.getSkuId());
//保存mysql中间表 //保存mysql中间表
LinkedList<Object[]> sqlValue = CollectionUtil.linkedListObjectArr(); LinkedList<Object[]> sqlValue = CollectionUtil.linkedListObjectArr();
...@@ -257,13 +258,13 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS ...@@ -257,13 +258,13 @@ public class GoblinGoodsAnticipateServiceImpl implements IGoblinGoodsAnticipateS
//删除该sku关联 //删除该sku关联
goblinMongoUtils.delAnticipateValueVo(goodsAnticipateValueVo); goblinMongoUtils.delAnticipateValueVo(goodsAnticipateValueVo);
//删除redis //删除redis
goblinRedisUtils.delAnticipateValue(goodsAnticipateValueVo.getAntId(), goodsAnticipateValueVo.getSkuId()); goblinRedisUtils.delAnticipateValue(goodsAnticipateValueVo.getSkuId());
//删除mysql中的关联数据 //删除mysql中的关联数据
sqlValue.add(new Object[]{ sqlValue.add(new Object[]{
goodsAnticipateValueVo.getAntId(), goodsAnticipateValueVo.getAntId(),
goodsAnticipateValueVo.getSkuId() goodsAnticipateValueVo.getSkuId()
}); });
sendRedis("goblin_goods_anticipate_value_delete_by_antId_and_skuId",sqlValue); sendRedis("goblin_goods_anticipate_value_delete_by_antId_and_skuId", sqlValue);
} else { } else {
//保存mysql中间表 //保存mysql中间表
sqlValue.add(new Object[]{ sqlValue.add(new Object[]{
......
...@@ -164,6 +164,13 @@ public class GoblinMongoUtils { ...@@ -164,6 +164,13 @@ public class GoblinMongoUtils {
*/ */
public void delAnticipateValues(String antId){ public void delAnticipateValues(String antId){
Query query = Query.query(Criteria.where("antId").is(antId)); Query query = Query.query(Criteria.where("antId").is(antId));
//查询处所有的sku关联信息
List<GoblinGoodsAnticipateValueVo> goodsAnticipateValues = getGoodsAnticipateValues(antId);
if (goodsAnticipateValues != null && goodsAnticipateValues.size()>0){
goodsAnticipateValues.forEach(item -> {
redisUtils.delAnticipateValue(item.getSkuId());
});
}
mongoTemplate.remove(query, GoblinGoodsAnticipateValueVo.class.getSimpleName()).getDeletedCount(); mongoTemplate.remove(query, GoblinGoodsAnticipateValueVo.class.getSimpleName()).getDeletedCount();
} }
......
...@@ -47,15 +47,15 @@ public class GoblinRedisUtils { ...@@ -47,15 +47,15 @@ public class GoblinRedisUtils {
/** /**
* 该skuId已开启预约 * 该skuId已开启预约
*/ */
public void setAnticipateValue(String antId, String skuId){ public void setAnticipateValue(String skuId){
redisUtil.set(GoblinRedisConst.ANTICIPATE_SKUID.concat(antId).concat(skuId),1); redisUtil.set(GoblinRedisConst.ANTICIPATE_SKUID.concat(skuId),1);
} }
/** /**
* 删除skuId已开启预约 * 删除skuId已开启预约
*/ */
public void delAnticipateValue(String antId, String skuId){ public void delAnticipateValue(String skuId){
redisUtil.del(GoblinRedisConst.ANTICIPATE_SKUID.concat(antId).concat(skuId)); redisUtil.del(GoblinRedisConst.ANTICIPATE_SKUID.concat(skuId));
} }
...@@ -63,8 +63,8 @@ public class GoblinRedisUtils { ...@@ -63,8 +63,8 @@ public class GoblinRedisUtils {
/** /**
* 获取关联 * 获取关联
*/ */
public boolean getAnticipate(String antId, String skuId){ public boolean getAnticipate(String skuId){
return redisUtil.get(GoblinRedisConst.ANTICIPATE_SKUID.concat(antId).concat(skuId)) != null; return redisUtil.get(GoblinRedisConst.ANTICIPATE_SKUID.concat(skuId)) != null;
} }
public GoblinGoodAnticipateUserVo getUserAboutAut(String skuId, String uid) { public GoblinGoodAnticipateUserVo getUserAboutAut(String skuId, String uid) {
......
...@@ -73,23 +73,15 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService { ...@@ -73,23 +73,15 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
String skuId = payParam.getSkuId(); String skuId = payParam.getSkuId();
int number = 1; int number = 1;
GoblinGoodsSkuInfoVo skuVo = goblinRedisUtils.getGoodsSkuInfoVo(skuId); GoblinGoodsSkuInfoVo skuVo = goblinRedisUtils.getGoodsSkuInfoVo(skuId);
if (null == skuVo || (null != skuVo.getSkuAppear() && skuVo.getSkuAppear().equals("1"))) { if (!nftOrderUtils.getSkuAllStatusShow(skuVo)) {
return ResponseDto.failure("该商品不存在~"); return ResponseDto.failure("该商品不存在~");
} }
String spuId = skuVo.getSpuId();
// 判断是否藏品 // 单独设置的是否可购买
if (!Objects.equals(1, skuVo.getSkuType())) { if (null != skuVo.getSkuCanbuy() && skuVo.getSkuCanbuy().equals("0")) {
return ResponseDto.failure("该商品不属于藏品~");
}
// 3审核通过 3已上架 0未删除 才可购买
if (
!skuVo.getStatus().equals("3") || !skuVo.getShelvesStatus().equals("3") ||
skuVo.getDelFlg().equals("1") || (null != skuVo.getSkuCanbuy() && skuVo.getSkuCanbuy().equals("0"))
) {
return ResponseDto.failure("该商品当前状态不可购买~"); return ResponseDto.failure("该商品当前状态不可购买~");
} }
// 主动设置的售罄 // 单独设置的售罄
if (null != skuVo.getSoldoutStatus() && skuVo.getSoldoutStatus().equals(1)) { if (null != skuVo.getSoldoutStatus() && skuVo.getSoldoutStatus().equals(1)) {
return ResponseDto.failure("该商品已售罄~"); return ResponseDto.failure("该商品已售罄~");
} }
...@@ -113,12 +105,12 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService { ...@@ -113,12 +105,12 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
} }
} }
// 权限限购 // 权限限购
/*String mobile = StringUtils.defaultString(((String) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_MOBILE)), ""); String mobile = StringUtils.defaultString(((String) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_MOBILE)), "");
boolean isVip = nftOrderUtils.isVipMember(uid); boolean isVip = nftOrderUtils.isVipMember(uid);
Boolean isAuthBuy = goblinOrderUtils.judgeOrderRose(isVip, skuId, mobile, Integer.parseInt(skuVo.getBuyFactor())); Boolean isAuthBuy = goblinOrderUtils.judgeOrderRose(isVip, skuId, mobile, Integer.parseInt(skuVo.getBuyFactor()));
if (!isAuthBuy) { if (!isAuthBuy) {
return ResponseDto.failure("该商品仅限特定用户购买~"); return ResponseDto.failure("该商品仅限特定用户购买~");
}*/ }
// 判断优惠券不能一起使用 // 判断优惠券不能一起使用
/*String platVoucherCode = payParam.getPlatVoucherCode(); /*String platVoucherCode = payParam.getPlatVoucherCode();
String storeVoucherCode = payParam.getStoreVoucherCode(); String storeVoucherCode = payParam.getStoreVoucherCode();
...@@ -128,6 +120,7 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService { ...@@ -128,6 +120,7 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
String boxSkuId = ""; String boxSkuId = "";
// 购买盲盒回滚抽到的库存 购买藏品回滚购买的库存 // 购买盲盒回滚抽到的库存 购买藏品回滚购买的库存
String stockSkuId = skuId; String stockSkuId = skuId;
String spuId = skuVo.getSpuId();
if (skuVo.getUnbox().equals("1")) {// 盲盒逻辑 if (skuVo.getUnbox().equals("1")) {// 盲盒逻辑
GoblinGoodsInfoVo spuInfoVo = goblinRedisUtils.getGoodsInfoVo(spuId); GoblinGoodsInfoVo spuInfoVo = goblinRedisUtils.getGoodsInfoVo(spuId);
List<String> skuIdList = spuInfoVo.getSkuIdList(); List<String> skuIdList = spuInfoVo.getSkuIdList();
...@@ -215,32 +208,12 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService { ...@@ -215,32 +208,12 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
ArrayList<GoblinGoodsSkuInfoVo> skuInfoVos = ObjectUtil.cloneArrayGoblinGoodsSkuInfoListVo(); ArrayList<GoblinGoodsSkuInfoVo> skuInfoVos = ObjectUtil.cloneArrayGoblinGoodsSkuInfoListVo();
for (String kid : skuIdList) { for (String kid : skuIdList) {
GoblinGoodsSkuInfoVo skuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(kid); GoblinGoodsSkuInfoVo skuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(kid);
// 不能购买的过滤 // 不能购买的 没库存的过滤
if ( if (!nftOrderUtils.getSkuAllStatusShow(skuInfoVo) && nftOrderUtils.getSkuAllStatusStock(skuInfoVo) > 0) {
null == skuInfoVo ||
!skuInfoVo.getStatus().equals("3") ||
!skuInfoVo.getShelvesStatus().equals("3") ||
skuInfoVo.getSoldoutStatus().equals("1") ||
skuInfoVo.getSkuAppear().equals("1") ||
skuInfoVo.getSkuCanbuy().equals("0") ||
skuInfoVo.getDelFlg().equals("1")
) {
continue; continue;
} }
// 开售停售时间 // 有库存的加入奖池
LocalDateTime saleStartTime = skuInfoVo.getSaleStartTime(); skuInfoVos.add(skuInfoVo);
LocalDateTime saleStopTime = skuInfoVo.getSaleStopTime();
LocalDateTime nowTime = LocalDateTime.now();
if (nowTime.isBefore(saleStartTime)) {
continue;
} else if (null != saleStopTime && nowTime.isAfter(saleStopTime)) {
continue;
}
// 库存
int skuStock = goblinRedisUtils.getSkuStock(kid);
if (skuStock > 0) {// 有库存的加入奖池
skuInfoVos.add(skuInfoVo);
}
} }
if (CollectionUtil.isEmpty(skuInfoVos)) { if (CollectionUtil.isEmpty(skuInfoVos)) {
return null; return null;
...@@ -636,11 +609,8 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService { ...@@ -636,11 +609,8 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_NFT_ORDER.getKey(), queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_NFT_ORDER.getKey(),
SqlMapping.gets(sqls, sqlDataOrder)); SqlMapping.gets(sqls, sqlDataOrder));
if (orderVo.getPayType().equals("applepay")) {// 苹果支付不做处理 // 退款
return "success"; nftOrderUtils.refundOrderSku(orderId, syncOrderParam.getPaymentId(), syncOrderParam.getPaymentType(), orderVo.getPayType());
} else {// 退款
nftOrderUtils.refundOrderSku(orderId, syncOrderParam.getPaymentId(), syncOrderParam.getPaymentType());
}
} else {// 正常流程 } else {// 正常流程
orderVo.setPaymentType(syncOrderParam.getPaymentType()); orderVo.setPaymentType(syncOrderParam.getPaymentType());
orderVo.setPaymentId(syncOrderParam.getPaymentId()); orderVo.setPaymentId(syncOrderParam.getPaymentId());
......
...@@ -77,8 +77,8 @@ public class OrderApplePayServiceImpl { ...@@ -77,8 +77,8 @@ public class OrderApplePayServiceImpl {
NftOrderPayCallbackParam.setOrderCode(nftOrder.getOrderCode()); NftOrderPayCallbackParam.setOrderCode(nftOrder.getOrderCode());
NftOrderPayCallbackParam.setPaymentAt(DateUtil.format(LocalDateTime.now(), DateUtil.Formatter.yyyyMMddHHmmss)); NftOrderPayCallbackParam.setPaymentAt(DateUtil.format(LocalDateTime.now(), DateUtil.Formatter.yyyyMMddHHmmss));
NftOrderPayCallbackParam.setPrice(nftOrder.getPriceActual()); NftOrderPayCallbackParam.setPrice(nftOrder.getPriceActual());
NftOrderPayCallbackParam.setPaymentId("APPLE_PAYMENT_ID");// 这里应该是接口返回 NftOrderPayCallbackParam.setPaymentId(transactionId);
NftOrderPayCallbackParam.setPaymentType(nftOrder.getDeviceFrom().concat(nftOrder.getPayType()).toUpperCase());// 这里应该是接口返回 NftOrderPayCallbackParam.setPaymentType(nftOrder.getDeviceFrom().concat(nftOrder.getPayType()).toUpperCase());
NftOrderPayCallbackParam.setStatus(1); NftOrderPayCallbackParam.setStatus(1);
if (type.equals("NFT")) { if (type.equals("NFT")) {
String isSync = goblinNftOrderService.syncOrder(NftOrderPayCallbackParam); String isSync = goblinNftOrderService.syncOrder(NftOrderPayCallbackParam);
......
...@@ -9,10 +9,7 @@ import com.liquidnet.service.base.constant.MQConst; ...@@ -9,10 +9,7 @@ import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.candy.vo.CandyUseResultVo; import com.liquidnet.service.candy.vo.CandyUseResultVo;
import com.liquidnet.service.goblin.constant.GoblinRedisConst; import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import com.liquidnet.service.goblin.constant.GoblinStatusConst; import com.liquidnet.service.goblin.constant.GoblinStatusConst;
import com.liquidnet.service.goblin.dto.vo.GoblinNftOrderRefundVo; import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.dto.vo.GoblinNftOrderVo;
import com.liquidnet.service.goblin.dto.vo.GoblinUseResultVo;
import com.liquidnet.service.goblin.dto.vo.GoblinUserCouponVo;
import com.liquidnet.service.goblin.entity.GoblinNftOrderRefund; import com.liquidnet.service.goblin.entity.GoblinNftOrderRefund;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -257,7 +254,7 @@ public class GoblinNftOrderUtils { ...@@ -257,7 +254,7 @@ public class GoblinNftOrderUtils {
} }
//超时支付自动退款 //超时支付自动退款
public Boolean refundOrderSku(String orderId, String paymentId, String paymentType) { public Boolean refundOrderSku(String orderId, String paymentId, String paymentType, String payType) {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
GoblinNftOrderVo nftOrder = getNftOrder(orderId); GoblinNftOrderVo nftOrder = getNftOrder(orderId);
BigDecimal refundPrice = nftOrder.getPriceActual(); BigDecimal refundPrice = nftOrder.getPriceActual();
...@@ -275,17 +272,19 @@ public class GoblinNftOrderUtils { ...@@ -275,17 +272,19 @@ public class GoblinNftOrderUtils {
backOrderVo.setCreatedAt(now); backOrderVo.setCreatedAt(now);
backOrderVo.setErrorReason(""); backOrderVo.setErrorReason("");
// 调用退款 超时支付回调可能还未完成 所以redisVo没有此俩个参数 if (!payType.equals("applepay")) {// 苹果支付不做处理
nftOrder.setPaymentId(paymentId); // 调用退款 超时支付回调可能还未完成 所以redisVo没有此俩个参数
nftOrder.setPaymentType(paymentType); nftOrder.setPaymentId(paymentId);
String returnString = initRefund(nftOrder, refundPrice, refundCode); nftOrder.setPaymentType(paymentType);
HashMap hashMapResult = JsonUtils.fromJson(returnString, HashMap.class); String returnString = initRefund(nftOrder, refundPrice, refundCode);
Boolean success = (Boolean) hashMapResult.get("success"); HashMap hashMapResult = JsonUtils.fromJson(returnString, HashMap.class);
String message = (String) hashMapResult.get("message"); Boolean success = (Boolean) hashMapResult.get("success");
if (!success) { String message = (String) hashMapResult.get("message");
if (!Objects.equals(backOrderVo.getStatus(), GoblinStatusConst.NftStatus.ORDER_REFUND_STATUS_2.getValue())) { if (!success) {
backOrderVo.setStatus(GoblinStatusConst.NftStatus.ORDER_REFUND_STATUS_3.getValue()); if (!Objects.equals(backOrderVo.getStatus(), GoblinStatusConst.NftStatus.ORDER_REFUND_STATUS_2.getValue())) {
backOrderVo.setErrorReason(message); backOrderVo.setStatus(GoblinStatusConst.NftStatus.ORDER_REFUND_STATUS_3.getValue());
backOrderVo.setErrorReason(message);
}
} }
} }
...@@ -303,11 +302,8 @@ public class GoblinNftOrderUtils { ...@@ -303,11 +302,8 @@ public class GoblinNftOrderUtils {
backOrderVo.getErrorReason(), now backOrderVo.getErrorReason(), now
) )
); );
if (success) {
return true; return true;
} else {
return false;
}
} }
private String initRefund(GoblinNftOrderVo orderVo, BigDecimal price, String refundCode) { private String initRefund(GoblinNftOrderVo orderVo, BigDecimal price, String refundCode) {
...@@ -329,4 +325,53 @@ public class GoblinNftOrderUtils { ...@@ -329,4 +325,53 @@ public class GoblinNftOrderUtils {
return returnString; return returnString;
} }
public boolean isVipMember(String uid) {
if (goblinRedisUtils.getMember(uid) != null) {
return true;
} else {
return false;
}
}
/**
* private int skuType 商品类型[0-常规|1-数字藏品]
* private String status 审核状态[0-初始编辑|1-审核中|2-审核不通过|3-审核通过];
* private String shelvesStatus 单品上架状态[0-待上架|1-下架|2-违规|3-上架];
* private String skuAppear 是否隐藏[0-默认展示|1-隐藏];
* private String delFlg 删除标记[0-未删除|1-删除];
*
* private LocalDateTime saleStartTime 开售时间;
* private LocalDateTime saleStopTime 停售时间 预留 暂时不做处理;
* private String soldoutStatus 是否售罄[0-否|1-是];
*
* private String skuCanbuy 是否购买[0-否|1-是] 这个用来预览 前端自己判断;
*/
// 获取盲盒下藏品的库存 各种状态下不能算库存的排除掉
public int getSkuAllStatusStock(GoblinGoodsSkuInfoVo info) {
if (
info != null
&& LocalDateTime.now().isAfter(info.getSaleStartTime())
&& (null == info.getSoldoutStatus() || info.getSoldoutStatus().equals("0"))
&& info.getSkuCanbuy().equals("1")
) {// 可以返回库存
return goblinRedisUtils.getSkuStock(info.getSkuId());
} else {// 不计入库存
return 0;
}
}
// 各种状态下判断藏品是否可以展示
public boolean getSkuAllStatusShow(GoblinGoodsSkuInfoVo info) {
if (
info != null
&& info.getSkuType() == 1
&& info.getStatus().equals("3")
&& info.getShelvesStatus().equals("3")
&& info.getSkuAppear().equals("0")
&& info.getDelFlg().equals("0")
) {
return true;
} else {
return false;
}
}
} }
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