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

Commit dcac2b47 authored by 胡佳晨's avatar 胡佳晨

kylin 库存 改为 商城逻辑 step1

parent 8d5049a1
......@@ -9,10 +9,16 @@ import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.consumer.order.utils.GoblinNftUtils;
import com.liquidnet.service.consumer.order.utils.KylinOrderUtils;
import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import com.liquidnet.service.goblin.constant.GoblinStatusConst;
import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.param.BackCouponParam;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.entity.KylinOrderTickets;
import com.mongodb.BasicDBObject;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j;
......@@ -40,6 +46,8 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin
@Autowired
private RedisUtil redisUtil;
@Autowired
private KylinOrderUtils kylinOrderUtils;
@Autowired
private GoblinNftUtils goblinNftUtils;
@Autowired
private MongoTemplate mongoTemplate;
......@@ -81,6 +89,8 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin
return checkOrderTime(orderCode, type);
case "NFT":
return checkNftOrderTime(orderCode);
case "TICKET":
return checkTicketOrderTime(orderCode);
default:
return false;
}
......@@ -205,6 +215,49 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin
}
}
public boolean checkTicketOrderTime(String orderId) {
LocalDateTime now = LocalDateTime.now();
try {
KylinOrderTicketVo kylinOrderTicketVo = kylinOrderUtils.getOrderTicketVo(orderId);
if (kylinOrderTicketVo.getStatus().equals(KylinTableStatusConst.ORDER_STATUS0)) {//待支付
// // 库存购买数量回滚
// goblinNftUtils.decrSkuCountByUid(nftOrder.getUserId(), nftOrder.getSkuId(), nftOrder.getNum());
// LocalDateTime nowTime = LocalDateTime.now();
// if (StringUtils.isEmpty(nftOrder.getBoxSkuId())) {// 购买藏品
// GoblinListCollectVo goblinListCollectVo = goblinNftUtils.getCollectByNowNext(nowTime, nftOrder.getSkuId());
// String listId = (null == goblinListCollectVo) ? null : goblinListCollectVo.getListId();
// log.debug("listId : {}",listId);
// goblinNftUtils.incrSkuStock(listId, nftOrder.getSkuId(), nftOrder.getNum());
// } else {// 购买盲盒
// GoblinListCollectVo goblinListCollectVo = goblinNftUtils.getCollectByNowNext(nowTime, nftOrder.getBoxSkuId());
// String listId = (null == goblinListCollectVo) ? null : goblinListCollectVo.getListId();
// log.debug("listId : {}",listId);
// goblinNftUtils.incrSkuStock(listId, nftOrder.getBoxSkuId(), nftOrder.getNum());
// }
//
// // 订单状态
// nftOrder.setStatus(GoblinStatusConst.NftStatus.ORDER_STATUS_3.getValue());
// nftOrder.setUpdatedAt(now);
// nftOrder.setCancelTime(now);
// nftOrder.setCancelReason("超时支付关闭");
// goblinNftUtils.setNftOrder(nftOrder);
// goblinNftUtils.updateGoblinNftOrderVo(nftOrder);
// LinkedList<String> sqls = CollectionUtil.linkedListString();
// LinkedList<Object[]> sqlDataOrder = CollectionUtil.linkedListObjectArr();
// sqls.add(SqlMapping.get("goblin_nft_order.update.close"));
// sqlDataOrder.add(new Object[]{
// nftOrder.getStatus(), now, now, "超时支付关闭", nftOrder.getOrderId(), now, now
// });
// sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_ORDER_CLOSE.getKey(),
// SqlMapping.gets(sqls, sqlDataOrder));
}
return true;
} catch (Exception e) {
log.error("checkTicketOrderTime异常 [valueData:{}, e:{}]", orderId, e);
return false;
}
}
private UpdateResult updateGoblinStoreOrderVo(String orderId, GoblinStoreOrderVo data) {
BasicDBObject object = cloneBasicDBObject().append("$set", mongoConverter.convertToMongoType(data));
return mongoTemplate.getCollection(GoblinStoreOrderVo.class.getSimpleName()).updateOne(
......
package com.liquidnet.service.consumer.order.utils;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import com.liquidnet.service.goblin.dto.vo.GoblinListCollectVo;
import com.liquidnet.service.goblin.dto.vo.GoblinNftOrderVo;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.mongodb.BasicDBObject;
import com.mongodb.client.result.UpdateResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
@Component
public class KylinOrderUtils {
@Autowired
private RedisUtil redisUtil;
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
private MongoConverter mongoConverter;
private static final BasicDBObject basicDBObject = new BasicDBObject();
//-------- TICKET --------
/**
* 根据订单id 获取 订单vo 详情
*
* @param orderId
* @return
*/
public KylinOrderTicketVo getOrderTicketVo(String orderId) {
Object obj = redisUtil.get(KylinRedisConst.ORDER + orderId);
if (obj!=null) {
return (KylinOrderTicketVo)obj;
} else {
KylinOrderTicketVo ticketData = mongoTemplate.findOne(Query.query(Criteria.where("orderTicketsId").is(orderId)), KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
List<KylinOrderTicketEntitiesVo> kylinOrderTicketEntitiesVoList = mongoTemplate.find(Query.query(Criteria.where("orderId").is(orderId)), KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
ticketData.setEntitiesVoList(kylinOrderTicketEntitiesVoList);
redisUtil.set(KylinRedisConst.ORDER + orderId, ticketData);
return ticketData;
}
}
}
......@@ -690,6 +690,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
sqls.add(SqlMapping.get("kylin_order_ticket.add"));
LinkedList<Object[]> sqlsDataA = ObjectUtil.cloneLinkedListObj();
sqlsDataA.add(orderTickets.getAddObject(CurrentUtil.getCliIpAddr(), vo.getArea(), vo.getProvince(), vo.getCity(), vo.getCounty()));
// 待支付发送队列
queueUtils.sendMsgByRedisGoblinStock(orderTickets.getOrderTicketsId(), orderTickets.getCreatedAt(), "TICKET");
// 生成vo
KylinOrderTicketVo orderTicketVo = KylinOrderTicketVo.getNew();
orderTicketVo.setOrderTicket(orderTickets);
......
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