账单-雪花主键-mq批量消费-sql

This commit is contained in:
2025-09-09 11:50:00 +08:00
parent fffe747456
commit 7f54afc166
3 changed files with 83 additions and 0 deletions

View File

@@ -22,7 +22,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Slf4j
@Service
@@ -87,6 +91,31 @@ public class BillMessageService implements InitializingBean {
}
}
public void handleBillMessage(List<BillMessage> billMessageList) {
List<Long> uidList = billMessageList.stream().map(BillMessage::getUid).distinct().toList();
Map<Long, Users> usersMap = usersService.getUsersMapByUids(uidList);
List<BillRecord> poList = billMessageList.stream().map(billMessage -> {
BillRecord billRecord = new BillRecord();
BeanUtils.copyProperties(billMessage, billRecord);
Users u = usersMap.get(billMessage.getUid());
if (null != u){
billRecord.setPartitionId(u.getPartitionId());
}
if (null == billRecord.getBillId()){
billRecord.setBillId(DefaultIdentifierGenerator.getInstance().nextId(null));
}
return billRecord;
}).toList();
billRecordMapper.insertIgnore(poList);
String[] messIdList = billMessageList.stream().map(BillMessage::getMessId).toArray(String[]::new);
recordMessMap.fastRemove(messIdList);
}
private BillRecord insertBillRecord(BillMessage billMessage) {
BillRecord billRecord = new BillRecord();
BeanUtils.copyProperties(billMessage, billRecord);