|
|
|
@ -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,91 +333,108 @@ 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; |
|
|
|
} |
|
|
|
for (GOrder gOrder : gOrders) { |
|
|
|
CashRecord cashRecord = new CashRecord(); |
|
|
|
//构建基础信息 |
|
|
|
cashRecord.setOrderType(1); |
|
|
|
cashRecord.setJwcode(gOrder.getJwcode()); |
|
|
|
String name=cashCollectionMapper.getNameByJwcode(gOrder.getJwcode()); |
|
|
|
if (name!=null){ |
|
|
|
cashRecord.setName(name); |
|
|
|
}else cashRecord.setName("未知"); |
|
|
|
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(); |
|
|
|
//构建基础信息 |
|
|
|
cashRecord.setOrderType(1); |
|
|
|
cashRecord.setJwcode(gOrder.getJwcode()); |
|
|
|
String name=cashCollectionMapper.getNameByJwcode(gOrder.getJwcode()); |
|
|
|
if (name!=null){ |
|
|
|
cashRecord.setName(name); |
|
|
|
}else cashRecord.setName("未知"); |
|
|
|
|
|
|
|
cashRecord.setMarket(cashCollectionMapper.getMarketByJwcode(gOrder.getJwcode())); |
|
|
|
if (gOrder.getType().equals("gold")){ //充金豆 |
|
|
|
cashRecord.setMarket(cashCollectionMapper.getMarketByJwcode(gOrder.getJwcode())); |
|
|
|
if (gOrder.getType().equals("gold")){ //充金豆 |
|
|
|
cashRecord.setActivity("Link日常充值"); |
|
|
|
cashRecord.setGoodsName("Link充值金豆"); |
|
|
|
cashRecord.setRemark("Link充值金豆"); |
|
|
|
cashRecord.setNumUnit("个"); |
|
|
|
cashRecord.setPermanentGold(0); |
|
|
|
cashRecord.setGoodNum(gOrder.getCount()); |
|
|
|
cashRecord.setRemark("Link充值金豆"); |
|
|
|
cashRecord.setNumUnit("个"); |
|
|
|
cashRecord.setPermanentGold(0); |
|
|
|
cashRecord.setGoodNum(gOrder.getCount()); |
|
|
|
|
|
|
|
} |
|
|
|
if (gOrder.getType().equals("gold_coin")){//充金币 |
|
|
|
cashRecord.setActivity("Link日常充值"); |
|
|
|
cashRecord.setGoodsName("Link充值金币"); |
|
|
|
cashRecord.setRemark("Link充值金币"); |
|
|
|
cashRecord.setPermanentGold(gOrder.getCount()); |
|
|
|
cashRecord.setGoodNum(0); |
|
|
|
} |
|
|
|
if (gOrder.getType().equals("gold_coin")){//充金币 |
|
|
|
cashRecord.setActivity("Link日常充值"); |
|
|
|
cashRecord.setGoodsName("Link充值金币"); |
|
|
|
cashRecord.setRemark("Link充值金币"); |
|
|
|
cashRecord.setPermanentGold(gOrder.getCount()*100); |
|
|
|
cashRecord.setGoodNum(0); |
|
|
|
|
|
|
|
} |
|
|
|
cashRecord.setOrderCode(gOrder.getOrderNo()); |
|
|
|
if (gOrder != null) { |
|
|
|
switch (gOrder.getPayStyle()) { |
|
|
|
case 3: |
|
|
|
cashRecord.setPayType("IOS内购"); |
|
|
|
cashRecord.setBankCode(gOrder.getIosTransactionId()); |
|
|
|
cashRecord.setReceivedMarket("4"); |
|
|
|
cashRecord.setPayload("IOS"); |
|
|
|
break; |
|
|
|
case 5: |
|
|
|
cashRecord.setPayType("Stripe-链接收款"); |
|
|
|
cashRecord.setReceivedMarket("13"); |
|
|
|
cashRecord.setPayload("Stripe"); |
|
|
|
break; |
|
|
|
case 6: |
|
|
|
cashRecord.setPayType("PaymentAsia-链接收款"); |
|
|
|
cashRecord.setReceivedMarket("13"); |
|
|
|
cashRecord.setPayload("PaymentAsia"); |
|
|
|
break; |
|
|
|
case 7: |
|
|
|
cashRecord.setPayType("Ipay88-链接收款"); |
|
|
|
cashRecord.setReceivedMarket("5"); |
|
|
|
cashRecord.setPayload("Ipay88"); |
|
|
|
break; |
|
|
|
case 9: |
|
|
|
cashRecord.setPayType("FistData"); |
|
|
|
cashRecord.setReceivedMarket("4"); |
|
|
|
cashRecord.setBankCode(gOrder.getFirstdataIpgTransactionId()); |
|
|
|
cashRecord.setPayload("FistData"); |
|
|
|
break; |
|
|
|
default: |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
cashRecord.setFreeGold(0); |
|
|
|
cashRecord.setPaymentCurrency(""); |
|
|
|
cashRecord.setPaymentAmount(BigDecimal.valueOf(0)); |
|
|
|
cashRecord.setPayTime(LocalDateTime.ofEpochSecond(gOrder.getSuccessTime(), 0, ZoneOffset.UTC)); |
|
|
|
cashRecord.setStatus(3); |
|
|
|
cashRecord.setSubmitterId(99999); |
|
|
|
//存入现金库 |
|
|
|
cashCollectionMapper.add(cashRecord); |
|
|
|
cashCollectionMapper.markSynced(gOrder.getId()); |
|
|
|
} |
|
|
|
log.info("同步完成一批,数量 {}", gOrders.size()); |
|
|
|
if (gOrders.size() < 100) { |
|
|
|
break; // 最后一批 |
|
|
|
cashRecord.setOrderCode(gOrder.getOrderNo()); |
|
|
|
if (gOrder != null) { |
|
|
|
switch (gOrder.getPayStyle()) { |
|
|
|
case 3: |
|
|
|
cashRecord.setPayType("IOS内购"); |
|
|
|
cashRecord.setBankCode(gOrder.getIosTransactionId()); |
|
|
|
cashRecord.setReceivedMarket("4"); |
|
|
|
cashRecord.setPayload("IOS"); |
|
|
|
break; |
|
|
|
case 5: |
|
|
|
cashRecord.setPayType("Stripe-链接收款"); |
|
|
|
cashRecord.setReceivedMarket("13"); |
|
|
|
cashRecord.setPayload("Stripe"); |
|
|
|
break; |
|
|
|
case 6: |
|
|
|
cashRecord.setPayType("PaymentAsia-链接收款"); |
|
|
|
cashRecord.setReceivedMarket("13"); |
|
|
|
cashRecord.setPayload("PaymentAsia"); |
|
|
|
break; |
|
|
|
case 7: |
|
|
|
cashRecord.setPayType("Ipay88-链接收款"); |
|
|
|
cashRecord.setReceivedMarket("5"); |
|
|
|
cashRecord.setPayload("Ipay88"); |
|
|
|
break; |
|
|
|
case 9: |
|
|
|
cashRecord.setPayType("FistData"); |
|
|
|
cashRecord.setReceivedMarket("4"); |
|
|
|
cashRecord.setBankCode(gOrder.getFirstdataIpgTransactionId()); |
|
|
|
cashRecord.setPayload("FistData"); |
|
|
|
break; |
|
|
|
default: |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
cashRecord.setFreeGold(0); |
|
|
|
cashRecord.setPaymentCurrency(""); |
|
|
|
cashRecord.setPaymentAmount(BigDecimal.valueOf(0)); |
|
|
|
cashRecord.setPayTime(LocalDateTime.ofEpochSecond(gOrder.getSuccessTime(), 0, ZoneOffset.UTC)); |
|
|
|
cashRecord.setStatus(3); |
|
|
|
cashRecord.setSubmitterId(99999); |
|
|
|
//存入现金库 |
|
|
|
cashCollectionMapper.add(cashRecord); |
|
|
|
cashCollectionMapper.markSynced(gOrder.getId()); |
|
|
|
} |
|
|
|
return "同步完毕"; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
|