Browse Source

12-09 同步订单金额×100

lijianlin/feature-20251104110749-现金管理二期
lijianlin 1 month ago
parent
commit
3d1a8e11f7
  1. 3
      src/main/java/com/example/demo/service/cash/CashCollectionService.java
  2. 36
      src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java

3
src/main/java/com/example/demo/service/cash/CashCollectionService.java

@ -1,6 +1,7 @@
package com.example.demo.service.cash;
import com.example.demo.domain.entity.CashRecord;
import com.example.demo.domain.entity.GOrder;
import com.example.demo.domain.entity.RechargeActivity;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.cash.CashCollection;
@ -39,4 +40,6 @@ public interface CashCollectionService {
CashCollection selectById(CashCollection cashCollection);
//根据goldcoin订单号查询收款订单
CashCollection selectByGoldCoinOrderCode(String orderNo);
//同步事务方法
void processBatch(List<GOrder> gOrders);
}

36
src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java

@ -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

Loading…
Cancel
Save