From 2411bdeb9fb8d5c1946bb069215e79817f198bfc Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Tue, 9 Dec 2025 13:36:16 +0800 Subject: [PATCH] =?UTF-8?q?12=E6=9C=889=E6=97=A5ipay=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/controller/cash/BankController.java | 11 +++++- .../com/example/demo/domain/DTO/Ipay88DTO.java | 26 +++++++++++++ .../demo/mapper/cash/CashCollectionMapper.java | 3 ++ .../com/example/demo/service/cash/BankService.java | 3 ++ .../demo/serviceImpl/cash/BankServiceImpl.java | 43 ++++++++++++++++++++++ .../resources/cashMapper/CashCollectionMapper.xml | 14 +++++++ 6 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/example/demo/domain/DTO/Ipay88DTO.java diff --git a/src/main/java/com/example/demo/controller/cash/BankController.java b/src/main/java/com/example/demo/controller/cash/BankController.java index 70d5a03..e20caf8 100644 --- a/src/main/java/com/example/demo/controller/cash/BankController.java +++ b/src/main/java/com/example/demo/controller/cash/BankController.java @@ -104,5 +104,14 @@ public class BankController { return Result.error(e.getMessage()); } } - + //stripe银行接口(批量) + @Log("ipay银行接口(批量)") + @PostMapping("/ipayAuto") + public Result ipayAuto(@RequestBody BankDTO bankDTO) { + try { + return Result.success(bankService.ipayAuto(bankDTO)); + } catch (Exception e) { + return Result.error(e.getMessage()); + } + } } \ No newline at end of file diff --git a/src/main/java/com/example/demo/domain/DTO/Ipay88DTO.java b/src/main/java/com/example/demo/domain/DTO/Ipay88DTO.java new file mode 100644 index 0000000..395bb31 --- /dev/null +++ b/src/main/java/com/example/demo/domain/DTO/Ipay88DTO.java @@ -0,0 +1,26 @@ +package com.example.demo.domain.DTO; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @program: gold-java + * @ClassName Ipay88DTO + * @description: + * @author: Double + * @create: 2025−12-09 11:44 + * @Version 1.0 + **/ + +@Data +@NoArgsConstructor +public class Ipay88DTO { + private String orderNo;//订单号 + private String currency;//货币 + private String amount;//金额 + private String fee;//手续费 + private String net;//净额 +} diff --git a/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java b/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java index f79b602..a603a36 100644 --- a/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java +++ b/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java @@ -2,6 +2,7 @@ package com.example.demo.mapper.cash; //import com.example.demo.domain.DTO.PaymentDTO; import com.example.demo.domain.DTO.FirstdataDTO; +import com.example.demo.domain.DTO.Ipay88DTO; import com.example.demo.domain.DTO.PaymentDTO; import com.example.demo.domain.DTO.StripeDTO; import com.example.demo.domain.entity.CashRecord; @@ -76,5 +77,7 @@ public interface CashCollectionMapper { void updateByGoldCoinOrderCodeByPayment(PaymentDTO paymentDTO); void updateByGoldCoinOrderCodeByStripe(StripeDTO stripeDTO); void updateByGoldCoinOrderCodeByFirstdata(FirstdataDTO firstdataDTO); + void updateByGoldCoinOrderCodeByIpay88(Ipay88DTO ipay88DTO); List selectFirstdataList(); + List selectIpayList(); } diff --git a/src/main/java/com/example/demo/service/cash/BankService.java b/src/main/java/com/example/demo/service/cash/BankService.java index 32eb118..b0c44b9 100644 --- a/src/main/java/com/example/demo/service/cash/BankService.java +++ b/src/main/java/com/example/demo/service/cash/BankService.java @@ -33,4 +33,7 @@ public interface BankService { //firstdata银行接口(单个) Result getFirstdata(BankDTO bankDTO); + + //firstdata银行接口(批量) + Result ipayAuto(BankDTO bankDTO); } \ No newline at end of file diff --git a/src/main/java/com/example/demo/serviceImpl/cash/BankServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/BankServiceImpl.java index f784e2d..2a06d50 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/BankServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/BankServiceImpl.java @@ -671,6 +671,49 @@ public class BankServiceImpl implements BankService { } } + //IPAY银行接口(批量) + @Override + public Result ipayAuto(BankDTO bankDTO) { + // 获取需要处理的订单号列表 + List cashCollections = cashCollectionMapper.selectIpayList(); + BankVO bankVO = new BankVO(); + List message = new ArrayList<>(); + // 对每个订单执行getFirstdata方法 + for (CashCollection cashCollection : cashCollections) { + // 创建一个新的BankDTO实例,设置订单号 + Ipay88DTO ipay88DTO = new Ipay88DTO(); + ipay88DTO.setOrderNo(cashCollection.getOrderCode()); + + // 将double先转为int再转为string + double amountDouble = cashCollection.getPermanentGold() * 3.18; + int amountInt = (int) amountDouble; + ipay88DTO.setAmount(String.valueOf(amountInt)); + + double feeDouble = cashCollection.getPermanentGold() * 3.18 * 0.0085; + int feeInt = (int) feeDouble; + ipay88DTO.setFee(String.valueOf(feeInt)); + + double netDouble = cashCollection.getPermanentGold() * 3.18 - cashCollection.getPermanentGold() * 3.18 * 0.0085; + int netInt = (int) netDouble; + ipay88DTO.setNet(String.valueOf(netInt)); + cashCollectionMapper.updateByGoldCoinOrderCodeByIpay88(ipay88DTO); + // 构建成功消息 + Map successData = new HashMap<>(); + successData.put("success", true); + successData.put("orderNo", ipay88DTO.getOrderNo()); + successData.put("amount", ipay88DTO.getAmount()); + successData.put("fee", ipay88DTO.getFee()); + successData.put("net", ipay88DTO.getNet()); + message.add(JSON.toJSONString(successData, true)); + } + + // 将message存入bankVO + bankVO.setMessage(message); + + // 返回处理结果列表 + return Result.success(bankVO); + } + /** * 生成PaymentAsia API所需的签名 * diff --git a/src/main/resources/cashMapper/CashCollectionMapper.xml b/src/main/resources/cashMapper/CashCollectionMapper.xml index 039664c..153ac70 100644 --- a/src/main/resources/cashMapper/CashCollectionMapper.xml +++ b/src/main/resources/cashMapper/CashCollectionMapper.xml @@ -311,6 +311,9 @@ + update cash_record_collection @@ -348,4 +351,15 @@ order_no_status=0 where order_code=#{orderId} + + update cash_record_collection + SET + payment_currency='4', + received_currency='4', + payment_amount=#{amount}, + received_amount=#{net}, + handling_charge=#{fee}, + order_no_status=0 + where order_code=#{orderNo} + \ No newline at end of file