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