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. 162
      src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
  3. 2
      src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.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);
}

162
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,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

2
src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java

@ -170,7 +170,7 @@ public class ConsumeServiceImpl implements ConsumeService {
result = result.replaceAll("[\r\n]", "");
//返回状态1加成功2减成功其他失败 -5 金币不足 -6 类型错误 -7签名错误
if(!result.equals("2")){
if(!result.equals("2")){
result= GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65,
(double) (userGoldRecord.getPermanentGold() + userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getTaskGold()) / 100,
userGoldRecord.getRemark(), 0, consumeUser.getAdminName(), userGoldRecord.getGoodsName());

Loading…
Cancel
Save