diff --git a/config/nacos/cn/finance-service.yml b/config/nacos/cn/finance-service.yml index b4576a67d..730d2c738 100644 --- a/config/nacos/cn/finance-service.yml +++ b/config/nacos/cn/finance-service.yml @@ -5,5 +5,5 @@ spring: password: ${FINANCE_DB_PASSWORD} driver-class-name: com.mysql.cj.jdbc.Driver baiyue.clients.warehouse.url: ${WAREHOUSE_SERVICE_URL:} -baiyue.finance.recharge.wechat-qr-code-url: ${FINANCE_RECHARGE_WECHAT_QR_CODE_URL:/customer-recharge-qr.svg} -baiyue.finance.recharge.alipay-qr-code-url: ${FINANCE_RECHARGE_ALIPAY_QR_CODE_URL:/customer-recharge-qr.svg} +baiyue.finance.recharge.wechat-qr-code-url: ${FINANCE_RECHARGE_WECHAT_QR_CODE_URL:} +baiyue.finance.recharge.alipay-qr-code-url: ${FINANCE_RECHARGE_ALIPAY_QR_CODE_URL:} diff --git a/finance/src/main/java/com/baiyue/finance/service/FinanceWalletService.java b/finance/src/main/java/com/baiyue/finance/service/FinanceWalletService.java index a9220610a..9ef0074b0 100644 --- a/finance/src/main/java/com/baiyue/finance/service/FinanceWalletService.java +++ b/finance/src/main/java/com/baiyue/finance/service/FinanceWalletService.java @@ -55,14 +55,22 @@ public class FinanceWalletService { FinanceDocumentNumberGenerator numberGenerator, @Value("${baiyue.security.internal-service-token:}") String internalToken, @Value("${baiyue.finance.recharge.wechat-qr-code-url:}") String wechatQrCodeUrl, - @Value("${baiyue.finance.recharge.alipay-qr-code-url:}") String alipayQrCodeUrl) { + @Value("${baiyue.finance.recharge.alipay-qr-code-url:}") String alipayQrCodeUrl, + @Value("${spring.profiles.active:}") String activeProfiles) { this.jdbc = jdbc; this.objectMapper = objectMapper; this.fileClient = fileClient; this.numberGenerator = numberGenerator; this.internalToken = internalToken; - this.wechatQrCodeUrl = blankToNull(wechatQrCodeUrl); - this.alipayQrCodeUrl = blankToNull(alipayQrCodeUrl); + boolean development = List.of(activeProfiles.split(",")).stream() + .map(String::trim).anyMatch("dev"::equalsIgnoreCase); + this.wechatQrCodeUrl = rechargeQrCode(wechatQrCodeUrl, development); + this.alipayQrCodeUrl = rechargeQrCode(alipayQrCodeUrl, development); + } + + private static String rechargeQrCode(String configured, boolean development) { + String value = blankToNull(configured); + return value == null && development ? "/customer-recharge-qr.svg" : value; } public WalletAccount account(long customerId) { diff --git a/finance/src/main/resources/application-dev.yml b/finance/src/main/resources/application-dev.yml index 3c78aee86..d834f00bb 100644 --- a/finance/src/main/resources/application-dev.yml +++ b/finance/src/main/resources/application-dev.yml @@ -4,3 +4,9 @@ spring: url: ${FINANCE_DB_URL:jdbc:mysql://127.0.0.1:3306/baiyue_finance?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true} username: ${FINANCE_DB_USERNAME:root} password: ${FINANCE_DB_PASSWORD:123456} + +baiyue: + finance: + recharge: + wechat-qr-code-url: ${FINANCE_RECHARGE_WECHAT_QR_CODE_URL:/customer-recharge-qr.svg} + alipay-qr-code-url: ${FINANCE_RECHARGE_ALIPAY_QR_CODE_URL:/customer-recharge-qr.svg} diff --git a/finance/src/test/java/com/baiyue/finance/FinanceWalletBehaviorTest.java b/finance/src/test/java/com/baiyue/finance/FinanceWalletBehaviorTest.java index 33a080c02..71cd71d7e 100644 --- a/finance/src/test/java/com/baiyue/finance/FinanceWalletBehaviorTest.java +++ b/finance/src/test/java/com/baiyue/finance/FinanceWalletBehaviorTest.java @@ -44,6 +44,17 @@ class FinanceWalletBehaviorTest { alipay -> { assertThat(alipay.paymentMethod()).isEqualTo("ALIPAY"); assertThat(alipay.enabled()).isFalse(); }); } + @Test + void developmentProfileUsesTheNonPayableSampleQrCode() { + var channels = new FinanceWalletService(mock(JdbcTemplate.class), new ObjectMapper().findAndRegisterModules(), + mock(FinanceFileClient.class), mock(FinanceDocumentNumberGenerator.class), "token", "", "", "dev").channels(); + + assertThat(channels).allSatisfy(channel -> { + assertThat(channel.enabled()).isTrue(); + assertThat(channel.qrCodeUrl()).isEqualTo("/customer-recharge-qr.svg"); + }); + } + @Test void manualDeductionCannotExceedAvailableBalance() throws Exception { JdbcTemplate jdbc = mock(JdbcTemplate.class); @@ -72,6 +83,6 @@ class FinanceWalletBehaviorTest { private static FinanceWalletService service(JdbcTemplate jdbc, String wechat, String alipay) { return new FinanceWalletService(jdbc, new ObjectMapper().findAndRegisterModules(), - mock(FinanceFileClient.class), mock(FinanceDocumentNumberGenerator.class), "token", wechat, alipay); + mock(FinanceFileClient.class), mock(FinanceDocumentNumberGenerator.class), "token", wechat, alipay, "test"); } }