|
|
|
@ -30,6 +30,7 @@ import java.time.ZoneOffset; |
|
|
|
import java.util.Arrays; |
|
|
|
import java.util.List; |
|
|
|
import java.util.UUID; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
/** |
|
|
|
* @program: gold-java |
|
|
|
@ -332,13 +333,36 @@ public User getNameAndMarket(Integer jwcode) { |
|
|
|
|
|
|
|
//同步g_order订单到cash_record表 |
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public Object syncToCashRecord() { |
|
|
|
int total = 0; |
|
|
|
while (true) { |
|
|
|
List<GOrder> gOrders = cashCollectionMapper.getUnSync(100); |
|
|
|
List<GOrder> gOrders = cashCollectionMapper.getUnSync(50); |
|
|
|
if (CollectionUtils.isEmpty(gOrders)) { |
|
|
|
break; |
|
|
|
} |
|
|
|
try { |
|
|
|
// 每批独立事务 |
|
|
|
processBatch(gOrders); |
|
|
|
total += gOrders.size(); |
|
|
|
log.info("✅ 同步完成一批,数量: {}, 累计: {}", gOrders.size(), total); |
|
|
|
} catch (Exception e) { |
|
|
|
|
|
|
|
List<Integer> failedIds = gOrders.stream().map(GOrder::getId).collect(Collectors.toList()); |
|
|
|
log.error("失败订单ID: {}", failedIds); |
|
|
|
// 可存入 error_log 表,供人工处理 |
|
|
|
|
|
|
|
// 这里选择继续下一批(容忍部分失败) |
|
|
|
} |
|
|
|
|
|
|
|
if (gOrders.size() < 50) { |
|
|
|
break; // 最后一批 |
|
|
|
} |
|
|
|
} |
|
|
|
return "同步完毕,成功处理 " + total + " 条"; |
|
|
|
} |
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void processBatch(List<GOrder> gOrders) { |
|
|
|
for (GOrder gOrder : gOrders) { |
|
|
|
CashRecord cashRecord = new CashRecord(); |
|
|
|
//构建基础信息 |
|
|
|
@ -363,7 +387,7 @@ public User getNameAndMarket(Integer jwcode) { |
|
|
|
cashRecord.setActivity("Link日常充值"); |
|
|
|
cashRecord.setGoodsName("Link充值金币"); |
|
|
|
cashRecord.setRemark("Link充值金币"); |
|
|
|
cashRecord.setPermanentGold(gOrder.getCount()); |
|
|
|
cashRecord.setPermanentGold(gOrder.getCount()*100); |
|
|
|
cashRecord.setGoodNum(0); |
|
|
|
|
|
|
|
} |
|
|
|
@ -411,12 +435,6 @@ public User getNameAndMarket(Integer jwcode) { |
|
|
|
cashCollectionMapper.add(cashRecord); |
|
|
|
cashCollectionMapper.markSynced(gOrder.getId()); |
|
|
|
} |
|
|
|
log.info("同步完成一批,数量 {}", gOrders.size()); |
|
|
|
if (gOrders.size() < 100) { |
|
|
|
break; // 最后一批 |
|
|
|
} |
|
|
|
} |
|
|
|
return "同步完毕"; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
|