diff --git a/.gitignore b/.gitignore index de11b9df7191fc0fe10e3a3253cd5952edbbfca7..7db15212b8af97844e12985bdea326b9cd9075f0 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ /itstack-demo-design-6-01/itstack-demo-design-6-01.iml /itstack-demo-design-6-02/itstack-demo-design-6-02.iml /itstack-demo-design-6-00/itstack-demo-design-6-00.iml +/itstack-demo-design-7-01/itstack-demo-design-7-01.iml +/itstack-demo-design-7-02/itstack-demo-design-7-02.iml diff --git a/itstack-demo-design-7-01/pom.xml b/itstack-demo-design-7-01/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..2d07fc5f095f994f3a01f0e7f120cb6a5fb2c894 --- /dev/null +++ b/itstack-demo-design-7-01/pom.xml @@ -0,0 +1,15 @@ + + + + itstack-demo-design + org.itstack + 1.0-SNAPSHOT + + 4.0.0 + + itstack-demo-design-7-01 + + + \ No newline at end of file diff --git a/itstack-demo-design-7-01/src/main/java/org/itstack/demo/design/PayController.java b/itstack-demo-design-7-01/src/main/java/org/itstack/demo/design/PayController.java new file mode 100755 index 0000000000000000000000000000000000000000..6cd09e2cbd528ae53610339cb42da3cfadf3ac9c --- /dev/null +++ b/itstack-demo-design-7-01/src/main/java/org/itstack/demo/design/PayController.java @@ -0,0 +1,38 @@ +package org.itstack.demo.design; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.math.BigDecimal; + +public class PayController { + + private Logger logger = LoggerFactory.getLogger(PayController.class); + + public boolean doPay(String uId, String tradeId, BigDecimal amount, int channelType, int modeType) { + // 微信支付 + if (1 == channelType) { + logger.info("模拟微信渠道支付划账开始。uId:{} tradeId:{} amount:{}", uId, tradeId, amount); + if (1 == modeType) { + logger.info("密码支付,风控校验环境安全"); + } else if (2 == modeType) { + logger.info("人脸支付,风控校验脸部识别"); + } else if (3 == modeType) { + logger.info("指纹支付,风控校验指纹信息"); + } + } + // 支付宝支付 + else if (2 == channelType) { + logger.info("模拟支付宝渠道支付划账开始。uId:{} tradeId:{} amount:{}", uId, tradeId, amount); + if (1 == modeType) { + logger.info("密码支付,风控校验环境安全"); + } else if (2 == modeType) { + logger.info("人脸支付,风控校验脸部识别"); + } else if (3 == modeType) { + logger.info("指纹支付,风控校验指纹信息"); + } + } + return true; + } + +} diff --git a/itstack-demo-design-7-01/src/test/java/org/itstack/demo/design/ApiTest.java b/itstack-demo-design-7-01/src/test/java/org/itstack/demo/design/ApiTest.java new file mode 100755 index 0000000000000000000000000000000000000000..f2e0b2de8aad3097db2ed6a8e779b0512622fd20 --- /dev/null +++ b/itstack-demo-design-7-01/src/test/java/org/itstack/demo/design/ApiTest.java @@ -0,0 +1,20 @@ +package org.itstack.demo.design; + +import org.junit.Test; + +import java.math.BigDecimal; + +public class ApiTest { + + @Test + public void test_pay() { + PayController pay = new PayController(); + + System.out.println("\r\n模拟测试场景;微信支付、人脸方式。"); + pay.doPay("weixin_1092033111", "100000109893", new BigDecimal(100), 1, 2); + + System.out.println("\r\n模拟测试场景;支付宝支付、指纹方式。"); + pay.doPay("jlu19dlxo111","100000109894",new BigDecimal(100), 2, 3); + } + +} diff --git a/itstack-demo-design-7-02/pom.xml b/itstack-demo-design-7-02/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..d413fefdd696efa19db6da872284555753af8d30 --- /dev/null +++ b/itstack-demo-design-7-02/pom.xml @@ -0,0 +1,15 @@ + + + + itstack-demo-design + org.itstack + 1.0-SNAPSHOT + + 4.0.0 + + itstack-demo-design-7-02 + + + \ No newline at end of file diff --git a/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/channel/Pay.java b/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/channel/Pay.java new file mode 100755 index 0000000000000000000000000000000000000000..2980c34ebc1203296487d4d0bfd2f009c7d1328b --- /dev/null +++ b/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/channel/Pay.java @@ -0,0 +1,21 @@ +package org.itstack.demo.design.pay.channel; + +import org.itstack.demo.design.pay.mode.IPayMode; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.math.BigDecimal; + +public abstract class Pay { + + protected Logger logger = LoggerFactory.getLogger(Pay.class); + + protected IPayMode payMode; + + public Pay(IPayMode payMode) { + this.payMode = payMode; + } + + public abstract String transfer(String uId, String tradeId, BigDecimal amount); + +} diff --git a/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/channel/WxPay.java b/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/channel/WxPay.java new file mode 100755 index 0000000000000000000000000000000000000000..261dced7a8d7ecbf7c67be5d7a6db70aba87ed35 --- /dev/null +++ b/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/channel/WxPay.java @@ -0,0 +1,25 @@ +package org.itstack.demo.design.pay.channel; + +import org.itstack.demo.design.pay.mode.IPayMode; + +import java.math.BigDecimal; + +public class WxPay extends Pay { + + public WxPay(IPayMode payMode) { + super(payMode); + } + + public String transfer(String uId, String tradeId, BigDecimal amount) { + logger.info("模拟微信渠道支付划账开始。uId:{} tradeId:{} amount:{}", uId, tradeId, amount); + boolean security = payMode.security(uId); + logger.info("模拟微信渠道支付风控校验。uId:{} tradeId:{} security:{}", uId, tradeId, security); + if (!security) { + logger.info("模拟微信渠道支付划账拦截。uId:{} tradeId:{} amount:{}", uId, tradeId, amount); + return "0001"; + } + logger.info("模拟微信渠道支付划账成功。uId:{} tradeId:{} amount:{}", uId, tradeId, amount); + return "0000"; + } + +} diff --git a/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/channel/ZfbPay.java b/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/channel/ZfbPay.java new file mode 100755 index 0000000000000000000000000000000000000000..fb7ebaedf093c29f3f37e4be68129391aae3966f --- /dev/null +++ b/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/channel/ZfbPay.java @@ -0,0 +1,25 @@ +package org.itstack.demo.design.pay.channel; + +import org.itstack.demo.design.pay.mode.IPayMode; + +import java.math.BigDecimal; + +public class ZfbPay extends Pay { + + public ZfbPay(IPayMode payMode) { + super(payMode); + } + + public String transfer(String uId, String tradeId, BigDecimal amount) { + logger.info("模拟支付宝渠道支付划账开始。uId:{} tradeId:{} amount:{}", uId, tradeId, amount); + boolean security = payMode.security(uId); + logger.info("模拟支付宝渠道支付风控校验。uId:{} tradeId:{} security:{}", uId, tradeId, security); + if (!security) { + logger.info("模拟支付宝渠道支付划账拦截。uId:{} tradeId:{} amount:{}", uId, tradeId, amount); + return "0001"; + } + logger.info("模拟支付宝渠道支付划账成功。uId:{} tradeId:{} amount:{}", uId, tradeId, amount); + return "0000"; + } + +} diff --git a/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/mode/IPayMode.java b/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/mode/IPayMode.java new file mode 100755 index 0000000000000000000000000000000000000000..9e3c4f24037857aba003fd59d584790fed8a3aba --- /dev/null +++ b/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/mode/IPayMode.java @@ -0,0 +1,7 @@ +package org.itstack.demo.design.pay.mode; + +public interface IPayMode { + + boolean security(String uId); + +} diff --git a/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/mode/PayCypher.java b/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/mode/PayCypher.java new file mode 100755 index 0000000000000000000000000000000000000000..828c84dc9f915626364d8b458cd315915275a89a --- /dev/null +++ b/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/mode/PayCypher.java @@ -0,0 +1,15 @@ +package org.itstack.demo.design.pay.mode; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class PayCypher implements IPayMode{ + + protected Logger logger = LoggerFactory.getLogger(PayCypher.class); + + public boolean security(String uId) { + logger.info("密码支付,风控校验环境安全"); + return true; + } + +} diff --git a/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/mode/PayFaceMode.java b/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/mode/PayFaceMode.java new file mode 100755 index 0000000000000000000000000000000000000000..6500d810768536f3fdbed6ac9be005ed5e7eca21 --- /dev/null +++ b/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/mode/PayFaceMode.java @@ -0,0 +1,15 @@ +package org.itstack.demo.design.pay.mode; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class PayFaceMode implements IPayMode{ + + protected Logger logger = LoggerFactory.getLogger(PayCypher.class); + + public boolean security(String uId) { + logger.info("人脸支付,风控校验脸部识别"); + return true; + } + +} \ No newline at end of file diff --git a/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/mode/PayFingerprintMode.java b/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/mode/PayFingerprintMode.java new file mode 100755 index 0000000000000000000000000000000000000000..4c56c0787490e8e550d7546cfa53f097a3beb6b3 --- /dev/null +++ b/itstack-demo-design-7-02/src/main/java/org/itstack/demo/design/pay/mode/PayFingerprintMode.java @@ -0,0 +1,15 @@ +package org.itstack.demo.design.pay.mode; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class PayFingerprintMode implements IPayMode{ + + protected Logger logger = LoggerFactory.getLogger(PayCypher.class); + + public boolean security(String uId) { + logger.info("指纹支付,风控校验指纹信息"); + return true; + } + +} diff --git a/itstack-demo-design-7-02/src/test/java/org/itstack/demo/design/test/ApiTest.java b/itstack-demo-design-7-02/src/test/java/org/itstack/demo/design/test/ApiTest.java new file mode 100755 index 0000000000000000000000000000000000000000..40492ca57f7395c06ffc22758021d4a18e22ee2b --- /dev/null +++ b/itstack-demo-design-7-02/src/test/java/org/itstack/demo/design/test/ApiTest.java @@ -0,0 +1,27 @@ +package org.itstack.demo.design.test; + +import org.itstack.demo.design.pay.channel.Pay; +import org.itstack.demo.design.pay.channel.WxPay; +import org.itstack.demo.design.pay.channel.ZfbPay; +import org.itstack.demo.design.pay.mode.PayFaceMode; +import org.itstack.demo.design.pay.mode.PayFingerprintMode; +import org.junit.Test; + +import java.math.BigDecimal; + +public class ApiTest { + + @Test + public void test_pay() { + + System.out.println("\r\n模拟测试场景;微信支付、人脸方式。"); + Pay wxPay = new WxPay(new PayFaceMode()); + wxPay.transfer("weixin_1092033111", "100000109893", new BigDecimal(100)); + + System.out.println("\r\n模拟测试场景;支付宝支付、指纹方式。"); + Pay zfbPay = new ZfbPay(new PayFingerprintMode()); + zfbPay.transfer("jlu19dlxo111","100000109894",new BigDecimal(100)); + + } + +} diff --git a/pom.xml b/pom.xml index 472a815c5bbc53160632e21173f3a6fb74f75968..179bb13c8d9760685055f7afbefa00dbe272c8d9 100755 --- a/pom.xml +++ b/pom.xml @@ -25,6 +25,9 @@ itstack-demo-design-6-00 itstack-demo-design-6-01 itstack-demo-design-6-02 + itstack-demo-design-7-01 + itstack-demo-design-02 + itstack-demo-design-7-02