├── flow-framework-demo
├── src
│ ├── main
│ │ └── java
│ │ │ └── cn
│ │ │ └── yccoding
│ │ │ └── demo
│ │ │ ├── async
│ │ │ ├── README.md
│ │ │ └── future
│ │ │ │ ├── RemoteLoader.java
│ │ │ │ ├── AccountService.java
│ │ │ │ ├── EmployeeService.java
│ │ │ │ ├── MockUtils.java
│ │ │ │ └── CompareMethodMain.java
│ │ │ └── designpattern
│ │ │ ├── create
│ │ │ ├── factory
│ │ │ │ ├── Legend.java
│ │ │ │ ├── Teemo.java
│ │ │ │ ├── XinZhao.java
│ │ │ │ ├── ApLegendFactory.java
│ │ │ │ ├── Garen.java
│ │ │ │ ├── FactoryPatternDemo.java
│ │ │ │ └── AdLegendFactory.java
│ │ │ ├── simplefactory
│ │ │ │ ├── Legend.java
│ │ │ │ ├── Teemo.java
│ │ │ │ ├── XinZhao.java
│ │ │ │ ├── Garen.java
│ │ │ │ ├── SimpleFactoryPatternDemo.java
│ │ │ │ ├── LegendFactory.java
│ │ │ │ └── README.md
│ │ │ ├── abstractfactory
│ │ │ │ ├── Legend.java
│ │ │ │ ├── Item.java
│ │ │ │ ├── SunFire.java
│ │ │ │ ├── ZhonYa.java
│ │ │ │ ├── Teemo.java
│ │ │ │ ├── TriForce.java
│ │ │ │ ├── XinZhao.java
│ │ │ │ ├── AbstractFactory.java
│ │ │ │ ├── Garen.java
│ │ │ │ ├── FactoryProducer.java
│ │ │ │ ├── AbstractFactoryPatternDemo.java
│ │ │ │ ├── ItemFactory.java
│ │ │ │ └── LegendFactory.java
│ │ │ ├── builder
│ │ │ │ ├── Equipment.java
│ │ │ │ ├── Attack.java
│ │ │ │ ├── Defense.java
│ │ │ │ ├── AbilityPower.java
│ │ │ │ ├── MagicResistance.java
│ │ │ │ ├── LostChapter.java
│ │ │ │ ├── LudensEcho.java
│ │ │ │ ├── RelicShield.java
│ │ │ │ ├── SpiritVisage.java
│ │ │ │ ├── builder2
│ │ │ │ │ ├── BuilderPatternDemo.java
│ │ │ │ │ └── Champ.java
│ │ │ │ ├── Item.java
│ │ │ │ ├── SuitBuilder.java
│ │ │ │ ├── Suit.java
│ │ │ │ └── BuilderPatternDemo.java
│ │ │ ├── prototype
│ │ │ │ ├── Garen.java
│ │ │ │ ├── Teemo.java
│ │ │ │ ├── XinZhao.java
│ │ │ │ ├── Legend.java
│ │ │ │ ├── Champ.java
│ │ │ │ ├── PrototypePatternDemo.java
│ │ │ │ └── LegendCache.java
│ │ │ └── singleton
│ │ │ │ ├── HungrySingleton.java
│ │ │ │ ├── EnumSingleton.java
│ │ │ │ ├── LazySingleton.java
│ │ │ │ ├── README.md
│ │ │ │ └── InnerClassSingleton.java
│ │ │ └── struct
│ │ │ └── adapter
│ │ │ ├── classadapter
│ │ │ ├── Target.java
│ │ │ ├── Adaptee.java
│ │ │ ├── ConcreteTarget.java
│ │ │ ├── Adapter.java
│ │ │ └── ClassAdapterDemo.java
│ │ │ └── objadapter
│ │ │ ├── ObjAdapterDemo.java
│ │ │ └── Adapter.java
│ └── README.md
└── pom.xml
├── flow-microservice-product
├── src
│ └── main
│ │ ├── resources
│ │ ├── bootstrap.yml
│ │ └── application.yml
│ │ └── java
│ │ └── cn
│ │ └── yccoding
│ │ └── product
│ │ ├── ProductApplication.java
│ │ └── controller
│ │ └── ProducerTestController.java
└── pom.xml
├── flow-microservice-gateway
├── src
│ └── main
│ │ ├── resources
│ │ ├── bootstrap.yml
│ │ └── application.yml
│ │ └── java
│ │ └── cn
│ │ └── yccoding
│ │ └── gateway
│ │ ├── common
│ │ ├── MDA.java
│ │ └── TokenInfo.java
│ │ ├── GatewayApplication.java
│ │ ├── config
│ │ ├── RibbonConfig.java
│ │ └── CorsConfig.java
│ │ └── filter
│ │ └── AuthenticationFilter.java
└── pom.xml
├── flow-microservice-order
└── src
│ └── main
│ ├── resources
│ ├── bootstrap.yml
│ └── application.yml
│ └── java
│ └── cn
│ └── yccoding
│ └── order
│ ├── config
│ ├── RibbonConfig.java
│ └── ResourceConfig.java
│ ├── OrderApplication.java
│ ├── feignapi
│ ├── ProducerTestFeignApi.java
│ ├── fallback
│ │ ├── ProducerTestFeignApiFallback.java
│ │ └── AliPayFeignApiFallBack.java
│ └── AliPayFeignApi.java
│ ├── property
│ └── AliPayTradeProperties.java
│ ├── model
│ └── TradePaySummary.java
│ └── controller
│ ├── ConsumerTestController.java
│ └── OrderController.java
├── flow-microservice-authcenter
├── src
│ └── main
│ │ ├── resources
│ │ ├── bootstrap.yml
│ │ └── application.yml
│ │ └── java
│ │ └── cn
│ │ └── yccoding
│ │ └── authcenter
│ │ ├── domain
│ │ ├── Member.java
│ │ └── MyUserDetails.java
│ │ ├── AuthCenterApplication.java
│ │ ├── property
│ │ └── JwtCAProperties.java
│ │ ├── component
│ │ └── MyTokenEnhancer.java
│ │ └── config
│ │ ├── MyUserDetailService.java
│ │ └── WebSecurityConfig.java
└── pom.xml
├── flow-microservice-payment
└── src
│ └── main
│ ├── resources
│ ├── bootstrap.yml
│ ├── payment
│ │ ├── wxinfo.properties
│ │ └── zfbinfo.properties
│ └── application.yml
│ └── java
│ └── cn
│ └── yccoding
│ └── payment
│ ├── alipay
│ ├── sdk
│ │ ├── model
│ │ │ ├── hb
│ │ │ │ ├── Product.java
│ │ │ │ ├── ExceptionInfo.java
│ │ │ │ ├── TradeInfo.java
│ │ │ │ ├── Type.java
│ │ │ │ ├── HbStatus.java
│ │ │ │ ├── EquipStatus.java
│ │ │ │ ├── EquipStatusAdapter.java
│ │ │ │ ├── ExceptionInfoAdapter.java
│ │ │ │ ├── TradeInfoAdapter.java
│ │ │ │ ├── SysTradeInfo.java
│ │ │ │ └── PosTradeInfo.java
│ │ │ ├── result
│ │ │ │ ├── Result.java
│ │ │ │ ├── AlipayF2FPayResult.java
│ │ │ │ ├── AlipayF2FQueryResult.java
│ │ │ │ ├── AlipayF2FRefundResult.java
│ │ │ │ └── AlipayF2FPrecreateResult.java
│ │ │ ├── TradeStatus.java
│ │ │ ├── ExtendParams.java
│ │ │ └── builder
│ │ │ │ ├── RequestBuilder.java
│ │ │ │ ├── AlipayTradeCancelRequestBuilder.java
│ │ │ │ └── AlipayTradeQueryRequestBuilder.java
│ │ ├── config
│ │ │ └── Constants.java
│ │ ├── service
│ │ │ ├── AlipayMonitorService.java
│ │ │ ├── impl
│ │ │ │ ├── hb
│ │ │ │ │ ├── TradeListener.java
│ │ │ │ │ ├── HbQueue.java
│ │ │ │ │ └── HbListener.java
│ │ │ │ └── AbsAlipayService.java
│ │ │ └── AlipayTradeService.java
│ │ ├── utils
│ │ │ ├── GsonFactory.java
│ │ │ ├── Utils.java
│ │ │ └── ZxingUtils.java
│ │ └── DemoHbRunner.java
│ ├── service
│ │ └── TradeService.java
│ └── model
│ │ └── TradePaySummary.java
│ ├── wxpay
│ ├── model
│ │ ├── CloseOrder.java
│ │ ├── SceneInfo.java
│ │ ├── OrderQuery.java
│ │ ├── DownloadBill.java
│ │ ├── DownloadFundFlow.java
│ │ ├── BatchQueryComment.java
│ │ ├── RefundQuery.java
│ │ ├── BaseWXPay.java
│ │ ├── Refund.java
│ │ └── Report.java
│ ├── config
│ │ └── WXPayConfigExt.java
│ ├── sdk
│ │ ├── IWXPayDomain.java
│ │ ├── WXPayXmlUtil.java
│ │ └── WXPayConfig.java
│ ├── service
│ │ └── WXPayTradeService.java
│ └── util
│ │ └── SignatureUtils.java
│ ├── PaymentApplication.java
│ ├── util
│ └── PaymentUtils.java
│ ├── property
│ ├── RedisKeyProperties.java
│ └── AliPayTradeProperties.java
│ ├── config
│ ├── ResourceConfig.java
│ ├── WXPaymentConfig.java
│ └── RedisConfig.java
│ └── client
│ └── RedisOpsClient.java
├── flow-microservice-member
└── src
│ └── main
│ ├── java
│ └── cn
│ │ └── yccoding
│ │ └── member
│ │ ├── domain
│ │ ├── mapper
│ │ │ ├── xml
│ │ │ │ └── MemberMapper.xml
│ │ │ └── MemberMapper.java
│ │ ├── service
│ │ │ ├── MemberService.java
│ │ │ └── impl
│ │ │ │ └── MemberServiceImpl.java
│ │ └── entity
│ │ │ └── Member.java
│ │ ├── config
│ │ ├── RedisHttpSessionConfiguration.java
│ │ ├── property
│ │ │ ├── NoAuthUrlProperties.java
│ │ │ ├── JwtProperties.java
│ │ │ └── RedisKeyProperties.java
│ │ ├── SecurityConfiguration.java
│ │ ├── InterceptorConfiguration.java
│ │ ├── RedisConfiguration.java
│ │ ├── JwtKit.java
│ │ └── interceptor
│ │ │ └── AuthHandlerInterceptor.java
│ │ ├── MemberApplication.java
│ │ ├── service
│ │ └── SsoService.java
│ │ ├── controller
│ │ ├── BaseController.java
│ │ ├── OrderController.java
│ │ └── SsoController.java
│ │ └── object
│ │ └── RegisterQo.java
│ └── resources
│ └── application.yml
├── SECURITY.md
├── flow-framework-common
├── src
│ └── main
│ │ └── java
│ │ └── cn
│ │ └── yccoding
│ │ └── common
│ │ ├── util
│ │ ├── CurrencyUtils.java
│ │ ├── ExceptionUtils.java
│ │ ├── SecurityUtils.java
│ │ └── XmlConvertUtils.java
│ │ ├── async
│ │ └── AsyncTask.java
│ │ ├── exception
│ │ └── CustomException.java
│ │ ├── base
│ │ ├── BaseEntity.java
│ │ └── ResultCodeEnum.java
│ │ ├── handler
│ │ └── MyMetaObjectHandler.java
│ │ └── config
│ │ └── MyBatisPlusConfig.java
└── pom.xml
├── .gitignore
├── flow-framework-mbg
└── pom.xml
└── README.md
/flow-framework-demo/src/main/java/cn/yccoding/demo/async/README.md:
--------------------------------------------------------------------------------
1 | 多线程使用
--------------------------------------------------------------------------------
/flow-framework-demo/src/README.md:
--------------------------------------------------------------------------------
1 | ## 说明
2 |
3 | 该包不涉及业务或公共类。只作为开发中一些好的灵感积累,如设计模式,线程池使用,分布式锁等等
4 |
5 | 便于开发中从demo获取灵感
--------------------------------------------------------------------------------
/flow-microservice-product/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | cloud:
3 | nacos:
4 | config:
5 | server-addr: 127.0.0.1:8848
--------------------------------------------------------------------------------
/flow-microservice-gateway/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: flow-gateway
4 | cloud:
5 | nacos:
6 | config:
7 | server-addr: localhost:8848
--------------------------------------------------------------------------------
/flow-microservice-order/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: flow-order
4 | cloud:
5 | nacos:
6 | config:
7 | server-addr: 127.0.0.1:8848
8 |
--------------------------------------------------------------------------------
/flow-microservice-authcenter/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: flow-authcenter
4 | cloud:
5 | nacos:
6 | config:
7 | server-addr: localhost:8848
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: flow-payment
4 | cloud:
5 | nacos:
6 | config:
7 | server-addr: 127.0.0.1:8848
8 |
9 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/alipay/sdk/model/hb/Product.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.alipay.sdk.model.hb;
2 |
3 | /**
4 | * Created by liuyangkly on 15/8/27.
5 | */
6 | public enum Product {
7 | FP // 当面付产品
8 |
9 | ,MP // 医疗产品
10 | }
11 |
--------------------------------------------------------------------------------
/flow-microservice-member/src/main/java/cn/yccoding/member/domain/mapper/xml/MemberMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/async/future/RemoteLoader.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.async.future;
2 |
3 | /**
4 | * 模拟远程接口
5 | *
6 | * @author YC
7 | * @since 2021/1/9
8 | */
9 | public interface RemoteLoader {
10 |
11 | /**
12 | * 远程接口方法
13 | * @return
14 | */
15 | String load();
16 | }
17 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/factory/Legend.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.factory;
2 |
3 | /**
4 | * 英雄
5 | *
6 | * @author YC
7 | * @since 2020/11/15
8 | */
9 | public interface Legend {
10 |
11 | /**
12 | * 大招
13 | */
14 | String ult();
15 | }
16 |
17 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/simplefactory/Legend.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.simplefactory;
2 |
3 | /**
4 | * 英雄
5 | *
6 | * @author YC
7 | * @since 2020/11/15
8 | */
9 | public interface Legend {
10 |
11 | /**
12 | * 大招
13 | */
14 | String ult();
15 | }
16 |
17 |
--------------------------------------------------------------------------------
/flow-microservice-authcenter/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9999
3 | spring:
4 | cloud:
5 | nacos:
6 | discovery:
7 | server-addr: localhost:8848
8 | management:
9 | endpoints:
10 | web:
11 | exposure:
12 | include: '*'
13 | endpoint:
14 | health:
15 | show-details: always # 打开端点详情
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/alipay/sdk/model/hb/ExceptionInfo.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.alipay.sdk.model.hb;
2 |
3 | /**
4 | * Created by liuyangkly on 15/8/27.
5 | */
6 | public enum ExceptionInfo {
7 | HE_PRINTER // 打印机异常;
8 |
9 | ,HE_SCANER // 扫描枪异常;
10 |
11 | ,HE_OTHER // 其他硬件异常
12 | }
13 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/abstractfactory/Legend.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.abstractfactory;
2 |
3 | /**
4 | * 英雄
5 | *
6 | * @author YC
7 | * @since 2020/11/15
8 | */
9 | public interface Legend {
10 |
11 | /**
12 | * 大招
13 | */
14 | String ult();
15 | }
16 |
17 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/struct/adapter/classadapter/Target.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.struct.adapter.classadapter;
2 |
3 | /**
4 | * 目标接口
5 | *
6 | * @author YC
7 | * @since 2021/1/28
8 | */
9 | public interface Target {
10 |
11 | /**
12 | * 目标方法
13 | */
14 | void request();
15 | }
16 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/alipay/sdk/model/hb/TradeInfo.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.alipay.sdk.model.hb;
2 |
3 | /**
4 | * Created by liuyangkly on 15/9/28.
5 | */
6 | public interface TradeInfo {
7 | // 获取交易状态
8 | public HbStatus getStatus();
9 |
10 | // 获取交易时间
11 | public double getTimeConsume();
12 | }
13 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/builder/Equipment.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.builder;
2 |
3 | /**
4 | * 装备
5 | *
6 | * @author YC
7 | * @since 2020/11/29
8 | */
9 | public interface Equipment {
10 | /**
11 | * v 装备
12 | *
13 | * @return
14 | */
15 | String equip();
16 | }
17 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/alipay/sdk/model/result/Result.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.alipay.sdk.model.result;
2 |
3 | /**
4 | * Created by liuyangkly on 15/8/27.
5 | */
6 | public interface Result {
7 |
8 | // 判断交易是否在业务上成功, 返回true说明一定成功,但是返回false并不代表业务不成功!因为还有unknown的状态可能业务已经成功了
9 | public boolean isTradeSuccess();
10 | }
11 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/abstractfactory/Item.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.abstractfactory;
2 |
3 | /**
4 | * 装备
5 | *
6 | * @author YC
7 | * @since 2020/11/19
8 | */
9 | public interface Item {
10 | /**
11 | * 装备属性
12 | *
13 | * @return
14 | */
15 | String stat();
16 | }
17 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/builder/Attack.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.builder;
2 |
3 | /**
4 | * 攻击装备
5 | *
6 | * @author YC
7 | * @since 2020/11/29
8 | */
9 | public class Attack implements Equipment {
10 | @Override
11 | public String equip() {
12 | return "attack";
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/builder/Defense.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.builder;
2 |
3 | /**
4 | * 防御
5 | *
6 | * @author YC
7 | * @since 2020/11/29
8 | */
9 | public class Defense implements Equipment {
10 | @Override
11 | public String equip() {
12 | return "defense";
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/factory/Teemo.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.factory;
2 |
3 | /**
4 | * 提莫
5 | *
6 | * @author YC
7 | * @since 2020/11/15
8 | */
9 | public class Teemo implements Legend{
10 | @Override
11 | public String ult() {
12 | return "Noxious Trap(种蘑菇)";
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/factory/XinZhao.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.factory;
2 |
3 | /**
4 | * 赵信
5 | *
6 | * @author YC
7 | * @since 2020/11/15
8 | */
9 | public class XinZhao implements Legend{
10 | @Override
11 | public String ult() {
12 | return "Crescent Sweep(新月横扫)";
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/flow-microservice-product/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9120
3 | spring:
4 | cloud:
5 | nacos:
6 | discovery:
7 | server-addr: 127.0.0.1:8848
8 | sentinel:
9 | transport:
10 | dashboard: 127.0.0.1:8080
11 | #开启SpringBoot Admin的监控
12 | management:
13 | endpoints:
14 | web:
15 | exposure:
16 | include: '*'
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/abstractfactory/SunFire.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.abstractfactory;
2 |
3 | /**
4 | * 装备属性
5 | *
6 | * @author YC
7 | * @since 2020/11/19
8 | */
9 | public class SunFire implements Item {
10 | @Override
11 | public String stat() {
12 | return "ar(护甲)";
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/abstractfactory/ZhonYa.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.abstractfactory;
2 |
3 | /**
4 | * 中亚
5 | *
6 | * @author YC
7 | * @since 2020/11/19
8 | */
9 | public class ZhonYa implements Item {
10 | @Override
11 | public String stat() {
12 | return "AP,AR(法强,护甲)";
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/simplefactory/Teemo.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.simplefactory;
2 |
3 | /**
4 | * 提莫
5 | *
6 | * @author YC
7 | * @since 2020/11/15
8 | */
9 | public class Teemo implements Legend {
10 | @Override
11 | public String ult() {
12 | return "Noxious Trap(种蘑菇)";
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/struct/adapter/classadapter/Adaptee.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.struct.adapter.classadapter;
2 |
3 | /**
4 | * 被适配的对象
5 | *
6 | * @author YC
7 | * @since 2021/1/28
8 | */
9 | public class Adaptee {
10 |
11 | public void adapteeRequest() {
12 | System.out.println("被适配者的方法");
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/alipay/sdk/model/TradeStatus.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.alipay.sdk.model;
2 |
3 | /**
4 | * Created by liuyangkly on 15/8/29.
5 | */
6 | public enum TradeStatus {
7 | SUCCESS // 业务交易明确成功,比如支付成功、退货成功
8 |
9 | ,FAILED // 业务交易明确失败,比如支付明确失败、退货明确失败
10 |
11 | ,UNKNOWN // 业务交易状态未知,此时不清楚该业务是否成功或者失败,需要商户自行确认
12 | }
13 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/simplefactory/XinZhao.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.simplefactory;
2 |
3 | /**
4 | * 赵信
5 | *
6 | * @author YC
7 | * @since 2020/11/15
8 | */
9 | public class XinZhao implements Legend {
10 | @Override
11 | public String ult() {
12 | return "Crescent Sweep(新月横扫)";
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/abstractfactory/Teemo.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.abstractfactory;
2 |
3 |
4 | /**
5 | * 提莫
6 | *
7 | * @author YC
8 | * @since 2020/11/15
9 | */
10 | public class Teemo implements Legend {
11 | @Override
12 | public String ult() {
13 | return "Noxious Trap(种蘑菇)";
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/abstractfactory/TriForce.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.abstractfactory;
2 |
3 | /**
4 | * 三项之力
5 | *
6 | * @author YC
7 | * @since 2020/11/19
8 | */
9 | public class TriForce implements Item {
10 | @Override
11 | public String stat() {
12 | return "AS,Crit,AD(攻速,暴击,攻击力)";
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/abstractfactory/XinZhao.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.abstractfactory;
2 |
3 |
4 | /**
5 | * 赵信
6 | *
7 | * @author YC
8 | * @since 2020/11/15
9 | */
10 | public class XinZhao implements Legend {
11 | @Override
12 | public String ult() {
13 | return "Crescent Sweep(新月横扫)";
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/abstractfactory/AbstractFactory.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.abstractfactory;
2 |
3 | /**
4 | * 抽象工厂
5 | *
6 | * @author YC
7 | * @since 2020/11/19
8 | */
9 | public abstract class AbstractFactory {
10 | public abstract Legend getLegend(String legend);
11 | public abstract Item getItem(String item);
12 | }
13 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/prototype/Garen.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.prototype;
2 |
3 | /**
4 | * 盖伦
5 | *
6 | * @author YC
7 | * @since 2020/12/3
8 | */
9 | public class Garen extends Legend{
10 | public Garen() {
11 | type = "garen123";
12 | }
13 |
14 | @Override
15 | String ult() {
16 | return "德玛西亚审判";
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/flow-microservice-gateway/src/main/java/cn/yccoding/gateway/common/MDA.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.gateway.common;
2 |
3 | /**
4 | * 常量
5 | *
6 | * @author YC
7 | * @since 2020/9/25
8 | */
9 | public class MDA {
10 | public static final String clientId = "service-gateway";
11 |
12 | public static final String clientSecret = "1234";
13 |
14 | public static final String checkTokenUrl = "http://auth-server/oauth/check_token";
15 | }
16 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/alipay/sdk/model/hb/Type.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.alipay.sdk.model.hb;
2 |
3 | /**
4 | * Created by liuyangkly on 15/8/27.
5 | */
6 | public enum Type {
7 | CR // 收银机
8 |
9 | ,STORE // 门店
10 |
11 | ,VM // 售卖机
12 |
13 | ,MD // 医疗设备
14 |
15 | ,SOFT_POS // 软POS
16 |
17 | ,POS // POS终端
18 |
19 | ,ALI_POS // 支付宝POS
20 | }
21 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/async/future/AccountService.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.async.future;
2 |
3 | /**
4 | * 账户服务
5 | *
6 | * @author YC
7 | * @since 2021/1/9
8 | */
9 | public class AccountService implements RemoteLoader {
10 |
11 | /**
12 | * 获取账户金额
13 | */
14 | @Override
15 | public String load() {
16 | MockUtils.delay();
17 | return MockUtils.getData()+"";
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/prototype/Teemo.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.prototype;
2 |
3 |
4 | /**
5 | * 提莫
6 | *
7 | * @author YC
8 | * @since 2020/11/15
9 | */
10 | public class Teemo extends Legend{
11 | public Teemo() {
12 | type = "teemo123";
13 | }
14 |
15 | @Override
16 | public String ult() {
17 | return "Noxious Trap(种蘑菇)";
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/struct/adapter/classadapter/ConcreteTarget.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.struct.adapter.classadapter;
2 |
3 | /**
4 | * 目标实现类
5 | *
6 | * @author YC
7 | * @since 2021/1/28
8 | */
9 | public class ConcreteTarget implements Target{
10 |
11 | @Override
12 | public void request() {
13 | System.out.println("ConcreteTarget.request method");
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/builder/AbilityPower.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.builder;
2 |
3 | /**
4 | * 魔法伤害
5 | *
6 | * @author YC
7 | * @since 2020/11/29
8 | */
9 | public abstract class AbilityPower implements Item {
10 | @Override
11 | public abstract double price();
12 |
13 | @Override
14 | public Equipment equip() {
15 | return new Attack();
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/prototype/XinZhao.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.prototype;
2 |
3 | /**
4 | * 赵信
5 | *
6 | * @author YC
7 | * @since 2020/11/15
8 | */
9 | public class XinZhao extends Legend {
10 | public XinZhao() {
11 | type = "xinzhao123";
12 | }
13 |
14 | @Override
15 | public String ult() {
16 | return "Crescent Sweep(新月横扫)";
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/struct/adapter/classadapter/Adapter.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.struct.adapter.classadapter;
2 |
3 | /**
4 | * 类适配器
5 | *
6 | * @author YC
7 | * @since 2021/1/28
8 | */
9 | public class Adapter extends Adaptee implements Target{
10 | @Override
11 | public void request() {
12 | // do sth
13 | super.adapteeRequest();
14 | // do sth
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/flow-microservice-authcenter/src/main/java/cn/yccoding/authcenter/domain/Member.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.authcenter.domain;
2 |
3 | import lombok.Data;
4 |
5 | /**
6 | * 会员
7 | *
8 | * @author YC
9 | * @since 2020/9/26
10 | */
11 | @Data
12 | public class Member {
13 |
14 | private String id;
15 |
16 | private String username;
17 |
18 | private String password;
19 |
20 | private String nickname;
21 |
22 | private String phone;
23 | }
24 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/builder/MagicResistance.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.builder;
2 |
3 | /**
4 | * 魔抗
5 | *
6 | * @author YC
7 | * @since 2020/11/29
8 | */
9 | public abstract class MagicResistance implements Item {
10 | @Override
11 | public abstract double price();
12 |
13 | @Override
14 | public Equipment equip() {
15 | return new Defense();
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/builder/LostChapter.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.builder;
2 |
3 | /**
4 | * 遗失的章节
5 | *
6 | * @author YC
7 | * @since 2020/11/29
8 | */
9 | public class LostChapter extends AbilityPower{
10 | @Override
11 | public String name() {
12 | return "鬼书";
13 | }
14 |
15 | @Override
16 | public double price() {
17 | return 2700.0;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/builder/LudensEcho.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.builder;
2 |
3 | /**
4 | * 卢登的回升
5 | *
6 | * @author YC
7 | * @since 2020/11/29
8 | */
9 | public class LudensEcho extends AbilityPower{
10 | @Override
11 | public String name() {
12 | return "卢登的回升";
13 | }
14 |
15 | @Override
16 | public double price() {
17 | return 3100.0;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/alipay/sdk/model/hb/HbStatus.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.alipay.sdk.model.hb;
2 |
3 | /**
4 | * Created by liuyangkly on 15/8/27.
5 | */
6 | public enum HbStatus {
7 | S // 交易成功(包括支付宝返回“处理中”)
8 |
9 | ,I // 支付宝返回处理中
10 |
11 | ,F // 支付宝返回失败
12 |
13 | ,P // POSP返回失败,或商户系统失败
14 |
15 | ,X // 建立连接异常
16 |
17 | ,Y // 报文上送异常
18 |
19 | ,Z // 报文接收异常
20 |
21 | ,C // 收银员取消
22 | }
23 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/builder/RelicShield.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.builder;
2 |
3 | /**
4 | * 圣物之盾
5 | *
6 | * @author YC
7 | * @since 2020/11/29
8 | */
9 | public class RelicShield extends MagicResistance{
10 | @Override
11 | public String name() {
12 | return "圣物之盾";
13 | }
14 |
15 | @Override
16 | public double price() {
17 | return 2500.0;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/builder/SpiritVisage.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.builder;
2 |
3 | /**
4 | * 振奋盔甲(绿甲)
5 | *
6 | * @author YC
7 | * @since 2020/11/29
8 | */
9 | public class SpiritVisage extends MagicResistance{
10 |
11 | @Override
12 | public String name() {
13 | return "绿甲";
14 | }
15 |
16 | @Override
17 | public double price() {
18 | return 2600.0;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/async/future/EmployeeService.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.async.future;
2 |
3 | /**
4 | * 人员服务
5 | *
6 | * @author YC
7 | * @since 2021/1/9
8 | */
9 | public class EmployeeService implements RemoteLoader {
10 |
11 | /**
12 | * 获取入职时间信息
13 | *
14 | * @return
15 | */
16 | @Override
17 | public String load() {
18 | MockUtils.delay();
19 | return MockUtils.getInfo();
20 | }
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/builder/builder2/BuilderPatternDemo.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.builder.builder2;
2 |
3 | /**
4 | * 建造者模式--示例类
5 | *
6 | * @author YC
7 | * @since 2020/12/2
8 | */
9 | public class BuilderPatternDemo {
10 | public static void main(String[] args) {
11 | Champ champ = Champ.builder().nickname("zhao xin").setPassive("fight").build();
12 | System.out.println(champ);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/builder/Item.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.builder;
2 |
3 | /**
4 | * 召唤师
5 | *
6 | * @author YC
7 | * @since 2020/11/29
8 | */
9 | public interface Item {
10 | /**
11 | * 名称
12 | */
13 | String name();
14 |
15 | /**
16 | * 属性
17 | */
18 | double price();
19 |
20 | /**
21 | * 装备
22 | *
23 | * @return
24 | */
25 | Equipment equip();
26 | }
27 |
--------------------------------------------------------------------------------
/flow-microservice-member/src/main/java/cn/yccoding/member/config/RedisHttpSessionConfiguration.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.member.config;
2 |
3 |
4 | import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
5 |
6 | /**
7 | * spring session redis配置
8 | * 引入分布式会话体系,会话内容存储在redis中
9 | *
10 | * @author YC
11 | * @since 2020/9/5
12 | */
13 | //@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 3600)
14 | public class RedisHttpSessionConfiguration {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/wxpay/model/CloseOrder.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.wxpay.model;
2 |
3 | import com.alibaba.fastjson.annotation.JSONField;
4 | import lombok.Data;
5 |
6 | /**
7 | * @author : Chet
8 | * @description : 关闭订单的实体类
9 | * @date : 2019/10/29
10 | */
11 | @Data
12 | public class CloseOrder extends BaseWXPay {
13 |
14 | /**
15 | * 商户订单号
16 | */
17 | @JSONField(name = "out_trade_no")
18 | private String outTradeNo;
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/PaymentApplication.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | /**
7 | * 启动类
8 | *
9 | * @author YC
10 | * @since 2020/9/27
11 | */
12 | @SpringBootApplication
13 | public class PaymentApplication {
14 |
15 | public static void main(String[] args) {
16 | SpringApplication.run(PaymentApplication.class, args);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/wxpay/model/SceneInfo.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.wxpay.model;
2 |
3 | import com.alibaba.fastjson.annotation.JSONField;
4 | import lombok.Data;
5 |
6 | /**
7 | * @author : Chet
8 | * @description : 场景信息,统一下单使用
9 | * @date : 2019/10/29
10 | */
11 | @Data
12 | public class SceneInfo {
13 |
14 | private String id;
15 |
16 | private String name;
17 |
18 | @JSONField(name = "area_code")
19 | private String areaCode;
20 |
21 | private String address;
22 | }
23 |
--------------------------------------------------------------------------------
/flow-microservice-authcenter/src/main/java/cn/yccoding/authcenter/AuthCenterApplication.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.authcenter;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | /**
7 | * 启动器
8 | *
9 | * @author YC
10 | * @since 2020/9/25
11 | */
12 | @SpringBootApplication
13 | public class AuthCenterApplication {
14 |
15 | public static void main(String[] args) {
16 | SpringApplication.run(AuthCenterApplication.class, args);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/struct/adapter/classadapter/ClassAdapterDemo.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.struct.adapter.classadapter;
2 |
3 | /**
4 | * 测试类
5 | *
6 | * @author YC
7 | * @since 2021/1/28
8 | */
9 | public class ClassAdapterDemo {
10 |
11 | public static void main(String[] args) {
12 | Target target = new ConcreteTarget();
13 | target.request();
14 |
15 | // 新接口使用旧类方法
16 | Target adapter = new Adapter();
17 | adapter.request();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/flow-microservice-order/src/main/java/cn/yccoding/order/config/RibbonConfig.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.order.config;
2 |
3 | import org.springframework.context.annotation.Bean;
4 | import org.springframework.context.annotation.Configuration;
5 | import org.springframework.web.client.RestTemplate;
6 |
7 | /**
8 | * @author YC
9 | * @since 2020/9/23
10 | */
11 | @Configuration
12 | public class RibbonConfig {
13 |
14 | //@LoadBalanced
15 | @Bean
16 | public RestTemplate restTemplate() {
17 | return new RestTemplate();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/resources/payment/wxinfo.properties:
--------------------------------------------------------------------------------
1 | # 微信分配的公众账号ID(企业号corpid即为此appId)
2 | appid =
3 | # 接口密钥
4 | app_secret =
5 | # 微信支付分配的商户号
6 | mch_id =
7 | # API密钥
8 | api_key =
9 | # 注册域名
10 | register_domain =
11 | # JSAPI支付授权目录
12 | jsapi_payment_auth_dir =
13 | # JS接口安全域名
14 | js_domain =
15 | # 网页授权域名
16 | web_auth_domain =
17 | # 证书路径
18 | apiclient_cert =
19 | # 异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数
20 | notify_url =
21 | # 异步接收微信支付退款结果通知的回调地址,通知URL必须为外网可访问的url,不允许带参数,如果参数中传了notify_url,则商户平台上配置的回调地址将不会生效。
22 | notify_url_refund =
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/alipay/sdk/config/Constants.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.alipay.sdk.config;
2 |
3 | /**
4 | * Created by liuyangkly on 15/7/29.
5 | */
6 | public class Constants {
7 |
8 | private Constants() {
9 | // No Constructor.
10 | }
11 |
12 | public static final String SUCCESS = "10000"; // 成功
13 | public static final String PAYING = "10003"; // 用户支付中
14 | public static final String FAILED = "40004"; // 失败
15 | public static final String ERROR = "20000"; // 系统异常
16 | }
17 |
--------------------------------------------------------------------------------
/flow-microservice-gateway/src/main/java/cn/yccoding/gateway/common/TokenInfo.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.gateway.common;
2 |
3 | import lombok.Data;
4 |
5 | import java.util.Date;
6 |
7 | /**
8 | * token info
9 | *
10 | * @author YC
11 | * @since 2020/9/25
12 | */
13 | @Data
14 | public class TokenInfo {
15 | private boolean active;
16 |
17 | private String client_id;
18 |
19 | private String[] scope;
20 |
21 | private String user_name;
22 |
23 | private String[] aud;
24 |
25 | private Date exp;
26 |
27 | private String[] authorities;
28 | }
29 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/factory/ApLegendFactory.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.factory;
2 |
3 | /**
4 | * 英雄工厂,输入英雄名,返回对应ap类型英雄
5 | *
6 | * @author YC
7 | * @since 2020/11/15
8 | */
9 | public class ApLegendFactory {
10 |
11 | /**
12 | * 获取英雄的类
13 | *
14 | * @param name
15 | * @return
16 | */
17 | public Legend getLegend(String name) {
18 | if ("teemo".equalsIgnoreCase(name)) {
19 | return new Teemo();
20 | }
21 | return null;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/factory/Garen.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.factory;
2 |
3 | /**
4 | * 盖伦
5 | *
6 | * @author YC
7 | * @since 2020/11/15
8 | */
9 | public class Garen implements Legend{
10 | private String garenParam;
11 |
12 | @Override
13 | public String ult() {
14 | return "Demacian Justice(德玛西亚正义)";
15 | }
16 |
17 | public void setGarenMethod(String garenParam) {
18 | System.out.println("盖伦自有方法调用...");
19 | this.garenParam = garenParam;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/simplefactory/Garen.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.simplefactory;
2 |
3 | /**
4 | * 盖伦
5 | *
6 | * @author YC
7 | * @since 2020/11/15
8 | */
9 | public class Garen implements Legend {
10 | private String garenParam;
11 |
12 | @Override
13 | public String ult() {
14 | return "Demacian Justice(德玛西亚正义)";
15 | }
16 |
17 | public void setGarenMethod(String garenParam) {
18 | System.out.println("盖伦自有方法调用...");
19 | this.garenParam = garenParam;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/abstractfactory/Garen.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.abstractfactory;
2 |
3 |
4 | /**
5 | * 盖伦
6 | *
7 | * @author YC
8 | * @since 2020/11/15
9 | */
10 | public class Garen implements Legend {
11 | private String garenParam;
12 |
13 | @Override
14 | public String ult() {
15 | return "Demacian Justice(德玛西亚正义)";
16 | }
17 |
18 | public void setGarenMethod(String garenParam) {
19 | System.out.println("盖伦自有方法调用...");
20 | this.garenParam = garenParam;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/flow-microservice-member/src/main/java/cn/yccoding/member/domain/mapper/MemberMapper.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.member.domain.mapper;
2 |
3 | import cn.yccoding.member.domain.entity.Member;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 | import org.apache.ibatis.annotations.Mapper;
6 | import org.apache.ibatis.annotations.Param;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | *
12 | * 会员表 Mapper 接口
13 | *
14 | *
15 | * @author yc
16 | * @since 2020-09-03
17 | */
18 | @Mapper
19 | public interface MemberMapper extends BaseMapper {
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/alipay/sdk/model/hb/EquipStatus.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.alipay.sdk.model.hb;
2 |
3 | /**
4 | * Created by liuyangkly on 15/8/27.
5 | */
6 | public enum EquipStatus {
7 | ON("10") // 开机
8 |
9 | ,OFF("20") // 关机
10 |
11 | ,NORMAL("30") // 正常
12 |
13 | ,SLEEP("40") // 进入休眠
14 |
15 | ,AWAKE("41"); // 唤醒
16 |
17 | private String value;
18 |
19 | EquipStatus(String value) {
20 | this.value = value;
21 | }
22 |
23 | public String getValue() {
24 | return value;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/struct/adapter/objadapter/ObjAdapterDemo.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.struct.adapter.objadapter;
2 |
3 | import cn.yccoding.demo.designpattern.struct.adapter.classadapter.Adaptee;
4 | import cn.yccoding.demo.designpattern.struct.adapter.classadapter.Target;
5 |
6 | /**
7 | * 测试类
8 | *
9 | * @author YC
10 | * @since 2021/1/28
11 | */
12 | public class ObjAdapterDemo {
13 |
14 | public static void main(String[] args) {
15 | Target target = new Adapter(new Adaptee());
16 | target.request();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/singleton/HungrySingleton.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.singleton;
2 |
3 | /**
4 | * 单例模式--饿汉式
5 | *
6 | * @author YC
7 | * @since 2020/11/27
8 | */
9 | public class HungrySingleton {
10 |
11 | /**
12 | * 类加载时就给静态变量赋值初始化
13 | */
14 | private static final HungrySingleton instance = new HungrySingleton();
15 |
16 | /**
17 | * 构造器私有
18 | */
19 | private HungrySingleton() {
20 | }
21 |
22 | public static HungrySingleton getInstance() {
23 | return instance;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/flow-microservice-member/src/main/java/cn/yccoding/member/config/property/NoAuthUrlProperties.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.member.config.property;
2 |
3 | import lombok.Data;
4 | import org.springframework.boot.context.properties.ConfigurationProperties;
5 | import org.springframework.stereotype.Component;
6 |
7 | import java.util.LinkedHashSet;
8 |
9 | /**
10 | * 不拦截的url参数
11 | *
12 | * @author YC
13 | * @since 2020/9/4
14 | */
15 | @Data
16 | @Component
17 | @ConfigurationProperties(prefix = "member.auth")
18 | public class NoAuthUrlProperties {
19 |
20 | private LinkedHashSet shouldSkipUrls;
21 | }
22 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/abstractfactory/FactoryProducer.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.abstractfactory;
2 |
3 | /**
4 | * 工厂生成器,传入工厂名,返回工厂类
5 | *
6 | * @author YC
7 | * @since 2020/11/19
8 | */
9 | public class FactoryProducer {
10 |
11 | public static AbstractFactory getFactory(String factory) {
12 | if ("legend".equalsIgnoreCase(factory)) {
13 | return new LegendFactory();
14 | } else if ("item".equalsIgnoreCase(factory)) {
15 | return new ItemFactory();
16 | }
17 | return null;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/flow-microservice-product/src/main/java/cn/yccoding/product/ProductApplication.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.product;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | /**
8 | * 启动类
9 | *
10 | * @author YC
11 | * @since 2020/9/23
12 | */
13 | @EnableDiscoveryClient
14 | @SpringBootApplication
15 | public class ProductApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(ProductApplication.class, args);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/wxpay/model/OrderQuery.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.wxpay.model;
2 |
3 | import com.alibaba.fastjson.annotation.JSONField;
4 | import lombok.Data;
5 |
6 | /**
7 | * @author : Chet
8 | * @description : 查询订单的实体类
9 | * @date : 2019/10/29
10 | */
11 | @Data
12 | public class OrderQuery extends BaseWXPay {
13 |
14 | /**
15 | * 微信订单号
16 | */
17 | @JSONField(name = "transaction_id")
18 | private String transactionId;
19 |
20 | /**
21 | * 商户订单号
22 | */
23 | @JSONField(name = "out_trade_no")
24 | private String outTradeNo;
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/flow-microservice-gateway/src/main/java/cn/yccoding/gateway/GatewayApplication.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.gateway;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | /**
8 | * 启动,gateway无注解
9 | *
10 | * @author YC
11 | * @since 2020/9/24
12 | */
13 | @EnableDiscoveryClient
14 | @SpringBootApplication
15 | public class GatewayApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(GatewayApplication.class, args);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/simplefactory/SimpleFactoryPatternDemo.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.simplefactory;
2 |
3 | /**
4 | * 工厂模式--演示类
5 | *
6 | * @author YC
7 | * @since 2020/11/15
8 | */
9 | public class SimpleFactoryPatternDemo {
10 |
11 | public static void main(String[] args) {
12 | LegendFactory factory = new LegendFactory();
13 | String garenUlt = factory.getLegend("garen").ult();
14 | String teemoUlt = factory.getLegend("teemo").ult();
15 | System.out.println(garenUlt);
16 | System.out.println(teemoUlt);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/flow-microservice-gateway/src/main/java/cn/yccoding/gateway/config/RibbonConfig.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.gateway.config;
2 |
3 | import org.springframework.cloud.client.loadbalancer.LoadBalanced;
4 | import org.springframework.context.annotation.Bean;
5 | import org.springframework.context.annotation.Configuration;
6 | import org.springframework.web.client.RestTemplate;
7 |
8 | /**
9 | * 配置
10 | *
11 | * @author YC
12 | * @since 2020/9/25
13 | */
14 | @Configuration
15 | public class RibbonConfig {
16 |
17 | @LoadBalanced
18 | @Bean
19 | public RestTemplate restTemplate() {
20 | return new RestTemplate();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/singleton/EnumSingleton.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.singleton;
2 |
3 | /**
4 | * 单例模式--枚举
5 | *
6 | * @author YC
7 | * @since 2020/11/27
8 | */
9 | public enum EnumSingleton {
10 | /**
11 | * 天然不支持反射创建对应的实例,且有自己的反序列化机制
12 | * 利用类加载机制保证线程安全
13 | */
14 | ENUM_INSTANCE("singleton","enum"),
15 | LAZY_INSTANCE("singleton","lazy");
16 |
17 | private String name;
18 | private String type;
19 |
20 | EnumSingleton(String name, String type) {
21 | this.name = name;
22 | this.type = type;
23 | }
24 | }
25 |
26 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/alipay/sdk/service/AlipayMonitorService.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.alipay.sdk.service;
2 |
3 | import cn.yccoding.payment.alipay.sdk.model.builder.AlipayHeartbeatSynRequestBuilder;
4 | import com.alipay.api.response.MonitorHeartbeatSynResponse;
5 |
6 | /**
7 | * Created by liuyangkly on 15/10/22.
8 | */
9 | public interface AlipayMonitorService {
10 |
11 | // 交易保障接口 https://openhome.alipay.com/platform/document.htm#mobileApp-barcodePay-API-heartBeat
12 |
13 | // 可以提供给系统商/pos厂商使用
14 | public MonitorHeartbeatSynResponse heartbeatSyn(AlipayHeartbeatSynRequestBuilder builder);
15 | }
16 |
--------------------------------------------------------------------------------
/flow-microservice-member/src/main/java/cn/yccoding/member/MemberApplication.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.member;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.context.annotation.ComponentScan;
6 |
7 | /**
8 | * 启动类
9 | *
10 | * @author YC
11 | * @since 2020/9/3
12 | */
13 | @SpringBootApplication
14 | @ComponentScan(basePackages = {"cn.yccoding.common","cn.yccoding.member"})
15 | public class MemberApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(MemberApplication.class, args);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/builder/SuitBuilder.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.builder;
2 |
3 | /**
4 | * 装备建造者
5 | *
6 | * @author YC
7 | * @since 2020/11/29
8 | */
9 | public class SuitBuilder {
10 |
11 | public Suit equipA() {
12 | Suit suit = new Suit();
13 | suit.addItem(new LostChapter());
14 | suit.addItem(new RelicShield());
15 | return suit;
16 | }
17 |
18 | public Suit equipB() {
19 | Suit suit = new Suit();
20 | suit.addItem(new LudensEcho());
21 | suit.addItem(new SpiritVisage());
22 | return suit;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/util/PaymentUtils.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.util;
2 |
3 | import java.time.LocalDateTime;
4 | import java.time.format.DateTimeFormatter;
5 |
6 | /**
7 | * util
8 | *
9 | * @author YC
10 | * @since 2020/9/28
11 | */
12 | public class PaymentUtils {
13 |
14 | /**
15 | * 随机生成订单号
16 | *
17 | * @return
18 | */
19 | public static String generateRandomOrderNo() {
20 | // 随机数
21 | int number = (int) ((Math.random() * 9) * 1000);
22 | String nowStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
23 | return nowStr + number;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/factory/FactoryPatternDemo.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.factory;
2 |
3 | /**
4 | * 工厂模式--演示类
5 | *
6 | * @author YC
7 | * @since 2020/11/15
8 | */
9 | public class FactoryPatternDemo {
10 |
11 | public static void main(String[] args) {
12 | AdLegendFactory adFactory = new AdLegendFactory();
13 | ApLegendFactory apFactory = new ApLegendFactory();
14 | String garenUlt = adFactory.getLegend("garen").ult();
15 | String teemoUlt = apFactory.getLegend("teemo").ult();
16 | System.out.println(garenUlt);
17 | System.out.println(teemoUlt);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/flow-microservice-order/src/main/java/cn/yccoding/order/OrderApplication.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.order;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.openfeign.EnableFeignClients;
7 |
8 | /**
9 | * @author YC
10 | * @since 2020/6/5 18:24
11 | */
12 | @EnableFeignClients
13 | @EnableDiscoveryClient
14 | @SpringBootApplication
15 | public class OrderApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(OrderApplication.class, args);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/builder/Suit.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.builder;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | /**
7 | * 套装
8 | *
9 | * @author YC
10 | * @since 2020/11/29
11 | */
12 | public class Suit {
13 | private final List- items = new ArrayList<>();
14 |
15 | public void addItem(Item item) {
16 | items.add(item);
17 | }
18 |
19 | public double getMoney() {
20 | return items.stream().map(Item::price).reduce(Double::sum).orElse(0.0);
21 | }
22 |
23 | public void showItems() {
24 | items.forEach(System.out::println);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Security Policy
2 |
3 | ## Supported Versions
4 |
5 | Use this section to tell people about which versions of your project are
6 | currently being supported with security updates.
7 |
8 | | Version | Supported |
9 | | ------- | ------------------ |
10 | | 5.1.x | :white_check_mark: |
11 | | 5.0.x | :x: |
12 | | 4.0.x | :white_check_mark: |
13 | | < 4.0 | :x: |
14 |
15 | ## Reporting a Vulnerability
16 |
17 | Use this section to tell people how to report a vulnerability.
18 |
19 | Tell them where to go, how often they can expect to get an update on a
20 | reported vulnerability, what to expect if the vulnerability is accepted or
21 | declined, etc.
22 |
--------------------------------------------------------------------------------
/flow-microservice-order/src/main/java/cn/yccoding/order/feignapi/ProducerTestFeignApi.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.order.feignapi;
2 |
3 | import cn.yccoding.common.vo.R;
4 | import cn.yccoding.order.feignapi.fallback.ProducerTestFeignApiFallback;
5 | import org.springframework.cloud.openfeign.FeignClient;
6 | import org.springframework.http.ResponseEntity;
7 | import org.springframework.web.bind.annotation.GetMapping;
8 |
9 | /**
10 | * 远程调用
11 | *
12 | * @author YC
13 | * @since 2020/9/23
14 | */
15 | @FeignClient(name = "flow-product", fallback = ProducerTestFeignApiFallback.class)
16 | public interface ProducerTestFeignApi {
17 |
18 | @GetMapping("/producer")
19 | ResponseEntity produce();
20 | }
21 |
--------------------------------------------------------------------------------
/flow-framework-common/src/main/java/cn/yccoding/common/util/CurrencyUtils.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.common.util;
2 |
3 | import java.math.BigDecimal;
4 |
5 | /**
6 | * @author YC
7 | * @since 2020/6/3 18:23
8 | */
9 | public class CurrencyUtils {
10 |
11 | /**
12 | * 元转分
13 | *
14 | * @param yuan
15 | * @return
16 | */
17 | public static Integer Yuan2Fen(Double yuan) {
18 | return new BigDecimal(yuan).movePointRight(2).intValue();
19 | }
20 |
21 | /**
22 | * 分转元
23 | *
24 | * @param fen
25 | * @return
26 | */
27 | public static Double Fen2Yuan(Integer fen) {
28 | return new BigDecimal(fen).movePointLeft(2).doubleValue();
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/builder/BuilderPatternDemo.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.builder;
2 |
3 | /**
4 | * 建造者模式--示例类
5 | *
6 | * @author YC
7 | * @since 2020/11/29
8 | */
9 | public class BuilderPatternDemo {
10 |
11 | public static void main(String[] args) {
12 | SuitBuilder suitBuilder = new SuitBuilder();
13 |
14 | Suit suit1 = suitBuilder.equipA();
15 | suit1.showItems();
16 | System.out.println(suit1.getMoney());
17 |
18 | System.out.println("==========");
19 |
20 | Suit suit2 = suitBuilder.equipB();
21 | suit2.showItems();
22 | System.out.println(suit2.getMoney());
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/alipay/sdk/model/hb/EquipStatusAdapter.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.alipay.sdk.model.hb;
2 |
3 | import com.google.gson.JsonElement;
4 | import com.google.gson.JsonPrimitive;
5 | import com.google.gson.JsonSerializationContext;
6 | import com.google.gson.JsonSerializer;
7 |
8 | import java.lang.reflect.Type;
9 |
10 | /**
11 | * Created by liuyangkly on 15/8/27.
12 | */
13 | public class EquipStatusAdapter implements JsonSerializer {
14 | @Override
15 | public JsonElement serialize(EquipStatus equipStatus, Type type, JsonSerializationContext jsonSerializationContext) {
16 | return new JsonPrimitive(equipStatus.getValue());
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/struct/adapter/objadapter/Adapter.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.struct.adapter.objadapter;
2 |
3 | import cn.yccoding.demo.designpattern.struct.adapter.classadapter.Adaptee;
4 | import cn.yccoding.demo.designpattern.struct.adapter.classadapter.Target;
5 |
6 | /**
7 | * 对象适配器
8 | *
9 | * @author YC
10 | * @since 2021/1/28
11 | */
12 | public class Adapter implements Target {
13 | private Adaptee adaptee;
14 |
15 | public Adapter(Adaptee adaptee) {
16 | this.adaptee = adaptee;
17 | }
18 |
19 | @Override
20 | public void request() {
21 | // do sth
22 | adaptee.adapteeRequest();
23 | // do sth
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/wxpay/model/DownloadBill.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.wxpay.model;
2 |
3 | import com.alibaba.fastjson.annotation.JSONField;
4 | import lombok.Data;
5 |
6 | /**
7 | * @author : Chet
8 | * @description : 下载对账单 实体类
9 | * @date : 2019/10/30
10 | */
11 | @Data
12 | public class DownloadBill extends BaseWXPay {
13 |
14 | /**
15 | * 对账单日期
16 | */
17 | @JSONField(name = "bill_date")
18 | private String billDate;
19 |
20 | /**
21 | * 账单类型
22 | */
23 | @JSONField(name = "bill_type")
24 | private String billType;
25 |
26 | /**
27 | * 压缩账单
28 | */
29 | @JSONField(name = "tar_type")
30 | private String tarType;
31 | }
32 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/resources/payment/zfbinfo.properties:
--------------------------------------------------------------------------------
1 | # 支付宝网关名、partnerId和appId
2 | open_api_domain = https://openapi.alipaydev.com/gateway.do
3 | mcloud_api_domain = http://mcloudmonitor.com/gateway.do
4 | pid =
5 | appid =
6 |
7 | # RSA私钥、公钥和支付宝公钥
8 | private_key =
9 | public_key =
10 |
11 | #SHA1withRsa对应支付宝公钥
12 | #alipay_public_key =
13 |
14 | #SHA256withRsa对应支付宝公钥
15 | alipay_public_key =
16 |
17 | # 签名类型: RSA->SHA1withRsa,RSA2->SHA256withRsa
18 | sign_type = RSA2
19 | # 当面付最大查询次数和查询间隔(毫秒)
20 | max_query_retry = 5
21 | query_duration = 5000
22 |
23 | # 当面付最大撤销次数和撤销间隔(毫秒)
24 | max_cancel_retry = 3
25 | cancel_duration = 2000
26 |
27 | # 交易保障线程第一次调度延迟和调度间隔(秒)
28 | heartbeat_delay = 5
29 | heartbeat_duration = 900
30 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/property/RedisKeyProperties.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.property;
2 |
3 | import lombok.Data;
4 | import org.springframework.boot.context.properties.ConfigurationProperties;
5 |
6 | /**
7 | * key
8 | *
9 | * @author YC
10 | * @since 2020/9/27
11 | */
12 | @Data
13 | @ConfigurationProperties(prefix = "redis.key")
14 | public class RedisKeyProperties {
15 |
16 | private RedisKeyProperties.Prefix prefix;
17 |
18 | private RedisKeyProperties.Expire expire;
19 |
20 | @Data
21 | public static class Prefix {
22 | private String wxToken;
23 | }
24 |
25 | @Data
26 | public static class Expire {
27 | private Long wxToken;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/factory/AdLegendFactory.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.factory;
2 |
3 |
4 | /**
5 | * 英雄工厂,输入英雄名,返回对应ad类型英雄
6 | *
7 | * @author YC
8 | * @since 2020/11/15
9 | */
10 | public class AdLegendFactory {
11 |
12 | /**
13 | * 获取英雄的类
14 | * @param name
15 | * @return
16 | */
17 | public Legend getLegend(String name){
18 |
19 | if ("garen".equalsIgnoreCase(name)) {
20 | Garen garen = new Garen();
21 | garen.setGarenMethod("德玛西亚");
22 | return garen;
23 | } else if ("xinzhao".equalsIgnoreCase(name)) {
24 | return new Teemo();
25 | }
26 | return null;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/wxpay/model/DownloadFundFlow.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.wxpay.model;
2 |
3 | import com.alibaba.fastjson.annotation.JSONField;
4 | import lombok.Data;
5 |
6 | /**
7 | * @author : Chet
8 | * @description : 下载资金账单 实体类
9 | * @date : 2019/10/30
10 | */
11 | @Data
12 | public class DownloadFundFlow extends BaseWXPay {
13 |
14 | /**
15 | * 资金账单日期
16 | */
17 | @JSONField(name = "bill_date")
18 | private String billDate;
19 |
20 | /**
21 | * 资金账户类型
22 | */
23 | @JSONField(name = "account_type")
24 | private String accountType;
25 |
26 | /**
27 | * 压缩账单
28 | */
29 | @JSONField(name = "tar_type")
30 | private String tarType;
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/abstractfactory/AbstractFactoryPatternDemo.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.abstractfactory;
2 |
3 | /**
4 | * 抽象工厂模式--演示类
5 | *
6 | * @author YC
7 | * @since 2020/11/19
8 | */
9 | public class AbstractFactoryPatternDemo {
10 |
11 | public static void main(String[] args) {
12 | AbstractFactory itemFactory = FactoryProducer.getFactory("item");
13 | AbstractFactory legendFactory = FactoryProducer.getFactory("LEGEND");
14 |
15 | Item triforce = itemFactory.getItem("triforce");
16 | System.out.println(triforce.stat());
17 |
18 | Legend timo = legendFactory.getLegend("teemo");
19 | System.out.println(timo.ult());
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/prototype/Legend.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.prototype;
2 |
3 | import lombok.Data;
4 |
5 | /**
6 | * 英雄
7 | *
8 | * @author YC
9 | * @since 2020/11/15
10 | */
11 | @Data
12 | public abstract class Legend implements Cloneable{
13 | private String name;
14 |
15 | protected String type;
16 |
17 | /**
18 | * 大招
19 | */
20 | abstract String ult();
21 |
22 | @Override
23 | protected Object clone(){
24 | Object clone = null;
25 | try {
26 | clone = super.clone();
27 | } catch (CloneNotSupportedException e) {
28 | e.printStackTrace();
29 | }
30 | return clone;
31 | }
32 | }
33 |
34 |
--------------------------------------------------------------------------------
/flow-microservice-authcenter/src/main/java/cn/yccoding/authcenter/property/JwtCAProperties.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.authcenter.property;
2 |
3 | import lombok.Data;
4 | import org.springframework.boot.context.properties.ConfigurationProperties;
5 |
6 | /**
7 | * jwt证书
8 | *
9 | * @author YC
10 | * @since 2020/9/25
11 | */
12 | @Data
13 | @ConfigurationProperties(prefix = "flow.jwt")
14 | public class JwtCAProperties {
15 | /**
16 | * 证书名称
17 | */
18 | private String keyPairName;
19 |
20 | /**
21 | * 证书别名
22 | */
23 | private String keyPairAlias;
24 |
25 | /**
26 | * 证书私钥
27 | */
28 | private String keyPairSecret;
29 |
30 | /**
31 | * 证书存储密钥
32 | */
33 | private String keyPairStoreSecret;
34 | }
35 |
--------------------------------------------------------------------------------
/flow-microservice-member/src/main/java/cn/yccoding/member/service/SsoService.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.member.service;
2 |
3 | import cn.yccoding.member.domain.entity.Member;
4 | import cn.yccoding.member.object.RegisterQo;
5 |
6 | /**
7 | * 会员登录服务类
8 | *
9 | * @author YC
10 | * @since 2020/9/3
11 | */
12 | public interface SsoService {
13 |
14 | /**
15 | * 注册会员前,获取验证码
16 | *
17 | * @param phone
18 | * @return
19 | */
20 | String getOtpCode(String phone);
21 |
22 | /**
23 | * 会员注册
24 | */
25 | boolean register(RegisterQo registerQo);
26 |
27 | /**
28 | * 会员登录
29 | * @param username
30 | * @param password
31 | * @return
32 | */
33 | Member login(String username, String password);
34 | }
35 |
--------------------------------------------------------------------------------
/flow-microservice-order/src/main/java/cn/yccoding/order/feignapi/fallback/ProducerTestFeignApiFallback.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.order.feignapi.fallback;
2 |
3 | import cn.yccoding.common.vo.R;
4 | import cn.yccoding.order.feignapi.ProducerTestFeignApi;
5 | import lombok.extern.slf4j.Slf4j;
6 | import org.springframework.http.ResponseEntity;
7 | import org.springframework.stereotype.Component;
8 |
9 | /**
10 | * 降级
11 | *
12 | * @author YC
13 | * @since 2020/9/24
14 | */
15 | @Slf4j
16 | @Component
17 | public class ProducerTestFeignApiFallback implements ProducerTestFeignApi {
18 |
19 | @Override
20 | public ResponseEntity produce() {
21 | log.error("服务异常...");
22 | return R.error().message("生产者忙碌...").buildResponseEntity();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/flow-microservice-member/src/main/java/cn/yccoding/member/domain/service/MemberService.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.member.domain.service;
2 |
3 | import cn.yccoding.member.domain.entity.Member;
4 | import com.baomidou.mybatisplus.extension.service.IService;
5 |
6 | import java.util.List;
7 |
8 | /**
9 | *
10 | * 会员表 服务类
11 | *
12 | *
13 | * @author yc
14 | * @since 2020-09-03
15 | */
16 | public interface MemberService extends IService {
17 |
18 | /**
19 | * 根据电话获取会员信息
20 | * @param phone
21 | * @return
22 | */
23 | List getByPhone(String phone);
24 |
25 | /**
26 | * 根据用户名查找会员
27 | * @param username
28 | * @return
29 | */
30 | List getByUsername(String username);
31 | }
32 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/async/future/MockUtils.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.async.future;
2 |
3 | import java.util.Random;
4 | import java.util.UUID;
5 |
6 | /**
7 | * 模拟工具类
8 | *
9 | * @author YC
10 | * @since 2021/1/9
11 | */
12 | public class MockUtils {
13 |
14 | /**
15 | * 模拟调用延时
16 | */
17 | public static void delay() {
18 | try {
19 | Thread.sleep(1000L);
20 | } catch (InterruptedException e) {
21 | e.printStackTrace();
22 | }
23 | }
24 |
25 | public static int getData() {
26 | Random random = new Random(1000);
27 | return random.nextInt(100);
28 | }
29 |
30 | public static String getInfo() {
31 | return UUID.randomUUID().toString();
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/prototype/Champ.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.prototype;
2 |
3 | import lombok.Data;
4 |
5 | /**
6 | * 英雄类
7 | *
8 | * @author YC
9 | * @since 2020/12/6
10 | */
11 | @Data
12 | public class Champ implements Cloneable{
13 |
14 | private String name;
15 |
16 | @Override
17 | protected Object clone() {
18 | Object clone = null;
19 | try {
20 | clone = super.clone();
21 | } catch (CloneNotSupportedException e) {
22 | e.printStackTrace();
23 | }
24 | return clone;
25 | }
26 |
27 | public static void main(String[] args) {
28 | Champ champ = new Champ();
29 | Champ clone = (Champ) champ.clone();
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/flow-microservice-member/src/main/java/cn/yccoding/member/config/property/JwtProperties.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.member.config.property;
2 |
3 | import lombok.Data;
4 | import org.springframework.boot.context.properties.ConfigurationProperties;
5 | import org.springframework.stereotype.Component;
6 |
7 | /**
8 | * jwt 配置属性
9 | *
10 | * @author YC
11 | * @since 2020/9/5
12 | */
13 | @Data
14 | @ConfigurationProperties(prefix = "jwt")
15 | @Component
16 | public class JwtProperties {
17 |
18 | /**
19 | * 请求头
20 | */
21 | private String header;
22 |
23 | /**
24 | * 加密密钥
25 | */
26 | private String secret;
27 |
28 | /**
29 | * 过期时间
30 | */
31 | private Long expire;
32 |
33 | /**
34 | * token前缀
35 | */
36 | private String prefix;
37 | }
38 |
--------------------------------------------------------------------------------
/flow-microservice-gateway/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8888
3 | spring:
4 | cloud:
5 | nacos:
6 | discovery:
7 | server-addr: localhost:8848
8 | gateway:
9 | discovery:
10 | locator:
11 | enabled: true # 开启gateway从nacos上获取服务列表
12 | lower-case-service-id: true
13 | routes:
14 | - id: service-order
15 | uri: lb://service-order
16 | predicates: # 路径断言
17 | - Path=/consumer/**,/order/**
18 | - id: service-product
19 | uri: lb://service-product
20 | predicates:
21 | - Path=/producer/**
22 |
23 | management:
24 | endpoints:
25 | web:
26 | exposure:
27 | include: '*'
28 | endpoint:
29 | health:
30 | show-details: always # 打开端点详情
--------------------------------------------------------------------------------
/flow-microservice-payment/src/main/java/cn/yccoding/payment/alipay/service/TradeService.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.payment.alipay.service;
2 |
3 | import cn.yccoding.payment.alipay.model.TradePaySummary;
4 | import cn.yccoding.payment.alipay.sdk.model.result.AlipayF2FQueryResult;
5 | import org.springframework.web.bind.annotation.RequestBody;
6 |
7 | /**
8 | * trade
9 | *
10 | * @author YC
11 | * @since 2020/9/29
12 | */
13 | public interface TradeService {
14 |
15 |
16 | /**
17 | * 当面付2.0支付
18 | *
19 | * @param tradePaySummary
20 | * @return
21 | */
22 | String f2fPayTradePay(@RequestBody TradePaySummary tradePaySummary);
23 |
24 | /**
25 | * 当面付2.0查询订单
26 | * @param outTradeNo 商户订单号
27 | */
28 | AlipayF2FQueryResult f2fTradeQuery(String outTradeNo);
29 | }
30 |
--------------------------------------------------------------------------------
/flow-framework-demo/src/main/java/cn/yccoding/demo/designpattern/create/abstractfactory/ItemFactory.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.demo.designpattern.create.abstractfactory;
2 |
3 | /**
4 | * 装备工厂类,扩展自抽象工厂
5 | *
6 | * @author YC
7 | * @since 2020/11/19
8 | */
9 | public class ItemFactory extends AbstractFactory {
10 | @Override
11 | public Legend getLegend(String legend) {
12 | return null;
13 | }
14 |
15 | @Override
16 | public Item getItem(String item) {
17 | if (item.equalsIgnoreCase("sunfire")) {
18 | return new SunFire();
19 | } else if (item.equalsIgnoreCase("triforce")) {
20 | return new TriForce();
21 | } else if (item.equalsIgnoreCase("zhonya")) {
22 | return new ZhonYa();
23 | }
24 | return null;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/flow-framework-common/src/main/java/cn/yccoding/common/async/AsyncTask.java:
--------------------------------------------------------------------------------
1 | package cn.yccoding.common.async;
2 |
3 | import java.lang.reflect.Method;
4 | import java.util.concurrent.Callable;
5 |
6 | /**
7 | * 异步任务
8 | *
9 | * @author YC
10 | * @since 2021/1/10
11 | */
12 | public class AsyncTask implements Callable