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

Commit fe044358 authored by 张国柄's avatar 张国柄

+queue:藏品声明查询及消费逻辑实现;

parent 5e30ec20
......@@ -262,6 +262,7 @@ public class MQConst {
GOBLIN_UN_PAY_8("goblin:stream:order:back:8", "group.order:back", "回滚关闭订单库存队列"),
GOBLIN_UN_PAY_9("goblin:stream:order:back:9", "group.order:back", "回滚关闭订单库存队列"),
BIZ_ARTWORK_UPC("goblin:stream:biz_art:upc", "group.biz.artwork", "藏品声明查询"),
BIZ_ARTWORK_GEN("goblin:stream:biz_art:gen", "group.biz.artwork", "藏品生成"),
SQL_ARTWORK_GEN("goblin:stream:sql_art:gen", "group.biz.artwork", "藏品生成"),
;
......
......@@ -3,6 +3,7 @@ package com.liquidnet.service.consumer.kylin.config;
import com.liquidnet.common.cache.redis.config.RedisStreamConfig;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.consumer.kylin.receiver.ConsumerGoblinBizArtworkGenRdsReceiver;
import com.liquidnet.service.consumer.kylin.receiver.ConsumerGoblinBizArtworkUpcRdsReceiver;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
......@@ -23,8 +24,26 @@ public class ConsumerCommonBizRedisStreamConfig extends RedisStreamConfig {
@Autowired
StringRedisTemplate stringRedisTemplate;
@Autowired
ConsumerGoblinBizArtworkUpcRdsReceiver consumerGoblinBizArtworkUpcRdsReceiver;
@Autowired
ConsumerGoblinBizArtworkGenRdsReceiver consumerGoblinBizArtworkGenRdsReceiver;
@Bean// 藏品声明查询
public List<Subscription> subscriptionBizArtworkUpc(RedisConnectionFactory factory) {
List<Subscription> subscriptionList = new ArrayList<>();
MQConst.GoblinQueue stream = MQConst.GoblinQueue.BIZ_ARTWORK_UPC;
this.initStream(stringRedisTemplate, stream.getKey(), stream.getGroup());
for (int i = 0; i < 10; i++) {
StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer = this.buildStreamMessageListenerContainer(factory);
subscriptionList.add(listenerContainer.receiveAutoAck(
Consumer.from(stream.getGroup(), getConsumerName(stream.name() + i)),
StreamOffset.create(stream.getKey(), ReadOffset.lastConsumed()), consumerGoblinBizArtworkUpcRdsReceiver
));
listenerContainer.start();
}
return subscriptionList;
}
@Bean// 藏品生成
public List<Subscription> subscriptionBizArtworkGen(RedisConnectionFactory factory) {
List<Subscription> subscriptionList = new ArrayList<>();
......
package com.liquidnet.service.consumer.kylin.receiver;
import com.fasterxml.jackson.databind.JsonNode;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.util.LinkedMultiValueMap;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@Slf4j
@Component
public class ConsumerGoblinBizArtworkUpcRdsReceiver extends AbstractBizRedisReceiver {
@Autowired
private RedisUtil redisUtil;
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
Environment env;
// @Value("${liquidnet.service.galaxy.url}")// TODO: 2022/4/1 ==zhanggb
// private String sevGalaxyUrl;
private static final String SQL_UPDATE_GOODS_SKU_NFT = "UPDATE goblin_goods_sku_nft SET upchain=?,series_id=?,series_hash=?,nft_hash=?,declare_at=?,updated_at=? WHERE skuId=? AND upchain=9 ";
@Override
protected String getRedisStreamKey() {
return MQConst.GoblinQueue.BIZ_ARTWORK_UPC.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.GoblinQueue.BIZ_ARTWORK_UPC.getGroup();
}
@Override
protected boolean consumerMessageHandler(String msg) {
boolean aBoolean = false;
try {
if (StringUtils.isEmpty(msg)) {
log.warn("CONSUMER MSG NULL_DTO ==> [{}]:{}", this.getRedisStreamKey(), msg);
aBoolean = true;
} else {
String[] msgArr = msg.split(",");
String skuId = msgArr[0], time = msgArr[1];
LocalDateTime now = LocalDateTime.now(), checkTime = now.minusSeconds(10);
LocalDateTime createAt = StringUtils.isEmpty(time) ? checkTime : LocalDateTime.parse(time);
long durationToMillis = Duration.between(createAt, checkTime).toMillis();
if (durationToMillis >= 0) {
aBoolean = this.bizArtworkUpcProcessing(skuId);
} else {
try {
Thread.sleep(Math.abs(durationToMillis));
} catch (InterruptedException ignored) {
}
aBoolean = this.bizArtworkUpcProcessing(skuId);
}
}
} catch (Exception e) {
log.error("CONSUMER MSG EX_HANDLE ==> [{}]:{}", this.getRedisStreamKey(), msg, e);
} finally {
if (!aBoolean) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("message", msg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(this.getRedisStreamKey()));
}
}
return aBoolean;
}
private boolean bizArtworkUpcProcessing(String skuId) {
GoblinGoodsSkuInfoVo goodsSkuInfoVo = this.getGoodsSkuInfoVoFromMdb(skuId);
if (null == goodsSkuInfoVo) {
log.warn("#CONSUMER MSG NULL_SKU[{}]:[skuId={}]", this.getRedisStreamKey(), skuId);
return true;
}
int skuType = goodsSkuInfoVo.getSkuType(), upchain = goodsSkuInfoVo.getUpchain();
String unbox = goodsSkuInfoVo.getUnbox();
if (1 != skuType || !"0".equals(unbox) || 9 != upchain) {// 非数字藏品 || 盲盒 || 非上传中
log.warn("#CONSUMER MSG VOID_SKU[{}]:[skuId={},skuType={},unbox={},upchain={}]",
this.getRedisStreamKey(), skuId, skuType, unbox, upchain);
return true;
}
List<String> checkNftClaimResult = this.checkNftClaimFromGalaxy(skuId, goodsSkuInfoVo.getRouteType());
if (CollectionUtils.isEmpty(checkNftClaimResult)) return false;
String seriesId = checkNftClaimResult.get(0);
String txHash = checkNftClaimResult.get(1);
String nftHash = checkNftClaimResult.get(2);
String chainTimestamp = checkNftClaimResult.get(3);
LocalDateTime now = LocalDateTime.now();
mongoTemplate.getCollection(GoblinGoodsSkuInfoVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("skuId").is(skuId).and("delFlg").is("0")).getQueryObject(),
Update.update("upchain", 1).set("seriesId", seriesId).set("seriesHash", txHash).set("nftHash", nftHash).set("declareAt", chainTimestamp).getUpdateObject()
);
redisUtil.del(GoblinRedisConst.BASIC_GOODS_SKU.concat(skuId));
// Mysql持久化
HashMap<String, String> sqlUpdateMap = CollectionUtil.mapStringString();
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
toMqSqls.add(SQL_UPDATE_GOODS_SKU_NFT);
LinkedList<Object[]> updateGoodsSkuNftObjs = CollectionUtil.linkedListObjectArr();
updateGoodsSkuNftObjs.add(new Object[]{1, seriesId, txHash, nftHash, chainTimestamp, now, skuId});
sqlUpdateMap.put("message", SqlMapping.gets(toMqSqls, updateGoodsSkuNftObjs));
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(sqlUpdateMap).withStreamKey(MQConst.GoblinQueue.SQL_GOODS.getKey()));
return true;
}
/* ------------------------------------------------------------------------------------ */
private List<String> checkNftClaimFromGalaxy(String skuId, String routerType) {
LinkedMultiValueMap<String, String> paramsMap = CollectionUtil.linkedMultiValueMapStringString();
paramsMap.add("skuId", skuId);
paramsMap.add("routerType", routerType);
// String postUrl = sevGalaxyUrl + "/user/register", blockChainAddress;// TODO: 2022/4/1 ==zhanggb
String postUrl = "https://ENVgalaxy.zhengzai.tv/galaxy/artwork/seriesClaimResultQuery".replace("ENV", env.getProperty(CurrentUtil.CK_ENV_ACTIVE)), blockChainAddress;
try {
LinkedMultiValueMap<String, String> headerMap = CollectionUtil.linkedMultiValueMapStringString();
headerMap.add("Accept", MediaType.APPLICATION_JSON_VALUE);
String postRespStr = HttpUtil.post(postUrl, paramsMap, headerMap);
JsonNode postRespJNode = JsonUtils.fromJson(postRespStr, JsonNode.class), postRespDataJNode;
if (null == postRespJNode || null == postRespJNode.get("code") || !postRespJNode.get("code").asText().equals("0")) {
log.warn("#CONSUMER MSG FAIL_UPC[{}]查询失败[paramsMap={},postRespStr={}]", this.getRedisStreamKey(), paramsMap, postRespStr);
return null;
}
if (1 != (postRespDataJNode = postRespJNode.get("data")).get("taskStatus").asInt()) {
log.warn("#CONSUMER MSG FAIL_UPC[{}]声明失败[paramsMap={},postRespStr={}]", this.getRedisStreamKey(), paramsMap, postRespStr);
return null;
}
List<String> respDataList = CollectionUtil.arrayListString();
respDataList.add(postRespDataJNode.get("seriesId").asText());
respDataList.add(postRespDataJNode.get("txHash").asText());
respDataList.add(postRespDataJNode.get("nftHash").asText());
respDataList.add(postRespDataJNode.get("chainTimestamp").asText());
return respDataList;
} catch (Exception e) {
log.error("Ex.CONSUMER MSG ERROR_UPC[{}]请求异常[skuId={},url={},paramsMap={}],ex:{}",
this.getRedisStreamKey(), skuId, postUrl, paramsMap, e.getMessage());
return null;
}
}
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
public GoblinGoodsSkuInfoVo getGoodsSkuInfoVoFromMdb(String skuId) {
return mongoTemplate.findOne(Query.query(Criteria.where("skuId").is(skuId).and("delFlg").is("0")),
GoblinGoodsSkuInfoVo.class, GoblinGoodsSkuInfoVo.class.getSimpleName());
}
/* ------------------------------------------------------------------------------------ */
}
......@@ -1071,7 +1071,7 @@ public class GoblinStoreMgtGoodsController {
if (log.isDebugEnabled()) {
log.debug("商品管理:商品编辑:SKU添加:[GoblinStoreMgtGoodsEditSkuParam={}]", JsonUtils.toJson(mgtDigitalGoodsAddSkuParam));
}
GoblinGoodsSkuInfoVo goodsSkuInfoVo = mgtDigitalGoodsAddSkuParam.initAddGoodsSkuInfoVo(notUnboxFlg);
GoblinGoodsSkuInfoVo initGoodsSkuInfoVo = mgtDigitalGoodsAddSkuParam.initAddGoodsSkuInfoVo(notUnboxFlg);
{// 标签处理
List<String> paramExtagList = mgtDigitalGoodsAddSkuParam.getExtagList();
if (!CollectionUtils.isEmpty(paramExtagList)) {
......@@ -1083,11 +1083,11 @@ public class GoblinStoreMgtGoodsController {
goodsExtagVoList.add(GoblinGoodsExtagVo.getNew().copy(r).setSort(i));
break;
}
goodsSkuInfoVo.setExtagVoList(goodsExtagVoList);
initGoodsSkuInfoVo.setExtagVoList(goodsExtagVoList);
}
}
goblinstoreMgtGoodsService.digitalGoodsAddSku(currentUid, goodsSkuInfoVo, goodsInfoVo);
return ResponseDto.success(goodsSkuInfoVo.getSkuId());
goblinstoreMgtGoodsService.digitalGoodsAddSku(currentUid, initGoodsSkuInfoVo, goodsInfoVo);
return ResponseDto.success(initGoodsSkuInfoVo.getSkuId());
}
@ApiOperationSupport(order = 9)
......
package com.liquidnet.service.goblin.service.impl;
import com.fasterxml.jackson.databind.JsonNode;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.goblin.dto.GoblinQueueBizArtworkGenDto;
import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.service.IGoblinUserDigitalArtworkService;
import com.liquidnet.service.goblin.service.impl.inner.GoblinGalaxyService;
import com.liquidnet.service.goblin.util.GoblinMongoUtils;
import com.liquidnet.service.goblin.util.GoblinRedisUtils;
import com.liquidnet.service.goblin.util.ObjectUtil;
import com.liquidnet.service.goblin.util.QueueUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.LinkedMultiValueMap;
import java.time.LocalDateTime;
import java.util.List;
......@@ -35,12 +28,8 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
private GoblinRedisUtils goblinRedisUtils;
@Autowired
private GoblinMongoUtils goblinMongoUtils;
@Autowired
Environment env;
// @Value("${liquidnet.service.galaxy.url}")// TODO: 2022/3/31 ==zhanggb
// private String sevGalaxyUrl;
private GoblinGalaxyService goblinGalaxyService;
@Override
public GoblinUserDigitalArtworkPageVo page(String uid, Integer pageNum, Integer pageSize) {
......@@ -77,7 +66,7 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
listVo.setOpeningTime(goodsSkuInfoVo.getOpeningTime());
if (listVo.getCreatedAt().isBefore(toCheckTime)) {// 15秒前创建的藏品,去主动核实发行交易状态
List<String> checkRespDataList = this.checkNftTradeFromGalaxy(uid, userDigitalArtworkVo.getOrderId(), goodsSkuInfoVo.getRouteType());
List<String> checkRespDataList = goblinGalaxyService.checkNftTradeResult(uid, userDigitalArtworkVo.getOrderId(), goodsSkuInfoVo.getRouteType());
this.updateUserDigitalArtworkByChainTrade(userDigitalArtworkVo, listVo, checkRespDataList, now);
}
......@@ -199,36 +188,4 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
);
}
}
private List<String> checkNftTradeFromGalaxy(String uid, String orderId, String routerType) {
LinkedMultiValueMap<String, String> paramsMap = CollectionUtil.linkedMultiValueMapStringString();
paramsMap.add("userId", uid);
paramsMap.add("nftOrderPayId", orderId);// TODO: 2022/3/31 ==zhanggb
paramsMap.add("routerType", routerType);
// String postUrl = sevGalaxyUrl + "/user/register", blockChainAddress;// TODO: 2022/3/31 ==zhanggb
String postUrl = "https://ENVgalaxy.zhengzai.tv/galaxy/nftTrade/nftPublishAndBuyResultQuery".replace("ENV", env.getProperty(CurrentUtil.CK_ENV_ACTIVE)), blockChainAddress;
try {
LinkedMultiValueMap<String, String> headerMap = CollectionUtil.linkedMultiValueMapStringString();
headerMap.add("Accept", MediaType.APPLICATION_JSON_VALUE);
String postRespStr = HttpUtil.post(postUrl, paramsMap, headerMap);
JsonNode postRespJNode = JsonUtils.fromJson(postRespStr, JsonNode.class);
if (null == postRespJNode || !postRespJNode.get("code").asText().equals("0")) {
log.warn("#NFT发行购买结果查询:查询失败[paramsMap={},postRespStr={}]", paramsMap, postRespStr);
return null;
}
JsonNode postRespDataJNode = postRespJNode.get("data");
List<String> respDataList = CollectionUtil.arrayListString();
respDataList.add(postRespDataJNode.get("nftId").asText());
respDataList.add(postRespDataJNode.get("nftPublishChainTimestamp").asText());
respDataList.add(postRespDataJNode.get("nftPublishTxHash").asText());
respDataList.add(postRespDataJNode.get("nftBuyChainTimestamp").asText());
respDataList.add(postRespDataJNode.get("nftBuyTxHash").asText());
return respDataList;
} catch (Exception e) {
log.error("Ex.NFT发行购买结果查询:请求异常[UID={},url={},paramsMap={}],ex:{}", uid, postUrl, paramsMap, e.getMessage());
return null;
}
}
}
package com.liquidnet.service.goblin.service.impl.inner;
import com.fasterxml.jackson.databind.JsonNode;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import java.util.List;
/**
* Galaxy服务接口调用
*
* @author zhanggb
* Created by IntelliJ IDEA at 2022/4/1
*/
@Slf4j
@Service
public class GoblinGalaxyService {
@Autowired
Environment env;
// @Value("${liquidnet.service.galaxy.url}")// TODO: 2022/3/31 ==zhanggb
// private String sevGalaxyUrl;
public List<String> checkNftTradeResult(String uid, String orderId, String routerType) {
LinkedMultiValueMap<String, String> paramsMap = CollectionUtil.linkedMultiValueMapStringString();
paramsMap.add("userId", uid);
paramsMap.add("nftOrderPayId", orderId);// TODO: 2022/3/31 ==zhanggb
paramsMap.add("routerType", routerType);
// String postUrl = sevGalaxyUrl + "/user/register", blockChainAddress;// TODO: 2022/3/31 ==zhanggb
String postUrl = "https://ENVgalaxy.zhengzai.tv/galaxy/nftTrade/nftPublishAndBuyResultQuery".replace("ENV", env.getProperty(CurrentUtil.CK_ENV_ACTIVE)), blockChainAddress;
try {
LinkedMultiValueMap<String, String> headerMap = CollectionUtil.linkedMultiValueMapStringString();
headerMap.add("Accept", MediaType.APPLICATION_JSON_VALUE);
String postRespStr = HttpUtil.post(postUrl, paramsMap, headerMap);
JsonNode postRespJNode = JsonUtils.fromJson(postRespStr, JsonNode.class), postRespCode;
if (null == postRespJNode || null == (postRespCode = postRespJNode.get("code")) || !postRespCode.asText().equals("0")) {
log.warn("#NFT发行购买结果查询:查询失败[paramsMap={},postRespStr={}]", paramsMap, postRespStr);
return null;
}
JsonNode postRespDataJNode = postRespJNode.get("data");
List<String> respDataList = CollectionUtil.arrayListString();
respDataList.add(postRespDataJNode.get("nftId").asText());
respDataList.add(postRespDataJNode.get("nftPublishChainTimestamp").asText());
respDataList.add(postRespDataJNode.get("nftPublishTxHash").asText());
respDataList.add(postRespDataJNode.get("nftBuyChainTimestamp").asText());
respDataList.add(postRespDataJNode.get("nftBuyTxHash").asText());
return respDataList;
} catch (Exception e) {
log.error("Ex.NFT发行购买结果查询:请求异常[UID={},url={},paramsMap={}],ex:{}", uid, postUrl, paramsMap, e.getMessage());
return null;
}
}
}
......@@ -982,10 +982,19 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
}
mgtGoodsInfoVo.setUpdatedBy(uid);
mgtGoodsInfoVo.setUpdatedAt(now);
goblinMongoUtils.updateGoodsInfoVo(mgtGoodsInfoVo);
goblinRedisUtils.delGoodsInfoVo(spuId);
if ("2".equals(initGoodsSkuInfoVo.getShelvesHandle())) {// 直接上架处理
initGoodsSkuInfoVo.setShelvesStatus("3");
initGoodsSkuInfoVo.setShelvesAt(now);
initGoodsSkuInfoVo.setShelvesTime(null);
if (!"3".equals(mgtGoodsInfoVo.getShelvesStatus())) {
mgtGoodsInfoVo.setShelvesStatus("3");
mgtGoodsInfoVo.setShelvesAt(now);
}
}
log.info("藏品管理:SKU添加[UID={},PARAMS={}]", uid, JsonUtils.toJson(initGoodsSkuInfoVo));
goblinMongoUtils.updateGoodsInfoVo(mgtGoodsInfoVo);
goblinRedisUtils.delGoodsInfoVo(spuId);
goblinMongoUtils.setGoodsSkuInfoVo(initGoodsSkuInfoVo);
goblinRedisUtils.setSkuStock(null, initGoodsSkuInfoVo.getSkuId(), initGoodsSkuInfoVo.getSkuStock());
......
......@@ -61,6 +61,7 @@ goblin_goods_sku.update_by_del=UPDATE goblin_goods_sku SET del_flg='1',updated_b
#goblin_goods_sku_nft.insert_for_digital=INSERT INTO goblin_goods_sku_nft (sku_id,route_type,material_type,material_url,upchain,display_url,nft_url,series_id,series_hash,nft_hash,declare_at,created_at)VALUES(?,?,?,?,?,?,?,?,?,?,?,?)
goblin_goods_sku_nft.insert_for_digital=INSERT INTO goblin_goods_sku_nft (sku_id,route_type,material_type,material_url,upchain,display_url,nft_url,created_at)VALUES(?,?,?,?,?,?,?,?)
#goblin_goods_sku_nft.update_for_digital=UPDATE goblin_goods_sku_nft SET upchain=?,series_id=?,series_hash=?,nft_hash=?,declare_at=?,updated_at=? WHERE skuId=? AND upchain=9
goblin_goods_image.insert_byreplace=REPLACE INTO goblin_goods_image (spu_id,url,del_flg)VALUES(?,?,'0')
goblin_goods_image.delete=UPDATE goblin_goods_image SET del_flg='1' WHERE spu_id=? AND del_flg='0'
......
......@@ -41,12 +41,11 @@ public class PlatformGoblinGoodsSkuService extends ServiceImpl<GoblinGoodsSkuMap
LocalDateTime now = LocalDateTime.now();
LambdaQueryWrapper<GoblinGoodsSku> queryWrapper = Wrappers.lambdaQuery(GoblinGoodsSku.class);
queryWrapper.eq(GoblinGoodsSku::getSkuType, 1);// 1-数字藏品
// queryWrapper.eq(GoblinGoodsSku::getUpchain, 1);// TODO: 2022/3/28 ==zhanggb
queryWrapper.eq(GoblinGoodsSku::getDelFlg, "0");
queryWrapper.eq(GoblinGoodsSku::getStatus, "3");
queryWrapper.eq(GoblinGoodsSku::getShelvesHandle, "3");
queryWrapper.le(GoblinGoodsSku::getShelvesTime, now);
queryWrapper.in(GoblinGoodsSku::getShelvesStatus, "0", "1");
queryWrapper.in(GoblinGoodsSku::getShelvesStatus, "0");
queryWrapper.orderByAsc(GoblinGoodsSku::getShelvesTime);
queryWrapper.select(GoblinGoodsSku::getSkuId, GoblinGoodsSku::getSpuId);
......@@ -72,31 +71,30 @@ public class PlatformGoblinGoodsSkuService extends ServiceImpl<GoblinGoodsSkuMap
LiquidnetServiceException liquidnetServiceException = new LiquidnetServiceException();
if (goblinGoodsMapper.update(updateSpu, updateSpuWrapper) > 0) {
UpdateResult updateSkuResult = mongoTemplate.getCollection(GoblinGoodsSkuInfoVo.class.getSimpleName()).updateMany(
Query.query(Criteria.where("skuId").in(skuIdList).and("delFlg").is("0").and("shelvesStatus").in("0", "1").and("shelvesHandle").is("3")).getQueryObject(),
Update.update("shelvesStatus", "3").set("shelvesAt", now).getUpdateObject()
Query.query(Criteria.where("skuId").in(skuIdList).and("delFlg").is("0").and("shelvesStatus").in("0").and("shelvesHandle").is("3")).getQueryObject(),
Update.update("shelvesStatus", "3").set("shelvesAt", now).set("updatedAt", now).getUpdateObject()
);
if (updateSkuResult.getModifiedCount() > 0) {
UpdateResult updateSpuResult = mongoTemplate.getCollection(GoblinGoodsInfoVo.class.getSimpleName()).updateMany(
Query.query(Criteria.where("spuId").in(spuIdList).and("delFlg").is("0")).getQueryObject(),
Update.update("shelvesStatus", "3").set("shelvesAt", now).getUpdateObject()
Update.update("shelvesStatus", "3").set("shelvesAt", now).set("updatedAt", now).getUpdateObject()
);
if (updateSpuResult.getModifiedCount() > 0) {
AbstractRedisUtil redisGoblinUtil = redisDataSourceUtil.getRedisGoblinUtil();
skuIdList.forEach(skuId -> {
redisGoblinUtil.del(GoblinRedisConst.BASIC_GOODS_SKU.concat(skuId));
redisGoblinUtil.del(GoblinRedisConst.BASIC_GOODS_SKU_UNSHELVES.concat(skuId));
// redisGoblinUtil.del(GoblinRedisConst.BASIC_GOODS_SKU_UNSHELVES.concat(skuId));
});
spuIdList.forEach(spuId -> {
redisGoblinUtil.del(GoblinRedisConst.BASIC_GOODS.concat(spuId));
redisGoblinUtil.del(GoblinRedisConst.BASIC_GOODS_UNSHELVES.concat(spuId));
// redisGoblinUtil.del(GoblinRedisConst.BASIC_GOODS_UNSHELVES.concat(spuId));
});
return;
} else {
LocalDateTime of = LocalDateTime.of(2022, 1, 1, 0, 0);
mongoTemplate.getCollection(GoblinGoodsSkuInfoVo.class.getSimpleName()).updateMany(
Query.query(Criteria.where("skuId").in(skuIdList).and("shelvesAt").is(now)).getQueryObject(),
Update.update("shelvesStatus", "0").set("shelvesAt", of).getUpdateObject()
Update.update("shelvesStatus", "0").getUpdateObject()
);
liquidnetServiceException.setMessage("更新失败:Mongo.GoblinGoodsInfoVo");
}
......
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