记得上下班打卡 | 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
String postRespStr = HttpUtil.post(postUrl, postDataMap);
JsonNode postRespJNode = JsonUtils.fromJson(postRespStr, JsonNode.class), postRespCode;
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 true;
......
......@@ -60,7 +60,7 @@ public class ConsumerGoblinBizArtworkUplReceiver extends AbstractBizRedisReceive
String postRespStr = HttpUtil.post(postUrl, postDataMap);
JsonNode postRespJNode = JsonUtils.fromJson(postRespStr, JsonNode.class), postRespCode;
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 true;
......
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 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 java.util.HashMap;
@Slf4j
@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
protected String getRedisStreamKey() {
......@@ -15,4 +51,20 @@ public class ConsumerGoblinBizNftMongoReceiver extends AbstractMdbRedisReceiver
protected String getRedisStreamGroup() {
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;
import javax.validation.constraints.NotBlank;
@Slf4j
@Api(tags = "@API:QUE:藏品上传声明")
@Api(tags = "@API:QUE")
@RestController
@Validated
@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 {
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