ソースを参照

feat: "Airwallex 支付明细保存至订单"

Ritchie 1 年間 前
コミット
e008035d45

+ 1 - 1
src/main/java/com/szwl/common/myAnnotation/CamelCaseToUnderscoreFormatter.java

@@ -15,7 +15,7 @@ public class CamelCaseToUnderscoreFormatter implements Formatter<String> {
 
 	@Override
 	public String parse(String paramString, Locale paramLocale) throws ParseException {
-		// TODO Auto-generated method stub
+		// Auto-generated method stub
 		return convertCamelCaseToUnderscore(paramString);
 	}
 

+ 60 - 37
src/main/java/com/szwl/controller/AirwallexPayController.java

@@ -44,16 +44,6 @@ public class AirwallexPayController {
 //    @Value("${test.value:bbb}")
 //    private String testValue;
 
-    public AirwallexPayController(TAdminService tAdminService, AirwallexService airwallexService, TCoinOrderService tCoinOrderService, TOrderDetailsService tOrderDetailsService, TAirwallexPaymentService tAirwallexPaymentService, SzwlFeign szwlFeign, TAirwallexMchService airwallexMchService) {
-        this.tAdminService = tAdminService;
-        this.airwallexService = airwallexService;
-        this.tCoinOrderService = tCoinOrderService;
-        this.tOrderDetailsService = tOrderDetailsService;
-        this.tAirwallexPaymentService = tAirwallexPaymentService;
-        this.szwlFeign = szwlFeign;
-        this.airwallexMchService = airwallexMchService;
-    }
-
     TAdminService tAdminService;
 
     AirwallexService airwallexService;
@@ -68,7 +58,18 @@ public class AirwallexPayController {
 
     TAirwallexMchService airwallexMchService;
 
+    TAirwallexWalletService airwallexWalletService;
 
+    public AirwallexPayController(TAdminService tAdminService, AirwallexService airwallexService, TCoinOrderService tCoinOrderService, TOrderDetailsService tOrderDetailsService, TAirwallexPaymentService tAirwallexPaymentService, SzwlFeign szwlFeign, TAirwallexMchService airwallexMchService, TAirwallexWalletService airwallexWalletService) {
+        this.tAdminService = tAdminService;
+        this.airwallexService = airwallexService;
+        this.tCoinOrderService = tCoinOrderService;
+        this.tOrderDetailsService = tOrderDetailsService;
+        this.tAirwallexPaymentService = tAirwallexPaymentService;
+        this.szwlFeign = szwlFeign;
+        this.airwallexMchService = airwallexMchService;
+        this.airwallexWalletService = airwallexWalletService;
+    }
 
     @ApiOperation(value = "创建收款人")
     @PostMapping("/caBeneficiary")
@@ -144,6 +145,8 @@ public class AirwallexPayController {
         // 在 Airwallex 支付之前,要先判断
 
         BigDecimal amount = paymentIntentRequestBody.getAmount();
+        Date createDate = paymentIntentRequestBody.getCreateDate();
+        Date modifyDate = paymentIntentRequestBody.getModifyDate();
         String currency = paymentIntentRequestBody.getCurrency();
         String merchantOrderId = paymentIntentRequestBody.getMerchantOrderId();
 //        String requestId = paymentIntentRequestBody.getRequestId();
@@ -188,7 +191,8 @@ public class AirwallexPayController {
         // 创建订单
         TCoinOrder tCoinOrder = new TCoinOrder();
         tCoinOrder.setAdminId(adminById.getId());
-        tCoinOrder.setCreateDate(new Date());
+        tCoinOrder.setCreateDate(createDate);
+        tCoinOrder.setModifyDate(modifyDate);
         tCoinOrder.setSn(sn);
         tCoinOrder.setAmount(amount);
         tCoinOrder.setCurrency(currency);
@@ -234,14 +238,13 @@ public class AirwallexPayController {
         }
         tCoinOrder.setAltInfo(airDistributionDetails.toString());
 
-
-
         // 订单明细表
         TOrderDetails tOrderDetails = new TOrderDetails();
         tOrderDetails.setId(merchantOrderId);
         tOrderDetails.setAdminId(adminById.getId());
         tOrderDetails.setEquipmentId(equipmentId);
-        tOrderDetails.setCreateDate(new Date());
+        tOrderDetails.setCreateDate(createDate);
+        tOrderDetails.setModifyDate(modifyDate);
         tOrderDetails.setOrderSn(sn);
         tOrderDetails.setPrice(amount);
         tOrderDetails.setProductName(productName);
@@ -322,7 +325,7 @@ public class AirwallexPayController {
 //        JSONObject customerObj = JSON.parseObject(customer);
 //        String address = customerObj.getString("address");
 
-        // TODO: 要改
+        // TODO: 要改???
         String type = jsonObject.getJSONObject("latest_payment_attempt").getJSONObject("payment_method").getString("type");
 //        JSONObject jsonObject4 = Optional.ofNullable(jsonObject)
 //                .flatMap(jsonObject3 -> Optional.ofNullable(jsonObject3.getJSONObject("customer")))
@@ -371,6 +374,7 @@ public class AirwallexPayController {
 
 //        String requestId = refundRequestBody.getRequestId();
         String paymentIntentId = refundRequestBody.getPaymentIntentId();
+        Date refundDate = refundRequestBody.getRefundDate();
 //        String reason = refundRequestBody.getReason();
 
 //        QueryWrapper<TOrderAbroad> tOrderAbroadQueryWrapper = new QueryWrapper<>();
@@ -396,7 +400,7 @@ public class AirwallexPayController {
 //        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 //        String format = localDateTime.format(dtf);
         // 退款发起时间
-        coinOrder.setRefundDate(new Date());
+        coinOrder.setRefundDate(refundDate);
         tCoinOrderService.updateById(coinOrder);
 
 
@@ -485,7 +489,7 @@ public class AirwallexPayController {
 
     }
 
-    @ApiOperation(value = "新建一笔付款")
+    @ApiOperation(value = "新建一笔付款,用于提现")
     @PostMapping("/caPayment")
     public R caPayment(@RequestBody CaPaymentRequestDTO caPaymentRequestDTO) {
 
@@ -509,7 +513,7 @@ public class AirwallexPayController {
         String beneficiaryId = jsonNode.get("beneficiary_id").asText();
         String createdAtStr = jsonNode.get("created_at").asText();
 
-        // TODO: 保存支付提现明细
+        // 保存支付提现明细
         TAirwallexPayment tAirwallexPayment = new TAirwallexPayment();
         tAirwallexPayment.setPaymentId(paymentId);
         tAirwallexPayment.setPaymentCurrency(paymentCurrency);
@@ -523,8 +527,7 @@ public class AirwallexPayController {
         tAirwallexPayment.setAdminId(adminId);
         tAirwallexPaymentService.save(tAirwallexPayment);
 
-        // TODO: 从当前余额中扣除提现金额,考虑货币
-        // TODO: 改成每次将余额全部提现
+        // TODO: 从当前余额中扣除提现金额,考虑货币,改成每次将余额全部提现
 //        tAirwallexWalletService.list()
 //        LambdaQueryWrapper<TAirwallexWallet> wrapper = Wrappers.lambdaQuery();
 //        wrapper.eq(TAirwallexWallet::getAdminId, adminId);
@@ -590,9 +593,9 @@ public class AirwallexPayController {
                 agencyAmount = null, // 一级分销商所得的钱
                 merchantAmount = null; // 二级分销商所得的钱
 
-        TAirwallexMch selfAirMch = null, // 商家收款信息
-                agencyAirMch = null, // 一级分销商收款信息
-                merchantAirMch = null; // 二级分销商收款信息
+        TAirwallexWallet selfAirWallet = null, // 商家收款信息
+                agencyAirWallet = null, // 一级分销商收款信息
+                merchantAirWallet = null; // 二级分销商收款信息
 
         ObjectNode airJson = null, // 空中云汇
                 selfJson = null, // 商家
@@ -618,9 +621,14 @@ public class AirwallexPayController {
 
                 // Airwallex 平台收款信息表
 //                Long adminId = proportion.getAdminId();
-                LambdaQueryWrapper<TAirwallexMch> wrapper = Wrappers.lambdaQuery();
-                wrapper.eq(TAirwallexMch::getAdminId, proportion.getAdminId());
-                selfAirMch = airwallexMchService.getOne(wrapper);
+//                LambdaQueryWrapper<TAirwallexMch> wrapper = Wrappers.lambdaQuery();
+//                wrapper.eq(TAirwallexMch::getAdminId, proportion.getAdminId());
+//                selfAirMch = airwallexMchService.getOne(wrapper);
+
+                // Airwallex 钱包信息
+                LambdaQueryWrapper<TAirwallexWallet> query = Wrappers.lambdaQuery();
+                query.eq(TAirwallexWallet::getAdminId, proportion.getAdminId());
+                selfAirWallet = airwallexWalletService.getOne(query);
 
                 // 平台分销
 //                airJson = JsonNodeFactory.instance.objectNode();
@@ -632,7 +640,7 @@ public class AirwallexPayController {
 
                 // 商家分销
                 selfJson = JsonNodeFactory.instance.objectNode();
-                selfJson.put("airBeneId", selfAirMch.getBeneficiaryId());
+                selfJson.put("airBeneId", selfAirWallet.getAdminId()); // 受益人Bene编号,使用adminId
                 selfJson.put("airAmount", selfAmount.toString());
                 altInfos.add(selfJson);
                 break;
@@ -645,19 +653,20 @@ public class AirwallexPayController {
                 selfAmount = cutPrice.multiply(selfProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
 
                 // Airwallex 平台收款信息表
-                agencyAirMch = airwallexMchService.getAirMch(proportion.getAgencyId());
-                selfAirMch = airwallexMchService.getAirMch(proportion.getAdminId());
+                agencyAirWallet = airwallexWalletService.getAirWallet(proportion.getAgencyId());
+                selfAirWallet = airwallexWalletService.getAirWallet(proportion.getAdminId());
+
                 if (!(agencyProportion.compareTo(refuseAmount) == 0 || agencyProportion == null)) {
                     // 一级代理获得利润
                     agencyAmount = cutPrice.multiply(agencyProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
                     agencyJson = JsonNodeFactory.instance.objectNode();
-                    agencyJson.put("airBeneId", agencyAirMch.getBeneficiaryId());
+                    agencyJson.put("airBeneId", agencyAirWallet.getAdminId());
                     agencyJson.put("airAmount", agencyAmount.toString());
                     altInfos.add(agencyJson);
                 }
                 // 商家自己获得利润
                 selfJson = JsonNodeFactory.instance.objectNode();
-                selfJson.put("airBeneId", selfAirMch.getBeneficiaryId());
+                selfJson.put("airBeneId", selfAirWallet.getAdminId());
                 selfJson.put("airAmount", selfAmount.toString());
                 altInfos.add(selfJson);
                 break;
@@ -672,14 +681,28 @@ public class AirwallexPayController {
                 // 商家分销获得利润,五舍六入
                 selfAmount = cutPrice.multiply(selfProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
                 // Airwallex 平台收款信息表
-                selfAirMch = airwallexMchService.getAirMch(proportion.getAdminId());
-                agencyAirMch = airwallexMchService.getAirMch(proportion.getAgencyId());
-                merchantAirMch = airwallexMchService.getAirMch(proportion.getMerchantId());
+                Long adminId = proportion.getAdminId();
+                if (adminId != null) {
+                    selfAirWallet = airwallexWalletService.getAirWallet(adminId);
+                    System.out.println("selfAirWallet打印出来》》》" + selfAirWallet);
+                }
+                Long agencyId = proportion.getAgencyId();
+                if (agencyId != null) {
+                    agencyAirWallet = airwallexWalletService.getAirWallet(agencyId);
+                    System.out.println("agencyAirWallet打印出来》》》" + agencyAirWallet);
+                }
+
+                Long merchantId = proportion.getMerchantId();
+                if (merchantId != null ) {
+                    merchantAirWallet = airwallexWalletService.getAirWallet(merchantId);
+                    System.out.println("merchantAirWallet打印出来》》》" + merchantAirWallet);
+                }
+
                 if (!(agencyProportion.compareTo(refuseAmount) == 0 || agencyProportion == null)) {
                     // 一级代理获得利润
                     agencyAmount = cutPrice.multiply(agencyProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
                     agencyJson = JsonNodeFactory.instance.objectNode();
-                    agencyJson.put("airBeneId", agencyAirMch.getBeneficiaryId());
+                    agencyJson.put("airBeneId", agencyAirWallet.getAdminId());
                     agencyJson.put("airAmount", agencyAmount.toString());
                     altInfos.add(agencyJson);
                 }
@@ -687,13 +710,13 @@ public class AirwallexPayController {
                     // 二级经销商获得利润
                     merchantAmount = cutPrice.multiply(merchantProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
                     merchantJson = JsonNodeFactory.instance.objectNode();
-                    merchantJson.put("airBeneId", merchantAirMch.getBeneficiaryId());
+                    merchantJson.put("airBeneId", merchantAirWallet.getAdminId());
                     merchantJson.put("airAmount", merchantAmount.toString());
                     altInfos.add(merchantJson);
                 }
                 // 商家自己获得利润
                 selfJson = JsonNodeFactory.instance.objectNode();
-                selfJson.put("airBeneId", selfAirMch.getBeneficiaryId());
+                selfJson.put("airBeneId", selfAirWallet.getAdminId());
                 selfJson.put("airAmount", selfAmount.toString());
                 altInfos.add(selfJson);
                 break;

+ 24 - 21
src/main/java/com/szwl/controller/TCoinOrderController.java

@@ -16,9 +16,11 @@ import com.szwl.constant.HuifuConstant;
 import com.szwl.feign.bean.SzwlFeign;
 import com.szwl.model.bo.R;
 import com.szwl.model.entity.TAirwallexMch;
+import com.szwl.model.entity.TAirwallexWallet;
 import com.szwl.model.entity.THuifuMch;
 import com.szwl.model.entity.TProportion;
 import com.szwl.service.TAirwallexMchService;
+import com.szwl.service.TAirwallexWalletService;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
@@ -39,12 +41,12 @@ import java.util.Iterator;
 @RequestMapping("/tCoinOrder")
 public class TCoinOrderController {
 
-    TAirwallexMchService airwallexMchService;
-
     SzwlFeign szwlFeign;
 
-    public TCoinOrderController(TAirwallexMchService airwallexMchService, SzwlFeign szwlFeign) {
-        this.airwallexMchService = airwallexMchService;
+    TAirwallexWalletService airwallexWalletService;
+
+    public TCoinOrderController(TAirwallexWalletService airwallexWalletService, SzwlFeign szwlFeign) {
+        this.airwallexWalletService = airwallexWalletService;
         this.szwlFeign = szwlFeign;
     }
 
@@ -75,9 +77,9 @@ public class TCoinOrderController {
                 agencyAmount = null, // 一级分销商所得的钱
                 merchantAmount = null; // 二级分销商所得的钱
 
-        TAirwallexMch selfAirMch = null, // 商家收款信息
-                agencyAirMch = null, // 一级分销商收款信息
-                merchantAirMch = null; // 二级分销商收款信息
+        TAirwallexWallet selfAirWallet = null, // 商家收款信息
+                agencyAirWallet = null, // 一级分销商收款信息
+                merchantAirWallet = null; // 二级分销商收款信息
 
         ObjectNode airJson = null, // 空中云汇
                 selfJson = null, // 商家
@@ -103,9 +105,9 @@ public class TCoinOrderController {
 
                 // Airwallex 平台收款信息表
 //                Long adminId = proportion.getAdminId();
-                LambdaQueryWrapper<TAirwallexMch> wrapper = Wrappers.lambdaQuery();
-                wrapper.eq(TAirwallexMch::getAdminId, proportion.getAdminId());
-                selfAirMch = airwallexMchService.getOne(wrapper);
+                LambdaQueryWrapper<TAirwallexWallet> wrapper = Wrappers.lambdaQuery();
+                wrapper.eq(TAirwallexWallet::getAdminId, proportion.getAdminId());
+                selfAirWallet = airwallexWalletService.getOne(wrapper);
 
                 // 平台分销
 //                airJson = JsonNodeFactory.instance.objectNode();
@@ -117,7 +119,7 @@ public class TCoinOrderController {
 
                 // 商家分销
                 selfJson = JsonNodeFactory.instance.objectNode();
-                selfJson.put("airBeneId", selfAirMch.getBeneficiaryId());
+                selfJson.put("airBeneId", selfAirWallet.getAdminId());
                 selfJson.put("airAmount", selfAmount.toString());
                 altInfos.add(selfJson);
                 break;
@@ -130,19 +132,20 @@ public class TCoinOrderController {
                 selfAmount = cutPrice.multiply(selfProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
 
                 // Airwallex 平台收款信息表
-                agencyAirMch = airwallexMchService.getAirMch(proportion.getAgencyId());
-                selfAirMch = airwallexMchService.getAirMch(proportion.getAdminId());
+                agencyAirWallet = airwallexWalletService.getAirWallet(proportion.getAgencyId());
+                selfAirWallet = airwallexWalletService.getAirWallet(proportion.getAdminId());
+
                 if (!(agencyProportion.compareTo(refuseAmount) == 0 || agencyProportion == null)) {
                     // 一级代理获得利润
                     agencyAmount = cutPrice.multiply(agencyProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
                     agencyJson = JsonNodeFactory.instance.objectNode();
-                    agencyJson.put("airBeneId", agencyAirMch.getBeneficiaryId());
+                    agencyJson.put("airBeneId", agencyAirWallet.getAdminId());
                     agencyJson.put("airAmount", agencyAmount.toString());
                     altInfos.add(agencyJson);
                 }
                 // 商家自己获得利润
                 selfJson = JsonNodeFactory.instance.objectNode();
-                selfJson.put("airBeneId", selfAirMch.getBeneficiaryId());
+                selfJson.put("airBeneId", selfAirWallet.getAdminId());
                 selfJson.put("airAmount", selfAmount.toString());
                 altInfos.add(selfJson);
                 break;
@@ -157,14 +160,14 @@ public class TCoinOrderController {
                 // 商家分销获得利润,五舍六入
                 selfAmount = cutPrice.multiply(selfProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
                 // Airwallex 平台收款信息表
-                selfAirMch = airwallexMchService.getAirMch(proportion.getAdminId());
-                agencyAirMch = airwallexMchService.getAirMch(proportion.getAgencyId());
-                merchantAirMch = airwallexMchService.getAirMch(proportion.getMerchantId());
+                selfAirWallet = airwallexWalletService.getAirWallet(proportion.getAdminId());
+                agencyAirWallet = airwallexWalletService.getAirWallet(proportion.getAgencyId());
+                merchantAirWallet = airwallexWalletService.getAirWallet(proportion.getMerchantId());
                 if (!(agencyProportion.compareTo(refuseAmount) == 0 || agencyProportion == null)) {
                     // 一级代理获得利润
                     agencyAmount = cutPrice.multiply(agencyProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
                     agencyJson = JsonNodeFactory.instance.objectNode();
-                    agencyJson.put("airBeneId", agencyAirMch.getBeneficiaryId());
+                    agencyJson.put("airBeneId", agencyAirWallet.getAdminId());
                     agencyJson.put("airAmount", agencyAmount.toString());
                     altInfos.add(agencyJson);
                 }
@@ -172,13 +175,13 @@ public class TCoinOrderController {
                     // 二级经销商获得利润
                     merchantAmount = cutPrice.multiply(merchantProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
                     merchantJson = JsonNodeFactory.instance.objectNode();
-                    merchantJson.put("airBeneId", merchantAirMch.getBeneficiaryId());
+                    merchantJson.put("airBeneId", merchantAirWallet.getAdminId());
                     merchantJson.put("airAmount", merchantAmount.toString());
                     altInfos.add(merchantJson);
                 }
                 // 商家自己获得利润
                 selfJson = JsonNodeFactory.instance.objectNode();
-                selfJson.put("airBeneId", selfAirMch.getBeneficiaryId());
+                selfJson.put("airBeneId", selfAirWallet.getAdminId());
                 selfJson.put("airAmount", selfAmount.toString());
                 altInfos.add(selfJson);
                 break;

+ 0 - 1
src/main/java/com/szwl/controller/TOrderController.java

@@ -193,7 +193,6 @@ public class TOrderController {
         }
 
 
-
         Long equipmentId = equipment.getId();
         //查找商品
         ResponseModel<TProduct> product1 = szwlFeign.getProduct(String.valueOf(equipmentId), productName);

+ 17 - 1
src/main/java/com/szwl/controller/WebhookController.java

@@ -5,6 +5,9 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.szwl.model.entity.TCoinOrder;
 import com.szwl.model.utils.PushUtils;
 import com.szwl.service.TCoinOrderService;
@@ -183,8 +186,21 @@ public class WebhookController {
 
             System.out.println(coinOrder);
 
-            coinOrder.setStatus(1);
+            coinOrder.setStatus(1); // 订单状态设置为已支付
             tCoinOrderService.updateById(coinOrder);
+            // TODO: 然后再去分销,给每个账户钱包加钱
+            // 先获取订单信息中的 altInfo 字段,然后拆分,获取其中每个 adminId 和对应的金额
+            String altInfo = coinOrder.getAltInfo();
+            try {
+                ObjectMapper objectMapper = new ObjectMapper();
+                JsonNode jsonNode = objectMapper.readTree(altInfo);
+                for (JsonNode node : jsonNode) {
+                    String airBeneId = node.get("airBeneId").asText();
+                    String airAmount = node.get("airAmount").asText();
+                }
+            } catch (JsonProcessingException e) {
+                throw new RuntimeException(e);
+            }
 
             // 通知做糖
             JSONObject kindData = new JSONObject();

+ 4 - 0
src/main/java/com/szwl/feign/bean/SzwlFeign.java

@@ -6,6 +6,7 @@ import com.szwl.model.entity.*;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
@@ -52,6 +53,9 @@ public interface SzwlFeign {
     @GetMapping("/tAdmin/getAdmin")
     ResponseModel<TAdmin> getAdmin(@RequestParam String id);
 
+    @GetMapping("/tAdmin/getAdminOne/{adminId}")
+    ResponseModel<TAdmin> getAdminOne(@PathVariable Long adminId);
+
     @GetMapping("/tJoinpayMch/getMch")
     ResponseModel<TJoinpayMch> getMch(@RequestParam String id);
 

+ 6 - 0
src/main/java/com/szwl/model/bean/PaymentIntentRequestBody.java

@@ -4,10 +4,16 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.math.BigDecimal;
+import java.sql.Timestamp;
+import java.util.Date;
 
 @Data
 public class PaymentIntentRequestBody {
 
+    private Date createDate;
+
+    private Date modifyDate;
+
     private BigDecimal amount;
 
     private String currency;

+ 3 - 0
src/main/java/com/szwl/model/bean/RefundRequestBody.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 @Data
 public class RefundRequestBody {
@@ -17,4 +18,6 @@ public class RefundRequestBody {
     private String paymentIntentId;
 
     private String reason;
+
+    private Date refundDate;
 }

+ 2 - 2
src/main/java/com/szwl/model/bo/JsonMessage.java

@@ -135,9 +135,9 @@ public final class JsonMessage {
     public static Object optimiseObj(Object bean, String... properties) {
         Map<String, Object> map = new HashMap<>();
         if (bean == null) {
-            //TODO 前端需要null
+            // 前端需要null
             return null;
-            // TODO 前端需要空对象
+            // 前端需要空对象
 //            return map;
         }
         // 判断是否列表

+ 3 - 0
src/main/java/com/szwl/model/entity/TOrderDetails.java

@@ -38,6 +38,9 @@ public class TOrderDetails implements Serializable {
     @ApiModelProperty(value = "创建时间")
     private Date createDate;
 
+    @ApiModelProperty(value = "修改时间")
+    private Date modifyDate;
+
     @ApiModelProperty(value = "订单编号")
     private String orderSn;
 

+ 7 - 0
src/main/java/com/szwl/service/TAirwallexWalletService.java

@@ -3,6 +3,7 @@ package com.szwl.service;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.szwl.model.entity.TAirwallexMch;
 import com.szwl.model.entity.TAirwallexWallet;
 import com.baomidou.mybatisplus.extension.service.IService;
 import io.swagger.annotations.ApiOperation;
@@ -21,4 +22,10 @@ import java.math.BigDecimal;
  */
 public interface TAirwallexWalletService extends IService<TAirwallexWallet> {
 
+    /**
+     * 获取 Air 钱包明细
+     * @param id
+     * @return
+     */
+    TAirwallexWallet getAirWallet(Long id);
 }

+ 2 - 2
src/main/java/com/szwl/service/impl/TAirwallexMchServiceImpl.java

@@ -9,7 +9,7 @@ import com.szwl.model.entity.TAirwallexMch;
 import com.szwl.mapper.TAirwallexMchMapper;
 import com.szwl.service.TAirwallexMchService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.szwl.utils.AirwallexMchException;
+import com.szwl.utils.AirwallexWalletException;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -61,7 +61,7 @@ public class TAirwallexMchServiceImpl extends ServiceImpl<TAirwallexMchMapper, T
             TAirwallexMch airwallexMch = airwallexMchService.getOne(wrapper);
 
             if (airwallexMch == null) {
-                throw new AirwallexMchException("未注册提现号");
+                throw new AirwallexWalletException("未注册提现号");
             }
             return airwallexMch;
         }

+ 54 - 0
src/main/java/com/szwl/service/impl/TAirwallexWalletServiceImpl.java

@@ -1,11 +1,21 @@
 package com.szwl.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.szwl.feign.bean.SzwlFeign;
+import com.szwl.model.bo.R;
+import com.szwl.model.bo.ResponseModel;
+import com.szwl.model.entity.TAdmin;
 import com.szwl.model.entity.TAirwallexWallet;
 import com.szwl.mapper.TAirwallexWalletMapper;
 import com.szwl.service.TAirwallexWalletService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.szwl.utils.AirwallexWalletException;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.List;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +27,48 @@ import org.springframework.stereotype.Service;
 @Service
 public class TAirwallexWalletServiceImpl extends ServiceImpl<TAirwallexWalletMapper, TAirwallexWallet> implements TAirwallexWalletService {
 
+    @Resource
+    TAirwallexWalletService airwallexWalletService;
+    @Resource
+    SzwlFeign szwlFeign;
+
+    @Override
+    public TAirwallexWallet getAirWallet(Long id) {
+
+        // 根据 adminId 获取admin信息
+        TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdminOne(id));
+//        String adminId = String.valueOf(id);
+//        TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(adminId));
+        System.out.println("打印tAdmin" + admin);
+
+        if (!admin.getIsAdmined()) {
+            if (admin.getType() <= 1) { // 公司人员
+                TAirwallexWallet airwallexWallet = new TAirwallexWallet();
+//                airwallexWallet.setEntityType("PERSONAL"); // 商户类型,“PERSONAL”为个人,“COMPANY”为企业
+                return airwallexWallet;
+            } else { // 商家
+//                TAdmin parentAdmin = adminService.getById();
+                TAdmin parentAdmin = R.getDataIfSuccess(szwlFeign.getAdminOne(admin.getParentId()));
+//                String parentId = String.valueOf(admin.getParentId());
+//                TAdmin parentAdmin = R.getDataIfSuccess(szwlFeign.getAdmin(parentId));
+                LambdaQueryWrapper<TAirwallexWallet> wrapper = Wrappers.lambdaQuery();
+                wrapper.eq(TAirwallexWallet::getAdminId, parentAdmin.getId());
+
+                List<TAirwallexWallet> list = airwallexWalletService.list(wrapper);
+                TAirwallexWallet airwallexWallet = list.get(0);
+                // 刷新
+//                TAirwallexWallet walletById = airwallexWalletService.getById(airwallexWallet.getAdminId());
+                return airwallexWallet;
+            }
+        } else {
+            LambdaQueryWrapper<TAirwallexWallet> wrapper = Wrappers.lambdaQuery();
+            wrapper.eq(TAirwallexWallet::getAdminId, id);
+            TAirwallexWallet airwallexWallet = airwallexWalletService.getOne(wrapper);
+
+            if (airwallexWallet == null) {
+                throw new AirwallexWalletException("未注册提现号");
+            }
+            return airwallexWallet;
+        }
+    }
 }

+ 0 - 1
src/main/java/com/szwl/service/impl/TWeixinPayConfigServiceImpl.java

@@ -99,7 +99,6 @@ public class TWeixinPayConfigServiceImpl extends ServiceImpl<TWeixinPayConfigMap
         String nonce = resourceMap.get("nonce");
         // 附加数据
         String associatedData = resourceMap.get("associated_data");
-        //todo
         List<TWeixinPayConfig> list = list();
         AesUtil aesUtil = new
                 AesUtil(list.get(0).getApiV3key().getBytes(StandardCharsets.UTF_8));

+ 0 - 8
src/main/java/com/szwl/utils/AirwallexMchException.java

@@ -1,8 +0,0 @@
-package com.szwl.utils;
-
-public class AirwallexMchException extends RuntimeException{
-
-    public AirwallexMchException(String msg) {
-        super(msg);
-    }
-}

+ 8 - 0
src/main/java/com/szwl/utils/AirwallexWalletException.java

@@ -0,0 +1,8 @@
+package com.szwl.utils;
+
+public class AirwallexWalletException extends RuntimeException{
+
+    public AirwallexWalletException(String msg) {
+        super(msg);
+    }
+}

+ 4 - 4
src/test/java/com/szwl/AutoGeneratorTests.java

@@ -35,18 +35,18 @@ class AutoGeneratorTests {
 				.setBaseColumnList(true)//设置基本的列
 				.setControllerName("%sController");
 
-		//配置数据源
-		//TODO:配置数据源
+		// 配置数据源
 		DataSourceConfig dataSourceConfig = new DataSourceConfig();
 		dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver")
+				// TODO: 数据库名称
 				.setUrl("jdbc:mysql://rm-wz995mu26a1479kz0so.mysql.rds.aliyuncs.com:3306/orderdb-test")
 				.setUsername("root").setPassword("sunzee@020");
 
-		//策略配置
-		//TODO:配置表名
+		// 策略配置
 		StrategyConfig strategyConfig = new StrategyConfig();
 		strategyConfig
 //				.setCapitalMode(true)//设置全局大写命名
+				// TODO: 表名
 				.setInclude(new String[]{
 						"t_coin_order"
 				})//只会生成该表