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

Commit de77ac07 authored by zhanggb's avatar zhanggb

~queue:consumer-base.goblin:stream:biz:mongo:nft改api;

parent 9398113b
...@@ -76,7 +76,7 @@ public class ConsumerGoblinBizArtworkClqReceiver extends AbstractBizRedisReceive ...@@ -76,7 +76,7 @@ public class ConsumerGoblinBizArtworkClqReceiver extends AbstractBizRedisReceive
String postRespStr = HttpUtil.post(postUrl, postDataMap); String postRespStr = HttpUtil.post(postUrl, postDataMap);
JsonNode postRespJNode = JsonUtils.fromJson(postRespStr, JsonNode.class), postRespCode; JsonNode postRespJNode = JsonUtils.fromJson(postRespStr, JsonNode.class), postRespCode;
if (null == postRespJNode || null == (postRespCode = postRespJNode.get("code")) || !postRespCode.asText().equals("0")) { if (null == postRespJNode || null == (postRespCode = postRespJNode.get("code")) || !postRespCode.asText().equals("0")) {
log.warn("#NFT声明查询:请求失败[paramsStr={},postRespStr={}]", postDataMap, postRespStr); log.warn("#NFT声明查询:处理失败[paramsStr={},postRespStr={}]", postDataMap, postRespStr);
return false; return false;
} }
return true; return true;
......
...@@ -60,7 +60,7 @@ public class ConsumerGoblinBizArtworkUplReceiver extends AbstractBizRedisReceive ...@@ -60,7 +60,7 @@ public class ConsumerGoblinBizArtworkUplReceiver extends AbstractBizRedisReceive
String postRespStr = HttpUtil.post(postUrl, postDataMap); String postRespStr = HttpUtil.post(postUrl, postDataMap);
JsonNode postRespJNode = JsonUtils.fromJson(postRespStr, JsonNode.class), postRespCode; JsonNode postRespJNode = JsonUtils.fromJson(postRespStr, JsonNode.class), postRespCode;
if (null == postRespJNode || null == (postRespCode = postRespJNode.get("code")) || !postRespCode.asText().equals("0")) { if (null == postRespJNode || null == (postRespCode = postRespJNode.get("code")) || !postRespCode.asText().equals("0")) {
log.warn("#NFT素材上传:请求失败[paramsStr={},postRespStr={}]", postDataMap, postRespStr); log.warn("#NFT素材上传:处理失败[paramsStr={},postRespStr={}]", postDataMap, postRespStr);
return false; return false;
} }
return true; return true;
......
package com.liquidnet.service.consumer.base.receiver; package com.liquidnet.service.consumer.base.receiver;
import com.fasterxml.jackson.databind.JsonNode;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.HashMap;
@Slf4j
@Component @Component
public class ConsumerGoblinBizNftMongoReceiver extends AbstractMdbRedisReceiver { public class ConsumerGoblinBizNftMongoReceiver extends AbstractBizRedisReceiver {
@Value("${liquidnet.service.goblin.url}")
private String serviceGoblinUrl;
@Override
protected boolean consumerMessageHandler(String msg) {
boolean aBoolean = true;
try {
if (StringUtils.isEmpty(msg)) {
log.warn("CONSUMER MSG NULL_DTO ==> [{}]:{}", this.getRedisStreamKey(), msg);
aBoolean = true;
} else {
aBoolean = this.bizArtworkMdbProcessing(msg);
}
} catch (Exception e) {
log.error("CONSUMER MSG EX_HANDLE ==> [{}]:{}", this.getRedisStreamKey(), msg, e);
aBoolean = false;
} finally {
if (!aBoolean) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put(MQConst.QUEUE_MESSAGE_KEY, msg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(this.getRedisStreamKey()));
}
}
return aBoolean;
}
@Override @Override
protected String getRedisStreamKey() { protected String getRedisStreamKey() {
...@@ -15,4 +51,20 @@ public class ConsumerGoblinBizNftMongoReceiver extends AbstractMdbRedisReceiver ...@@ -15,4 +51,20 @@ public class ConsumerGoblinBizNftMongoReceiver extends AbstractMdbRedisReceiver
protected String getRedisStreamGroup() { protected String getRedisStreamGroup() {
return MQConst.GoblinQueue.BIZ_NFT_MONGO.getGroup(); return MQConst.GoblinQueue.BIZ_NFT_MONGO.getGroup();
} }
private boolean bizArtworkMdbProcessing(String msg) {
String postUrl = serviceGoblinUrl.concat("/goblin/que/mdb/adapt");
try {
String postRespStr = HttpUtil.postRaw(postUrl, msg, null);
JsonNode postRespJNode = JsonUtils.fromJson(postRespStr, JsonNode.class), postRespCode;
if (null == postRespJNode || null == (postRespCode = postRespJNode.get("code")) || !postRespCode.asText().equals("0")) {
log.warn("#MDB数据处理:处理失败[paramsStr={},postRespStr={}]", msg, postRespStr);
return false;
}
return true;
} catch (Exception e) {
log.error("Ex.MDB数据处理:处理异常[url={},paramsStr={}],ex:{}", postUrl, msg, e.getMessage());
return false;
}
}
} }
...@@ -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.constraints.NotBlank; import javax.validation.constraints.NotBlank;
@Slf4j @Slf4j
@Api(tags = "@API:QUE:藏品上传声明") @Api(tags = "@API:QUE")
@RestController @RestController
@Validated @Validated
@RequestMapping("que/artwork") @RequestMapping("que/artwork")
......
package com.liquidnet.service.goblin.controller.Inner;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.service.impl.inner.GoblinQueBizArtworkMdbService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@Slf4j
@Api(tags = "@API:QUE")
@RestController
@Validated
@RequestMapping("que/mdb")
public class GoblinQueBizMongoController {
@Autowired
private GoblinQueBizArtworkMdbService goblinQueBizArtworkMdbService;
@PostMapping("adapt")
@ApiOperation("MDB操作:查取`Redis`数据至`Mongo`")
@ApiImplicitParams({
@ApiImplicitParam(type = "raw", required = true, dataType = "String", name = "msg", value = "message", example = "{\"collect\":\"GoblinUserDigitalArtworkVo\",\"column\":\"artworkId\",\"bizId\":\"123321\",\"prefix\":\"goblin:u_art:\",\"opType\":1}"),
})
public ResponseDto<String> bizMongoAdapt(@RequestBody String msg) {
return goblinQueBizArtworkMdbService.bizMongoAdaptProcessing(msg);
}
}
package com.liquidnet.service.goblin.service.impl.inner;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.MdbMessage;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.util.GoblinRedisUtils;
import com.liquidnet.service.goblin.util.ObjectUtil;
import com.mongodb.BasicDBObject;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
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.stereotype.Service;
@Slf4j
@Service
public class GoblinQueBizArtworkMdbService {
@Autowired
GoblinRedisUtils goblinRedisUtils;
@Autowired
MongoTemplate mongoTemplate;
/**
* 查取`Redis`数据至`Mongo`
*
* @param msg `JsonUtils.toJson(MdbMessage)`
* @return ResponseDto<String>
*/
public ResponseDto<String> bizMongoAdaptProcessing(String msg) {
MdbMessage queueBizMongoDto = JsonUtils.fromJson(msg, MdbMessage.class);
if (null != queueBizMongoDto) {
String collectName = queueBizMongoDto.getCollect(), columnName = queueBizMongoDto.getColumn();
String prefix = queueBizMongoDto.getPrefix(), bizId = queueBizMongoDto.getBizId();
Object o;
switch (queueBizMongoDto.getOpType()) {
case 1:// insert
o = goblinRedisUtils.get(prefix.concat(bizId));
if (null != o) {
mongoTemplate.insert(o, collectName);
} else {
log.error("#MDB数据处理:处理失败[Redis获取数据为空,msg={}]", msg);
return ResponseDto.failure("处理失败");
}
break;
case 2:// update
o = goblinRedisUtils.get(prefix.concat(bizId));
if (null != o) {
BasicDBObject basicDBObject = ObjectUtil.cloneBasicDBObject();
UpdateResult updateResult = mongoTemplate.getCollection(collectName).updateOne(
Query.query(Criteria.where(columnName).is(bizId)).getQueryObject(),
basicDBObject.append("$set", mongoTemplate.getConverter().convertToMongoType(o))
);
} else {
log.error("#MDB数据处理:处理失败[Redis获取数据为空,msg={}]", msg);
return ResponseDto.failure("处理失败");
}
break;
default:
log.error("#MDB数据处理:无效操作[未知的操作类型,msg={}]", msg);
return ResponseDto.failure("无效操作");
}
}
return ResponseDto.success();
}
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
}
...@@ -47,6 +47,10 @@ public class GoblinRedisUtils { ...@@ -47,6 +47,10 @@ public class GoblinRedisUtils {
redisUtil.del(keys); redisUtil.del(keys);
} }
public Object get(String key) {
return redisUtil.get(key);
}
/* ---------------------------------------- 预约相关 ---------------------------------------- */ /* ---------------------------------------- 预约相关 ---------------------------------------- */
/** /**
......
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