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

Commit 5c5d7c58 authored by 胡佳晨's avatar 胡佳晨

脚本增加锁逻辑

parent 4e185e95
...@@ -1015,99 +1015,100 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM ...@@ -1015,99 +1015,100 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
@Override @Override
public boolean checkOrderTime(String userId) { public boolean checkOrderTime(String userId) {
List<OrderScriptDto> dtoData = orderTicketsMapper.orderScriptDto(userId); String lock = "order_lock:checkOrderTime:" + userId;
HashMap<String, Integer> map2 = new HashMap<>(); try {
Integer count = 0; if (redisLockUtil.tryLock(lock, 1, 3600)) {
Integer mqCount = 0; List<OrderScriptDto> dtoData = orderTicketsMapper.orderScriptDto(userId);
Integer Acount = 0; HashMap<String, Integer> map2 = new HashMap<>();
for (OrderScriptDto item : dtoData) { Integer count = 0;
count += 1; Integer mqCount = 0;
LinkedList<String> sqls = new LinkedList<>(); Integer Acount = 0;
String lock = "order_lock:" + item.getOrderCode(); for (OrderScriptDto item : dtoData) {
// if (!redisLockUtil.tryLock(lock, 30, 240)) { count += 1;
// continue; LinkedList<String> sqls = new LinkedList<>();
// } if (item.getStatus() == KylinTableStatusConst.ORDER_STATUS0) {
if (item.getStatus() == KylinTableStatusConst.ORDER_STATUS0) { LocalDateTime now = LocalDateTime.now();
LocalDateTime now = LocalDateTime.now(); try {
try { KylinOrderTicketVo vo = dataUtils.getOrderTicketVo(item.getOrderTicketsId());
if (vo.getStatus() != 0) {
KylinOrderTicketVo vo = dataUtils.getOrderTicketVo(item.getOrderTicketsId()); continue;
if (vo.getStatus() != 0) { }
continue;
}
//mysql //mysql
KylinOrderTickets orderTickets = new KylinOrderTickets(); KylinOrderTickets orderTickets = new KylinOrderTickets();
orderTickets.setOrderTicketsId(item.getOrderTicketsId()); orderTickets.setOrderTicketsId(item.getOrderTicketsId());
orderTickets.setUpdatedAt(now); orderTickets.setUpdatedAt(now);
KylinOrderTicketStatus orderTicketStatus = new KylinOrderTicketStatus(); KylinOrderTicketStatus orderTicketStatus = new KylinOrderTicketStatus();
orderTicketStatus.setOrderId(item.getOrderTicketsId()); orderTicketStatus.setOrderId(item.getOrderTicketsId());
orderTicketStatus.setStatus(KylinTableStatusConst.ORDER_STATUS2); orderTicketStatus.setStatus(KylinTableStatusConst.ORDER_STATUS2);
orderTicketStatus.setUpdatedAt(now); orderTicketStatus.setUpdatedAt(now);
//vo //vo
HashMap<String, Object> map = new HashMap<>(); HashMap<String, Object> map = new HashMap<>();
map.put("status", KylinTableStatusConst.ORDER_STATUS2); map.put("status", KylinTableStatusConst.ORDER_STATUS2);
map.put("updatedAt", DateUtil.Formatter.yyyyMMddHHmmssSSS.format(now)); map.put("updatedAt", DateUtil.Formatter.yyyyMMddHHmmssSSS.format(now));
map.put("changeDate", now); map.put("changeDate", now);
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne( mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("orderTicketsId").is(orderTickets.getOrderTicketsId())).getQueryObject(), Query.query(Criteria.where("orderTicketsId").is(orderTickets.getOrderTicketsId())).getQueryObject(),
new BasicDBObject("$set", mongoConverter.convertToMongoType(map)) new BasicDBObject("$set", mongoConverter.convertToMongoType(map))
); );
LocalDateTime strTime = vo.getChangeDate(); LocalDateTime strTime = vo.getChangeDate();
vo.setChangeDate(now); vo.setChangeDate(now);
vo.setStatus(KylinTableStatusConst.ORDER_STATUS2); vo.setStatus(KylinTableStatusConst.ORDER_STATUS2);
vo.setUpdatedAt(DateUtil.Formatter.yyyyMMddHHmmssSSS.format(now)); vo.setUpdatedAt(DateUtil.Formatter.yyyyMMddHHmmssSSS.format(now));
redisUtil.set(KylinRedisConst.ORDER + vo.getOrderTicketsId(), vo); redisUtil.set(KylinRedisConst.ORDER + vo.getOrderTicketsId(), vo);
map2.put(vo.getTicketId(), map2.get(vo.getTicketId()) == null ? vo.getNumber() : map2.get(vo.getTicketId()) + vo.getNumber()); map2.put(vo.getTicketId(), map2.get(vo.getTicketId()) == null ? vo.getNumber() : map2.get(vo.getTicketId()) + vo.getNumber());
mongoVoUtils.resetOrderListVo(item.getUserId(), 2, item.getOrderTicketsId(), vo); mongoVoUtils.resetOrderListVo(item.getUserId(), 2, item.getOrderTicketsId(), vo);
Acount += 1; Acount += 1;
// List<KylinOrderTicketEntities> entities = entitiesMapper.selectList(new UpdateWrapper<KylinOrderTicketEntities>().eq("order_id", item.getOrderTicketsId())); // List<KylinOrderTicketEntities> entities = entitiesMapper.selectList(new UpdateWrapper<KylinOrderTicketEntities>().eq("order_id", item.getOrderTicketsId()));
List<KylinOrderTicketEntitiesVo> entities = vo.getEntitiesVoList(); List<KylinOrderTicketEntitiesVo> entities = vo.getEntitiesVoList();
// entitiesMapper.selectList(new UpdateWrapper<KylinOrderTicketEntities>().eq("order_id", item.getOrderTicketsId())); // entitiesMapper.selectList(new UpdateWrapper<KylinOrderTicketEntities>().eq("order_id", item.getOrderTicketsId()));
for (int i = 0; i < entities.size(); i++) { for (int i = 0; i < entities.size(); i++) {
KylinOrderTicketEntitiesVo items = entities.get(i); KylinOrderTicketEntitiesVo items = entities.get(i);
dataUtils.changeBuyInfo(items.getUserId(), items.getEnterIdCode(), items.getPerformanceId(), items.getTicketId(), -1); dataUtils.changeBuyInfo(items.getUserId(), items.getEnterIdCode(), items.getPerformanceId(), items.getTicketId(), -1);
} }
sqls.add(SqlMapping.get("kylin_order_ticket.close")); sqls.add(SqlMapping.get("kylin_order_ticket.close"));
LinkedList<Object[]> sqlsDataA = new LinkedList<>(); LinkedList<Object[]> sqlsDataA = new LinkedList<>();
sqlsDataA.add(orderTickets.getCloseOrderObject(strTime, strTime)); sqlsDataA.add(orderTickets.getCloseOrderObject(strTime, strTime));
sqls.add(SqlMapping.get("kylin_order_ticket_status.close")); sqls.add(SqlMapping.get("kylin_order_ticket_status.close"));
LinkedList<Object[]> sqlsDataB = new LinkedList<>(); LinkedList<Object[]> sqlsDataB = new LinkedList<>();
sqlsDataB.add(orderTicketStatus.getCloseOrderObject(strTime, strTime)); sqlsDataB.add(orderTicketStatus.getCloseOrderObject(strTime, strTime));
sqls.add(SqlMapping.get("kylin_order_ticket_relation.close")); sqls.add(SqlMapping.get("kylin_order_ticket_relation.close"));
LinkedList<Object[]> sqlsDataC = new LinkedList<>(); LinkedList<Object[]> sqlsDataC = new LinkedList<>();
sqlsDataC.add(new Object[]{orderTickets.getUpdatedAt(), orderTickets.getOrderTicketsId(), strTime, strTime}); sqlsDataC.add(new Object[]{orderTickets.getUpdatedAt(), orderTickets.getOrderTicketsId(), strTime, strTime});
rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE, MQConst.ROUTING_KEY_SQL_ORDER_CLOSE, SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC)); rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE, MQConst.ROUTING_KEY_SQL_ORDER_CLOSE, SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC));
mqCount += 1; mqCount += 1;
} catch (Exception e) { } catch (Exception e) {
//redisLockUtil.unlock(lock); log.debug("CHECK TIME SYNC = " + e.getMessage());
log.debug("CHECK TIME SYNC = " + e.getMessage()); e.printStackTrace();
e.printStackTrace(); return false;
return false; }
}
}
log.debug("COUNT 1 = " + count);
log.debug("COUNT 2 = " + mqCount);
log.debug("COUNT 3 = " + Acount);
for (Map.Entry<String, Integer> entry : map2.entrySet()) {
dataUtils.changeSurplusGeneral(entry.getKey(), entry.getValue());
} }
} else { } else {
//redisLockUtil.unlock(lock); log.debug("WARNING LOCKING" );
} }
} catch (Exception e) {
redisLockUtil.unlock(lock);
return false;
} finally {
redisLockUtil.unlock(lock);
} }
log.debug("COUNT 1 = " + count);
log.debug("COUNT 2 = " + mqCount);
log.debug("COUNT 3 = " + Acount);
for (Map.Entry<String, Integer> entry : map2.entrySet()) {
dataUtils.changeSurplusGeneral(entry.getKey(), entry.getValue());
}
return true; return true;
} }
......
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