From ff07d21e02041dfd108c693c50d6a70aca1104c9 Mon Sep 17 00:00:00 2001 From: khalil <842328916@qq.com> Date: Thu, 25 Sep 2025 11:32:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A6=E5=8D=95-=E9=9B=AA=E8=8A=B1=E4=B8=BB?= =?UTF-8?q?=E9=94=AE-mq-=E7=BB=84=E7=BB=87do=E5=92=8CinsertIgnore=E6=8B=86?= =?UTF-8?q?=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/gift/BillMessageService.java | 47 +++++++++---------- .../service/gift/Lucky24GiftSendService.java | 2 +- .../service/record/BillRecordService.java | 6 ++- 3 files changed, 28 insertions(+), 27 deletions(-) diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/gift/BillMessageService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/gift/BillMessageService.java index 2b9d5392c..8efd885b0 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/gift/BillMessageService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/gift/BillMessageService.java @@ -8,7 +8,6 @@ import com.accompany.core.model.Users; import com.accompany.sharding.mapper.BillRecordMapper; import com.accompany.sharding.model.BillRecord; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.redisson.api.RMap; @@ -37,59 +36,57 @@ public class BillMessageService implements InitializingBean { private UsersService usersService; public void sendBillMessage(BillRecord billRecord){ - String messId = DefaultIdentifierGenerator.getInstance().nextUUID(null); - billRecord.setMessId(messId); - BillMessage message = new BillMessage(); BeanUtils.copyProperties(billRecord, message); - recordMessMap.fastPut(messId, message); + recordMessMap.fastPut(message.getMessId(), message); rocketMQService.sendBillRecordMessage(message); }; public void handleBillMessage(BillMessage billMessage) { - BillRecord billRecord = insertBillRecordIgnore(billMessage); - log.info("【处理账单mq】 billRecord 插入成功 id:{} messId: {} mess:{}", - billRecord.getBillId(), billMessage.getMessId(), JSON.toJSONString(billMessage)); + BillRecord billRecord = buildBillRecord(billMessage); + int row = insertBillRecordIgnore(billRecord); + if (row <= 0){ + return; + } recordMessMap.fastRemove(billMessage.getMessId()); } - private BillRecord insertBillRecordIgnore(BillMessage billMessage) { - long startTime = System.currentTimeMillis(); - long copyPropertiesTime = 0; - long getUserTime = 0; - long insertTime = 0; - + private BillRecord buildBillRecord(BillMessage billMessage) { BillRecord billRecord = new BillRecord(); BeanUtils.copyProperties(billMessage, billRecord); - copyPropertiesTime = System.currentTimeMillis(); Users u = usersService.getUsersByUid(billMessage.getUid()); - getUserTime = System.currentTimeMillis(); if (null != u){ billRecord.setPartitionId(u.getPartitionId()); } - int insertRow = billRecordMapper.insertIgnore(billRecord); - insertTime = System.currentTimeMillis(); + return billRecord; + } + private int insertBillRecordIgnore(BillRecord billRecord) { + long startTime = System.currentTimeMillis(); + int insertRow = billRecordMapper.insertIgnore(billRecord); long endTime = System.currentTimeMillis(); - - log.info("insertBillRecordIgnore row {} performance - copy: {}ms, getUser: {}ms, insert: {}ms, total: {}ms", + + log.info("insertBillRecordIgnore row {} performance - total: {}ms", insertRow, - copyPropertiesTime - startTime, - getUserTime - copyPropertiesTime, - insertTime - getUserTime, endTime - startTime); - return billRecord; + if (insertRow > 0) { + log.info("【处理账单mq】 billRecord 插入成功 id:{} messId: {} billRecord:{}", + billRecord.getBillId(), billRecord.getMessId(), JSON.toJSONString(billRecord)); + } + + return insertRow; } @Override public void afterPropertiesSet() throws Exception { recordMessMap = redissonClient.getMap(RedisKey.bill_record_message.getKey()); } -} + +} \ No newline at end of file diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/gift/Lucky24GiftSendService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/gift/Lucky24GiftSendService.java index c4f605ffa..f27dd46da 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/gift/Lucky24GiftSendService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/gift/Lucky24GiftSendService.java @@ -208,7 +208,7 @@ public class Lucky24GiftSendService { private void sendMq(Map recordMap) { Map caches = new HashMap<>(recordMap.size()); List messageList = new ArrayList<>(); - + for (Lucky24Record record: recordMap.values()){ Long id = identifierGenerator.nextId(null).longValue(); String messId = id.toString(); diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/record/BillRecordService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/record/BillRecordService.java index 9e276be51..70b284ce0 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/record/BillRecordService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/record/BillRecordService.java @@ -145,8 +145,12 @@ public class BillRecordService extends ServiceImpl } Double beforeA = null != afterA? DoubleUtil.sub(afterA, a) : null; + Long billId = identifierGenerator.nextId(null).longValue(); + String messId = billId.toString(); + BillRecord billRecord = new BillRecord(); - billRecord.setBillId(identifierGenerator.nextId(null).longValue()); + billRecord.setBillId(billId); + billRecord.setMessId(messId); billRecord.setBillType(billType.getValue()); billRecord.setUid(uid); billRecord.setTargetUid(targetUid);