wuxw
2019-02-07 c5aac73ec29f74904b544a722037b39bbb85ab3e
去serviceCode 改为businessTypeCd 完成
1个文件已删除
101个文件已修改
42 文件已重命名
29个文件已添加
4520 ■■■■■ 已修改文件
AgentService/src/main/java/com/java110/agent/listener/DeleteAgentAttrListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
AgentService/src/main/java/com/java110/agent/listener/DeleteAgentCerdentialsListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
AgentService/src/main/java/com/java110/agent/listener/DeleteAgentPhotoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
AgentService/src/main/java/com/java110/agent/listener/DeleteAgentUserListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
AgentService/src/main/java/com/java110/agent/listener/SaveAgentCerdentialsListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
AgentService/src/main/java/com/java110/agent/listener/SaveAgentInfoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
AgentService/src/main/java/com/java110/agent/listener/SaveAgentPhotoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
AgentService/src/main/java/com/java110/agent/listener/SaveAgentUserListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
AgentService/src/main/java/com/java110/agent/listener/UpdateAgentCerdentialsListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
AgentService/src/main/java/com/java110/agent/listener/UpdateAgentInfoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
AgentService/src/main/java/com/java110/agent/listener/UpdateAgentPhotoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Api/docker/bin/start_api.sh 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CenterService/doc/response_protocol.json 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommentService/src/main/java/com/java110/comment/listener/DeleteCommentOrSubCommentListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommentService/src/main/java/com/java110/comment/listener/FlushAboutCommentIdListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommentService/src/main/java/com/java110/comment/listener/SaveCommentAndSubCommentListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommentService/src/main/java/com/java110/comment/listener/SaveCommentScoreListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommentService/src/main/java/com/java110/comment/listener/SaveSubCommentAttrListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommentService/src/main/java/com/java110/comment/listener/SaveSubCommentPhotoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/listener/MemberJoinedCommunityListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/listener/MemberQuitCommunityListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/listener/SaveCommunityInfoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/listener/UpdateCommunityInfoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/doc/businessNotifyProtocol.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/doc/businessRequestProtocol.json 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/doc/businessResponseProtocol.json 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/doc/business_interface/request_business.json 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/doc/business_interface/request_delete_instance.json 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/doc/business_interface/request_instance.json 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/doc/business_interface/response_business.json 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/doc/business_interface/response_instance.json 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/doc/centerService.docx 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/doc/centerService.png 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/doc/centerServiceTestDocument.docx 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/doc/encrypt_decrypt.txt 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/doc/orderStatusNotifyProtocol.json 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/doc/request_protocol.json 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/doc/response_protocol.json 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/doc/系统调用流程图.png 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/docker/Dockerfile 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/docker/bin/start_center.sh 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/docker/docker-compose.yml 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/docker/onStart.sh 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/pom.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/OrderServiceApplicationStart.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/api/CacheApi.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/api/CenterApi.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/api/HttpApi.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/api/OrderApi.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/dao/ICenterServiceDAO.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/dao/impl/CenterServiceDAOImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/kaka/CenserServiceKafkaListener.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/kaka/CenterServiceBean.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/listener/DealUserIdListener.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/listener/ReceiveRequestListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/smo/ICenterServiceCacheSMO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/smo/ICenterServiceSMO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/smo/IOrderServiceSMO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/smo/impl/CenterServiceCacheSMOImpl.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/smo/impl/CenterServiceSMOImpl.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/java/com/java110/order/smo/impl/OrderServiceSMOImpl.java 1105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/resources/application-dev.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/resources/application-prod.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/resources/application-test.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/resources/application.yml 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/main/resources/banner.txt 补丁 | 查看 | 原始文档 | blame | 历史
OrderService/src/test/java/com/java110/AppTest.java 补丁 | 查看 | 原始文档 | blame | 历史
PropertyService/src/main/java/com/java110/property/listener/DeletePropertyAttrListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PropertyService/src/main/java/com/java110/property/listener/DeletePropertyCerdentialsListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PropertyService/src/main/java/com/java110/property/listener/DeletePropertyHouseListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PropertyService/src/main/java/com/java110/property/listener/DeletePropertyPhotoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PropertyService/src/main/java/com/java110/property/listener/DeletePropertyUserListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PropertyService/src/main/java/com/java110/property/listener/SavePropertyCerdentialsListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PropertyService/src/main/java/com/java110/property/listener/SavePropertyFeeListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PropertyService/src/main/java/com/java110/property/listener/SavePropertyHouseListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PropertyService/src/main/java/com/java110/property/listener/SavePropertyInfoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PropertyService/src/main/java/com/java110/property/listener/SavePropertyPhotoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PropertyService/src/main/java/com/java110/property/listener/SavePropertyUserListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PropertyService/src/main/java/com/java110/property/listener/UpdatePropertyCerdentialsListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PropertyService/src/main/java/com/java110/property/listener/UpdatePropertyFeeListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PropertyService/src/main/java/com/java110/property/listener/UpdatePropertyHouseListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PropertyService/src/main/java/com/java110/property/listener/UpdatePropertyInfoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PropertyService/src/main/java/com/java110/property/listener/UpdatePropertyPhotoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/DeleteShopAttrAndAttrParamListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/DeleteShopCatalogListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/DeleteShopDescListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/DeleteShopInfoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/DeleteShopPhotoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/DeleteShopPreferentialListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/FlushAboutBuyIdListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/FlushAboutShopIdListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/FlushShopCatalogIdListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/SaveBuyShopAttrListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/SaveBuyShopListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/SaveShopAttrAndAttrParamListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/SaveShopCatalogListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/SaveShopDescListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/SaveShopInfoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/SaveShopPhotoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/SaveShopPreferentialListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/UpdateShopAttrAndAttrParamListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/UpdateShopCatalogListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/UpdateShopDescListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/UpdateShopInfoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/UpdateShopPhotoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ShopService/src/main/java/com/java110/shop/listener/UpdateShopPreferentialListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
StoreService/src/main/java/com/java110/store/listener/DeleteStoreInfoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
StoreService/src/main/java/com/java110/store/listener/SaveStoreInfoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
StoreService/src/main/java/com/java110/store/listener/UpdateStoreInfoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
StoreService/src/main/java/com/java110/store/listener/memberJoinedStoreListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
StoreService/src/main/java/com/java110/store/listener/memberQuitStoreListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserService/src/main/java/com/java110/user/listener/ModifyUserInfoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserService/src/main/java/com/java110/user/listener/RecoverUserInfoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserService/src/main/java/com/java110/user/listener/RemoveUserInfoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserService/src/main/java/com/java110/user/listener/SaveUserAddressListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserService/src/main/java/com/java110/user/listener/SaveUserCredentialsListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserService/src/main/java/com/java110/user/listener/SaveUserInfoListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserService/src/main/java/com/java110/user/listener/SaveUserTagListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/entity/center/Business.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/entity/order/Attrs.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/entity/order/BaseOrder.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/entity/order/Business.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/entity/order/BusinessAttrs.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/entity/order/BusinessPlus.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/entity/order/Orders.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/entity/order/OrdersAttrs.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/entity/order/ServiceBusiness.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-common/src/main/java/com/java110/common/cache/ServiceBusinessCache.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-common/src/main/java/com/java110/common/constant/CommonConstant.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-common/src/main/java/com/java110/common/constant/ServiceBusinessConstant.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-common/src/main/java/com/java110/common/exception/ConfigDataException.java 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-common/src/main/java/com/java110/common/util/Assert.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-common/src/main/java/com/java110/common/util/ServiceBusinessUtil.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-config/db/OrderService/create_table.sql 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-config/src/main/resources/logback.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-config/src/main/resources/mapper/center/CenterServiceDAOImplMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-config/src/main/resources/mapper/service/QueryServiceDAOImplMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/AbstractDataFlowContext.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/AbstractDataFlowContextPlus.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/AbstractOrderDataFlowContext.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/AbstractOrderNotifyDataFlowContext.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/AbstractOrderResponse.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/ApiDataFlow.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/BusinessServiceDataFlow.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/CodeDataFlow.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/DataFlow.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/DataFlowContext.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/IDataFlowContextPlus.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/IOrderDataFlowContext.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/IOrderNotifyDataFlowContext.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/IOrderResponse.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/IOrders.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/OrderDataFlow.java 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/context/OrderNotifyDataFlow.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/factory/DataFlowFactory.java 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/factory/DataTransactionFactory.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/factory/OrderDataFlowContextFactory.java 772 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-event/src/main/java/com/java110/event/center/DataFlowEventPublishing.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-event/src/main/java/com/java110/event/center/event/DataFlowEvent.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-event/src/main/java/com/java110/event/center/event/DataFlowInitCompleteEvent.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-event/src/main/java/com/java110/event/center/event/DataPreValidateEvent.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-event/src/main/java/com/java110/event/center/event/DataResponseEvent.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-event/src/main/java/com/java110/event/center/event/InvokeBusinessBSuccessEvent.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-event/src/main/java/com/java110/event/center/event/InvokeBusinessISuccessEvent.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-event/src/main/java/com/java110/event/center/event/InvokeBusinessSystemEvent.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-event/src/main/java/com/java110/event/center/event/LoadConfigDataCompleteEvent.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-event/src/main/java/com/java110/event/center/event/ReceiveRequestEvent.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-event/src/main/java/com/java110/event/center/event/RuleValidateCompleteEvent.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-event/src/main/java/com/java110/event/service/BusinessServiceDataFlowEventPublishing.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-event/src/main/java/com/java110/event/service/BusinessServiceDataFlowListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-service/src/main/java/com/java110/service/dao/IQueryServiceDAO.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-service/src/main/java/com/java110/service/dao/impl/QueryServiceDAOImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
AgentService/src/main/java/com/java110/agent/listener/DeleteAgentAttrListener.java
@@ -42,7 +42,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_AGENT_ATTR;
    }
AgentService/src/main/java/com/java110/agent/listener/DeleteAgentCerdentialsListener.java
@@ -45,7 +45,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_AGENT_CERDENTIALS;
    }
AgentService/src/main/java/com/java110/agent/listener/DeleteAgentPhotoListener.java
@@ -41,7 +41,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_AGENT_PHOTO;
    }
AgentService/src/main/java/com/java110/agent/listener/DeleteAgentUserListener.java
@@ -41,7 +41,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_AGENT_USER;
    }
AgentService/src/main/java/com/java110/agent/listener/SaveAgentCerdentialsListener.java
@@ -44,7 +44,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_AGENT_CERDENTIALS;
    }
AgentService/src/main/java/com/java110/agent/listener/SaveAgentInfoListener.java
@@ -38,7 +38,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_AGENT_INFO;
    }
AgentService/src/main/java/com/java110/agent/listener/SaveAgentPhotoListener.java
@@ -40,7 +40,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_AGENT_PHOTO;
    }
AgentService/src/main/java/com/java110/agent/listener/SaveAgentUserListener.java
@@ -44,7 +44,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_AGENT_USER;
    }
AgentService/src/main/java/com/java110/agent/listener/UpdateAgentCerdentialsListener.java
@@ -41,7 +41,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_UPDATE_AGENT_CERDENTIALS;
    }
AgentService/src/main/java/com/java110/agent/listener/UpdateAgentInfoListener.java
@@ -42,7 +42,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_UPDATE_AGENT_INFO;
    }
AgentService/src/main/java/com/java110/agent/listener/UpdateAgentPhotoListener.java
@@ -41,7 +41,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_UPDATE_AGENT_PHOTO;
    }
Api/docker/bin/start_api.sh
@@ -1,15 +1,15 @@
#!/bin/bash
#### debug model prod
#nohup java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n -jar -Dspring.profiles.active=dev target/Api.jar $1 > center.log 2>&1 &
#nohup java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n -jar -Dspring.profiles.active=dev target/Api.jar $1 > order.log 2>&1 &
#### normal prod model
#nohup java -jar -Dspring.profiles.active=prod $1 target/Api.jar > center.log $1 2>&1 &
#nohup java -jar -Dspring.profiles.active=prod $1 target/Api.jar > order.log $1 2>&1 &
#### normal test model
#nohup java -jar -Dspring.profiles.active=test $1 target/Api.jar > center.log $1 2>&1 &
#nohup java -jar -Dspring.profiles.active=test $1 target/Api.jar > order.log $1 2>&1 &
#### normal dev model
#nohup java -jar -Dspring.profiles.active=dev $1 target/Api.jar > center.log $1 2>&1 &
#nohup java -jar -Dspring.profiles.active=dev $1 target/Api.jar > order.log $1 2>&1 &
nohup java -jar -Dspring.profiles.active=$1 $2 target/Api.jar > center.log $2 2>&1 &
tail -100f center.log
CenterService/doc/response_protocol.json
File was deleted
CommentService/src/main/java/com/java110/comment/listener/DeleteCommentOrSubCommentListener.java
@@ -41,7 +41,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_COMMENT_INFO;
    }
CommentService/src/main/java/com/java110/comment/listener/FlushAboutCommentIdListener.java
@@ -28,7 +28,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_COMMENT_INFO;
    }
CommentService/src/main/java/com/java110/comment/listener/SaveCommentAndSubCommentListener.java
@@ -36,7 +36,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_COMMENT_INFO;
    }
CommentService/src/main/java/com/java110/comment/listener/SaveCommentScoreListener.java
@@ -38,7 +38,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_COMMENT_INFO;
    }
CommentService/src/main/java/com/java110/comment/listener/SaveSubCommentAttrListener.java
@@ -38,7 +38,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_COMMENT_INFO;
    }
CommentService/src/main/java/com/java110/comment/listener/SaveSubCommentPhotoListener.java
@@ -38,7 +38,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_COMMENT_INFO;
    }
CommunityService/src/main/java/com/java110/community/listener/MemberJoinedCommunityListener.java
@@ -40,7 +40,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_MEMBER_JOINED_COMMUNITY;
    }
CommunityService/src/main/java/com/java110/community/listener/MemberQuitCommunityListener.java
@@ -40,7 +40,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_MEMBER_QUIT_COMMUNITY;
    }
CommunityService/src/main/java/com/java110/community/listener/SaveCommunityInfoListener.java
@@ -44,7 +44,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_COMMUNITY_INFO;
    }
CommunityService/src/main/java/com/java110/community/listener/UpdateCommunityInfoListener.java
@@ -45,7 +45,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_UPDATE_COMMUNITY_INFO;
    }
OrderService/doc/businessNotifyProtocol.json
File was renamed from CenterService/doc/businessNotifyProtocol.json
@@ -12,7 +12,7 @@
      "message": "错误消息"
    },
    "bId":"12345678",
    "serviceCode": "querycustinfo"
    "businessTypeCd": "D"
    //其他字段
  }
}
OrderService/doc/businessRequestProtocol.json
OrderService/doc/businessResponseProtocol.json
OrderService/doc/business_interface/request_business.json
OrderService/doc/business_interface/request_delete_instance.json
OrderService/doc/business_interface/request_instance.json
OrderService/doc/business_interface/response_business.json
OrderService/doc/business_interface/response_instance.json
OrderService/doc/centerService.docx
Binary files differ
OrderService/doc/centerService.png

OrderService/doc/centerServiceTestDocument.docx
Binary files differ
OrderService/doc/encrypt_decrypt.txt
OrderService/doc/orderStatusNotifyProtocol.json
OrderService/doc/request_protocol.json
File was renamed from CenterService/doc/request_protocol.json
@@ -1,12 +1,14 @@
header:
 "appId": "外系统ID,分配得到",
 "transactionId": "100000000020180409224736000001",
 "requestTime": "20180409224736",
  "userId": "用户ID"
body:
{
  "orders": {
    "appId": "外系统ID,分配得到",
    "transactionId": "100000000020180409224736000001",
    "userId": "用户ID",
"orders": {
    "orderTypeCd": "订单类型,查询,受理",
    "requestTime": "20180409224736",
    "remark":"备注",
    "sign": "这个服务是否要求MD5签名",
    "attrs": [{
      "specCd": "配置的字段ID",
      "value": "具体值"
@@ -14,9 +16,10 @@
  },
  // å¦‚果是批量方式 å†™æˆ "business":[{....}]
  "business": {
    "serviceCode": "queryCustInfo",
    "serviceName": "查询客户",
    "businessTypeCd": "B",
    "invokeModel":"S",
    "remark": "备注",
        "seq":1,
    "datas": {
      "params": {
        //这个做查询时的参数
OrderService/doc/response_protocol.json
New file
@@ -0,0 +1,8 @@
header:
"transactionId": "100000000020180409224736000001",
"requestTime": "20180409224736",
{
  "msg":"成功"
}
OrderService/doc/ϵͳµ÷ÓÃÁ÷³Ìͼ.png

OrderService/docker/Dockerfile
OrderService/docker/bin/start_center.sh
File was renamed from CenterService/docker/bin/start_center.sh
@@ -1,15 +1,15 @@
#!/bin/bash
#### debug model prod
#nohup java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n -jar -Dspring.profiles.active=dev target/CenterService.jar $1 > center.log 2>&1 &
#nohup java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n -jar -Dspring.profiles.active=dev target/CenterService.jar $1 > order.log 2>&1 &
#### normal prod model
#nohup java -jar -Dspring.profiles.active=prod $1 target/CenterService.jar > center.log $1 2>&1 &
#nohup java -jar -Dspring.profiles.active=prod $1 target/CenterService.jar > order.log $1 2>&1 &
#### normal test model
#nohup java -jar -Dspring.profiles.active=test $1 target/CenterService.jar > center.log $1 2>&1 &
#nohup java -jar -Dspring.profiles.active=test $1 target/CenterService.jar > order.log $1 2>&1 &
#### normal dev model
#nohup java -jar -Dspring.profiles.active=dev $1 target/CenterService.jar > center.log $1 2>&1 &
#nohup java -jar -Dspring.profiles.active=dev $1 target/CenterService.jar > order.log $1 2>&1 &
nohup java -jar -Dspring.profiles.active=$1 $2 target/CenterService.jar > center.log 2>&1 &
tail -100f center.log
OrderService/docker/docker-compose.yml
OrderService/docker/onStart.sh
OrderService/pom.xml
File was renamed from CenterService/pom.xml
@@ -9,7 +9,7 @@
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>CenterService</artifactId>
    <artifactId>OrderService</artifactId>
    <name>CenterService</name>
    <!-- FIXME change it to the project's website -->
@@ -52,7 +52,7 @@
    </dependencies>
    <build>
        <finalName>CenterService</finalName>
        <finalName>OrderService</finalName>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
@@ -84,7 +84,7 @@
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <mainClass>com.java110.center.CenterServiceApplicationStart</mainClass>
                        <mainClass>com.java110.order.OrderServiceApplicationStart</mainClass>
                    </configuration>
                </plugin>
                <plugin>
OrderService/src/main/java/com/java110/order/OrderServiceApplicationStart.java
File was renamed from CenterService/src/main/java/com/java110/center/CenterServiceApplicationStart.java
@@ -1,11 +1,10 @@
package com.java110.center;
package com.java110.order;
import com.java110.center.smo.ICenterServiceCacheSMO;
import com.java110.order.smo.ICenterServiceCacheSMO;
import com.java110.common.factory.ApplicationContextFactory;
import com.java110.core.annotation.Java110ListenerDiscovery;
import com.java110.core.client.RestTemplate;
import com.java110.event.center.DataFlowEventPublishing;
import com.java110.event.center.init.EventConfigInit;
import com.java110.service.init.ServiceStartInit;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -29,12 +28,12 @@
 * @date 2016å¹´8月6日
 * @tag
 */
@SpringBootApplication(scanBasePackages={"com.java110.service","com.java110.center","com.java110.core","com.java110.event.center","com.java110.cache"})
@SpringBootApplication(scanBasePackages={"com.java110.service","com.java110.order","com.java110.core","com.java110.event.order","com.java110.cache"})
@EnableDiscoveryClient
//@EnableConfigurationProperties(EventProperties.class)
@Java110ListenerDiscovery(listenerPublishClass = DataFlowEventPublishing.class,
        basePackages = {"com.java110.center.listener"})
public class CenterServiceApplicationStart {
        basePackages = {"com.java110.order.listener"})
public class OrderServiceApplicationStart {
    /**
     * å®žä¾‹åŒ–RestTemplate,通过@LoadBalanced注解开启均衡负载能力.
@@ -60,7 +59,7 @@
    }
    public static void main(String[] args) throws Exception{
        ApplicationContext context = SpringApplication.run(CenterServiceApplicationStart.class, args);
        ApplicationContext context = SpringApplication.run(OrderServiceApplicationStart.class, args);
        //服务启动加载
        ServiceStartInit.initSystemConfig(context);
OrderService/src/main/java/com/java110/order/api/CacheApi.java
File was renamed from CenterService/src/main/java/com/java110/center/api/CacheApi.java
@@ -1,6 +1,6 @@
package com.java110.center.api;
package com.java110.order.api;
import com.java110.center.smo.ICenterServiceCacheSMO;
import com.java110.order.smo.ICenterServiceCacheSMO;
import com.java110.common.constant.ResponseConstant;
import com.java110.core.base.controller.BaseController;
import com.java110.core.factory.DataQueryFactory;
OrderService/src/main/java/com/java110/order/api/CenterApi.java
File was renamed from CenterService/src/main/java/com/java110/center/api/CenterApi.java
@@ -1,12 +1,11 @@
package com.java110.center.api;
package com.java110.order.api;
import com.alibaba.fastjson.JSONObject;
import com.java110.center.smo.ICenterServiceSMO;
import com.java110.order.smo.ICenterServiceSMO;
import com.java110.common.constant.ResponseConstant;
import com.java110.common.exception.BusinessException;
import com.java110.common.util.Assert;
import com.java110.core.base.controller.BaseController;
import com.java110.core.factory.DataTransactionFactory;
import com.java110.event.center.DataFlowEventPublishing;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -19,7 +18,6 @@
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
@@ -32,6 +30,7 @@
@RestController
@Api(value = "中心服务接口服务规范")
@RequestMapping(path = "/centerApi")
@Deprecated
public class CenterApi extends BaseController {
    protected final static Logger logger = LoggerFactory.getLogger(CenterApi.class);
OrderService/src/main/java/com/java110/order/api/HttpApi.java
File was renamed from CenterService/src/main/java/com/java110/center/api/HttpApi.java
@@ -1,7 +1,7 @@
package com.java110.center.api;
package com.java110.order.api;
import com.alibaba.fastjson.JSONObject;
import com.java110.center.smo.ICenterServiceSMO;
import com.java110.order.smo.ICenterServiceSMO;
import com.java110.common.constant.ResponseConstant;
import com.java110.common.exception.BusinessException;
import com.java110.common.util.Assert;
OrderService/src/main/java/com/java110/order/api/OrderApi.java
New file
@@ -0,0 +1,119 @@
package com.java110.order.api;
import com.alibaba.fastjson.JSONObject;
import com.java110.common.constant.ResponseConstant;
import com.java110.common.exception.BusinessException;
import com.java110.common.util.Assert;
import com.java110.core.base.controller.BaseController;
import com.java110.event.center.DataFlowEventPublishing;
import com.java110.order.smo.IOrderServiceSMO;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
/**
 * @author wux
 * @create 2019-02-05 ä¸Šåˆ10:29
 * @desc è®¢å•接口服务类
 **/
@RestController
@RequestMapping(path = "/orderApi")
public class OrderApi extends BaseController {
    private final static Logger logger = LoggerFactory.getLogger(OrderApi.class);
    @Autowired
    private IOrderServiceSMO orderServiceSMOImpl;
    @RequestMapping(path = "/service",method= RequestMethod.POST)
    @ApiOperation(value="中心服务订单受理", notes="test: è¿”回 200 è¡¨ç¤ºæœåŠ¡å—ç†æˆåŠŸï¼Œå…¶ä»–è¡¨ç¤ºå¤±è´¥")
    @ApiImplicitParam(paramType="query", name = "orderInfo", value = "订单受理信息", required = true, dataType = "String")
    public ResponseEntity<String> servicePost(@RequestBody String orderInfo, HttpServletRequest request) {
        ResponseEntity<String> responseEntity = null;
        try {
            Map<String, String> headers = new HashMap<String, String>();
            getRequestInfo(request, headers);
            logger.debug("订单服务请求报文为: {},请求头为:{}",orderInfo,headers);
            //接受请求事件
            DataFlowEventPublishing.receiveRequest(orderInfo,headers);
            //预校验
            preValiateOrderInfo(orderInfo);
            responseEntity =  orderServiceSMOImpl.service(orderInfo, headers);
        }catch (Exception e){
            logger.error("请求订单异常",e);
            responseEntity =  new ResponseEntity<String>("请求中心服务发生异常,"+e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
        }finally {
            logger.debug("订单服务返回报文为: {}",responseEntity);
            return responseEntity;
        }
    }
    /**
     * è¿™é‡Œé¢„校验,请求报文中不能有 dataFlowId
     * @param orderInfo
     */
    private void preValiateOrderInfo(String orderInfo) {
        Assert.jsonObjectHaveKey(orderInfo,"orders","请求报文中未包含orders节点,"+orderInfo);
        Assert.jsonObjectHaveKey(orderInfo,"business","请求报文中未包含business节点,"+orderInfo);
        if(JSONObject.parseObject(orderInfo).getJSONObject("orders").containsKey("dataFlowId")){
            throw new BusinessException(ResponseConstant.RESULT_CODE_ERROR,"报文中不能存在dataFlowId节点");
        }
    }
    /**
     * è¿™é‡Œé¢„校验,请求报文中不能有 dataFlowId
     * @param orderInfo
     */
    private void preValiateOrderInfo(String orderInfo,Map<String, String> headers) {
        Assert.hasKey(headers,"serviceCode","没有包含serviceCode");
        Assert.hasLength(headers.get("serviceCode"),"serviceCode ä¸èƒ½ä¸ºç©º");
        Assert.hasKey(headers,"appId","没有包含appId");
        Assert.hasLength(headers.get("appId"),"appId ä¸èƒ½ä¸ºç©º");
    }
    /**
     * èŽ·å–è¯·æ±‚ä¿¡æ¯
     * @param request
     * @param headers
     * @throws RuntimeException
     */
    private void getRequestInfo(HttpServletRequest request,Map headers) throws Exception{
        try{
            super.initHeadParam(request,headers);
            super.initUrlParam(request,headers);
        }catch (Exception e){
            logger.error("加载头信息失败",e);
            throw e;
        }
    }
    public IOrderServiceSMO getOrderServiceSMOImpl() {
        return orderServiceSMOImpl;
    }
    public void setOrderServiceSMOImpl(IOrderServiceSMO orderServiceSMOImpl) {
        this.orderServiceSMOImpl = orderServiceSMOImpl;
    }
}
OrderService/src/main/java/com/java110/order/dao/ICenterServiceDAO.java
File was renamed from CenterService/src/main/java/com/java110/center/dao/ICenterServiceDAO.java
@@ -1,4 +1,4 @@
package com.java110.center.dao;
package com.java110.order.dao;
import com.java110.common.exception.DAOException;
import com.java110.entity.mapping.Mapping;
@@ -76,6 +76,13 @@
    public void completeOrderByBId(String bId) throws DAOException;
    /**
     * å½“所有业务动作是否都是C,将订单信息改为 C
     * @param oId
     * @return
     * @throws DAOException
     */
    public void completeOrderByOId(String oId) throws DAOException;
    /**
     * åˆ¤æ–­ business è¿‡ç¨‹æ˜¯å¦å®Œæˆ 1 è¡¨ç¤ºå®Œæˆ 0表示未完成
     * @param oId
     * @return
OrderService/src/main/java/com/java110/order/dao/impl/CenterServiceDAOImpl.java
File was renamed from CenterService/src/main/java/com/java110/center/dao/impl/CenterServiceDAOImpl.java
@@ -1,7 +1,7 @@
package com.java110.center.dao.impl;
package com.java110.order.dao.impl;
import com.alibaba.fastjson.JSONObject;
import com.java110.center.dao.ICenterServiceDAO;
import com.java110.order.dao.ICenterServiceDAO;
import com.java110.common.constant.ResponseConstant;
import com.java110.common.exception.DAOException;
import com.java110.core.base.dao.BaseServiceDao;
@@ -169,6 +169,23 @@
    }
    /**
     * å½“所有业务动作是否都是C,将订单信息改为 C
     * @param oId
     * @return
     * @throws DAOException
     */
    public void completeOrderByOId(String oId) throws DAOException{
        logger.debug("----【CenterServiceDAOImpl.completeOrderByOId】数据入参 : " + oId);
        int updateFlag = sqlSessionTemplate.update("centerServiceDAOImpl.completeOrderByOId",oId);
        if(updateFlag < 1){
            //throw new DAOException(ResponseConstant.RESULT_CODE_INNER_ERROR,"当前业务还没有全完成(C):"+ bId);
            logger.debug("当前业务还没有全完成(C):"+oId);
        }
    }
    /**
     * åˆ¤æ–­ business è¿‡ç¨‹æ˜¯å¦å®Œæˆ 1 è¡¨ç¤ºå®Œæˆ 0表示未完成
     * @param oId
     * @return
OrderService/src/main/java/com/java110/order/kaka/CenserServiceKafkaListener.java
File was renamed from CenterService/src/main/java/com/java110/center/kaka/CenserServiceKafkaListener.java
@@ -1,7 +1,8 @@
package com.java110.center.kaka;
package com.java110.order.kaka;
import com.java110.center.smo.ICenterServiceSMO;
import com.java110.core.base.AppBase;
import com.java110.order.smo.ICenterServiceSMO;
import com.java110.order.smo.IOrderServiceSMO;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -18,21 +19,21 @@
    @Autowired
    private ICenterServiceSMO centerServiceSMOImpl;
    private IOrderServiceSMO orderServiceSMOImpl;
    @KafkaListener(topics = {"NOTIFY_CENTER_SERVICE"})
    public void listen(ConsumerRecord<?, ?> record) {
        logger.info("kafka的key: " + record.key());
        logger.info("kafka的value: " + record.value().toString());
        centerServiceSMOImpl.receiveBusinessSystemNotifyMessage(record.value().toString());
        orderServiceSMOImpl.receiveBusinessSystemNotifyMessage(record.value().toString());
    }
    public ICenterServiceSMO getCenterServiceSMOImpl() {
        return centerServiceSMOImpl;
    public IOrderServiceSMO getOrderServiceSMOImpl() {
        return orderServiceSMOImpl;
    }
    public void setCenterServiceSMOImpl(ICenterServiceSMO centerServiceSMOImpl) {
        this.centerServiceSMOImpl = centerServiceSMOImpl;
    public void setOrderServiceSMOImpl(IOrderServiceSMO orderServiceSMOImpl) {
        this.orderServiceSMOImpl = orderServiceSMOImpl;
    }
}
OrderService/src/main/java/com/java110/order/kaka/CenterServiceBean.java
File was renamed from CenterService/src/main/java/com/java110/center/kaka/CenterServiceBean.java
@@ -1,4 +1,4 @@
package com.java110.center.kaka;
package com.java110.order.kaka;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
OrderService/src/main/java/com/java110/order/listener/DealUserIdListener.java
File was renamed from CenterService/src/main/java/com/java110/center/listener/DealUserIdListener.java
@@ -1,9 +1,10 @@
package com.java110.center.listener;
package com.java110.order.listener;
import com.java110.common.constant.ResponseConstant;
import com.java110.common.exception.ListenerExecuteException;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlow;
import com.java110.core.context.IOrderDataFlowContext;
import com.java110.event.app.order.Ordered;
import com.java110.event.center.event.InvokeBusinessSystemEvent;
import com.java110.event.center.listener.DataFlowListener;
@@ -22,8 +23,8 @@
    @Override
    public void soService(InvokeBusinessSystemEvent event) {
       DataFlow dataFlow = event.getDataFlow();
       if (dataFlow == null || dataFlow.getBusinesses() == null || dataFlow.getBusinesses().size() == 0){
       IOrderDataFlowContext dataFlow = event.getDataFlow();
       if (dataFlow == null || dataFlow.getBusinessList() == null || dataFlow.getBusinessList().size() == 0){
           throw new ListenerExecuteException(ResponseConstant.RESULT_PARAM_ERROR,"用户ID处理侦听执行异常,没有可处理的business");
       }
OrderService/src/main/java/com/java110/order/listener/ReceiveRequestListener.java
File was renamed from CenterService/src/main/java/com/java110/center/listener/ReceiveRequestListener.java
@@ -1,4 +1,4 @@
package com.java110.center.listener;
package com.java110.order.listener;
import com.java110.core.annotation.Java110Listener;
import com.java110.event.app.order.Ordered;
OrderService/src/main/java/com/java110/order/smo/ICenterServiceCacheSMO.java
File was renamed from CenterService/src/main/java/com/java110/center/smo/ICenterServiceCacheSMO.java
@@ -1,4 +1,4 @@
package com.java110.center.smo;
package com.java110.order.smo;
import com.java110.entity.service.DataQuery;
OrderService/src/main/java/com/java110/order/smo/ICenterServiceSMO.java
File was renamed from CenterService/src/main/java/com/java110/center/smo/ICenterServiceSMO.java
@@ -1,9 +1,8 @@
package com.java110.center.smo;
package com.java110.order.smo;
import com.java110.common.exception.SMOException;
import org.springframework.http.ResponseEntity;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
/**
OrderService/src/main/java/com/java110/order/smo/IOrderServiceSMO.java
New file
@@ -0,0 +1,27 @@
package com.java110.order.smo;
import com.java110.common.exception.SMOException;
import org.springframework.http.ResponseEntity;
import java.util.Map;
/**
 * ä¸­å¿ƒæœåŠ¡ SMO ä¸šåŠ¡é€»è¾‘æŽ¥å£
 * Created by wuxw on 2018/4/13.
 */
public interface IOrderServiceSMO {
    /**
     * ä¸šåŠ¡ç»Ÿä¸€å¤„ç†æœåŠ¡æ–¹æ³•
     * @param reqJson è¯·æ±‚报文json
     * @return
     */
    public ResponseEntity<String> service(String reqJson, Map<String, String> headers) throws SMOException;
    /**
     * æŽ¥å—业务系统通知消息
     * @param receiveJson æŽ¥å—报文
     * @throws SMOException
     */
    public void receiveBusinessSystemNotifyMessage(String receiveJson) throws SMOException;
}
OrderService/src/main/java/com/java110/order/smo/impl/CenterServiceCacheSMOImpl.java
File was renamed from CenterService/src/main/java/com/java110/center/smo/impl/CenterServiceCacheSMOImpl.java
@@ -1,8 +1,10 @@
package com.java110.center.smo.impl;
package com.java110.order.smo.impl;
import com.alibaba.fastjson.JSONObject;
import com.java110.center.dao.ICenterServiceDAO;
import com.java110.center.smo.ICenterServiceCacheSMO;
import com.java110.common.cache.ServiceBusinessCache;
import com.java110.entity.order.ServiceBusiness;
import com.java110.order.dao.ICenterServiceDAO;
import com.java110.order.smo.ICenterServiceCacheSMO;
import com.java110.common.cache.AppRouteCache;
import com.java110.common.cache.MappingCache;
import com.java110.common.cache.ServiceSqlCache;
@@ -55,6 +57,9 @@
        //3.0 åˆ†è£… ServiceSql
        flushServiceSql(dataQuery);
        //4.0 åˆ·æ–°ä¸šåŠ¡ä¿¡æ¯
        flushServiceBusiness(dataQuery);
        dataQuery.setResponseInfo(DataTransactionFactory.createBusinessResponseJson(ResponseConstant.RESULT_CODE_SUCCESS,"刷新成功"));
    }
@@ -70,6 +75,9 @@
        //3.0 åˆ†è£… ServiceSql
        flushServiceSql(headers);
        //4.0 åˆ·æ–°ä¸šåŠ¡ä¿¡æ¯
        flushServiceBusiness(headers);
    }
    /**
@@ -85,6 +93,8 @@
        //3.0 åˆ†è£… ServiceSql
        doFlushServiceSql();
        doFlushServiceBusiness();
    }
    private void checkCacheParam(DataQuery dataQuery) throws SMOException{
@@ -106,6 +116,16 @@
        doFlushServiceSql();
    }
    private void flushServiceBusiness(DataQuery dataQuery) {
        JSONObject params = dataQuery.getRequestParams();
        if(!CommonConstant.CACHE_SERVICE_BUSINESS.equals(params.getString(CommonConstant.CACHE_PARAM_NAME))){
            return ;
        }
        // åˆ·æ–°
        doFlushServiceBusiness();
    }
    /**
     * 3.0 åˆ†è£… ServiceSql
     */
@@ -118,6 +138,20 @@
        }
        // åˆ·æ–°
        doFlushServiceSql();
    }
    /**
     * 3.0 åˆ†è£… ServiceSql
     */
    private void flushServiceBusiness(Map<String,String> headers) {
        Assert.hasKey(headers,CommonConstant.CACHE_PARAM,"未包含cache参数"+headers.toString());
        if(!CommonConstant.CACHE_SERVICE_BUSINESS.equals(headers.get(CommonConstant.CACHE_PARAM))
                && !CommonConstant.CACHE_ALL.equals(headers.get(CommonConstant.CACHE_PARAM))){
            return ;
        }
        // åˆ·æ–°
        doFlushServiceBusiness();
    }
    private void doFlushServiceSql() {
@@ -137,6 +171,20 @@
        }
    }
    private void doFlushServiceBusiness(){
        logger.debug("开始刷新 ServiceBusiness数据到redis数据库中");
        List<ServiceBusiness> serviceBusinesses = queryServiceDAOImpl.qureyServiceBusiness();
        if(serviceBusinesses == null || serviceBusinesses.size() == 0){
            return;
        }
        //删除原始数据
        ServiceSqlCache.removeData(ServiceBusinessCache._KEY_SERVICE_BUSINESS);
        //设置缓存
        ServiceBusinessCache.setServiceBusiness(serviceBusinesses);
    }
    /**
     * åˆ·æ–° Mapping æ•°æ®
OrderService/src/main/java/com/java110/order/smo/impl/CenterServiceSMOImpl.java
File was renamed from CenterService/src/main/java/com/java110/center/smo/impl/CenterServiceSMOImpl.java
@@ -1,9 +1,9 @@
package com.java110.center.smo.impl;
package com.java110.order.smo.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.center.dao.ICenterServiceDAO;
import com.java110.center.smo.ICenterServiceSMO;
import com.java110.order.dao.ICenterServiceDAO;
import com.java110.order.smo.ICenterServiceSMO;
import com.java110.common.cache.AppRouteCache;
import com.java110.common.cache.MappingCache;
import com.java110.common.constant.*;
@@ -71,23 +71,23 @@
            DataFlowEventPublishing.preValidateData(reqJson,headers);
            //1.0 åˆ›å»ºæ•°æ®æµ
            dataFlow = DataFlowFactory.newInstance(DataFlow.class).builder(reqJson, headers);
            DataFlowEventPublishing.initDataFlowComplete(dataFlow);
            //DataFlowEventPublishing.initDataFlowComplete(dataFlow);
            //2.0 åŠ è½½é…ç½®ä¿¡æ¯
            initConfigData(dataFlow);
            DataFlowEventPublishing.loadConfigDataComplete(dataFlow);
            //DataFlowEventPublishing.loadConfigDataComplete(dataFlow);
            //3.0 æ ¡éªŒ APPID是否有权限操作serviceCode
            judgeAuthority(dataFlow);
            //4.0 è°ƒç”¨è§„则校验
            ruleValidate(dataFlow);
            DataFlowEventPublishing.ruleValidateComplete(dataFlow);
            //DataFlowEventPublishing.ruleValidateComplete(dataFlow);
            //5.0 ä¿å­˜è®¢å•和业务项 c_orders c_order_attrs c_business c_business_attrs
            saveOrdersAndBusiness(dataFlow);
            //6.0 è°ƒç”¨ä¸‹æ¸¸ç³»ç»Ÿ
            DataFlowEventPublishing.invokeBusinessSystem(dataFlow);
            //DataFlowEventPublishing.invokeBusinessSystem(dataFlow);
            invokeBusinessSystem(dataFlow);
            responseJson = DataTransactionFactory.createCommonResponseJson(dataFlow);
@@ -149,7 +149,7 @@
                AuthenticationFactory.putSign(dataFlow, responseJson);
                saveLogMessage(dataFlow,LogAgent.createLogMessage(dataFlow.getRequestHeaders(),dataFlow.getReqJson().toJSONString()),
                        LogAgent.createLogMessage(dataFlow.getResponseHeaders(),dataFlow.getResJson().toJSONString()),endDate.getTime()-dataFlow.getStartDate().getTime());
                DataFlowEventPublishing.dataResponse(dataFlow,reqJson,headers);
               // DataFlowEventPublishing.dataResponse(dataFlow,reqJson,headers);
            }
            resJson = encrypt(responseJson.toJSONString(),headers);
            //这里保存耗时,以及日志
@@ -175,23 +175,23 @@
            DataFlowEventPublishing.preValidateData(reqJson,headers);
            //1.0 åˆ›å»ºæ•°æ®æµ
            dataFlow = DataFlowFactory.newInstance(DataFlow.class).builder(reqJson, headers);
            DataFlowEventPublishing.initDataFlowComplete(dataFlow);
            //DataFlowEventPublishing.initDataFlowComplete(dataFlow);
            //2.0 åŠ è½½é…ç½®ä¿¡æ¯
            initConfigData(dataFlow);
            DataFlowEventPublishing.loadConfigDataComplete(dataFlow);
            //DataFlowEventPublishing.loadConfigDataComplete(dataFlow);
            //3.0 æ ¡éªŒ APPID是否有权限操作serviceCode
            judgeAuthority(dataFlow);
            //4.0 è°ƒç”¨è§„则校验
            ruleValidate(dataFlow);
            DataFlowEventPublishing.ruleValidateComplete(dataFlow);
            //DataFlowEventPublishing.ruleValidateComplete(dataFlow);
            //5.0 ä¿å­˜è®¢å•和业务项 c_orders c_order_attrs c_business c_business_attrs
            saveOrdersAndBusiness(dataFlow);
            //6.0 è°ƒç”¨ä¸‹æ¸¸ç³»ç»Ÿ
            DataFlowEventPublishing.invokeBusinessSystem(dataFlow);
            //DataFlowEventPublishing.invokeBusinessSystem(dataFlow);
            invokeBusinessSystem(dataFlow);
            responseJson = DataTransactionFactory.createCommonResponseJson(dataFlow);
@@ -245,7 +245,7 @@
                //saveCostTimeLogMessage(dataFlow);
                saveLogMessage(dataFlow,LogAgent.createLogMessage(dataFlow.getRequestHeaders(),dataFlow.getReqJson().toJSONString()),
                        LogAgent.createLogMessage(dataFlow.getResponseHeaders(),responseEntity.getBody()),endDate.getTime()-dataFlow.getStartDate().getTime());
                DataFlowEventPublishing.dataResponse(dataFlow,reqJson,headers);
                //DataFlowEventPublishing.dataResponse(dataFlow,reqJson,headers);
            }
            //这里保存耗时,以及日志
OrderService/src/main/java/com/java110/order/smo/impl/OrderServiceSMOImpl.java
New file
@@ -0,0 +1,1105 @@
package com.java110.order.smo.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.common.cache.AppRouteCache;
import com.java110.common.cache.MappingCache;
import com.java110.common.constant.*;
import com.java110.common.exception.*;
import com.java110.common.factory.ApplicationContextFactory;
import com.java110.common.kafka.KafkaFactory;
import com.java110.common.log.LoggerEngine;
import com.java110.common.util.*;
import com.java110.core.client.RestTemplate;
import com.java110.core.context.*;
import com.java110.core.factory.AuthenticationFactory;
import com.java110.core.factory.OrderDataFlowContextFactory;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.entity.center.AppRoute;
import com.java110.entity.center.AppService;
import com.java110.entity.center.DataFlowLinksCost;
import com.java110.entity.order.Business;
import com.java110.entity.order.ServiceBusiness;
import com.java110.event.center.DataFlowEventPublishing;
import com.java110.log.agent.LogAgent;
import com.java110.order.dao.ICenterServiceDAO;
import com.java110.order.smo.IOrderServiceSMO;
import com.java110.service.init.ServiceInfoListener;
import com.java110.service.smo.IQueryServiceSMO;
import org.apache.commons.lang3.math.NumberUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import java.util.*;
/**
 * è®¢å•服务处理类
 * Created by wuxw on 2018/4/13.
 */
@Service("orderServiceSMOImpl")
//@Transactional
public class OrderServiceSMOImpl implements IOrderServiceSMO {
    private final static Logger logger = LoggerFactory.getLogger(OrderServiceSMOImpl.class);
    @Autowired
    ICenterServiceDAO centerServiceDaoImpl;
    @Autowired
    private RestTemplate restTemplate;
    @Autowired
    private RestTemplate restTemplateNoLoadBalanced;
    @Autowired
    private IQueryServiceSMO queryServiceSMOImpl;
    /**
     * ä¸šåŠ¡ç»Ÿä¸€å¤„ç†æœåŠ¡æ–¹æ³•
     * @param reqJson è¯·æ±‚报文json
     * @return
     */
    public ResponseEntity<String> service(String reqJson, Map<String,String> headers) throws SMOException{
        IOrderDataFlowContext dataFlow = null;
        JSONObject responseJson = null;
        ResponseEntity<String> responseEntity = null;
        try {
            DataFlowEventPublishing.preValidateData(reqJson,headers);
            //1.0 åˆ›å»ºæ•°æ®æµ
            dataFlow = OrderDataFlowContextFactory.newInstance(OrderDataFlow.class).builder(reqJson, headers);
            DataFlowEventPublishing.initDataFlowComplete(dataFlow);
            //2.0 è°ƒç”¨è§„则校验
            ruleValidate(dataFlow);
            DataFlowEventPublishing.ruleValidateComplete(dataFlow);
            //3.0 ä¿å­˜è®¢å•和业务项 c_orders c_order_attrs c_business c_business_attrs
            saveOrdersAndBusiness(dataFlow);
            //6.0 è°ƒç”¨ä¸‹æ¸¸ç³»ç»Ÿ
            DataFlowEventPublishing.invokeBusinessSystem(dataFlow);
            invokeBusinessSystem(dataFlow);
            //能够执行到这一步 è®¤ä¸ºæ˜¯éƒ½æˆåŠŸäº†
            refreshOrderDataFlowResJson(dataFlow);
        }catch (BusinessException e) {
            responseEntity = new ResponseEntity<String>(e.getMessage() , OrderDataFlowContextFactory.hashMap2MultiValueMap(dataFlow.getResHeaders()),HttpStatus.INTERNAL_SERVER_ERROR);
        } catch (OrdersException e) {
            responseEntity = new ResponseEntity<String>(e.getMessage() , OrderDataFlowContextFactory.hashMap2MultiValueMap(dataFlow.getResHeaders()),HttpStatus.INTERNAL_SERVER_ERROR);
        } catch (RuleException e) {
            responseEntity = new ResponseEntity<String>(e.getMessage(),OrderDataFlowContextFactory.hashMap2MultiValueMap(dataFlow.getResHeaders()), HttpStatus.NETWORK_AUTHENTICATION_REQUIRED);
        } catch (NoAuthorityException e) {
            responseEntity = new ResponseEntity<String>(e.getMessage(), OrderDataFlowContextFactory.hashMap2MultiValueMap(dataFlow.getResHeaders()),HttpStatus.UNAUTHORIZED);
        } catch (InitConfigDataException e){
            responseEntity = new ResponseEntity<String>(e.getMessage(), OrderDataFlowContextFactory.hashMap2MultiValueMap(dataFlow.getResHeaders()),HttpStatus.INTERNAL_SERVER_ERROR);
        }catch (Exception e) {
            logger.error("内部异常了:",e);
            responseEntity = new ResponseEntity<String>("内部异常了:"+e.getMessage() + e.getLocalizedMessage(), OrderDataFlowContextFactory.hashMap2MultiValueMap(dataFlow.getResHeaders()),HttpStatus.INTERNAL_SERVER_ERROR);
        } finally {
            if(responseEntity == null){
                responseEntity = new ResponseEntity<String>(dataFlow.getResJson().getString("msg"),OrderDataFlowContextFactory.hashMap2MultiValueMap(dataFlow.getResHeaders()),HttpStatus.OK);
            }
            if(dataFlow != null) {
                //添加耗时
                //OrderDataFlowContextFactory.addCostTime(dataFlow, "service", "业务处理总耗时", dataFlow.getStartDate(), dataFlow.getEndDate());
                //保存耗时
                //saveCostTimeLogMessage(dataFlow);
//                saveLogMessage(dataFlow,LogAgent.createLogMessage(dataFlow.getRequestHeaders(),dataFlow.getReqJson().toJSONString()),
//                        LogAgent.createLogMessage(dataFlow.getResponseHeaders(),responseEntity.getBody()),endDate.getTime()-dataFlow.getStartDate().getTime());
//                DataFlowEventPublishing.dataResponse(dataFlow,reqJson,headers);
            }
            //这里保存耗时,以及日志
            return responseEntity ;
        }
    }
    /**
     * åˆ·è¿”回值
     * @param dataFlow
     */
    private void refreshOrderDataFlowResJson(IOrderDataFlowContext dataFlow){
        if(dataFlow.getResJson() == null || dataFlow.getResJson().isEmpty()){
            JSONObject resJson = new JSONObject();
            resJson.put("msg","成功");
            dataFlow.setResJson(resJson);
        }
    }
    /**
     * æŠ’写返回头信息
     * @param dataFlow
     */
    private void putResponseHeader(DataFlow dataFlow,Map<String,String> headers) {
        headers.put("responseTime", DateUtil.getDefaultFormateTimeString(new Date()));
        headers.put("transactionId",dataFlow.getTransactionId());
    }
    /**
     * è§£å¯†
     * @param reqJson
     * @return
     */
    private String decrypt(String reqJson,Map<String,String> headers) throws DecryptException{
        try {
            if (MappingConstant.VALUE_ON.equals(headers.get(CommonConstant.ENCRYPT))) {
                logger.debug("解密前字符:" + reqJson);
                reqJson = new String(AuthenticationFactory.decrypt(reqJson.getBytes("UTF-8"), AuthenticationFactory.loadPrivateKey(MappingConstant.KEY_PRIVATE_STRING)
                        , NumberUtils.isNumber(headers.get(CommonConstant.ENCRYPT_KEY_SIZE)) ? Integer.parseInt(headers.get(CommonConstant.ENCRYPT_KEY_SIZE)) :
                                Integer.parseInt(MappingCache.getValue(MappingConstant.KEY_DEFAULT_DECRYPT_KEY_SIZE))),"UTF-8");
                logger.debug("解密后字符:" + reqJson);
            }
        }catch (Exception e){
            throw new DecryptException(ResponseConstant.RESULT_CODE_NO_AUTHORITY_ERROR,"解密失败");
        }
        return reqJson;
    }
    /**
     * åР坆
     * @param resJson
     * @param headers
     * @return
     */
    private String encrypt(String resJson,Map<String,String> headers){
        try {
            if (MappingConstant.VALUE_ON.equals(headers.get(CommonConstant.ENCRYPT))) {
                logger.debug("加密前字符:" + resJson);
                resJson = new String(AuthenticationFactory.encrypt(resJson.getBytes("UTF-8"), AuthenticationFactory.loadPubKey(MappingConstant.KEY_PUBLIC_STRING)
                        , NumberUtils.isNumber(headers.get(CommonConstant.ENCRYPT_KEY_SIZE)) ? Integer.parseInt(headers.get(CommonConstant.ENCRYPT_KEY_SIZE)) :
                                Integer.parseInt(MappingCache.getValue(MappingConstant.KEY_DEFAULT_DECRYPT_KEY_SIZE))),"UTF-8");
                logger.debug("加密后字符:" + resJson);
            }
        }catch (Exception e){
            logger.error("加密失败:",e);
        }
        return resJson;
    }
    /**
     * 2.0初始化配置信息
     *
     * @param dataFlow
     */
    private void initConfigData(IOrderDataFlowContext dataFlow) {
    }
    /**
     * 4.0规则校验
     *
     * @param dataFlow
     * @throws RuleException
     */
    private void ruleValidate(IOrderDataFlowContext dataFlow) throws RuleException {
        Date startDate = DateUtil.getCurrentDate();
        try {
            if (MappingConstant.VALUE_OFF.equals(MappingCache.getValue(MappingConstant.KEY_RULE_ON_OFF))
                    || (MappingCache.getValue(MappingConstant.KEY_NO_NEED_RULE_VALDATE_ORDER) != null
                    && MappingCache.getValue(MappingConstant.KEY_NO_NEED_RULE_VALDATE_ORDER).contains(dataFlow.getOrders().getOrderTypeCd()))) {
                //不做校验
                //添加耗时
                OrderDataFlowContextFactory.addCostTime(dataFlow, "ruleValidate", "规则校验耗时", startDate);
                return ;
            }
            //调用规则
        } catch (Exception e) {
            //添加耗时
            OrderDataFlowContextFactory.addCostTime(dataFlow, "ruleValidate", "规则校验耗时", startDate);
            throw new RuleException(ResponseConstant.RESULT_CODE_RULE_ERROR, "规则校验异常失败:" + e.getMessage());
        }
        OrderDataFlowContextFactory.addCostTime(dataFlow, "ruleValidate", "规则校验耗时", startDate);
    }
    /**
     * 5.0 ä¿å­˜è®¢å•和业务项 c_orders c_order_attrs c_business c_business_attrs
     *
     * @param dataFlow
     * @throws OrdersException
     */
    private void saveOrdersAndBusiness(IOrderDataFlowContext dataFlow) throws OrdersException {
        Date startDate = DateUtil.getCurrentDate();
        if(MappingCache.getValue(MappingConstant.KEY_NO_SAVE_ORDER) != null
                &&MappingCache.getValue(MappingConstant.KEY_NO_SAVE_ORDER).contains(dataFlow.getOrders().getOrderTypeCd())){
            //不保存订单信息
            OrderDataFlowContextFactory.addCostTime(dataFlow, "saveOrdersAndBusiness", "保存订单和业务项耗时", startDate);
            return ;
        }
        //1.0 ä¿å­˜ orders信息
        centerServiceDaoImpl.saveOrder(OrderDataFlowContextFactory.getOrder(dataFlow.getOrders()));
        centerServiceDaoImpl.saveOrderAttrs(OrderDataFlowContextFactory.getOrderAttrs(dataFlow.getOrders()));
        //2.0 ä¿å­˜ business信息
        centerServiceDaoImpl.saveBusiness(OrderDataFlowContextFactory.getBusiness(dataFlow));
        centerServiceDaoImpl.saveBusinessAttrs(OrderDataFlowContextFactory.getBusinessAttrs(dataFlow));
        OrderDataFlowContextFactory.addCostTime(dataFlow, "saveOrdersAndBusiness", "保存订单和业务项耗时", startDate);
    }
    /**
     * 6.0 è°ƒç”¨ä¸‹æ¸¸ç³»ç»Ÿ
     *
     * @param dataFlow
     * @throws BusinessException
     */
    private void invokeBusinessSystem(IOrderDataFlowContext dataFlow) throws BusinessException {
        Date startDate = DateUtil.getCurrentDate();
        //6.1 å…ˆå¤„理同步方式的服务,每一同步后发布事件广播
        doSynchronousBusinesses(dataFlow);
        //6.2 å¤„理异步服务
        doAsynchronousBusinesses(dataFlow);
        OrderDataFlowContextFactory.addCostTime(dataFlow, "invokeBusinessSystem", "调用下游系统耗时", startDate);
    }
    /**
     * 7.0 ä½œåºŸè®¢å•和业务项 æ’入撤单记录 ç­‰å¾…撤单
     *
     * @param dataFlow
     */
    private void invalidOrderAndBusiness(IOrderNotifyDataFlowContext dataFlow) {
        Date startDate = DateUtil.getCurrentDate();
        if(MappingCache.getValue(MappingConstant.KEY_NO_SAVE_ORDER) != null
                &&MappingCache.getValue(MappingConstant.KEY_NO_SAVE_ORDER).contains(dataFlow.getOrderTypeCd())){
            //不用作废订单信息
           // OrderDataFlowContextFactory.addCostTime(dataFlow, "invalidOrderAndBusiness", "作废订单和业务项耗时", startDate);
            return ;
        }
        //如果已经作废 ä¸å­˜åœ¨ æˆ–失败,则不做处理
        Map order = centerServiceDaoImpl.getOrderInfoByBId(dataFlow.getbId());
        if(order == null || !order.containsKey("status_cd") || StatusConstant.STATUS_CD_DELETE.equals(order.get("status_cd"))
                || StatusConstant.STATUS_CD_ERROR.equals(order.get("status_cd"))){
            return ;
        }
        //作废 è®¢å•
        centerServiceDaoImpl.updateOrder(OrderDataFlowContextFactory.getNeedInvalidOrder(dataFlow));
        //作废订单项
        centerServiceDaoImpl.updateBusiness(OrderDataFlowContextFactory.getNeedInvalidOrder(dataFlow));
        //将当前订单项改为 æ’¤å•状态
        centerServiceDaoImpl.updateBusinessByBId(OrderDataFlowContextFactory.getNeedDeleteBusiness(dataFlow));
        //插入撤单记录
        doAddDeleteOrderBusinessData(dataFlow);
        //OrderDataFlowContextFactory.addCostTime(dataFlow, "invalidOrderAndBusiness", "作废订单和业务项耗时", startDate);
    }
    /**
     * 8.0 å¹¿æ’­ä½œåºŸå·²ç»å®Œæˆä¸šåŠ¡ç³»ç»Ÿè®¢å•ä¿¡æ¯
     *
     * @param dataFlow
     */
    private void invalidCompletedBusinessSystem(IOrderNotifyDataFlowContext dataFlow) throws Exception{
        if(!StatusConstant.REQUEST_BUSINESS_TYPE_INSTANCE.equals(dataFlow.getBusinessType())) {
            return ;
        }
        //判断 è®¢å•instance æ˜¯å¦éƒ½å˜æˆäº†æ’¤å•状态
        if(centerServiceDaoImpl.judgeAllBusinessDeleteOrder(dataFlow.getoId(),StatusConstant.STATUS_CD_DELETE_ORDER) < 1){
            return ;
        }
        // æ ¹æ® c_business è¡¨ä¸­çš„字段business_type_cd æ‰¾åˆ°å¯¹åº”的消息队列名称
        Map paramIn = new HashMap();
        paramIn.put("oId",dataFlow.getoId());
        paramIn.put("statusCd",StatusConstant.STATUS_CD_DELETE_ORDER);
        List<Map> completedBusinesses = centerServiceDaoImpl.getBusinessByOId(paramIn);
            for(Map completedBusiness : completedBusinesses){
                ServiceBusiness serviceBusiness = ServiceBusinessUtil.getServiceBusiness(completedBusiness.get("business_type_cd").toString());
                    long startTime = DateUtil.getCurrentDate().getTime();
                    //发起撤单
                    KafkaFactory.sendKafkaMessage(serviceBusiness.getMessageTopic(),"",
                            OrderDataFlowContextFactory.getDeleteInstanceTableJson(dataFlow,completedBusiness).toJSONString());
                    //saveLogMessage(OrderDataFlowContextFactory.getDeleteInstanceTableJson(dataFlow,completedBusiness,appRoute.getAppService()),null);
                }
    }
    /**
     * 9.0 å°†è®¢å•状态改为失败,人工处理。
     *
     * @param dataFlow
     */
    private void updateOrderAndBusinessError(IOrderDataFlowContext dataFlow) {
        Date startDate = DateUtil.getCurrentDate();
        //作废 è®¢å•
        centerServiceDaoImpl.updateOrder(OrderDataFlowContextFactory.getNeedErrorOrder(dataFlow));
        //作废订单项
        centerServiceDaoImpl.updateBusiness(OrderDataFlowContextFactory.getNeedErrorOrder(dataFlow));
        OrderDataFlowContextFactory.addCostTime(dataFlow, "updateOrderAndBusinessError", "订单状态改为失败耗时", startDate);
    }
    /**
     * 9.0 å°†è®¢å•状态改为失败,人工处理。
     *
     * @param dataFlow
     */
    private void updateOrderAndBusinessError(IOrderNotifyDataFlowContext dataFlow) {
        Date startDate = DateUtil.getCurrentDate();
        //作废 è®¢å•
        centerServiceDaoImpl.updateOrder(OrderDataFlowContextFactory.getNeedErrorOrder(dataFlow));
        //作废订单项
        centerServiceDaoImpl.updateBusiness(OrderDataFlowContextFactory.getNeedErrorOrder(dataFlow));
        //OrderDataFlowContextFactory.addCostTime(dataFlow, "updateOrderAndBusinessError", "订单状态改为失败耗时", startDate);
    }
    /**
     * å°†è®¢å•状态改为作废状态。
     *
     * @param dataFlow
     */
    private void updateOrderAndBusinessDelete(IOrderDataFlowContext dataFlow) {
        Date startDate = DateUtil.getCurrentDate();
        //作废 è®¢å•
        centerServiceDaoImpl.updateOrder(OrderDataFlowContextFactory.getNeedInvalidOrder(dataFlow));
        //作废订单项
        centerServiceDaoImpl.updateBusiness(OrderDataFlowContextFactory.getNeedDeleteBusiness(dataFlow));
        //加入撤单记录
        //doAddDeleteOrderBusinessData(dataFlow);
        OrderDataFlowContextFactory.addCostTime(dataFlow, "updateOrderAndBusinessError", "订单状态改为失败耗时", startDate);
    }
    /**
     * åŠ å…¥æ’¤å•è®°å½•
     * @param dataFlow
     */
    private void doAddDeleteOrderBusinessData(IOrderDataFlowContext dataFlow){
       /* Map business = new HashMap();
        business.put("bId",SequenceUtil.getBId());
        business.put("oId",dataFlow.getoId());
        business.put("businessTypeCd",StatusConstant.REQUEST_BUSINESS_TYPE_DELETE);
        business.put("remark","发起撤单");
        business.put("statusCd",StatusConstant.STATUS_CD_DELETE_ORDER);*/
        centerServiceDaoImpl.saveBusiness(OrderDataFlowContextFactory.getDeleteOrderBusiness(dataFlow,"订单失败,加入撤单"));
    }
    /**
     * åŠ å…¥æ’¤å•è®°å½•
     * @param dataFlow
     */
    private void doAddDeleteOrderBusinessData(IOrderNotifyDataFlowContext dataFlow){
       /* Map business = new HashMap();
        business.put("bId",SequenceUtil.getBId());
        business.put("oId",dataFlow.getoId());
        business.put("businessTypeCd",StatusConstant.REQUEST_BUSINESS_TYPE_DELETE);
        business.put("remark","发起撤单");
        business.put("statusCd",StatusConstant.STATUS_CD_DELETE_ORDER);*/
        centerServiceDaoImpl.saveBusiness(OrderDataFlowContextFactory.getDeleteOrderBusiness(dataFlow,"订单失败,加入撤单"));
    }
    /**
     * æŽ¥å—业务系统通知消息
     * @param receiveJson æŽ¥å—报文
     * @throws SMOException
     */
    @Override
    public void receiveBusinessSystemNotifyMessage(String receiveJson) throws SMOException{
        Date startDate = DateUtil.getCurrentDate();
        IOrderNotifyDataFlowContext dataFlow = null;
        try {
            //1.0 åˆ›å»ºæ•°æ®æµ
            dataFlow = OrderDataFlowContextFactory.newInstance(OrderNotifyDataFlow.class).builder(receiveJson,null);
            //如果订单都没有保存,则再不要处理
            if(MappingCache.getValue(MappingConstant.KEY_NO_SAVE_ORDER) != null
                    &&MappingCache.getValue(MappingConstant.KEY_NO_SAVE_ORDER).contains(dataFlow.getOrderTypeCd())){
                //不保存订单信息
                return ;
            }
            //如果不是 business å’Œinstance è¿‡ç¨‹ åˆ™ç›´æŽ¥è·³å‡º
            judgeBusinessOrInstance(dataFlow);
            //2.0加载数据,没有找到appId åŠé…ç½®ä¿¡æ¯ åˆ™æŠ›å‡ºInitConfigDataException
            reloadOrderInfo(dataFlow);
            //3.0 åˆ¤æ–­æ˜¯å¦æˆåŠŸ,失败会抛出BusinessStatusException异常
            judgeBusinessStatusAndCompleteBusiness(dataFlow);
            //4.0 ä¿®æ”¹ä¸šåŠ¡ä¸ºæˆåŠŸ,如果发现业务项已经是作废或失败状态(D或E)则抛出BusinessException异常
            //completeBusiness(dataFlow);
            //5.0 åˆ¤æ–­ å‘èµ· Instance æ¡ä»¶æ˜¯å¦æ»¡è¶³ï¼Œå¦‚果满足 å‘èµ· Instance过程
            judgeSendToInstance(dataFlow);
            //7.0 åˆ¤æ–­æ’¤å•条件是否满足,如果满足发起撤单
            invalidCompletedBusinessSystem(dataFlow);
        }catch (BusinessStatusException e){
            logger.error("订单失败:" ,e);
            //8.0 å°†è®¢å•状态改为失败,人工处理。
            updateOrderAndBusinessError(dataFlow);
        }catch (BusinessException e) {
            //9.0说明这个订单已经失败了,再不需要
            //想法,这里广播当前失败业务
            logger.error("修改业务数据失败",e);
        }/*catch (InitConfigDataException e){ //这种一般不会出现,除非人工改了数据
            LoggerEngine.error("加载配置数据出错", e);
            try {
                //6.0 ä½œåºŸè®¢å•和所有业务项
                invalidOrderAndBusiness(dataFlow);
                //7.0 å¹¿æ’­ä½œåºŸä¸šåŠ¡ç³»ç»Ÿè®¢å•ä¿¡æ¯,这里只有 Instance å¤±è´¥åŽæ‰å‘èµ· æ’¤å•
                if(StatusConstant.REQUEST_BUSINESS_TYPE_INSTANCE.equals(dataFlow.getBusinessType())) {
                    invalidCompletedBusinessSystem(dataFlow);
                }
            } catch (Exception e1) {
                LoggerEngine.error("作废订单失败", e1);
                //8.0 å°†è®¢å•状态改为失败,人工处理。
                updateOrderAndBusinessError(dataFlow);
            }
        }*/catch (NoSupportException e){
            LoggerEngine.error("当前业务不支持", e);
        }catch (Exception e){
            LoggerEngine.error("作废订单失败", e);
            //10.0 æˆåŠŸçš„æƒ…å†µä¸‹é€šçŸ¥ä¸‹æ¸¸ç³»ç»Ÿå¤±è´¥å°†çŠ¶æ€æ”¹ä¸ºNE,人工处理。
            updateBusinessNotifyError(dataFlow);
        }finally{
            /*OrderDataFlowContextFactory.addCostTime(dataFlow, "receiveBusinessSystemNotifyMessage", "接受业务系统通知消息耗时", startDate);
            saveLogMessage(dataFlow,LogAgent.createLogMessage(dataFlow.getRequestCurrentHeaders(),dataFlow.getReqJson().toJSONString()),
                    LogAgent.createLogMessage(dataFlow.getResponseCurrentHeaders(),ResponseConstant.RESULT_CODE_SUCCESS),
                    DateUtil.getCurrentDate().getTime() - dataFlow.getStartDate().getTime());*/
        }
    }
    /**
     * Instance过程
     * @param dataFlow
     */
    private void doSendInstance(IOrderNotifyDataFlowContext dataFlow) {
        if(dataFlow == null || !StatusConstant.REQUEST_BUSINESS_TYPE_BUSINESS.equals(dataFlow.getBusinessType())){
            return ;
        }
        try {
            ServiceBusiness serviceBusiness = ServiceBusinessUtil.getServiceBusiness(dataFlow.getBusinessTypeCd());
            KafkaFactory.sendKafkaMessage(serviceBusiness.getMessageTopic(), "",
                    OrderDataFlowContextFactory.getBusinessTableDataInfoToInstanceTableJson(dataFlow).toJSONString());
        }catch (Exception e){
        }
    }
    /**
     * åˆ¤æ–­æ˜¯å¦æ˜¯ business æˆ–者 instance过程
     * @param dataFlow
     * @throws NoSupportException
     */
    private void judgeBusinessOrInstance(IOrderNotifyDataFlowContext dataFlow) throws  NoSupportException{
        if(dataFlow == null || StatusConstant.REQUEST_BUSINESS_TYPE_BUSINESS.equals(dataFlow.getBusinessType()) ||
                StatusConstant.REQUEST_BUSINESS_TYPE_INSTANCE.equals(dataFlow.getBusinessType())){
            return ;
        }
        throw new NoSupportException(ResponseConstant.RESULT_PARAM_ERROR,"当前只支持 Business å’Œ Instance过程");
    }
    /**
     * 2.0重新加载订单信息到dataFlow ä¸­
     *
     * @param dataFlow
     */
    private void reloadOrderInfoAndConfigData(DataFlow dataFlow) {
        Map order = centerServiceDaoImpl.getOrderInfoByBId(dataFlow.getBusinesses().get(0).getbId());
        dataFlow.setoId(order.get("o_id").toString());
        dataFlow.setAppId(order.get("app_id").toString());
        if("-1".equals(dataFlow.getDataFlowId()) || StringUtil.isNullOrNone(dataFlow.getDataFlowId())){
            throw new InitConfigDataException(ResponseConstant.RESULT_CODE_ERROR,"请求报文中没有包含 dataFlowId èŠ‚ç‚¹");
        }
        //重新刷端口信息
        ServiceInfoListener serviceInfoListener =  ApplicationContextFactory.getBean("serviceInfoListener",ServiceInfoListener.class);
        if(serviceInfoListener != null){
            dataFlow.setPort(serviceInfoListener.getServerPort()+"");
        }
        //重新加载配置
        //initConfigData(dataFlow);
    }
    /**
     * 2.0重新加载订单信息到dataFlow ä¸­
     *
     * @param dataFlow
     */
    private void reloadOrderInfo(IOrderNotifyDataFlowContext dataFlow) {
        Map order = centerServiceDaoImpl.getOrderInfoByBId(dataFlow.getbId());
        dataFlow.setoId(order.get("o_id").toString());
        if("-1".equals(dataFlow.getDataFlowId()) || StringUtil.isNullOrNone(dataFlow.getDataFlowId())){
            throw new InitConfigDataException(ResponseConstant.RESULT_CODE_ERROR,"请求报文中没有包含 dataFlowId èŠ‚ç‚¹");
        }
    }
    /**
     * 9.0 æˆåŠŸçš„æƒ…å†µä¸‹é€šçŸ¥ä¸‹æ¸¸ç³»ç»Ÿå¤±è´¥å°†çŠ¶æ€æ”¹ä¸ºNE,人工处理。
     *
     * @param dataFlow
     */
    private void updateBusinessNotifyError(IOrderNotifyDataFlowContext dataFlow) {
        Date startDate = DateUtil.getCurrentDate();
            //完成订单项
        centerServiceDaoImpl.updateBusinessByBId(OrderDataFlowContextFactory.getNeedNotifyErrorBusiness(dataFlow));
       // OrderDataFlowContextFactory.addCostTime(dataFlow, "updateBusinessNotifyError", "订单状态改为失败耗时", startDate);
    }
    /**
     * åˆ¤æ–­æ˜¯å¦éƒ½æˆåŠŸäº†
     * @param dataFlow
     */
    private void judgeBusinessStatusAndCompleteBusiness(IOrderNotifyDataFlowContext dataFlow) throws BusinessStatusException{
        //List<Business> businesses = dataFlow.getBusinesses();
        //1.0 åˆ¤æ–­æ˜¯å¦å­˜åœ¨æ’¤å•,如果是撤单则将当前 bId æ ‡è®°ä¸ºæ’¤å•状态
        if(StatusConstant.REQUEST_BUSINESS_TYPE_INSTANCE.equals(dataFlow.getBusinessType())) {
            Map businessMap = centerServiceDaoImpl.getDeleteOrderBusinessByOId(dataFlow.getoId());
            if(businessMap != null && !businessMap.isEmpty()){
                centerServiceDaoImpl.updateBusinessByBId(OrderDataFlowContextFactory.getNeedDeleteBusiness(dataFlow));
                return ;
            }
        }
        //Business business = dataFlow.getCurrentBusiness();
        if(!ResponseConstant.RESULT_CODE_SUCCESS.equals(((IOrderResponse)dataFlow).getCode())){
            //throw new BusinessStatusException(business.getCode(),"业务bId= "+business.getbId() + " å¤„理失败,需要作废订单");
            //作废订单和业务项 æ’入撤单记录 ç­‰å¾…撤单
            invalidOrderAndBusiness(dataFlow);
        }else{
            completeBusiness(dataFlow);
        }
    }
    /**
     * 3.0 ä¿®æ”¹ä¸šåŠ¡ä¸ºæˆåŠŸ,如果发现业务项已经是作废或失败状态(D或E)则抛出BusinessException异常
     *
     * @param dataFlow
     */
    private void completeBusiness(IOrderNotifyDataFlowContext dataFlow) throws BusinessException{
        try {
            if(StatusConstant.REQUEST_BUSINESS_TYPE_INSTANCE.equals(dataFlow.getBusinessType())) {
                //完成订单项
                centerServiceDaoImpl.updateBusinessByBId(OrderDataFlowContextFactory.getNeedCompleteBusiness(dataFlow));
                //如果业务都完成,则将 è®¢å•改为完成状态
                centerServiceDaoImpl.completeOrderByBId(dataFlow.getbId());
            }else if(StatusConstant.REQUEST_BUSINESS_TYPE_BUSINESS.equals(dataFlow.getBusinessType())) {
                centerServiceDaoImpl.updateBusinessByBId(OrderDataFlowContextFactory.getNeedBusinessComplete(dataFlow));
            }else{ //这里到不了,前面做了校验
                throw new BusinessException(ResponseConstant.RESULT_PARAM_ERROR,"当前不支持 ä¸šåŠ¡ç±»åž‹ä¸º businessType" +dataFlow.getBusinessType());
            }
        }catch (DAOException e){
            throw new BusinessException(e.getResult(),e);
        }
    }
    /**
     * //4.0当所有业务动作是否都是C,将订单信息改为 C å¹¶ä¸”发布竣工消息,这里在广播之前确认
     * @param dataFlow
     */
    private void judgeSendToInstance(IOrderNotifyDataFlowContext dataFlow) throws Exception{
        try {
            if(centerServiceDaoImpl.judgeAllBusinessCompleted(dataFlow.getoId(),StatusConstant.STATUS_CD_BUSINESS_COMPLETE) > 0) {
                //通知成功消息
                doSendInstance(dataFlow);
            }
        }catch (DAOException e){
            //这里什么都不做,说明订单没有完成
        }
    }
    /**
     * é€šçŸ¥ è®¢å•已经完成,后端需要完成数据
     * @param dataFlow
     */
    private void notifyBusinessSystemSuccessMessage(IOrderNotifyDataFlowContext dataFlow) throws Exception{
        long startTime = DateUtil.getCurrentDate().getTime();
        ServiceBusiness serviceBusiness = ServiceBusinessUtil.getServiceBusiness(dataFlow.getBusinessTypeCd());
        //拼装报文通知业务系统
        KafkaFactory.sendKafkaMessage(serviceBusiness.getMessageTopic(),"",
                OrderDataFlowContextFactory.getNotifyBusinessSuccessJson(dataFlow).toJSONString());
        /*saveLogMessage(dataFlow,LogAgent.createLogMessage(dataFlow.getRequestCurrentHeaders(),OrderDataFlowContextFactory.getNotifyBusinessSuccessJson(dataFlow).toJSONString()),
                LogAgent.createLogMessage(dataFlow.getResponseCurrentHeaders(),ResponseConstant.RESULT_CODE_SUCCESS),
                DateUtil.getCurrentDate().getTime() - startTime);*/
    }
    /**
     * 8.0 å¹¿æ’­ä½œåºŸä¸šåŠ¡ç³»ç»Ÿè®¢å•ä¿¡æ¯
     *
     * @param dataFlow
     */
    private void notifyBusinessSystemErrorMessage(IOrderNotifyDataFlowContext dataFlow) throws Exception{
        long startTime = DateUtil.getCurrentDate().getTime();
        ServiceBusiness serviceBusiness = ServiceBusinessUtil.getServiceBusiness(dataFlow.getBusinessTypeCd());
        //拼装报文通知业务系统
        KafkaFactory.sendKafkaMessage(serviceBusiness.getMessageTopic(),"",
                OrderDataFlowContextFactory.getNotifyBusinessErrorJson(dataFlow).toJSONString());
        /*saveLogMessage(dataFlow,LogAgent.createLogMessage(dataFlow.getRequestCurrentHeaders(),OrderDataFlowContextFactory.getNotifyBusinessErrorJson(dataFlow).toJSONString()),
                LogAgent.createLogMessage(dataFlow.getResponseCurrentHeaders(),ResponseConstant.RESULT_CODE_ERROR),
                DateUtil.getCurrentDate().getTime() - startTime);*/
    }
    /**
     * å¤„理同步业务
     * @param dataFlow
     */
    private void doSynchronousBusinesses(IOrderDataFlowContext dataFlow) throws BusinessException{
        Date startDate = DateUtil.getCurrentDate();
        List<Business> synchronousBusinesses = OrderDataFlowContextFactory.getSynchronousBusinesses(dataFlow);
        List<Business> deleteBusinesses = new ArrayList<Business>();
        if(synchronousBusinesses == null || synchronousBusinesses.size() == 0){
            return ;
        }
        JSONArray responseBusinesses = new JSONArray();
        //6.1处理同步服务 å‘èµ·Business
        doSaveDataInfoToBusinessTable(dataFlow, synchronousBusinesses, responseBusinesses);
        try {
            //6.2发起Instance
            doBusinessTableDataInfoToInstanceTable(dataFlow, synchronousBusinesses,deleteBusinesses);
        }catch (Exception e){
            try {
                //这里发起撤单逻辑
                doDeleteOrderAndInstanceData(dataFlow, deleteBusinesses);
            }catch (Exception e1){
                logger.error("撤单失败",e1);
                //这里记录撤单失败的信息
            }
            throw new BusinessException(ResponseConstant.RESULT_PARAM_ERROR,e.getMessage());
        }
        //6.3 c_business æ•°æ®ä¿®æ”¹ä¸ºå®Œæˆ
        /*List<Business> asynchronousBusinesses = OrderDataFlowContextFactory.getAsynchronousBusinesses(dataFlow);
        if(asynchronousBusinesses == null || asynchronousBusinesses.size() == 0){
            doComplateOrderAndBusiness(dataFlow,synchronousBusinesses);
        }*/
        OrderDataFlowContextFactory.addCostTime(dataFlow, "doSynchronousBusinesses", "同步调用业务系统总耗时", startDate);
}
    /**
     * å‘起撤单业务
     * @param dataFlow
     * @param deleteBusinesses
     */
    private void doDeleteOrderAndInstanceData(IOrderDataFlowContext dataFlow, List<Business> deleteBusinesses) {
        if(deleteBusinesses == null || deleteBusinesses.size() == 0){
            return ;
        }
        //1.0 åœ¨c_business è¡¨ä¸­åŠ å…¥ æ’¤å•记录
        centerServiceDaoImpl.saveBusiness(OrderDataFlowContextFactory.getDeleteOrderBusiness(dataFlow,"业务系统实例失败,发起撤单"));
        //2.0 ä½œåºŸ c_orders å’Œ c_business æ•°æ®
        updateOrderAndBusinessDelete(dataFlow);
        //3.0 å‘èµ· æ’¤å•业务
        doDeleteBusinessSystemInstanceData(dataFlow,deleteBusinesses);
    }
    /**
     * å®Œæˆè®¢å•状态
     * @param synchronousBusinesses
     */
    /*private void doComplateOrderAndBusiness(DataFlow dataFlow,List<Business> synchronousBusinesses) {
        //Complete Order and business
        Map order = new HashMap();
        order.put("oId",dataFlow.getoId());
        order.put("statusCd", StatusConstant.STATUS_CD_COMPLETE);
        order.put("finishTime",DateUtil.getCurrentDate());
        centerServiceDaoImpl.updateOrder(order);
        centerServiceDaoImpl.updateBusiness(order);
        Date businessStartDate;
        AppService service;
        JSONObject requestBusinessJson;
        for(Business business : synchronousBusinesses){
            businessStartDate = DateUtil.getCurrentDate();
            service = OrderDataFlowContextFactory.getService(dataFlow,business.getServiceCode());
            if(!CommonConstant.INSTANCE_Y.equals(service.getIsInstance())){
                continue;
            }
            requestBusinessJson = OrderDataFlowContextFactory.getCompleteInstanceDataJson(dataFlow,business);
            JSONObject responseJson = doRequestBusinessSystem(dataFlow, service, requestBusinessJson);
            OrderDataFlowContextFactory.addCostTime(dataFlow, business.getServiceCode(), "调用"+business.getServiceName()+"-doComplete耗时", businessStartDate);
            saveLogMessage(dataFlow,LogAgent.createLogMessage(dataFlow.getRequestCurrentHeaders(),requestBusinessJson.toJSONString()),
                    LogAgent.createLogMessage(dataFlow.getResponseCurrentHeaders(),responseJson.toJSONString()),
                    DateUtil.getCurrentDate().getTime() - businessStartDate.getTime());
        }
    }*/
    /**
     * å°†BusinessTable ä¸­çš„æ•°æ®ä¿å­˜åˆ° InstanceTable
     * @param dataFlow
     * @param synchronousBusinesses
     */
    private void doBusinessTableDataInfoToInstanceTable(IOrderDataFlowContext dataFlow, List<Business> synchronousBusinesses,List<Business> deleteBusinesses) {
        Date businessStartDate;
        ServiceBusiness serviceBusiness;
        JSONObject requestBusinessJson;
        for(Business business : synchronousBusinesses){
            businessStartDate = DateUtil.getCurrentDate();
            serviceBusiness = ServiceBusinessUtil.getServiceBusiness(business.getBusinessTypeCd());
            //添加需要撤单的业务信息
            deleteBusinesses.add(business);
            requestBusinessJson = OrderDataFlowContextFactory.getBusinessTableDataInfoToInstanceTableJson(dataFlow,business);
            JSONObject responseJson = doRequestBusinessSystem(dataFlow, serviceBusiness, requestBusinessJson);
            //发布事件
            DataFlowEventPublishing.invokeBusinessISuccess(dataFlow,business);
            updateBusinessStatusCdByBId(business.getbId(),StatusConstant.STATUS_CD_COMPLETE);
            OrderDataFlowContextFactory.addCostTime(dataFlow, business.getBusinessTypeCd(), "调用"+business.getBusinessTypeCd()+"耗时", businessStartDate);
          /*  saveLogMessage(dataFlow,LogAgent.createLogMessage(dataFlow.getRequestCurrentHeaders(),requestBusinessJson.toJSONString()),
                    LogAgent.createLogMessage(dataFlow.getResponseCurrentHeaders(),responseJson.toJSONString()),
                    DateUtil.getCurrentDate().getTime() - businessStartDate.getTime());*/
        }
      /*  if(dataFlow.getCurrentBusiness() == null){
            return ;
        }*/
            //判断业务动作是否都竣工,主要考虑 è¯·æ±‚报文中 æœ‰å¼‚步也有同步的情况
            //如果业务都完成,则将 è®¢å•改为完成状态
            centerServiceDaoImpl.completeOrderByOId(dataFlow.getOrders().getoId());
    }
    /**
     * ä¸šåŠ¡ç³»ç»Ÿæ’¤å•
     * @param dataFlow
     * @param deleteBusinesses
     */
    private void doDeleteBusinessSystemInstanceData(IOrderDataFlowContext dataFlow, List<Business> deleteBusinesses) {
        Date businessStartDate;
        JSONObject requestBusinessJson;
        ServiceBusiness serviceBusiness;
        for(Business business : deleteBusinesses){
            businessStartDate = DateUtil.getCurrentDate();
            requestBusinessJson = OrderDataFlowContextFactory.getDeleteInstanceTableJson(dataFlow,business);
            serviceBusiness = ServiceBusinessUtil.getServiceBusiness(business.getBusinessTypeCd());
            JSONObject responseJson = doRequestBusinessSystem(dataFlow, serviceBusiness, requestBusinessJson);
            OrderDataFlowContextFactory.addCostTime(dataFlow, business.getBusinessTypeCd(), "调用"+business.getBusinessTypeCd()+"-撤单 è€—æ—¶", businessStartDate);
//            saveLogMessage(dataFlow,LogAgent.createLogMessage(dataFlow.getRequestCurrentHeaders(),requestBusinessJson.toJSONString()),
//                    LogAgent.createLogMessage(dataFlow.getResponseCurrentHeaders(),responseJson.toJSONString()),
//                    DateUtil.getCurrentDate().getTime() - businessStartDate.getTime());
        }
    }
    /**
     * è°ƒç”¨ä¸‹æ¸¸ç³»ç»Ÿ
     * @param dataFlow
     * @param serviceBusiness
     * @param requestBusinessJson è¯·æ±‚报文
     * @return
     */
    private JSONObject doRequestBusinessSystem(IOrderDataFlowContext dataFlow, ServiceBusiness serviceBusiness, JSONObject requestBusinessJson) {
        String responseMessage;
        Assert.hasLength(serviceBusiness.getInvokeType(),"c_service_business表配置出错,invoke_type ä¸èƒ½ä¸ºç©º"+ serviceBusiness.getBusinessTypeCd());
        if(ServiceBusinessConstant.INVOKE_TYPE_WEBSERVICE.equals(serviceBusiness.getInvokeType())) {//webservice方式
            String url = serviceBusiness.getUrl();
            String[] urls = url.split("#");
            if(urls.length != 2){
                throw new ConfigDataException(ResponseConstant.RESULT_CODE_CONFIG_ERROR,"配置错误:c_service_business配置url字段错误"+serviceBusiness.getBusinessTypeCd());
            }
            String webserviceUrl = CodeMapUtil.getDynamicConstantValue(urls[0]);
            String method = CodeMapUtil.getDynamicConstantValue(urls[1]);
            responseMessage = (String) WebServiceAxisClient.callWebService(webserviceUrl,method,
                    new Object[]{requestBusinessJson.toJSONString()},
                    serviceBusiness.getTimeout());
        }else if(ServiceBusinessConstant.INVOKE_TYPE_HTTP_POST.equals(serviceBusiness.getInvokeType())){
            //http://user-service/test/sayHello
            String httpPostUrl = CodeMapUtil.getDynamicConstantValue(serviceBusiness.getUrl());
            responseMessage = restTemplate.postForObject(httpPostUrl,requestBusinessJson.toJSONString(),String.class);
        }else if(ServiceBusinessConstant.INVOKE_TYPE_OUT_HTTP_POST.equals(serviceBusiness.getInvokeType())){
            String httpPostUrl = CodeMapUtil.getDynamicConstantValue(serviceBusiness.getUrl());
            responseMessage = restTemplateNoLoadBalanced.postForObject(httpPostUrl,requestBusinessJson.toJSONString(),String.class);
        }
        else {//post方式
            throw new ConfigDataException(ResponseConstant.RESULT_CODE_CONFIG_ERROR,"配置错误:c_service_business配置url字段错误,当前无法识别"+serviceBusiness.getBusinessTypeCd());
        }
        if(StringUtil.isNullOrNone(responseMessage) || !Assert.isJsonObject(responseMessage)){
            throw new BusinessException(ResponseConstant.RESULT_CODE_INNER_ERROR,"下游系统返回格式不正确,请按协议规范处理");
        }
        JSONObject responseJson = JSONObject.parseObject(responseMessage);
        Assert.jsonObjectHaveKey(responseJson,"response","下游返回报文格式错误,没有包含responseJson节点【"+serviceBusiness.getBusinessTypeCd()+"】");
        JSONObject responseInfo = responseJson.getJSONObject("response");
        Assert.jsonObjectHaveKey(responseInfo,"code","下游返回报文格式错误,response èŠ‚ç‚¹ä¸­æ²¡æœ‰åŒ…å«code节点【"+serviceBusiness.getBusinessTypeCd()+"】");
        if(!ResponseConstant.RESULT_CODE_SUCCESS.equals(responseInfo.getString("code"))){
            throw  new BusinessException(ResponseConstant.RESULT_PARAM_ERROR,"业务系统处理失败,"+responseInfo.getString("message"));
        }
        return responseJson;
    }
    private String doTransferRequestBusinessSystem(DataFlow dataFlow, AppService service, String reqData) {
        String responseMessage;
        if(service.getMethod() == null || "".equals(service.getMethod())) {//post方式
            //http://user-service/test/sayHello
            HttpHeaders header = new HttpHeaders();
            for(String key : dataFlow.getRequestCurrentHeaders().keySet()){
                header.add(key,dataFlow.getRequestCurrentHeaders().get(key));
            }
            HttpEntity<String> httpEntity = new HttpEntity<String>(reqData, header);
            responseMessage = restTemplateNoLoadBalanced.postForObject(service.getUrl(),httpEntity,String.class);
        }else{//webservice方式
            responseMessage = (String) WebServiceAxisClient.callWebService(service.getUrl(),service.getMethod(),
                    new Object[]{dataFlow.getRequestBusinessJson().toJSONString()},
                    service.getTimeOut());
        }
        return responseMessage;
    }
    /**
     * æ•°æ®ä¿å­˜åˆ°BusinessTable ä¸­
     * @param dataFlow
     * @param synchronousBusinesses
     * @param responseBusinesses
     */
    private void doSaveDataInfoToBusinessTable(IOrderDataFlowContext dataFlow, List<Business> synchronousBusinesses, JSONArray responseBusinesses) {
        Date businessStartDate;
        ServiceBusiness serviceBusiness;
        JSONObject requestBusinessJson;
        for(Business business : synchronousBusinesses) {
            businessStartDate = DateUtil.getCurrentDate();
            //发起Business过程
            updateBusinessStatusCdByBId(business.getbId(),StatusConstant.STATUS_CD_BUSINESS);
            serviceBusiness = ServiceBusinessUtil.getServiceBusiness(business.getBusinessTypeCd());
            requestBusinessJson = OrderDataFlowContextFactory.getRequestBusinessJson(dataFlow,business);
            JSONObject responseJson = doRequestBusinessSystem(dataFlow, serviceBusiness, requestBusinessJson);
            //发布事件
            DataFlowEventPublishing.invokeBusinessBSuccess(dataFlow,business);
            responseBusinesses.add(responseJson);
            OrderDataFlowContextFactory.addCostTime(dataFlow, business.getBusinessTypeCd(), "调用"+business.getBusinessTypeCd()+"耗时", businessStartDate);
   /*         saveLogMessage(null,LogAgent.createLogMessage(dataFlow.getRequestCurrentHeaders(),requestBusinessJson.toJSONString()),
                    LogAgent.createLogMessage(dataFlow.getResponseCurrentHeaders(),responseJson.toJSONString()),
                    DateUtil.getCurrentDate().getTime()-businessStartDate.getTime());*/
        }
    }
    /**
     * å¤„理异步业务
     * @param
     */
    private void doAsynchronousBusinesses(IOrderDataFlowContext dataFlow) throws BusinessException{
        Date startDate = DateUtil.getCurrentDate();
        //6.3 å¤„理异步,按消息队里处理
        List<Business> asynchronousBusinesses = OrderDataFlowContextFactory.getAsynchronousBusinesses(dataFlow);
        if(asynchronousBusinesses == null || asynchronousBusinesses.size() == 0){
            return ;
        }
        ServiceBusiness serviceBusiness;
        try {
            for (Business business : asynchronousBusinesses) {
                serviceBusiness = ServiceBusinessUtil.getServiceBusiness(business.getBusinessTypeCd());
                KafkaFactory.sendKafkaMessage(serviceBusiness.getMessageTopic(), "",
                        OrderDataFlowContextFactory.getRequestBusinessJson(dataFlow,business).toJSONString());
            }
        }catch (Exception e){
            throw new BusinessException(ResponseConstant.RESULT_CODE_INNER_ERROR,e.getMessage());
        }
        OrderDataFlowContextFactory.addCostTime(dataFlow, "doSynchronousBusinesses", "异步调用业务系统总耗时", startDate);
//        saveLogMessage(dataFlow,LogAgent.createLogMessage(dataFlow.getRequestCurrentHeaders(),dataFlow.getRequestBusinessJson().toJSONString()),
//                LogAgent.createLogMessage(dataFlow.getRequestCurrentHeaders(),dataFlow.getResponseBusinessJson().toJSONString()),
//                DateUtil.getCurrentDate().getTime()-startDate.getTime());
    }
    /**
     * ä¿å­˜æ—¥å¿—信息
     * @param dataFlow æ•°æ®æµå¯¹è±¡ å°è£…用户请求的信息
     *
     * @param requestJson è¯·æ±‚报文 æ ¼å¼ä¸º
     *                    {"headers":"",
     *                     "body":""
     *                     }
     * @param responseJson è¯·æ±‚报文 æ ¼å¼ä¸º
     *                    {"headers":"",
     *                     "body":""
     *                     }
     */
    private void saveLogMessage(DataFlow dataFlow,JSONObject requestJson,JSONObject responseJson,long costTime){
            LogAgent.sendLog(dataFlow,requestJson,responseJson,costTime);
    }
    /**
     * ä¿å­˜æ—¥å¿—信息
     * @param requestJson
     */
    private void saveLogMessage(String requestJson,String responseJson){
        try{
            if(MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_LOG_ON_OFF))){
                JSONObject log = new JSONObject();
                log.put("request",requestJson);
                log.put("response",responseJson);
                KafkaFactory.sendKafkaMessage(KafkaConstant.TOPIC_LOG_NAME,"",log.toJSONString());
            }
        }catch (Exception e){
            logger.error("报错日志出错了,",e);
        }
    }
    /**
     * ä¿å­˜è€—时信息
     * @param dataFlow
     */
    private void saveCostTimeLogMessage(DataFlow dataFlow){
        try{
            if(MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_COST_TIME_ON_OFF))){
                List<DataFlowLinksCost> dataFlowLinksCosts = dataFlow.getLinksCostDates();
                JSONObject costDate = new JSONObject();
                JSONArray costDates = new JSONArray();
                JSONObject newObj = null;
                for(DataFlowLinksCost dataFlowLinksCost : dataFlowLinksCosts){
                    newObj = JSONObject.parseObject(JSONObject.toJSONString(dataFlowLinksCost));
                    newObj.put("dataFlowId",dataFlow.getDataFlowId());
                    newObj.put("transactionId",dataFlow.getTransactionId());
                    costDates.add(newObj);
                }
                costDate.put("costDates",costDates);
                KafkaFactory.sendKafkaMessage(KafkaConstant.TOPIC_COST_TIME_LOG_NAME,"",costDate.toJSONString());
            }
        }catch (Exception e){
            logger.error("报错日志出错了,",e);
        }
    }
    /**
     * ä¿®æ”¹c_business状态
     * @param bId
     * @param statusCd
     */
    private void updateBusinessStatusCdByBId(String bId,String statusCd){
        Map business = new HashMap();
        business.put("bId",bId);
        business.put("statusCd",statusCd);
        business.put("finishTime",DateUtil.getCurrentDate());
        centerServiceDaoImpl.updateBusinessByBId(business);
    }
    public ICenterServiceDAO getCenterServiceDaoImpl() {
        return centerServiceDaoImpl;
    }
    public void setCenterServiceDaoImpl(ICenterServiceDAO centerServiceDaoImpl) {
        this.centerServiceDaoImpl = centerServiceDaoImpl;
    }
    public RestTemplate getRestTemplate() {
        return restTemplate;
    }
    public void setRestTemplate(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }
    public IQueryServiceSMO getQueryServiceSMOImpl() {
        return queryServiceSMOImpl;
    }
    public void setQueryServiceSMOImpl(IQueryServiceSMO queryServiceSMOImpl) {
        this.queryServiceSMOImpl = queryServiceSMOImpl;
    }
    public RestTemplate getRestTemplateNoLoadBalanced() {
        return restTemplateNoLoadBalanced;
    }
    public void setRestTemplateNoLoadBalanced(RestTemplate restTemplateNoLoadBalanced) {
        this.restTemplateNoLoadBalanced = restTemplateNoLoadBalanced;
    }
}
OrderService/src/main/resources/application-dev.yml
File was renamed from CenterService/src/main/resources/application-dev.yml
@@ -29,7 +29,7 @@
      enabled: true
      force: true
  application:
    name: center-service
    name: order-service
  redis:
    database: 0
    host: dev.redis.java110.com
OrderService/src/main/resources/application-prod.yml
File was renamed from CenterService/src/main/resources/application-prod.yml
@@ -29,7 +29,7 @@
      enabled: true
      force: true
  application:
    name: center-service
    name: order-service
  redis:
    database: 0
    host: hc.java110.com
OrderService/src/main/resources/application-test.yml
File was renamed from CenterService/src/main/resources/application-test.yml
@@ -29,7 +29,7 @@
      enabled: true
      force: true
  application:
    name: center-service
    name: order-service
  redis:
    database: 0
    host: hc.java110.com
OrderService/src/main/resources/application.yml
OrderService/src/main/resources/banner.txt
OrderService/src/test/java/com/java110/AppTest.java
PropertyService/src/main/java/com/java110/property/listener/DeletePropertyAttrListener.java
@@ -42,7 +42,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_PROPERTY_ATTR;
    }
PropertyService/src/main/java/com/java110/property/listener/DeletePropertyCerdentialsListener.java
@@ -45,7 +45,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_PROPERTY_CERDENTIALS;
    }
PropertyService/src/main/java/com/java110/property/listener/DeletePropertyHouseListener.java
@@ -42,7 +42,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_PROPERTY_HOUSE;
    }
PropertyService/src/main/java/com/java110/property/listener/DeletePropertyPhotoListener.java
@@ -41,7 +41,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_PROPERTY_PHOTO;
    }
PropertyService/src/main/java/com/java110/property/listener/DeletePropertyUserListener.java
@@ -41,7 +41,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_PROPERTY_USER;
    }
PropertyService/src/main/java/com/java110/property/listener/SavePropertyCerdentialsListener.java
@@ -44,7 +44,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_PROPERTY_CERDENTIALS;
    }
PropertyService/src/main/java/com/java110/property/listener/SavePropertyFeeListener.java
@@ -38,7 +38,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_PROPERTY_FEE;
    }
PropertyService/src/main/java/com/java110/property/listener/SavePropertyHouseListener.java
@@ -44,7 +44,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_PROPERTY_HOUSE;
    }
PropertyService/src/main/java/com/java110/property/listener/SavePropertyInfoListener.java
@@ -44,7 +44,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_PROPERTY_INFO;
    }
PropertyService/src/main/java/com/java110/property/listener/SavePropertyPhotoListener.java
@@ -44,7 +44,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_PROPERTY_PHOTO;
    }
PropertyService/src/main/java/com/java110/property/listener/SavePropertyUserListener.java
@@ -44,7 +44,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_PROPERTY_USER;
    }
PropertyService/src/main/java/com/java110/property/listener/UpdatePropertyCerdentialsListener.java
@@ -41,7 +41,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_UPDATE_PROPERTY_CERDENTIALS;
    }
PropertyService/src/main/java/com/java110/property/listener/UpdatePropertyFeeListener.java
@@ -41,7 +41,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_UPDATE_PROPERTY_FEE;
    }
PropertyService/src/main/java/com/java110/property/listener/UpdatePropertyHouseListener.java
@@ -42,7 +42,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_UPDATE_PROPERTY_HOUSE;
    }
PropertyService/src/main/java/com/java110/property/listener/UpdatePropertyInfoListener.java
@@ -42,7 +42,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_UPDATE_PROPERTY_INFO;
    }
PropertyService/src/main/java/com/java110/property/listener/UpdatePropertyPhotoListener.java
@@ -41,7 +41,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_UPDATE_PROPERTY_PHOTO;
    }
ShopService/src/main/java/com/java110/shop/listener/DeleteShopAttrAndAttrParamListener.java
@@ -42,7 +42,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/DeleteShopCatalogListener.java
@@ -40,7 +40,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_SHOP_CATALOG;
    }
ShopService/src/main/java/com/java110/shop/listener/DeleteShopDescListener.java
@@ -40,7 +40,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/DeleteShopInfoListener.java
@@ -42,7 +42,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/DeleteShopPhotoListener.java
@@ -42,7 +42,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/DeleteShopPreferentialListener.java
@@ -40,7 +40,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/FlushAboutBuyIdListener.java
@@ -27,7 +27,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_BUY_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/FlushAboutShopIdListener.java
@@ -26,7 +26,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/FlushShopCatalogIdListener.java
@@ -26,7 +26,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_SHOP_CATALOG;
    }
ShopService/src/main/java/com/java110/shop/listener/SaveBuyShopAttrListener.java
@@ -38,7 +38,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_BUY_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/SaveBuyShopListener.java
@@ -36,7 +36,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_BUY_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/SaveShopAttrAndAttrParamListener.java
@@ -39,7 +39,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/SaveShopCatalogListener.java
@@ -41,7 +41,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_SHOP_CATALOG;
    }
ShopService/src/main/java/com/java110/shop/listener/SaveShopDescListener.java
@@ -41,7 +41,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/SaveShopInfoListener.java
@@ -45,7 +45,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/SaveShopPhotoListener.java
@@ -38,7 +38,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/SaveShopPreferentialListener.java
@@ -41,7 +41,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/UpdateShopAttrAndAttrParamListener.java
@@ -43,7 +43,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_UPDATE_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/UpdateShopCatalogListener.java
@@ -40,7 +40,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_UPDATE_SHOP_CATALOG;
    }
ShopService/src/main/java/com/java110/shop/listener/UpdateShopDescListener.java
@@ -40,7 +40,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_UPDATE_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/UpdateShopInfoListener.java
@@ -42,7 +42,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_UPDATE_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/UpdateShopPhotoListener.java
@@ -42,7 +42,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_UPDATE_SHOP_INFO;
    }
ShopService/src/main/java/com/java110/shop/listener/UpdateShopPreferentialListener.java
@@ -40,7 +40,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_UPDATE_SHOP_INFO;
    }
StoreService/src/main/java/com/java110/store/listener/DeleteStoreInfoListener.java
@@ -45,7 +45,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_DELETE_STORE_INFO;
    }
StoreService/src/main/java/com/java110/store/listener/SaveStoreInfoListener.java
@@ -44,7 +44,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_STORE_INFO;
    }
StoreService/src/main/java/com/java110/store/listener/UpdateStoreInfoListener.java
@@ -45,7 +45,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_UPDATE_STORE_INFO;
    }
StoreService/src/main/java/com/java110/store/listener/memberJoinedStoreListener.java
@@ -46,7 +46,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_MEMBER_JOINED_STORE;
    }
StoreService/src/main/java/com/java110/store/listener/memberQuitStoreListener.java
@@ -42,7 +42,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_MEMBER_QUIT_STORE;
    }
UserService/src/main/java/com/java110/user/listener/ModifyUserInfoListener.java
@@ -44,7 +44,7 @@
     * @return
     */
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_MODIFY_USER_INFO;
    }
UserService/src/main/java/com/java110/user/listener/RecoverUserInfoListener.java
@@ -41,7 +41,7 @@
     * @return
     */
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_RECOVER_USER_INFO;
    }
UserService/src/main/java/com/java110/user/listener/RemoveUserInfoListener.java
@@ -41,7 +41,7 @@
     * @return
     */
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_REMOVE_USER_INFO;
    }
UserService/src/main/java/com/java110/user/listener/SaveUserAddressListener.java
@@ -46,7 +46,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_USER_ADDRESS;
    }
UserService/src/main/java/com/java110/user/listener/SaveUserCredentialsListener.java
@@ -43,7 +43,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_USER_CREDENTIALS;
    }
UserService/src/main/java/com/java110/user/listener/SaveUserInfoListener.java
@@ -44,7 +44,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_USER_INFO;
    }
UserService/src/main/java/com/java110/user/listener/SaveUserTagListener.java
@@ -46,7 +46,7 @@
    }
    @Override
    public String getServiceCode() {
    public String getBusinessTypeCd() {
        return ServiceCodeConstant.SERVICE_CODE_SAVE_USER_TAG;
    }
java110-bean/src/main/java/com/java110/entity/center/Business.java
@@ -14,6 +14,8 @@
    //业务编码
    private String serviceCode;
    private String businessTypeCd;
    private String serviceName;
    private String remark;
@@ -131,7 +133,7 @@
        try{
            this.setbId(businessObj.getString("bId"));
            this.setServiceCode(businessObj.getString("serviceCode"));
            this.setBusinessTypeCd(businessObj.getString("businessTypeCd"));
            if(businessObj.containsKey("serviceName")) {
                this.setServiceName(businessObj.getString("serviceName"));
            }
@@ -172,4 +174,12 @@
        }
        return 0;
    }
    public String getBusinessTypeCd() {
        return businessTypeCd;
    }
    public void setBusinessTypeCd(String businessTypeCd) {
        this.businessTypeCd = businessTypeCd;
    }
}
java110-bean/src/main/java/com/java110/entity/order/Attrs.java
New file
@@ -0,0 +1,40 @@
package com.java110.entity.order;
/**
 * @author wux
 * @create 2019-02-05 ä¸Šåˆ11:20
 * @desc è®¢å•属性 å¯¹åº” è¡¨c_orders_attrs
 **/
public class Attrs {
    private String attrId;
    private String specCd;
    private String value;
    public String getAttrId() {
        return attrId;
    }
    public void setAttrId(String attrId) {
        this.attrId = attrId;
    }
    public String getSpecCd() {
        return specCd;
    }
    public void setSpecCd(String specCd) {
        this.specCd = specCd;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
}
java110-bean/src/main/java/com/java110/entity/order/BaseOrder.java
New file
@@ -0,0 +1,70 @@
package com.java110.entity.order;
import java.util.Date;
/**
 * @author wux
 * @create 2019-02-05 ä¸Šåˆ11:35
 * @desc è®¢å•公共部分
 **/
public class BaseOrder {
    /**
     * è®¢å•完成时间
     */
    private Date finishTime;
    /**
     * è®¢å•备注
     */
    private String remark;
    /**
     * è®¢å•状态
     */
    private String statusCd;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    private Date createTime;
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Date getFinishTime() {
        return finishTime;
    }
    public void setFinishTime(Date finishTime) {
        this.finishTime = finishTime;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getStatusCd() {
        return statusCd;
    }
    public void setStatusCd(String statusCd) {
        this.statusCd = statusCd;
    }
}
java110-bean/src/main/java/com/java110/entity/order/Business.java
New file
@@ -0,0 +1,86 @@
package com.java110.entity.order;
import com.alibaba.fastjson.JSONObject;
import java.util.List;
/**
 * @author wux
 * @create 2019-02-05 ä¸Šåˆ11:27
 * @desc è®¢å•项 å¯¹åº”表c_business
 **/
public class Business extends BusinessPlus implements Comparable{
    /**
     * è®¢å•ID
     */
    private String oId;
    /**
     * è®¢å•项ID
     */
    private String bId;
    /**
     * ä¸šåŠ¡ç±»åž‹
     */
    private String businessTypeCd;
    List<BusinessAttrs> businessAttrs;
    private JSONObject data;
    public String getoId() {
        return oId;
    }
    public void setoId(String oId) {
        this.oId = oId;
    }
    public String getbId() {
        return bId;
    }
    public void setbId(String bId) {
        this.bId = bId;
    }
    public String getBusinessTypeCd() {
        return businessTypeCd;
    }
    public void setBusinessTypeCd(String businessTypeCd) {
        this.businessTypeCd = businessTypeCd;
    }
    public List<BusinessAttrs> getBusinessAttrs() {
        return businessAttrs;
    }
    public void setBusinessAttrs(List<BusinessAttrs> businessAttrs) {
        this.businessAttrs = businessAttrs;
    }
    public JSONObject getData() {
        return data;
    }
    public void setData(JSONObject data) {
        this.data = data;
    }
    @Override
    public int compareTo(Object o) {
        Business otherBusiness = (Business)o;
        if(this.getSeq() > otherBusiness.getSeq()) {
            return -1;
        }
        return 0;
    }
}
java110-bean/src/main/java/com/java110/entity/order/BusinessAttrs.java
New file
@@ -0,0 +1,10 @@
package com.java110.entity.order;
/**
 * @author wux
 * @create 2019-02-05 ä¸Šåˆ11:20
 * @desc è®¢å•属性 å¯¹åº” è¡¨c_orders_attrs
 **/
public class BusinessAttrs extends Attrs {
}
java110-bean/src/main/java/com/java110/entity/order/BusinessPlus.java
New file
@@ -0,0 +1,29 @@
package com.java110.entity.order;
/**
 * @author wux
 * @create 2019-02-05 ä¸‹åˆ1:50
 * @desc Business扩展类
 **/
public class BusinessPlus extends BaseOrder{
    private String invokeModel;
    private long seq;
    public String getInvokeModel() {
        return invokeModel;
    }
    public void setInvokeModel(String invokeModel) {
        this.invokeModel = invokeModel;
    }
    public long getSeq() {
        return seq;
    }
    public void setSeq(long seq) {
        this.seq = seq;
    }
}
java110-bean/src/main/java/com/java110/entity/order/Orders.java
New file
@@ -0,0 +1,105 @@
package com.java110.entity.order;
import java.util.Date;
import java.util.List;
/**
 * @author wux
 * @create 2019-02-05 ä¸Šåˆ11:10
 * @desc è®¢å•ç±» å¯¹åº”表c_orders
 **/
public class Orders extends BaseOrder{
    /**
     * è®¢å•ID
     */
    private String oId;
    /**
     * ç»„ä»¶ID
     */
    private String appId;
    /**
     * å¤–部交易流水
     */
    private String extTransactionId;
    /**
     * ç”¨æˆ·ID
     */
    private String userId;
    /**
     * å¤–部系统请求时间
     */
    private Date requestTime;
    /**
     * è®¢å•类型
     */
    private String orderTypeCd;
    private List<OrdersAttrs> ordersAttrs;
    public String getoId() {
        return oId;
    }
    public void setoId(String oId) {
        this.oId = oId;
    }
    public String getAppId() {
        return appId;
    }
    public void setAppId(String appId) {
        this.appId = appId;
    }
    public String getExtTransactionId() {
        return extTransactionId;
    }
    public void setExtTransactionId(String extTransactionId) {
        this.extTransactionId = extTransactionId;
    }
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public Date getRequestTime() {
        return requestTime;
    }
    public void setRequestTime(Date requestTime) {
        this.requestTime = requestTime;
    }
    public String getOrderTypeCd() {
        return orderTypeCd;
    }
    public void setOrderTypeCd(String orderTypeCd) {
        this.orderTypeCd = orderTypeCd;
    }
    public List<OrdersAttrs> getOrdersAttrs() {
        return ordersAttrs;
    }
    public void setOrdersAttrs(List<OrdersAttrs> ordersAttrs) {
        this.ordersAttrs = ordersAttrs;
    }
}
java110-bean/src/main/java/com/java110/entity/order/OrdersAttrs.java
New file
@@ -0,0 +1,10 @@
package com.java110.entity.order;
/**
 * @author wux
 * @create 2019-02-05 ä¸Šåˆ11:20
 * @desc è®¢å•属性 å¯¹åº” è¡¨c_orders_attrs
 **/
public class OrdersAttrs extends Attrs{
}
java110-bean/src/main/java/com/java110/entity/order/ServiceBusiness.java
New file
@@ -0,0 +1,90 @@
package com.java110.entity.order;
/**
 * @author wux
 * @create 2019-02-05 ä¸‹åˆ10:22
 * @desc æœåŠ¡ä¸šåŠ¡ç±»
 **/
public class ServiceBusiness {
    private long serviceBusinessId;
    /**
     * ä¸šåŠ¡ç±»åž‹
     */
    private  String businessTypeCd;
    /**
     * è°ƒç”¨ç±»åž‹ 1 http-post(微服务内应用) 2 webservice 3 kafka 4 http-post(微服务之外应用)
     */
    private String invokeType;
    /**
     * åŒæ­¥æ—¶çš„url地址 å½“invokeType ä¸º 3 æ—¶å†™kafka topic
     */
    private String url;
    private String messageTopic;
    private int timeout;
    private int retryCount;
    public long getServiceBusinessId() {
        return serviceBusinessId;
    }
    public void setServiceBusinessId(long serviceBusinessId) {
        this.serviceBusinessId = serviceBusinessId;
    }
    public String getBusinessTypeCd() {
        return businessTypeCd;
    }
    public void setBusinessTypeCd(String businessTypeCd) {
        this.businessTypeCd = businessTypeCd;
    }
    public String getInvokeType() {
        return invokeType;
    }
    public void setInvokeType(String invokeType) {
        this.invokeType = invokeType;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getMessageTopic() {
        return messageTopic;
    }
    public void setMessageTopic(String messageTopic) {
        this.messageTopic = messageTopic;
    }
    public int getTimeout() {
        return timeout;
    }
    public void setTimeout(int timeout) {
        this.timeout = timeout;
    }
    public int getRetryCount() {
        return retryCount;
    }
    public void setRetryCount(int retryCount) {
        this.retryCount = retryCount;
    }
}
java110-common/src/main/java/com/java110/common/cache/ServiceBusinessCache.java
New file
@@ -0,0 +1,58 @@
package com.java110.common.cache;
import com.java110.common.util.SerializeUtil;
import com.java110.entity.center.AppRoute;
import com.java110.entity.order.ServiceBusiness;
import redis.clients.jedis.Jedis;
import java.util.List;
/**
 * ä¸šåŠ¡ä¿¡æ¯ ç¼“存类
 * Created by wuxw on 2018/4/14.
 */
public class ServiceBusinessCache extends BaseCache {
    //后缀 ç”¨æ¥åˆ·ç¼“存时删除 æ‰€æœ‰ä»¥è¿™ä¸ªä¸ºåŽç¼€çš„æ•°æ®
    public final static String _KEY_SERVICE_BUSINESS = "_KEY_ALL_SERVICE_BUSINESS";
    /**
     * èŽ·å– ä¸šåŠ¡ä¿¡æ¯
     * @return
     */
    public static List<ServiceBusiness> getServiceBusiness(){
        List<ServiceBusiness> serviceBusinesses = null;
        Jedis redis = null;
        try {
            redis = getJedis();
            serviceBusinesses = SerializeUtil.unserializeList(redis.get((_KEY_SERVICE_BUSINESS).getBytes()),ServiceBusiness.class);
            if(serviceBusinesses == null || serviceBusinesses.size() ==0) {
                return null;
            }
        }finally {
            if(redis != null){
                redis.close();
            }
        }
        return serviceBusinesses;
    }
    /**
     * ä¿å­˜è·¯ç”±ä¿¡æ¯
     * @param serviceBusinesses
     */
    public static void setServiceBusiness(List<ServiceBusiness> serviceBusinesses){
        Jedis redis = null;
        try {
            redis = getJedis();
            redis.set((_KEY_SERVICE_BUSINESS).getBytes(),SerializeUtil.serializeList(serviceBusinesses));
        }finally {
            if(redis != null){
                redis.close();
            }
        }
    }
}
java110-common/src/main/java/com/java110/common/constant/CommonConstant.java
@@ -121,6 +121,12 @@
     */
    public final static String CACHE_SERVICE_SQL = "SERVICE_SQL";
    /**
     * ä¸šåŠ¡ä¿¡æ¯å¸¸é‡
     */
    public final static String CACHE_SERVICE_BUSINESS = "SERVICE_BUSINESS";
    public final static String CACHE_ALL = "All";
@@ -136,6 +142,7 @@
    public final static String HTTP_APP_ID = "app_id";
    public final static String HTTP_TRANSACTION_ID = "transaction_id";
    public final static String HTTP_REQ_TIME = "req_time";
    public final static String HTTP_RES_TIME = "res_time";
    public final static String HTTP_SIGN = "sign";
    public final static String HTTP_PARAM = "params";
    public final static String HTTP_ORDER_TYPE_CD = "order_type_cd";
java110-common/src/main/java/com/java110/common/constant/ServiceBusinessConstant.java
New file
@@ -0,0 +1,24 @@
package com.java110.common.constant;
/**
 * @author wux
 * @create 2019-02-05 ä¸‹åˆ11:28
 * @desc ä¸šåŠ¡ä¿¡æ¯å¸¸é‡ç±»
 **/
public class ServiceBusinessConstant {
    /**
     * http post æ–¹å¼ (微服务内应用)
     */
    public final static String INVOKE_TYPE_HTTP_POST = "1";
    /**
     * webservice æ–¹å¼è°ƒç”¨
     */
    public final static String INVOKE_TYPE_WEBSERVICE = "2";
    /**
     * http-post(微服务之外应用)
     */
    public final static String INVOKE_TYPE_OUT_HTTP_POST = "3";
}
java110-common/src/main/java/com/java110/common/exception/ConfigDataException.java
New file
@@ -0,0 +1,189 @@
package com.java110.common.exception;
import com.alibaba.fastjson.JSONObject;
import java.io.PrintStream;
import java.io.PrintWriter;
/**
 * é…ç½®æ•°æ®å¼‚常
 * Created by wuxw on 2018/4/14.
 */
public class ConfigDataException extends RuntimeException {
    private Result result;
    private Throwable cause = this;
    public ConfigDataException(){}
    /**
     * æž„造方法
     * @param result è¿”回值
     * @param cause  å¼‚常堆栈
     */
    public ConfigDataException(Result result, Throwable cause) {
        super(result.getMsg(), cause);
        this.result = result;
    }
    /**
     * æž„造方法
     * @param code è¿”回码
     * @param msg  é”™è¯¯æ¶ˆæ¯
     */
    public ConfigDataException(int code, String msg) {
        super(msg);
        this.result = new Result(code, msg);
    }
    public ConfigDataException(String code, String msg) {
        super(msg);
        this.result = new Result(code, msg);
    }
    /**
     * æž„造方法
     * @param result è¿”回值
     * @param detail å…·ä½“的返回消息
     */
    public ConfigDataException(Result result, String detail) {
        super(result.getMsg() + "," + detail);
        this.result = new Result(result.getCode(), result.getMsg() + "," + detail);
    }
    /**
     * æž„造方法
     * @param result è¿”回值
     * @param detail å…·ä½“的返回消息
     * @param cause  å¼‚常堆栈
     */
    public ConfigDataException(Result result, String detail, Throwable cause) {
        super(result.getMsg() + "," + detail, cause);
        this.result = new Result(result.getCode(), result.getMsg() + "," + detail);
    }
    /**
     * æž„造方法
     * @param code    è¿”回码
     * @param msg    è¿”回消息
     * @param cause å¼‚常堆栈
     */
    public ConfigDataException(int code, String msg, Throwable cause) {
        super(msg, cause);
        if(cause != null) {
            if(cause.getCause() != null) {
                msg += " cause:" + ExceptionUtils.populateExecption(cause.getCause(), 500);
            }
            msg += " StackTrace:"+ExceptionUtils.populateExecption(cause, 500);
        }
        this.result = new Result(code, msg);
    }
    /**
     * æž„造方法
     * @param code    è¿”回码
     * @param cause    å¼‚常堆栈
     */
    public ConfigDataException(int code, Throwable cause) {
        super(cause);
        String msg = "";
        if(cause != null) {
            if(cause.getCause() != null) {
                msg += " cause:" + ExceptionUtils.populateExecption(cause.getCause(), 500);
            }
            msg += " StackTrace:"+ExceptionUtils.populateExecption(cause, 500);
        }
        this.result = new Result(code, msg);
    }
    /**
     *
     * TODO ç®€å•描述该方法的实现功能(可选).
     * @see Throwable#getCause()
     */
    public synchronized Throwable getCause() {
        return (cause==this ? super.getCause() : cause);
    }
    /**
     * è¿”回异常消息
     * @return å¼‚常消息
     */
    @Override
    public String getMessage() {
        return ExceptionUtils.buildMessage(super.getMessage(), getCause());
    }
    /**
     * å¼‚常
     * @return
     */
    public String toJsonString() {
        JSONObject exceptionJson = JSONObject.parseObject("{\"exception\":{}");
        JSONObject exceptionJsonObj = exceptionJson.getJSONObject("exception");
        if (getResult() != null)
            exceptionJsonObj.putAll(JSONObject.parseObject(result.toString()));
        exceptionJsonObj.put("exceptionTrace",getMessage());
        return exceptionJsonObj.toString();
    }
    @Override
    public void printStackTrace(PrintStream ps) {
        ps.print("<exception>");
        if (getResult() != null) {
            ps.print(result.toString());
        }
        ps.append("<exceptionTrace>");
        Throwable cause = getCause();
        if (cause == null) {
            super.printStackTrace(ps);
        } else {
            ps.println(this);
            ps.print("Caused by: ");
            cause.printStackTrace(ps);
        }
        ps.append("</exceptionTrace>");
        ps.println("</exception>");
    }
    @Override
    public void printStackTrace(PrintWriter pw) {
        pw.print("<exception>");
        if (getResult() != null) {
            pw.print(result.toString());
        }
        pw.append("<exceptionTrace>");
        Throwable cause = getCause();
        if (cause == null) {
            super.printStackTrace(pw);
        } else {
            pw.println(this);
            pw.print("Caused by: ");
            cause.printStackTrace(pw);
        }
        pw.append("</exceptionTrace>");
        pw.println("</exception>");
    }
    /**
     * è¿”回异常值
     * @return    å¼‚常值对象
     */
    public Result getResult() {
        return result;
    }
    public void setResult(Result result) {
        this.result = result;
    }
}
java110-common/src/main/java/com/java110/common/util/Assert.java
@@ -180,4 +180,12 @@
            throw new IllegalArgumentException(msg);
        }
    }
    public static void isDate(String text,String msg){
        try{
            DateUtil.getDefaultDateFromString(text);
        }catch (Exception e){
            throw new IllegalArgumentException(msg);
        }
    }
}
java110-common/src/main/java/com/java110/common/util/ServiceBusinessUtil.java
New file
@@ -0,0 +1,65 @@
/**
 * æ–‡ä»¶åï¼šCodeMapUtil.java
 * <p>
 * ç‰ˆæœ¬ä¿¡æ¯ï¼š
 * æ—¥æœŸï¼š2017-3-1
 * Copyright äºšä¿¡è”创 Corporation 2017
 * ç‰ˆæƒæ‰€æœ‰
 */
package com.java110.common.util;
import com.java110.common.cache.ServiceBusinessCache;
import com.java110.common.log.LoggerEngine;
import com.java110.common.namespace.NameSpaceHandler;
import com.java110.entity.mapping.CodeMapping;
import com.java110.entity.order.ServiceBusiness;
import java.util.List;
/**
 * ç±»åç§°ï¼šServiceBusinessUtil
 * ç±»æè¿°ï¼š
 * åˆ›å»ºäººï¼šå´å­¦æ–‡
 * åˆ›å»ºæ—¶é—´ï¼š2017-3-1
 */
@SuppressWarnings("unchecked")
public class ServiceBusinessUtil {
    /**
     * æŸ¥è¯¢æ‰€æœ‰æ•°æ®
     *
     * @return
     */
    public static List<ServiceBusiness> getServiceBusinesses() {
        return ServiceBusinessCache.getServiceBusiness();
    }
    /**
     * æ ¹æ®ä¸šåŠ¡ç±»åž‹æŸ¥è¯¢ ä¸šåŠ¡ä¿¡æ¯
     *
     * @param businessTypeCd  ä¸šåŠ¡ç±»åž‹
     * @return
     */
    public static ServiceBusiness getServiceBusiness(String businessTypeCd) {
        if(StringUtil.isEmpty(businessTypeCd)){
            return null;
        }
        List<ServiceBusiness> serviceBusinesses = getServiceBusinesses();
        if(serviceBusinesses == null || serviceBusinesses.size() == 0){
            return null;
        }
        for(ServiceBusiness serviceBusiness : serviceBusinesses){
            if(businessTypeCd.equals(serviceBusiness.getBusinessTypeCd())){
                return serviceBusiness;
            }
        }
        return null;
    }
}
java110-config/db/OrderService/create_table.sql
File was renamed from java110-config/db/CenterService/create_table.sql
@@ -142,6 +142,19 @@
    status_cd VARCHAR(2) NOT NULL default '0' COMMENT '数据状态,详细参考c_status表,0在用,1失效',
    UNIQUE KEY (service_id)
);
-- æœåŠ¡ä¸šåŠ¡è¡¨
create table c_service_business(
    service_business_id INT NOT NULL AUTO_INCREMENT KEY COMMENT 'id',
    business_type_cd VARCHAR(4) NOT NULL COMMENT '业务项类型,参考c_business_type表',
    invoke_type varchar(4) not null comment '调用类型,1 http-post(微服务内应用) 2 webservice 3 http-post(微服务之外应用)',
    url VARCHAR(200) COMMENT '目标地址',
    message_topic varchar(50) comment '异步时的消息topic名称',
    timeout INT NOT NULL DEFAULT 60 COMMENT '超时时间',
    retry_count INT NOT NULL DEFAULT 3 COMMENT '重试次数',
    create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    status_cd VARCHAR(2) NOT NULL default '0' COMMENT '数据状态,详细参考c_status表,0在用,1失效',
    UNIQUE KEY (business_type_cd)
);
java110-config/src/main/resources/logback.xml
@@ -62,7 +62,7 @@
    <logger name="org.springframework" level="error"/>
    <logger name="com.java110.api" level="DEBUG"/>
    <logger name="com.java110.center" level="DEBUG"/>
    <logger name="com.java110.order" level="DEBUG"/>
    <logger name="com.java110" level="DEBUG"/>
    <!--myibatis log configure-->
java110-config/src/main/resources/mapper/center/CenterServiceDAOImplMapper.xml
@@ -72,6 +72,18 @@
        ]]>
    </update>
    <!-- å½“所有业务动作是否都是C,将订单信息改为 C-->
    <update id="completeOrderByOId" parameterType="String" >
        <![CDATA[
            update c_orders co set co.status_cd = 'C' where co.status_cd='S'
                and co.o_id = #{oId}
                and not exists(
                        select 1 from c_business cb where cb.status_cd <> 'C'
                        and cb.o_id = co.o_id
                )
        ]]>
    </update>
    <select id="getOrderInfoByBId" parameterType="String" resultType="Map">
        <![CDATA[
        select co.* from c_orders co where 1 = 1 and exists
java110-config/src/main/resources/mapper/service/QueryServiceDAOImplMapper.xml
@@ -21,6 +21,16 @@
        <parameter property="resMsg" javaType="java.lang.String" jdbcType="CLOB" mode="OUT" />
    </parameterMap>
    <resultMap type="com.java110.entity.service.ServiceSql" id="serviceBusinessMap">
        <result column="service_business_id" jdbcType="INT" property="serviceBusinessId"/>
        <result column="business_type_cd" jdbcType="VARCHAR" property="serviceTypeCd"/>
        <result column="invoke_type" jdbcType="VARCHAR" property="invokeType"/>
        <result column="url" jdbcType="VARCHAR" property="url"/>
        <result column="message_topic" jdbcType="VARCHAR" property="messageTopic"/>
        <result column="timeout" jdbcType="INT" property="timeout"/>
        <result column="retry_count" jdbcType="INT" property="retryCount"/>
    </resultMap>
    <!--执行查询sql -->
    <select id="executeSql" parameterType="String" resultType="Map">
        ${value}
@@ -44,4 +54,19 @@
        FROM c_service_sql css WHERE css.status_cd = '0'
    </select>
    <select id="queryServiceBusiness" resultMap="serviceBusinessMap">
        SELECT
            a.service_business_id,
            a.business_type_cd,
            a.invoke_type,
            a.url,
            a.message_topic,
            a.timeout,
            a.retry_count
        FROM
            c_service_business a
        WHERE
            a.status_cd = '0'
    </select>
</mapper>
java110-core/src/main/java/com/java110/core/context/AbstractDataFlowContext.java
@@ -2,23 +2,18 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.common.factory.ApplicationContextFactory;
import com.java110.common.log.LoggerEngine;
import com.java110.common.util.DateUtil;
import com.java110.entity.center.Business;
import com.java110.entity.center.DataFlowLinksCost;
import com.java110.entity.center.DataFlowLog;
import org.springframework.http.ResponseEntity;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.*;
/**
 * æ•°æ®æµä¸Šä¸‹æ–‡
 * Created by wuxw on 2018/5/18.
 */
public abstract class AbstractDataFlowContext extends AbstractTransactionLog implements DataFlowContext,Orders,TransactionLog{
public abstract class AbstractDataFlowContext extends AbstractTransactionLog implements DataFlowContext, IOrders,TransactionLog{
    private String dataFlowId;
@@ -357,7 +352,7 @@
    }
    public abstract Orders getOrder();
    public abstract IOrders getOrder();
    protected AbstractDataFlowContext(Date startDate, String code){
        this.setStartDate(startDate);
java110-core/src/main/java/com/java110/core/context/AbstractDataFlowContextPlus.java
New file
@@ -0,0 +1,87 @@
package com.java110.core.context;
import com.alibaba.fastjson.JSONObject;
import java.util.Map;
/**
 * æ•°æ®æµä¸Šä¸‹æ–‡
 * Created by wuxw on 2018/5/18.
 */
public abstract class AbstractDataFlowContextPlus implements IDataFlowContextPlus{
    private String dataFlowId;
    /**
     * è¯·æ±‚头信息
     */
    private Map<String,String> reqHeaders;
    /**
     * è¯·æ±‚体信息(只支持json)
     */
    private JSONObject reqJson;
    /**
     * è¿”回头信息
     */
    private Map<String,String> resHeaders;
    /**
     * è¿”回体信息 ï¼ˆåªæ”¯æŒjson)
     */
    private JSONObject resJson;
    @Override
    public String getDataFlowId() {
        return dataFlowId;
    }
    public void setDataFlowId(String dataFlowId) {
        this.dataFlowId = dataFlowId;
    }
    @Override
    public Map<String, String> getReqHeaders() {
        return reqHeaders;
    }
    public void setReqHeaders(Map<String, String> reqHeaders) {
        this.reqHeaders = reqHeaders;
    }
    @Override
    public JSONObject getReqJson() {
        return reqJson;
    }
    public void setReqJson(JSONObject reqJson) {
        this.reqJson = reqJson;
    }
    @Override
    public Map<String, String> getResHeaders() {
        return resHeaders;
    }
    @Override
    public void setResHeaders(Map<String, String> resHeaders) {
        this.resHeaders = resHeaders;
    }
    @Override
    public JSONObject getResJson() {
        return resJson;
    }
    @Override
    public void setResJson(JSONObject resJson) {
        this.resJson = resJson;
    }
}
java110-core/src/main/java/com/java110/core/context/AbstractOrderDataFlowContext.java
New file
@@ -0,0 +1,60 @@
package com.java110.core.context;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.entity.center.Business;
import com.java110.entity.center.DataFlowLinksCost;
import com.java110.entity.center.DataFlowLog;
import org.springframework.http.ResponseEntity;
import java.util.*;
/**
 * æ•°æ®æµä¸Šä¸‹æ–‡
 * Created by wuxw on 2018/5/18.
 */
public abstract class AbstractOrderDataFlowContext extends AbstractDataFlowContextPlus implements IOrderDataFlowContext{
    protected AbstractOrderDataFlowContext(Date startDate, String code){}
    /**
     * æž„建 å¯¹è±¡ä¿¡æ¯
     * @param reqInfo
     * @param headerAll
     * @return
     * @throws Exception
     */
    public  <T> T builder(String reqInfo, Map<String,String> headerAll) throws Exception{
        //预处理
        preBuilder(reqInfo, headerAll);
        //调用builder
        T dataFlowContext = (T)doBuilder(reqInfo, headerAll);
        //后处理
        afterBuilder((IOrderDataFlowContext) dataFlowContext);
        return dataFlowContext;
    }
    /**
     * é¢„处理
     * @param reqInfo
     * @param headerAll
     */
    protected void preBuilder(String reqInfo, Map<String,String> headerAll) {
    }
    /**
     * æž„建对象
     * @param reqInfo
     * @param headerAll
     * @return
     * @throws Exception
     */
    public abstract IOrderDataFlowContext doBuilder(String reqInfo, Map<String,String> headerAll) throws Exception;
    protected void afterBuilder(IOrderDataFlowContext dataFlowContext){
    }
}
java110-core/src/main/java/com/java110/core/context/AbstractOrderNotifyDataFlowContext.java
New file
@@ -0,0 +1,94 @@
package com.java110.core.context;
import java.util.Date;
/**
 * @author wux
 * @create 2019-02-07 ä¸‹åˆ7:01
 * @desc è®¢å•通知数据流信息
 **/
public abstract class AbstractOrderNotifyDataFlowContext extends AbstractDataFlowContextPlus implements IOrderNotifyDataFlowContext,IOrderResponse {
    protected AbstractOrderNotifyDataFlowContext(Date startDate, String code) {
    }
    private String transactionId;
    private Date responseTime;
    private String orderTypeCd;
    private String businessType;
    private String code;
    private String message;
    private String bId;
    private String businessTypeCd;
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public String getTransactionId() {
        return transactionId;
    }
    public void setTransactionId(String transactionId) {
        this.transactionId = transactionId;
    }
    public Date getResponseTime() {
        return responseTime;
    }
    public void setResponseTime(Date responseTime) {
        this.responseTime = responseTime;
    }
    public String getOrderTypeCd() {
        return orderTypeCd;
    }
    public void setOrderTypeCd(String orderTypeCd) {
        this.orderTypeCd = orderTypeCd;
    }
    public String getBusinessType() {
        return businessType;
    }
    public void setBusinessType(String businessType) {
        this.businessType = businessType;
    }
    public String getbId() {
        return bId;
    }
    public void setbId(String bId) {
        this.bId = bId;
    }
    public String getBusinessTypeCd() {
        return businessTypeCd;
    }
    public void setBusinessTypeCd(String businessTypeCd) {
        this.businessTypeCd = businessTypeCd;
    }
}
java110-core/src/main/java/com/java110/core/context/AbstractOrderResponse.java
New file
@@ -0,0 +1,30 @@
package com.java110.core.context;
/**
 * @author wux
 * @create 2019-02-07 ä¸‹åˆ7:10
 * @desc è®¢å•返回抽象类
 **/
public class AbstractOrderResponse implements IOrderResponse {
    private String code;
    private String message;
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
}
java110-core/src/main/java/com/java110/core/context/ApiDataFlow.java
@@ -1,13 +1,8 @@
package com.java110.core.context;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.common.constant.CommonConstant;
import com.java110.common.util.DateUtil;
import com.java110.common.util.StringUtil;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.entity.center.AppRoute;
import com.java110.entity.center.Business;
import org.springframework.http.ResponseEntity;
import java.util.ArrayList;
@@ -87,7 +82,7 @@
    }
    @Override
    public Orders getOrder() {
    public IOrders getOrder() {
        return this;
    }
java110-core/src/main/java/com/java110/core/context/BusinessServiceDataFlow.java
@@ -1,6 +1,5 @@
package com.java110.core.context;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.common.constant.ResponseConstant;
import com.java110.common.exception.InitDataFlowContextException;
@@ -23,7 +22,7 @@
    private Map<String,Object> paramOut;
    @Override
    public Orders getOrder() {
    public IOrders getOrder() {
        return this;
    }
java110-core/src/main/java/com/java110/core/context/CodeDataFlow.java
@@ -74,7 +74,7 @@
    }
    @Override
    public Orders getOrder() {
    public IOrders getOrder() {
        return this;
    }
}
java110-core/src/main/java/com/java110/core/context/DataFlow.java
@@ -116,7 +116,7 @@
    }
    @Override
    public Orders getOrder() {
    public IOrders getOrder() {
        return this;
    }
java110-core/src/main/java/com/java110/core/context/DataFlowContext.java
@@ -72,7 +72,7 @@
    public Map<String, String> getResponseCurrentHeaders();
    public Orders getOrder();
    public IOrders getOrder();
    /**
java110-core/src/main/java/com/java110/core/context/IDataFlowContextPlus.java
New file
@@ -0,0 +1,59 @@
package com.java110.core.context;
import com.alibaba.fastjson.JSONObject;
import com.java110.entity.order.Orders;
import java.util.Map;
/**
 * æ€»æ•°æ®æµå°è£…接口
 */
public interface IDataFlowContextPlus {
    /**
     * èŽ·å–dataflowId
     * @return
     */
    public String getDataFlowId();
    /**
     * èŽ·å–è¯·æ±‚å¤´
     * @return
     */
    public Map<String, String> getReqHeaders();
    /**
     * è¯·æ±‚json报文
     * @return
     */
    public JSONObject getReqJson();
    /**
     * è®¾ç½® è¿”回头信息
     * @param resHeaders è¿”回头信息
     */
    public void setResHeaders(Map<String, String> resHeaders);
    /**
     * è®¾ç½®è¿”回json报文
     * @param resJson
     */
    public void setResJson(JSONObject resJson);
    /**
     * æŸ¥è¯¢ è¿”回头信息
     * @return
     */
    public Map<String, String> getResHeaders();
    /**
     * æŸ¥è¯¢è¿”回JSON报文
     * @return
     */
    public JSONObject getResJson();
}
java110-core/src/main/java/com/java110/core/context/IOrderDataFlowContext.java
New file
@@ -0,0 +1,25 @@
package com.java110.core.context;
import com.java110.entity.order.Business;
import com.java110.entity.order.Orders;
import java.util.List;
/**
 * è®¢å•ç±» æ•°æ®å±‚封装接口
 */
public interface IOrderDataFlowContext extends IDataFlowContextPlus {
    /**
     * èŽ·å–è®¢å•ä¿¡æ¯
     * @return
     */
    public Orders getOrders();
    /**
     * èŽ·å– ä¸šåŠ¡ä¿¡æ¯
     * @return
     */
    public List<Business> getBusinessList();
}
java110-core/src/main/java/com/java110/core/context/IOrderNotifyDataFlowContext.java
New file
@@ -0,0 +1,53 @@
package com.java110.core.context;
import java.util.Date;
/**
 * è®¢å•通知上下文
 */
public interface IOrderNotifyDataFlowContext extends IDataFlowContextPlus{
    /**
     * äº¤æ˜“流水号
     * @return
     */
    public String getTransactionId();
    /**
     * è¿”回时间
     * @return
     */
    public Date getResponseTime();
    /**
     * è®¢å•类型
     * @return
     */
    public String getOrderTypeCd();
    /**
     * è¯·æ±‚类型 B business过程 I instance过程 N notify过程
     * @return
     */
    public String getBusinessType();
    /**
     * ä¸šåŠ¡ID
     * @return
     */
    public String getbId();
    /**
     * ä¸šåŠ¡ç±»åž‹
     * @return
     */
    public String getBusinessTypeCd();
    public String getoId() ;
    public void setoId(String oId) ;
}
java110-core/src/main/java/com/java110/core/context/IOrderResponse.java
New file
@@ -0,0 +1,21 @@
package com.java110.core.context;
/**
 * è®¢å•返回结果信息
 */
public interface IOrderResponse {
    /**
     * èŽ·å–è¿”å›žç¼–ç 
     * @return
     */
    public String getCode() ;
    /**
     * èŽ·å–è¿”å›žä¿¡æ¯
     * @return
     */
    public String getMessage() ;
}
java110-core/src/main/java/com/java110/core/context/IOrders.java
File was renamed from java110-core/src/main/java/com/java110/core/context/Orders.java
@@ -6,7 +6,7 @@
 * èŽ·å–è®¢å•ä¿¡æ¯
 * Created by wuxw on 2018/5/18.
 */
public interface Orders {
public interface IOrders {
    public String getTransactionId();
java110-core/src/main/java/com/java110/core/context/OrderDataFlow.java
New file
@@ -0,0 +1,229 @@
package com.java110.core.context;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.common.constant.CommonConstant;
import com.java110.common.util.Assert;
import com.java110.common.util.DateUtil;
import com.java110.entity.order.Business;
import com.java110.entity.order.BusinessAttrs;
import com.java110.entity.order.Orders;
import com.java110.entity.order.OrdersAttrs;
import java.util.*;
/**
 * ä¸»è¦ç”¨äºŽç¦»æ•£æˆå¯¹è±¡ httpApi service è¯·æ±‚过程消息记录和返回记录
 * Created by wuxw on 2018/4/13.
 */
public class OrderDataFlow extends AbstractOrderDataFlowContext {
    protected OrderDataFlow(Date startDate, String code) {
        super(startDate, code);
    }
    /**
            * è®¢å•
     */
    private Orders orders;
    /**
            * è®¢å•项信息
     */
    private List<Business> businessList;
    /*private String dataFlowId;
    *//**
     * è¯·æ±‚头信息
     *//*
    private Map<String,String> reqHeaders;
    *//**
     * è¯·æ±‚体信息(只支持json)
     *//*
    private JSONObject reqJson;
    *//**
     * è¿”回头信息
     *//*
    private Map<String,String> resHeaders;
    *//**
     * è¿”回体信息 ï¼ˆåªæ”¯æŒjson)
     *//*
    private JSONObject resJson;*/
    /**
     * æž„建 OrderDataFlow å¯¹è±¡
     * @param reqInfo
     * @param headerAll
     * @return
     * @throws Exception
     */
    public OrderDataFlow doBuilder(String reqInfo, Map<String,String> headerAll) throws Exception{
        //校验请求报文格式
        Assert.isJsonObject(reqInfo,"当前报文不是有效json,请检查"+reqInfo);
         this.setDataFlowId(UUID.randomUUID().toString().replace("-","").toLowerCase());
        //赋值请求报文
        this.setResJson(JSONObject.parseObject(reqInfo));
        //赋值 è¯·æ±‚头信息
        this.setReqHeaders(headerAll);
        //构建返回头
        builderResHeaders();
        //构建 è®¢å•信息
        builderOrders();
        //构建订单项信息
        builderBusiness();
        return this;
    }
    /**
     * æž„建返回头信息
     */
    private void builderResHeaders() {
        Map<String,String> tmpResHeaders = new HashMap<String,String>();
        tmpResHeaders.put(CommonConstant.HTTP_TRANSACTION_ID,this.getReqHeaders().get(CommonConstant.HTTP_TRANSACTION_ID));
        tmpResHeaders.put(CommonConstant.HTTP_RES_TIME,DateUtil.getyyyyMMddhhmmssDateString());
        this.setResHeaders(tmpResHeaders);
    }
    /**
     * æž„建订单
     *
     */
    private void builderOrders() throws Exception{
        this.orders = new Orders();
        Assert.hasKey(this.getReqHeaders(),CommonConstant.HTTP_APP_ID,"构建OrderDataFlow对象失败,请求头中未包含"+CommonConstant.HTTP_APP_ID);
        this.orders.setAppId(this.getReqHeaders().get(CommonConstant.HTTP_APP_ID));
        Assert.hasKey(this.getReqHeaders(),CommonConstant.HTTP_USER_ID,"构建OrderDataFlow对象失败,请求头中未包含"+CommonConstant.HTTP_USER_ID);
        this.orders.setUserId(this.getReqHeaders().get(CommonConstant.HTTP_USER_ID));
        Assert.hasKey(this.getReqHeaders(),CommonConstant.HTTP_TRANSACTION_ID,"构建OrderDataFlow对象失败,请求头中未包含"+CommonConstant.HTTP_TRANSACTION_ID);
        this.orders.setExtTransactionId(this.getReqHeaders().get(CommonConstant.HTTP_TRANSACTION_ID));
        Assert.hasKey(this.getReqHeaders(),CommonConstant.HTTP_REQ_TIME,"构建OrderDataFlow对象失败,请求头中未包含"+CommonConstant.HTTP_REQ_TIME);
        Assert.isDate(this.getReqHeaders().get(CommonConstant.HTTP_REQ_TIME),"构建OrderDataFlow对象失败,请求头中"+CommonConstant.HTTP_REQ_TIME+"格式错误");
        this.orders.setRequestTime(DateUtil.getDefaultDateFromString(this.getReqHeaders().get(CommonConstant.HTTP_REQ_TIME)));
        this.orders.setoId("-1");
        JSONObject tmpOrderJson = this.getReqJson().getJSONObject("orders");
        Assert.jsonObjectHaveKey(tmpOrderJson,"orderTypeCd","请求报文错误,未找到orderTypeCd节点");
        this.orders.setOrderTypeCd(tmpOrderJson.getString("orderTypeCd"));
        if(!tmpOrderJson.containsKey("attrs")){
            return ;
        }
        JSONArray tmpOrderAttrs = tmpOrderJson.getJSONArray("attrs");
        List<OrdersAttrs> ordersAttrsList = new ArrayList<OrdersAttrs>();
        OrdersAttrs ordersAttrs = null;
        for(int tmpOrderAttrsIndex = 0;tmpOrderAttrsIndex < tmpOrderAttrs.size();tmpOrderAttrsIndex ++){
            ordersAttrs= new OrdersAttrs();
            ordersAttrs.setAttrId("-"+(tmpOrderAttrsIndex+1));
            ordersAttrs.setSpecCd(tmpOrderAttrs.getJSONObject(tmpOrderAttrsIndex).getString("specId"));
            ordersAttrs.setValue(tmpOrderAttrs.getJSONObject(tmpOrderAttrsIndex).getString("value"));
            ordersAttrsList.add(ordersAttrs);
        }
        this.orders.setOrdersAttrs(ordersAttrsList);
    }
    /**
     * æž„建  è®¢å•项
     */
    private void builderBusiness() {
        this.businessList = new ArrayList<Business>();
        JSONArray tmpBusiness = this.getResJson().getJSONArray("business");
        Business business = null;
        for (int tmpBusinessIndex = 0;tmpBusinessIndex < tmpBusiness.size();tmpBusinessIndex++){
            business = new Business();
            business.setbId("-"+(tmpBusinessIndex+1));
            Assert.jsonObjectHaveKey(tmpBusiness.getJSONObject(tmpBusinessIndex),"businessTypeCd","构建OrderDataFlow对象失败,business中未包含businessTypeCd节点");
            business.setBusinessTypeCd(tmpBusiness.getJSONObject(tmpBusinessIndex).getString("businessTypeCd"));
            business.setoId("-1");
            Assert.jsonObjectHaveKey(tmpBusiness.getJSONObject(tmpBusinessIndex),"datas","构建OrderDataFlow对象失败,business中未包含datas节点");
            business.setData(tmpBusiness.getJSONObject(tmpBusinessIndex).getJSONObject("datas"));
            if(tmpBusiness.getJSONObject(tmpBusinessIndex).containsKey("invokeModel")){
                business.setInvokeModel(tmpBusiness.getJSONObject(tmpBusinessIndex).getString("invokeModel"));
            }
            Assert.jsonObjectHaveKey(tmpBusiness.getJSONObject(tmpBusinessIndex),"seq","构建OrderDataFlow对象失败,business中未包含seq节点");
            business.setSeq(tmpBusiness.getJSONObject(tmpBusinessIndex).getLongValue("seq"));
            if(tmpBusiness.getJSONObject(tmpBusinessIndex).containsKey("attrs")){
                builderBusinessAttrs(tmpBusiness.getJSONObject(tmpBusinessIndex),business);
            }
            businessList.add(business);
        }
    }
    /**
     * æž„建订单项属性
     * @param tmpBusiness æ¯ä¸ªbusiness
     * @param business
     */
    private void builderBusinessAttrs(JSONObject tmpBusiness, Business business) {
        JSONArray tmpBusinessAttrs = tmpBusiness.getJSONArray("attrs");
        List<BusinessAttrs> businessAttrsList = new ArrayList<BusinessAttrs>();
        BusinessAttrs businessAttrs = null;
        for(int tmpBusinessAttrsIndex = 0;tmpBusinessAttrsIndex < tmpBusinessAttrs.size();tmpBusinessAttrsIndex ++){
            businessAttrs= new BusinessAttrs();
            businessAttrs.setAttrId("-"+(tmpBusinessAttrsIndex+1));
            businessAttrs.setSpecCd(tmpBusinessAttrs.getJSONObject(tmpBusinessAttrsIndex).getString("specId"));
            businessAttrs.setValue(tmpBusinessAttrs.getJSONObject(tmpBusinessAttrsIndex).getString("value"));
            businessAttrsList.add(businessAttrs);
        }
    }
    public Orders getOrders() {
        return orders;
    }
    public List<Business> getBusinessList() {
        return businessList;
    }
}
java110-core/src/main/java/com/java110/core/context/OrderNotifyDataFlow.java
New file
@@ -0,0 +1,106 @@
package com.java110.core.context;
import com.alibaba.fastjson.JSONObject;
import com.java110.common.util.Assert;
import com.java110.common.util.DateUtil;
import java.util.Date;
import java.util.Map;
import java.util.UUID;
/**
 * @author wux
 * @create 2019-02-07 ä¸Šåˆ12:38
 * @desc è®¢å•通知数据封装对象
 **/
public class OrderNotifyDataFlow extends AbstractOrderNotifyDataFlowContext {
    protected OrderNotifyDataFlow(Date startDate, String code) {
        super(startDate, code);
    }
    private String oId;
    /**
     * æž„建 å¯¹è±¡ä¿¡æ¯
     * @param reqInfo
     * @param headerAll
     * @return
     * @throws Exception
     */
    public  OrderNotifyDataFlow builder(String reqInfo, Map<String,String> headerAll) throws Exception{
//校验请求报文格式
        Assert.isJsonObject(reqInfo,"当前报文不是有效json,请检查"+reqInfo);
        this.setDataFlowId(UUID.randomUUID().toString().replace("-","").toLowerCase());
        //赋值请求报文
        this.setResJson(JSONObject.parseObject(reqInfo));
        //赋值 è¯·æ±‚头信息
        this.setReqHeaders(headerAll);
        //构建 è®¢å•信息
        builderOrderResponse();
        //构建订单项信息
        builderOrderNotifyInfo();
       return this;
    }
    /**
     * æž„建订单通知信息
     */
    private void builderOrderNotifyInfo() throws Exception{
        JSONObject tmpReqJson = this.getReqJson();
        Assert.jsonObjectHaveKey(tmpReqJson,"business","没有包含business节点信息,"+tmpReqJson.toJSONString());
        JSONObject tmpBusiness = tmpReqJson.getJSONObject("business");
        this.setbId(tmpBusiness.getString("bId"));
        this.setBusinessTypeCd(tmpBusiness.getString("businessTypeCd"));
        Assert.jsonObjectHaveKey(tmpReqJson,"orders","没有包含orders节点信息,"+tmpReqJson.toJSONString());
        JSONObject tmpOrders = tmpReqJson.getJSONObject("orders");
        this.setTransactionId(tmpOrders.getString("transactionId"));
        this.setResponseTime(DateUtil.getDefaultDateFromString(tmpOrders.getString("responseTime")));
        this.setOrderTypeCd(tmpOrders.getString("orderTypeCd"));
        this.setDataFlowId(tmpOrders.getString("dataFlowId"));
        this.setBusinessType(tmpOrders.getString("businessType"));
    }
    /**
     * æž„建返回状态结果信息
     */
    private void builderOrderResponse() {
        JSONObject tmpReqJson = this.getReqJson();
        Assert.jsonObjectHaveKey(tmpReqJson,"business","没有包含business节点信息,"+tmpReqJson.toJSONString());
        JSONObject tmpBusiness = tmpReqJson.getJSONObject("business");
        Assert.jsonObjectHaveKey(tmpBusiness,"response","没有包含response节点,"+tmpBusiness.toJSONString());
        JSONObject tmpResponse = tmpBusiness.getJSONObject("response");
        this.setCode(tmpResponse.getString("code"));
        this.setMessage(tmpResponse.getString("message"));
    }
    public String getoId() {
        return oId;
    }
    public void setoId(String oId) {
        this.oId = oId;
    }
}
java110-core/src/main/java/com/java110/core/factory/DataFlowFactory.java
@@ -10,14 +10,21 @@
import com.java110.common.constant.StatusConstant;
import com.java110.common.util.Assert;
import com.java110.common.util.DateUtil;
import com.java110.common.util.StringUtil;
import com.java110.core.context.AbstractDataFlowContext;
import com.java110.core.context.ApiDataFlow;
import com.java110.core.context.DataFlow;
import com.java110.core.context.OrderDataFlow;
import com.java110.entity.center.AppRoute;
import com.java110.entity.center.AppService;
import com.java110.entity.center.Business;
import com.java110.entity.center.DataFlowLinksCost;
import com.java110.entity.order.BusinessAttrs;
import com.java110.entity.order.Orders;
import com.java110.entity.order.OrdersAttrs;
import org.springframework.beans.BeanInstantiationException;
import org.springframework.http.HttpHeaders;
import org.springframework.util.MultiValueMap;
import java.util.*;
@@ -202,6 +209,25 @@
        return order ;
    }
    /**
     * èŽ·å–Order信息
     * @param orders è®¢å•信息
     * @return
     */
    public static Map getOrder(Orders orders){
        Map order = new HashMap();
        orders.setoId(GenerateCodeFactory.getOId());
        order.put("oId",orders.getoId());
        order.put("appId",orders.getAppId());
        order.put("extTransactionId",orders.getExtTransactionId());
        order.put("userId",orders.getUserId());
        order.put("requestTime",orders.getRequestTime());
        order.put("orderTypeCd",orders.getOrderTypeCd());
        order.put("remark",orders.getRemark());
        order.put("statusCd",StatusConstant.STATUS_CD_SAVE);
        return order ;
    }
    /**
     * èŽ·å–è®¢å•å±žæ€§
@@ -229,6 +255,28 @@
    }
    /**
     * èŽ·å–è®¢å•å±žæ€§
     * @param orders
     * @return
     */
    public static List<Map> getOrderAttrs(Orders orders){
        List<Map> orderAttrs = new ArrayList<Map>();
        List<OrdersAttrs> attrs = orders.getOrdersAttrs();
        Map attrMap = null;
        for(OrdersAttrs ordersAttr:attrs)
        {
            ordersAttr.setAttrId(GenerateCodeFactory.getAttrId());
            attrMap = new HashMap();
            attrMap.put("oId",orders.getoId());
            attrMap.put("attrId", ordersAttr.getAttrId());
            attrMap.put("specCd",ordersAttr.getSpecCd());
            attrMap.put("value",ordersAttr.getValue());
            orderAttrs.add(attrMap);
        }
        return orderAttrs;
    }
    /**
     * èŽ·å–è®¢å•é¡¹
     * @param dataFlow
     * @return
@@ -253,6 +301,33 @@
        return businesss;
    }
    /**
     * èŽ·å–è®¢å•é¡¹
     * @param dataFlow
     * @return
     */
    public static List<Map> getBusiness(OrderDataFlow dataFlow){
        List<Map> businesss = new ArrayList<Map>();
        Map busiMap = null;
        List<com.java110.entity.order.Business> businessList = dataFlow.getBusinessList();
        for(com.java110.entity.order.Business business : businessList) {
            if(business == null){
                continue;
            }
            business.setbId(GenerateCodeFactory.getBId());
            busiMap = new HashMap();
            busiMap.put("oId",dataFlow.getOrders().getoId());
            busiMap.put("businessTypeCd",business.getBusinessTypeCd());
            busiMap.put("remark",business.getRemark());
            busiMap.put("statusCd",StatusConstant.STATUS_CD_SAVE);
            busiMap.put("bId",business.getbId());
            businesss.add(busiMap);
        }
        return businesss;
    }
    /**
     * ç»„装撤单数据
     * @param dataFlow
@@ -263,6 +338,24 @@
        List<Map> business = new ArrayList<Map>();
        Map busiMap = new HashMap();
        busiMap.put("oId",dataFlow.getoId());
        busiMap.put("businessTypeCd",StatusConstant.REQUEST_BUSINESS_TYPE_DELETE);
        busiMap.put("remark",message);
        busiMap.put("statusCd",StatusConstant.STATUS_CD_DELETE_ORDER);
        busiMap.put("bId", GenerateCodeFactory.getBId());
        business.add(busiMap);
        return business;
    }
    /**
     * ç»„装撤单数据
     * @param dataFlow
     * @param message
     * @return
     */
    public static List<Map> getDeleteOrderBusiness(OrderDataFlow dataFlow,String message){
        List<Map> business = new ArrayList<Map>();
        Map busiMap = new HashMap();
        busiMap.put("oId",dataFlow.getOrders().getoId());
        busiMap.put("businessTypeCd",StatusConstant.REQUEST_BUSINESS_TYPE_DELETE);
        busiMap.put("remark",message);
        busiMap.put("statusCd",StatusConstant.STATUS_CD_DELETE_ORDER);
@@ -297,6 +390,34 @@
        return businessAttrs;
    }
    /**
     * èŽ·å–è®¢å•å±žæ€§
     * @param dataFlow
     * @return
     */
    public static List<Map> getBusinessAttrs(OrderDataFlow dataFlow){
        List<Map> businessAttrs = new ArrayList<Map>();
        List<com.java110.entity.order.Business> businesses = dataFlow.getBusinessList();
        for(com.java110.entity.order.Business business :businesses) {
            if (business.getBusinessAttrs() == null || business.getBusinessAttrs().size() ==0) {
                continue;
            }
            List<BusinessAttrs> attrs = business.getBusinessAttrs();
            Map attrMap = null;
            for (BusinessAttrs businessAttrs1 : attrs) {
                attrMap = new HashMap();
                businessAttrs1.setAttrId(GenerateCodeFactory.getAttrId());
                attrMap.put("bId", business.getbId());
                attrMap.put("attrId", businessAttrs1.getAttrId());
                attrMap.put("specCd", businessAttrs1.getSpecCd());
                attrMap.put("value", businessAttrs1.getValue());
                businessAttrs.add(attrMap);
            }
        }
        return businessAttrs;
    }
    /**
     * èŽ·å–å°†è¦ä½œåºŸçš„è®¢å•
     * @param dataFlow
@@ -306,6 +427,19 @@
        Map order = new HashMap();
        order.put("oId",dataFlow.getoId());
       // order.put("finishTime",DateUtil.getCurrentDate());
        order.put("statusCd",StatusConstant.STATUS_CD_DELETE);
        return order;
    }
    /**
     * èŽ·å–å°†è¦ä½œåºŸçš„è®¢å•
     * @param dataFlow
     * @return
     */
    public static Map getNeedInvalidOrder(OrderDataFlow dataFlow){
        Map order = new HashMap();
        order.put("oId",dataFlow.getOrders().getoId());
        // order.put("finishTime",DateUtil.getCurrentDate());
        order.put("statusCd",StatusConstant.STATUS_CD_DELETE);
        return order;
    }
@@ -361,6 +495,23 @@
        Map business = new HashMap();
        String bId = "";
        for(Business busi:dataFlow.getBusinesses()){
            bId += busi.getbId()+",";
        }
        business.put("bId",bId.substring(0,bId.length()-1));
        business.put("finishTime",DateUtil.getCurrentDate());
        business.put("statusCd",StatusConstant.STATUS_CD_DELETE_ORDER);
        return business;
    }
    /**
     * Business è¿‡ç¨‹å®Œæˆ
     * @param dataFlow
     * @return
     */
    public static Map getNeedDeleteBusiness(OrderDataFlow dataFlow){
        Map business = new HashMap();
        String bId = "";
        for(com.java110.entity.order.Business busi:dataFlow.getBusinessList()){
            bId += busi.getbId()+",";
        }
        business.put("bId",bId.substring(0,bId.length()-1));
@@ -494,6 +645,21 @@
        return requestMessage;
    }
    /**
     * èŽ·å–å¤±è´¥æ¶ˆæ¯çš„æŠ¥æ–‡ï¼ˆè®¢å•å¤±è´¥åŽé€šçŸ¥ä¸šåŠ¡ç³»ç»Ÿï¼‰
     * @param business
     * @return
     */
    public static JSONObject getBusinessTableDataInfoToInstanceTableJson(OrderDataFlow dataFlow,com.java110.entity.order.Business business){
        JSONObject requestMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.REQUEST_BUSINESS_TYPE_INSTANCE);
        JSONObject busi = null;
        busi = new JSONObject();
        busi.put("bId",business.getbId());
        busi.put("businessTypeCd",business.getBusinessTypeCd());
        requestMessage.put("business",busi);
        return requestMessage;
    }
    /**
     * å‘起撤单请求报文
@@ -508,6 +674,23 @@
        busi.put("bId",business.getbId());
        busi.put("serviceCode",business.getServiceCode());
        busi.put("serviceName",business.getServiceName());
        //busi.put("datas",business.getDatas());
        requestMessage.put("business",busi);
        return requestMessage;
    }
    /**
     * å‘起撤单请求报文
     * @param business
     * @return
     */
    public static JSONObject getDeleteInstanceTableJson(OrderDataFlow dataFlow,com.java110.entity.order.Business business){
        JSONObject requestMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.REQUEST_BUSINESS_TYPE_DELETE);
        JSONObject busi = null;
        busi = new JSONObject();
        busi.put("bId",business.getbId());
        busi.put("businessTypeCd",business.getBusinessTypeCd());
        //busi.put("datas",business.getDatas());
        requestMessage.put("business",busi);
        return requestMessage;
@@ -564,6 +747,26 @@
        return requestMessage;
    }
    /**
     * èŽ·å–å¤±è´¥æ¶ˆæ¯çš„æŠ¥æ–‡ï¼ˆè®¢å•å¤±è´¥åŽé€šçŸ¥ä¸šåŠ¡ç³»ç»Ÿï¼‰
     * @param business
     * @return
     */
    public static JSONObject getRequestBusinessJson(OrderDataFlow dataFlow,com.java110.entity.order.Business business){
        JSONObject requestMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.REQUEST_BUSINESS_TYPE_BUSINESS);
        //JSONObject businesses = notifyMessage.getJSONObject("business");
        JSONObject busi = null;
        busi = new JSONObject();
        busi.put("bId",business.getbId());
        busi.put("businessTypeCd",business.getBusinessTypeCd());
        busi.put("remark",business.getRemark());
        busi.put("datas",business.getData());
        requestMessage.put("business",busi);
        return requestMessage;
    }
    /**
     * ä¸šåŠ¡ç³»ç»Ÿäº¤äº’
     * @return
@@ -574,6 +777,21 @@
        orders.put("transactionId", UUID.randomUUID().toString().replace("-",""));
        orders.put("dataFlowId",dataFlow.getDataFlowId());
        orders.put("orderTypeCd",dataFlow.getOrderTypeCd());
        orders.put("requestTime",DateUtil.getyyyyMMddhhmmssDateString());
        orders.put("businessType",businessType);
        return notifyMessage;
    }
    /**
     * ä¸šåŠ¡ç³»ç»Ÿäº¤äº’
     * @return
     */
    private static JSONObject getTransactionBusinessBaseJson(OrderDataFlow dataFlow,String businessType){
        JSONObject notifyMessage = JSONObject.parseObject("{\"orders\":{},\"business\":{}}");
        JSONObject orders = notifyMessage.getJSONObject("orders");
        orders.put("transactionId", UUID.randomUUID().toString().replace("-",""));
        orders.put("dataFlowId",dataFlow.getDataFlowId());
        orders.put("orderTypeCd",dataFlow.getOrders().getOrderTypeCd());
        orders.put("requestTime",DateUtil.getyyyyMMddhhmmssDateString());
        orders.put("businessType",businessType);
        return notifyMessage;
@@ -605,6 +823,30 @@
    /**
     * èŽ·å–åŒæ­¥å¤„ç†ä¸šåŠ¡
     * @param dataFlow
     * @return
     */
    public static List<com.java110.entity.order.Business> getSynchronousBusinesses(OrderDataFlow dataFlow){
        AppService service = null;
        AppRoute route = null;
        List<com.java110.entity.order.Business> syschronousBusinesses = new ArrayList<com.java110.entity.order.Business>();
        for(com.java110.entity.order.Business business :dataFlow.getBusinessList()){
            if(CommonConstant.ORDER_INVOKE_METHOD_SYNCHRONOUS.equals(business.getInvokeModel()) || StringUtil.isEmpty(business.getInvokeModel())){
                business.setSeq(service.getSeq());
                syschronousBusinesses.add(business);
            }
        }
        if(syschronousBusinesses.size() > 0) {
            Collections.sort(syschronousBusinesses);
        }
        return syschronousBusinesses;
    }
    /**
     * èŽ·å–å¼‚æ­¥å¤„ç†ä¸šåŠ¡
     * @param dataFlow
     * @return
@@ -625,5 +867,38 @@
        return syschronousBusinesses;
    }
    /**
     * èŽ·å–å¼‚æ­¥å¤„ç†ä¸šåŠ¡
     * @param dataFlow
     * @return
     */
    public static List<com.java110.entity.order.Business> getAsynchronousBusinesses(OrderDataFlow dataFlow){
        List<com.java110.entity.order.Business> asynchronousBusinesses = new ArrayList<com.java110.entity.order.Business>();
        for(com.java110.entity.order.Business business :dataFlow.getBusinessList()){
            if(CommonConstant.ORDER_INVOKE_METHOD_ASYNCHRONOUS.equals(business.getInvokeModel())){
                asynchronousBusinesses.add(business);
            }
        }
        return asynchronousBusinesses;
    }
    /**
     * hashmap è½¬MultiValueMap
     * @param httpHeaders
     * @return
     */
    public static MultiValueMap<String, String> hashMap2MultiValueMap(Map<String,String> httpHeaders){
        MultiValueMap<String, String> multiValueMap = new HttpHeaders();
        for(String key:httpHeaders.keySet()) {
            multiValueMap.add(key,httpHeaders.get(key));
        }
        return multiValueMap;
    }
}
java110-core/src/main/java/com/java110/core/factory/DataTransactionFactory.java
@@ -267,7 +267,7 @@
    /**
     * åˆ›å»ºè¯·æ±‚ center æŠ¥æ–‡ åˆ†è£…成JSON
     * åˆ›å»ºè¯·æ±‚ order æŠ¥æ–‡ åˆ†è£…成JSON
     * @param appId
     * @return
     */
java110-core/src/main/java/com/java110/core/factory/OrderDataFlowContextFactory.java
New file
@@ -0,0 +1,772 @@
package com.java110.core.factory;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.common.cache.MappingCache;
import com.java110.common.constant.CommonConstant;
import com.java110.common.constant.MappingConstant;
import com.java110.common.constant.ResponseConstant;
import com.java110.common.constant.StatusConstant;
import com.java110.common.util.Assert;
import com.java110.common.util.DateUtil;
import com.java110.common.util.StringUtil;
import com.java110.core.context.DataFlow;
import com.java110.core.context.IOrderDataFlowContext;
import com.java110.core.context.IOrderNotifyDataFlowContext;
import com.java110.entity.center.AppRoute;
import com.java110.entity.center.AppService;
import com.java110.entity.center.Business;
import com.java110.entity.center.DataFlowLinksCost;
import com.java110.entity.order.BusinessAttrs;
import com.java110.entity.order.Orders;
import com.java110.entity.order.OrdersAttrs;
import com.java110.entity.order.ServiceBusiness;
import org.springframework.beans.BeanInstantiationException;
import org.springframework.http.HttpHeaders;
import org.springframework.util.MultiValueMap;
import java.util.*;
/**
 * æ•°æ®æµå·¥åŽ‚ç±»
 * Created by wuxw on 2018/4/13.
 */
public class OrderDataFlowContextFactory {
    /**
     * åˆå§‹åŒ–
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T newInstance(Class<T> clazz) throws BeanInstantiationException {
        Assert.notNull(clazz, "Class ä¸èƒ½ä¸ºç©º");
        if (clazz.isInterface()) {
            throw new BeanInstantiationException(clazz, "指定类是一个接口");
        }
        //DateUtil.getCurrentDate(), ResponseConstant.RESULT_CODE_SUCCESS
        try {
            return clazz.getConstructor(Date.class,String.class).newInstance(DateUtil.getCurrentDate(), ResponseConstant.RESULT_CODE_SUCCESS);
        }
        catch (InstantiationException ex) {
            throw new BeanInstantiationException(clazz, "是一个抽象类?", ex);
        }catch (Exception ex){
            throw new BeanInstantiationException(clazz, "构造函数不能访问?", ex);
        }
    }
    /**
     * æ·»åŠ è€—æ—¶
     * @param dataFlow æ•°æ®æµ
     * @param linksCode çŽ¯èŠ‚ç¼–ç 
     * @param linksName çŽ¯èŠ‚åç§°
     * @param startDate å¼€å§‹æ—¶é—´
     * @return
     */
    public static void addCostTime(IOrderDataFlowContext dataFlow, String linksCode, String linksName, Date startDate){
        if(MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_COST_TIME_ON_OFF))) {
            DataFlowLinksCost dataFlowLinksCost = new DataFlowLinksCost().builder(linksCode, linksName, startDate, DateUtil.getCurrentDate());
            //dataFlow.addLinksCostDates(dataFlowLinksCost);
        }
    }
    /**
     * èŽ·å–å°†è¦ä½œåºŸçš„è®¢å•
     * @param dataFlow
     * @return
     */
    public static Map getNeedErrorOrder(IOrderDataFlowContext dataFlow){
        Map order = new HashMap();
        order.put("oId",dataFlow.getOrders().getoId());
        //order.put("finishTime",DateUtil.getCurrentDate());
        order.put("statusCd",StatusConstant.STATUS_CD_ERROR);
        return order;
    }
    /**
     * èŽ·å–å°†è¦ä½œåºŸçš„è®¢å•
     * @param dataFlow
     * @return
     */
    public static Map getNeedErrorOrder(IOrderNotifyDataFlowContext dataFlow){
        Map order = new HashMap();
        order.put("oId",dataFlow.getoId());
        //order.put("finishTime",DateUtil.getCurrentDate());
        order.put("statusCd",StatusConstant.STATUS_CD_ERROR);
        return order;
    }
    /**
     * æ·»åŠ è€—æ—¶
     * @param dataFlow æ•°æ®æµ
     * @param linksCode çŽ¯èŠ‚ç¼–ç 
     * @param linksName çŽ¯èŠ‚åç§°
     * @param startDate å¼€å§‹æ—¶é—´
     * @param endDate ç»“束时间
     * @return
     */
    public static void addCostTime(IOrderDataFlowContext dataFlow, String linksCode, String linksName, Date startDate, Date endDate){
        if(MappingConstant.VALUE_ON.equals(MappingCache.getValue(MappingConstant.KEY_COST_TIME_ON_OFF))) {
            DataFlowLinksCost dataFlowLinksCost = new DataFlowLinksCost().builder(linksCode, linksName, startDate, endDate);
            //dataFlow.addLinksCostDates(dataFlowLinksCost);
        }
    }
    /**
     * èŽ·å–Order信息
     * @param orders è®¢å•信息
     * @return
     */
    public static Map getOrder(Orders orders){
        Map order = new HashMap();
        orders.setoId(GenerateCodeFactory.getOId());
        order.put("oId",orders.getoId());
        order.put("appId",orders.getAppId());
        order.put("extTransactionId",orders.getExtTransactionId());
        order.put("userId",orders.getUserId());
        order.put("requestTime",orders.getRequestTime());
        order.put("orderTypeCd",orders.getOrderTypeCd());
        order.put("remark",orders.getRemark());
        order.put("statusCd",StatusConstant.STATUS_CD_SAVE);
        return order ;
    }
    /**
     * èŽ·å–è®¢å•é¡¹
     * @param dataFlow
     * @return
     */
    public static List<Map> getBusiness(IOrderDataFlowContext dataFlow){
        List<Map> businesss = new ArrayList<Map>();
        Map busiMap = null;
        List<com.java110.entity.order.Business> businessList = dataFlow.getBusinessList();
        for(com.java110.entity.order.Business business : businessList) {
            if(business == null){
                continue;
            }
            business.setbId(GenerateCodeFactory.getBId());
            busiMap = new HashMap();
            busiMap.put("oId",dataFlow.getOrders().getoId());
            busiMap.put("businessTypeCd",business.getBusinessTypeCd());
            busiMap.put("remark",business.getRemark());
            busiMap.put("statusCd",StatusConstant.STATUS_CD_SAVE);
            busiMap.put("bId",business.getbId());
            businesss.add(busiMap);
        }
        return businesss;
    }
    /**
     * ç»„装撤单数据
     * @param dataFlow
     * @param message
     * @return
     */
    public static List<Map> getDeleteOrderBusiness(IOrderDataFlowContext dataFlow,String message){
        List<Map> business = new ArrayList<Map>();
        Map busiMap = new HashMap();
        busiMap.put("oId",dataFlow.getOrders().getoId());
        busiMap.put("businessTypeCd",StatusConstant.REQUEST_BUSINESS_TYPE_DELETE);
        busiMap.put("remark",message);
        busiMap.put("statusCd",StatusConstant.STATUS_CD_DELETE_ORDER);
        busiMap.put("bId", GenerateCodeFactory.getBId());
        business.add(busiMap);
        return business;
    }
    /**
     * ç»„装撤单数据
     * @param dataFlow
     * @param message
     * @return
     */
    public static List<Map> getDeleteOrderBusiness(IOrderNotifyDataFlowContext dataFlow,String message){
        List<Map> business = new ArrayList<Map>();
        Map busiMap = new HashMap();
        busiMap.put("oId",dataFlow.getoId());
        busiMap.put("businessTypeCd",StatusConstant.REQUEST_BUSINESS_TYPE_DELETE);
        busiMap.put("remark",message);
        busiMap.put("statusCd",StatusConstant.STATUS_CD_DELETE_ORDER);
        busiMap.put("bId", GenerateCodeFactory.getBId());
        business.add(busiMap);
        return business;
    }
    /**
     * èŽ·å–è®¢å•å±žæ€§
     * @param dataFlow
     * @return
     */
    public static List<Map> getBusinessAttrs(IOrderDataFlowContext dataFlow){
        List<Map> businessAttrs = new ArrayList<Map>();
        List<com.java110.entity.order.Business> businesses = dataFlow.getBusinessList();
        for(com.java110.entity.order.Business business :businesses) {
            if (business.getBusinessAttrs() == null || business.getBusinessAttrs().size() ==0) {
                continue;
            }
            List<BusinessAttrs> attrs = business.getBusinessAttrs();
            Map attrMap = null;
            for (BusinessAttrs businessAttrs1 : attrs) {
                attrMap = new HashMap();
                businessAttrs1.setAttrId(GenerateCodeFactory.getAttrId());
                attrMap.put("bId", business.getbId());
                attrMap.put("attrId", businessAttrs1.getAttrId());
                attrMap.put("specCd", businessAttrs1.getSpecCd());
                attrMap.put("value", businessAttrs1.getValue());
                businessAttrs.add(attrMap);
            }
        }
        return businessAttrs;
    }
    /**
     * èŽ·å–å°†è¦ä½œåºŸçš„è®¢å•
     * @param dataFlow
     * @return
     */
    public static Map getNeedInvalidOrder(IOrderDataFlowContext dataFlow){
        Map order = new HashMap();
        order.put("oId",dataFlow.getOrders().getoId());
        // order.put("finishTime",DateUtil.getCurrentDate());
        order.put("statusCd",StatusConstant.STATUS_CD_DELETE);
        return order;
    }
    /**
     * èŽ·å–å°†è¦ä½œåºŸçš„è®¢å•
     * @param dataFlow
     * @return
     */
    public static Map getNeedInvalidOrder(IOrderNotifyDataFlowContext dataFlow){
        Map order = new HashMap();
        order.put("oId",dataFlow.getoId());
        // order.put("finishTime",DateUtil.getCurrentDate());
        order.put("statusCd",StatusConstant.STATUS_CD_DELETE);
        return order;
    }
    /**
     * Business è¿‡ç¨‹å®Œæˆ
     * @param dataFlow
     * @return
     */
    public static Map getNeedDeleteBusiness(IOrderDataFlowContext dataFlow){
        Map business = new HashMap();
        String bId = "";
        for(com.java110.entity.order.Business busi:dataFlow.getBusinessList()){
            bId += busi.getbId()+",";
        }
        business.put("bId",bId.substring(0,bId.length()-1));
        business.put("finishTime",DateUtil.getCurrentDate());
        business.put("statusCd",StatusConstant.STATUS_CD_DELETE_ORDER);
        return business;
    }
    /**
     * Business è¿‡ç¨‹å®Œæˆ
     * @param dataFlow
     * @return
     */
    public static Map getNeedDeleteBusiness(IOrderNotifyDataFlowContext dataFlow){
        Map business = new HashMap();
        String bId = "";
        business.put("bId",dataFlow.getbId());
        business.put("finishTime",DateUtil.getCurrentDate());
        business.put("statusCd",StatusConstant.STATUS_CD_DELETE_ORDER);
        return business;
    }
    public static Map getNeedNotifyErrorBusiness(DataFlow dataFlow){
        Map business = new HashMap();
        String bId = getMoreBId(dataFlow);
        business.put("bId",bId.substring(0,bId.length()-1));
        business.put("finishTime",DateUtil.getCurrentDate());
        business.put("statusCd",StatusConstant.STATUS_CD_NOTIFY_ERROR);
        return business;
    }
    public static Map getNeedNotifyErrorBusiness(IOrderNotifyDataFlowContext dataFlow){
        Map business = new HashMap();
        business.put("bId",dataFlow.getbId());
        business.put("finishTime",DateUtil.getCurrentDate());
        business.put("statusCd",StatusConstant.STATUS_CD_NOTIFY_ERROR);
        return business;
    }
    /**
     * èŽ·å–DataFlow å¯¹è±¡ä¸­çš„æ‰€æœ‰bId
     * @param dataFlow
     * @return
     */
    public static String getMoreBId(DataFlow dataFlow){
        String bId = "";
        for(Business busi:dataFlow.getBusinesses()){
            bId += busi.getbId()+",";
        }
        return bId;
    }
    /**
     * èŽ·å–å°†è¦å®Œæˆçš„è®¢å•
     * @param dataFlow
     * @return
     */
    public static Map getNeedCompleteOrder(DataFlow dataFlow){
        Map order = new HashMap();
        order.put("oId",dataFlow.getoId());
        order.put("finishTime",DateUtil.getCurrentDate());
        order.put("statusCd",StatusConstant.STATUS_CD_COMPLETE);
        return order;
    }
    /**
     * èŽ·å–ç«£å·¥æ¶ˆæ¯çš„æŠ¥æ–‡ï¼ˆè®¢å•å®ŒæˆåŽé€šçŸ¥ä¸šåŠ¡ç³»ç»Ÿï¼‰
     * @param dataFlow
     * @return
     */
    public static JSONObject getNotifyBusinessSuccessJson(DataFlow dataFlow){
        JSONObject notifyMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.NOTIFY_BUSINESS_TYPE);
        JSONArray businesses = notifyMessage.getJSONArray("business");
        JSONObject busi = null;
        JSONObject response = null;
        for(Business business :dataFlow.getBusinesses()){
            busi = new JSONObject();
            busi.put("bId",business.getbId());
            busi.put("serviceCode",business.getServiceCode());
            response = new JSONObject();
            response.put("code",ResponseConstant.RESULT_CODE_SUCCESS);
            response.put("message","成功");
            busi.put("response",response);
            businesses.add(busi);
        }
        return notifyMessage;
    }
    /**
     * èŽ·å–ç«£å·¥æ¶ˆæ¯çš„æŠ¥æ–‡ï¼ˆè®¢å•å®ŒæˆåŽé€šçŸ¥ä¸šåŠ¡ç³»ç»Ÿï¼‰
     * @param dataFlow
     * @return
     */
    public static JSONObject getNotifyBusinessSuccessJson(IOrderNotifyDataFlowContext dataFlow){
        JSONObject notifyMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.NOTIFY_BUSINESS_TYPE);
        JSONArray businesses = notifyMessage.getJSONArray("business");
        JSONObject busi = null;
        JSONObject response = null;
            busi = new JSONObject();
            busi.put("bId",dataFlow.getbId());
            busi.put("businessTypeCd",dataFlow.getBusinessTypeCd());
            response = new JSONObject();
            response.put("code",ResponseConstant.RESULT_CODE_SUCCESS);
            response.put("message","成功");
            busi.put("response",response);
            businesses.add(busi);
        return notifyMessage;
    }
    /**
     * èŽ·å–è®¢å•å±žæ€§
     * @param orders
     * @return
     */
    public static List<Map> getOrderAttrs(Orders orders){
        List<Map> orderAttrs = new ArrayList<Map>();
        List<OrdersAttrs> attrs = orders.getOrdersAttrs();
        Map attrMap = null;
        for(OrdersAttrs ordersAttr:attrs)
        {
            ordersAttr.setAttrId(GenerateCodeFactory.getAttrId());
            attrMap = new HashMap();
            attrMap.put("oId",orders.getoId());
            attrMap.put("attrId", ordersAttr.getAttrId());
            attrMap.put("specCd",ordersAttr.getSpecCd());
            attrMap.put("value",ordersAttr.getValue());
            orderAttrs.add(attrMap);
        }
        return orderAttrs;
    }
    /**
     * èŽ·å–å¤±è´¥æ¶ˆæ¯çš„æŠ¥æ–‡ï¼ˆè®¢å•å¤±è´¥åŽé€šçŸ¥ä¸šåŠ¡ç³»ç»Ÿï¼‰
     * @param dataFlow
     * @return
     */
    public static JSONObject getNotifyBusinessErrorJson(DataFlow dataFlow){
        JSONObject notifyMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.NOTIFY_BUSINESS_TYPE);
        JSONArray businesses = notifyMessage.getJSONArray("business");
        JSONObject busi = null;
        JSONObject response = null;
        for(Business business :dataFlow.getBusinesses()){
            busi = new JSONObject();
            busi.put("bId",business.getbId());
            busi.put("serviceCode",business.getServiceCode());
            response = new JSONObject();
            response.put("code",ResponseConstant.RESULT_CODE_INNER_ERROR);
            response.put("message","失败");
            busi.put("response",response);
            businesses.add(busi);
        }
        return notifyMessage;
    }
    /**
     * èŽ·å–å¤±è´¥æ¶ˆæ¯çš„æŠ¥æ–‡ï¼ˆè®¢å•å¤±è´¥åŽé€šçŸ¥ä¸šåŠ¡ç³»ç»Ÿï¼‰
     * @param dataFlow
     * @return
     */
    public static JSONObject getNotifyBusinessErrorJson(IOrderNotifyDataFlowContext dataFlow){
        JSONObject notifyMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.NOTIFY_BUSINESS_TYPE);
        JSONArray businesses = notifyMessage.getJSONArray("business");
        JSONObject busi = null;
        JSONObject response = null;
            busi = new JSONObject();
            busi.put("bId",dataFlow.getbId());
            busi.put("businessTypeCd",dataFlow.getBusinessTypeCd());
            response = new JSONObject();
            response.put("code",ResponseConstant.RESULT_CODE_INNER_ERROR);
            response.put("message","失败");
            busi.put("response",response);
            businesses.add(busi);
        return notifyMessage;
    }
    public static JSONObject getCompletedBusinessErrorJson(DataFlow dataFlow,Map business,AppService appService){
        JSONObject notifyMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.NOTIFY_BUSINESS_TYPE);
        JSONArray businesses = notifyMessage.getJSONArray("business");
        JSONObject busi = null;
        JSONObject response = null;
        busi = new JSONObject();
        busi.put("bId",business.get("b_id"));
        busi.put("serviceCode",appService.getServiceCode());
        response = new JSONObject();
        response.put("code",ResponseConstant.RESULT_CODE_INNER_ERROR);
        response.put("message","失败");
        busi.put("response",response);
        businesses.add(busi);
        return notifyMessage;
    }
    /**
     * èŽ·å–å¤±è´¥æ¶ˆæ¯çš„æŠ¥æ–‡ï¼ˆè®¢å•å¤±è´¥åŽé€šçŸ¥ä¸šåŠ¡ç³»ç»Ÿï¼‰
     * @param business
     * @return
     */
    public static JSONObject getBusinessTableDataInfoToInstanceTableJson(DataFlow dataFlow,Business business){
        JSONObject requestMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.REQUEST_BUSINESS_TYPE_INSTANCE);
        JSONObject busi = null;
            busi = new JSONObject();
            busi.put("bId",business.getbId());
            busi.put("serviceCode",business.getServiceCode());
            busi.put("serviceName",business.getServiceName());
            //busi.put("isInstance",CommonConstant.INSTANCE_Y);
        //busi.put("datas",business.getDatas());
        requestMessage.put("business",busi);
        return requestMessage;
    }
    /**
     * èŽ·å–å¤±è´¥æ¶ˆæ¯çš„æŠ¥æ–‡ï¼ˆè®¢å•å¤±è´¥åŽé€šçŸ¥ä¸šåŠ¡ç³»ç»Ÿï¼‰
     * @param business
     * @return
     */
    public static JSONObject getBusinessTableDataInfoToInstanceTableJson(IOrderDataFlowContext dataFlow,com.java110.entity.order.Business business){
        JSONObject requestMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.REQUEST_BUSINESS_TYPE_INSTANCE);
        JSONObject busi = null;
        busi = new JSONObject();
        busi.put("bId",business.getbId());
        busi.put("businessTypeCd",business.getBusinessTypeCd());
        requestMessage.put("business",busi);
        return requestMessage;
    }
    /**
     * èŽ·å–å¤±è´¥æ¶ˆæ¯çš„æŠ¥æ–‡ï¼ˆè®¢å•å¤±è´¥åŽé€šçŸ¥ä¸šåŠ¡ç³»ç»Ÿï¼‰
     * @param dataFlow
     * @return
     */
    public static JSONObject getBusinessTableDataInfoToInstanceTableJson(IOrderNotifyDataFlowContext dataFlow){
        JSONObject requestMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.REQUEST_BUSINESS_TYPE_INSTANCE);
        JSONObject busi = null;
        busi = new JSONObject();
        busi.put("bId",dataFlow.getbId());
        busi.put("businessTypeCd",dataFlow.getBusinessTypeCd());
        requestMessage.put("business",busi);
        return requestMessage;
    }
    /**
     * å‘起撤单请求报文
     * @param business
     * @return
     */
    public static JSONObject getDeleteInstanceTableJson(DataFlow dataFlow,Business business){
        JSONObject requestMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.REQUEST_BUSINESS_TYPE_DELETE);
        JSONObject busi = null;
        busi = new JSONObject();
        busi.put("bId",business.getbId());
        busi.put("serviceCode",business.getServiceCode());
        busi.put("serviceName",business.getServiceName());
        //busi.put("datas",business.getDatas());
        requestMessage.put("business",busi);
        return requestMessage;
    }
    /**
     * å‘起撤单请求报文
     * @param business
     * @return
     */
    public static JSONObject getDeleteInstanceTableJson(IOrderDataFlowContext dataFlow,com.java110.entity.order.Business business){
        JSONObject requestMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.REQUEST_BUSINESS_TYPE_DELETE);
        JSONObject busi = null;
        busi = new JSONObject();
        busi.put("bId",business.getbId());
        busi.put("businessTypeCd",business.getBusinessTypeCd());
        //busi.put("datas",business.getDatas());
        requestMessage.put("business",busi);
        return requestMessage;
    }
    public static JSONObject getDeleteInstanceTableJson(DataFlow dataFlow,Map business,AppService appService){
        JSONObject requestMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.REQUEST_BUSINESS_TYPE_DELETE);
        JSONObject busi = null;
        busi = new JSONObject();
        busi.put("bId",business.get("b_id"));
        busi.put("serviceCode",appService.getServiceCode());
        //busi.put("datas",business.getDatas());
        requestMessage.put("business",busi);
        return requestMessage;
    }
    public static JSONObject getDeleteInstanceTableJson(IOrderNotifyDataFlowContext dataFlow, Map business ){
        JSONObject requestMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.REQUEST_BUSINESS_TYPE_DELETE);
        JSONObject busi = null;
        busi = new JSONObject();
        busi.put("bId",business.get("b_id"));
        busi.put("businessTypeCd",business.get("business_type_cd").toString());
        //busi.put("datas",business.getDatas());
        requestMessage.put("business",busi);
        return requestMessage;
    }
    /**
     * èŽ·å–å¤±è´¥æ¶ˆæ¯çš„æŠ¥æ–‡ï¼ˆè®¢å•å¤±è´¥åŽé€šçŸ¥ä¸šåŠ¡ç³»ç»Ÿï¼‰
     * @param business
     * @return
     */
    public static JSONObject getCompleteInstanceDataJson(DataFlow dataFlow,Business business){
        JSONObject notifyMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.REQUEST_BUSINESS_TYPE);
        //JSONObject businesses = notifyMessage.getJSONObject("business");
        JSONObject busi = null;
        busi = new JSONObject();
        busi.put("bId",business.getbId());
        busi.put("serviceCode",business.getServiceCode());
        busi.put("serviceName",business.getServiceName());
        busi.put("isInstance",CommonConstant.INSTANCE_Y);
        notifyMessage.put("business",busi);
        return notifyMessage;
    }
    /**
     * èŽ·å–å¤±è´¥æ¶ˆæ¯çš„æŠ¥æ–‡ï¼ˆè®¢å•å¤±è´¥åŽé€šçŸ¥ä¸šåŠ¡ç³»ç»Ÿï¼‰
     * @param business
     * @return
     */
    public static JSONObject getRequestBusinessJson(DataFlow dataFlow,Business business){
        JSONObject requestMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.REQUEST_BUSINESS_TYPE_BUSINESS);
        //JSONObject businesses = notifyMessage.getJSONObject("business");
        JSONObject busi = null;
        busi = new JSONObject();
        busi.put("bId",business.getbId());
        busi.put("serviceCode",business.getServiceCode());
        busi.put("serviceName",business.getServiceName());
        busi.put("remark",business.getRemark());
        busi.put("datas",business.getDatas());
        requestMessage.put("business",busi);
        return requestMessage;
    }
    /**
     * èŽ·å–å¤±è´¥æ¶ˆæ¯çš„æŠ¥æ–‡ï¼ˆè®¢å•å¤±è´¥åŽé€šçŸ¥ä¸šåŠ¡ç³»ç»Ÿï¼‰
     * @param business
     * @return
     */
    public static JSONObject getRequestBusinessJson(IOrderDataFlowContext dataFlow,com.java110.entity.order.Business business){
        JSONObject requestMessage = getTransactionBusinessBaseJson(dataFlow,StatusConstant.REQUEST_BUSINESS_TYPE_BUSINESS);
        //JSONObject businesses = notifyMessage.getJSONObject("business");
        JSONObject busi = null;
        busi = new JSONObject();
        busi.put("bId",business.getbId());
        busi.put("businessTypeCd",business.getBusinessTypeCd());
        busi.put("remark",business.getRemark());
        busi.put("datas",business.getData());
        requestMessage.put("business",busi);
        return requestMessage;
    }
    /**
     * ä¸šåŠ¡ç³»ç»Ÿäº¤äº’
     * @return
     */
    private static JSONObject getTransactionBusinessBaseJson(DataFlow dataFlow,String businessType){
        JSONObject notifyMessage = JSONObject.parseObject("{\"orders\":{},\"business\":{}}");
        JSONObject orders = notifyMessage.getJSONObject("orders");
        orders.put("transactionId", UUID.randomUUID().toString().replace("-",""));
        orders.put("dataFlowId",dataFlow.getDataFlowId());
        orders.put("orderTypeCd",dataFlow.getOrderTypeCd());
        orders.put("requestTime",DateUtil.getyyyyMMddhhmmssDateString());
        orders.put("businessType",businessType);
        return notifyMessage;
    }
    /**
     * ä¸šåŠ¡ç³»ç»Ÿäº¤äº’
     * @return
     */
    private static JSONObject getTransactionBusinessBaseJson(IOrderDataFlowContext dataFlow,String businessType){
        JSONObject notifyMessage = JSONObject.parseObject("{\"orders\":{},\"business\":{}}");
        JSONObject orders = notifyMessage.getJSONObject("orders");
        orders.put("transactionId", UUID.randomUUID().toString().replace("-",""));
        orders.put("dataFlowId",dataFlow.getDataFlowId());
        orders.put("orderTypeCd",dataFlow.getOrders().getOrderTypeCd());
        orders.put("requestTime",DateUtil.getyyyyMMddhhmmssDateString());
        orders.put("businessType",businessType);
        return notifyMessage;
    }
    /**
     * ä¸šåŠ¡ç³»ç»Ÿäº¤äº’
     * @return
     */
    private static JSONObject getTransactionBusinessBaseJson(IOrderNotifyDataFlowContext dataFlow,String businessType){
        JSONObject notifyMessage = JSONObject.parseObject("{\"orders\":{},\"business\":{}}");
        JSONObject orders = notifyMessage.getJSONObject("orders");
        orders.put("transactionId", UUID.randomUUID().toString().replace("-",""));
        orders.put("dataFlowId",dataFlow.getDataFlowId());
        orders.put("orderTypeCd",dataFlow.getOrderTypeCd());
        orders.put("requestTime",DateUtil.getyyyyMMddhhmmssDateString());
        orders.put("businessType",businessType);
        return notifyMessage;
    }
    /**
     * èŽ·å–åŒæ­¥å¤„ç†ä¸šåŠ¡
     * @param dataFlow
     * @return
     */
    public static List<com.java110.entity.order.Business> getSynchronousBusinesses(IOrderDataFlowContext dataFlow){
        AppService service = null;
        AppRoute route = null;
        List<com.java110.entity.order.Business> syschronousBusinesses = new ArrayList<com.java110.entity.order.Business>();
        for(com.java110.entity.order.Business business :dataFlow.getBusinessList()){
            if(CommonConstant.ORDER_INVOKE_METHOD_SYNCHRONOUS.equals(business.getInvokeModel()) || StringUtil.isEmpty(business.getInvokeModel())){
                business.setSeq(service.getSeq());
                syschronousBusinesses.add(business);
            }
        }
        if(syschronousBusinesses.size() > 0) {
            Collections.sort(syschronousBusinesses);
        }
        return syschronousBusinesses;
    }
    /**
     * èŽ·å–å¼‚æ­¥å¤„ç†ä¸šåŠ¡
     * @param dataFlow
     * @return
     */
    public static List<com.java110.entity.order.Business> getAsynchronousBusinesses(IOrderDataFlowContext dataFlow){
        List<com.java110.entity.order.Business> asynchronousBusinesses = new ArrayList<com.java110.entity.order.Business>();
        for(com.java110.entity.order.Business business :dataFlow.getBusinessList()){
            if(CommonConstant.ORDER_INVOKE_METHOD_ASYNCHRONOUS.equals(business.getInvokeModel())){
                asynchronousBusinesses.add(business);
            }
        }
        return asynchronousBusinesses;
    }
    /**
     * hashmap è½¬MultiValueMap
     * @param httpHeaders
     * @return
     */
    public static MultiValueMap<String, String> hashMap2MultiValueMap(Map<String,String> httpHeaders){
        MultiValueMap<String, String> multiValueMap = new HttpHeaders();
        for(String key:httpHeaders.keySet()) {
            multiValueMap.add(key,httpHeaders.get(key));
        }
        return multiValueMap;
    }
    public static Map getNeedCompleteBusiness(IOrderNotifyDataFlowContext dataFlow){
        Map business = new HashMap();
        business.put("bId",dataFlow.getbId());
        business.put("finishTime",DateUtil.getCurrentDate());
        business.put("statusCd",StatusConstant.STATUS_CD_COMPLETE);
        return business;
    }
    /**
     * Business è¿‡ç¨‹å®Œæˆ
     * @param dataFlow
     * @return
     */
    public static Map getNeedBusinessComplete(IOrderNotifyDataFlowContext dataFlow){
        Map business = new HashMap();
        business.put("bId",dataFlow.getbId());
        business.put("finishTime",DateUtil.getCurrentDate());
        business.put("statusCd",StatusConstant.STATUS_CD_BUSINESS_COMPLETE);
        return business;
    }
}
java110-event/src/main/java/com/java110/event/center/DataFlowEventPublishing.java
@@ -5,7 +5,8 @@
import com.java110.common.factory.ApplicationContextFactory;
import com.java110.common.log.LoggerEngine;
import com.java110.common.util.Assert;
import com.java110.core.context.DataFlow;
import com.java110.core.context.IOrderDataFlowContext;
import com.java110.entity.order.Business;
import com.java110.event.center.event.*;
import com.java110.event.center.listener.DataFlowListener;
@@ -222,7 +223,7 @@
     * åˆå§‹åŒ– DataFlow å¯¹è±¡å®Œæˆ
     * @param dataFlow æ•°æ®æµå¯¹è±¡
     */
    public static void initDataFlowComplete(DataFlow dataFlow){
    public static void initDataFlowComplete(IOrderDataFlowContext dataFlow){
        multicastEvent(new DataFlowInitCompleteEvent("",dataFlow));
    }
@@ -230,7 +231,7 @@
     * è§„则校验完成事件
     * @param dataFlow æ•°æ®æµå¯¹è±¡
     */
    public static void ruleValidateComplete(DataFlow dataFlow){
    public static void ruleValidateComplete(IOrderDataFlowContext dataFlow){
        multicastEvent(new RuleValidateCompleteEvent("",dataFlow));
    }
@@ -238,7 +239,7 @@
     * åŠ è½½é…ç½®æ–‡ä»¶å®Œæˆ
     * @param dataFlow æ•°æ®æµå¯¹è±¡
     */
    public static void loadConfigDataComplete(DataFlow dataFlow){
    public static void loadConfigDataComplete(IOrderDataFlowContext dataFlow){
        multicastEvent(new LoadConfigDataCompleteEvent("",dataFlow));
    }
@@ -247,15 +248,34 @@
     * è°ƒç”¨ä¸šåŠ¡ç³»ç»Ÿäº‹ä»¶
     * @param dataFlow æ•°æ®æµ
     */
    public static void invokeBusinessSystem(DataFlow dataFlow){
    public static void invokeBusinessSystem(IOrderDataFlowContext dataFlow){
        multicastEvent(new InvokeBusinessSystemEvent("",dataFlow));
    }
    /**
     * è°ƒç”¨ä¸šåŠ¡ç³»ç»ŸæˆåŠŸåŽäº‹ä»¶
     * @param dataFlow
     * @param business æˆåŠŸçš„äº‹ä»¶ä¸šåŠ¡æ•°æ®å°è£…å¯¹è±¡
     */
    public static void invokeBusinessBSuccess(IOrderDataFlowContext dataFlow, Business business){
        multicastEvent(new InvokeBusinessBSuccessEvent("",dataFlow,business));
    }
    /**
     * è°ƒç”¨ä¸šåŠ¡ç³»ç»ŸæˆåŠŸåŽäº‹ä»¶
     * @param dataFlow
     * @param business æˆåŠŸçš„äº‹ä»¶ä¸šåŠ¡æ•°æ®å°è£…å¯¹è±¡
     */
    public static void invokeBusinessISuccess(IOrderDataFlowContext dataFlow, Business business){
        multicastEvent(new InvokeBusinessISuccessEvent("",dataFlow,business));
    }
    /**
     * æ•°æ®è¿”回事件
     * @param dataFlow æ•°æ®æµ
     */
    public static void dataResponse(DataFlow dataFlow,String responseData,Map<String,String> headers){
    public static void dataResponse(IOrderDataFlowContext dataFlow,String responseData,Map<String,String> headers){
        multicastEvent(new DataResponseEvent("",dataFlow,responseData,headers));
    }
java110-event/src/main/java/com/java110/event/center/event/DataFlowEvent.java
@@ -1,6 +1,8 @@
package com.java110.event.center.event;
import com.java110.core.context.DataFlow;
import com.java110.core.context.IOrderDataFlowContext;
import com.java110.core.context.OrderDataFlow;
import java.util.EventObject;
@@ -11,7 +13,7 @@
public class DataFlowEvent extends EventObject {
    private DataFlow dataFlow;
    private IOrderDataFlowContext dataFlow;
    /**
     * Constructs a prototypical Event.
@@ -19,16 +21,16 @@
     * @param source The object on which the Event initially occurred.
     * @throws IllegalArgumentException if source is null.
     */
    public DataFlowEvent(Object source, DataFlow dataFlow) {
    public DataFlowEvent(Object source, IOrderDataFlowContext dataFlow) {
        super(source);
        this.dataFlow = dataFlow;
    }
    public DataFlow getDataFlow() {
    public IOrderDataFlowContext getDataFlow() {
        return dataFlow;
    }
    public void setDataFlow(DataFlow dataFlow) {
    public void setDataFlow(IOrderDataFlowContext dataFlow) {
        this.dataFlow = dataFlow;
    }
}
java110-event/src/main/java/com/java110/event/center/event/DataFlowInitCompleteEvent.java
@@ -1,6 +1,8 @@
package com.java110.event.center.event;
import com.java110.core.context.DataFlow;
import com.java110.core.context.IOrderDataFlowContext;
import com.java110.core.context.OrderDataFlow;
/**
 * dataFlow å¯¹è±¡åˆå§‹åŒ–完成
@@ -14,7 +16,7 @@
     * @param dataFlow
     * @throws IllegalArgumentException if source is null.
     */
    public DataFlowInitCompleteEvent(Object source, DataFlow dataFlow) {
    public DataFlowInitCompleteEvent(Object source, IOrderDataFlowContext dataFlow) {
        super(source, dataFlow);
    }
}
java110-event/src/main/java/com/java110/event/center/event/DataPreValidateEvent.java
@@ -1,6 +1,7 @@
package com.java110.event.center.event;
import com.java110.core.context.DataFlow;
import com.java110.core.context.IOrderDataFlowContext;
import java.util.Map;
@@ -19,7 +20,7 @@
     * @param dataFlow
     * @throws IllegalArgumentException if source is null.
     */
    public DataPreValidateEvent(Object source, DataFlow dataFlow,
    public DataPreValidateEvent(Object source, IOrderDataFlowContext dataFlow,
                                String requestData, Map<String,String> headers) {
        super(source, dataFlow);
        this.requestData = requestData;
java110-event/src/main/java/com/java110/event/center/event/DataResponseEvent.java
@@ -1,6 +1,7 @@
package com.java110.event.center.event;
import com.java110.core.context.DataFlow;
import com.java110.core.context.IOrderDataFlowContext;
import java.util.Map;
@@ -21,7 +22,7 @@
     * @param dataFlow
     * @throws IllegalArgumentException if source is null.
     */
    public DataResponseEvent(Object source, DataFlow dataFlow,String responseData, Map<String,String> headers) {
    public DataResponseEvent(Object source, IOrderDataFlowContext dataFlow, String responseData, Map<String,String> headers) {
        super(source, dataFlow);
        this.responseData = responseData;
        this.headers = headers;
java110-event/src/main/java/com/java110/event/center/event/InvokeBusinessBSuccessEvent.java
New file
@@ -0,0 +1,30 @@
package com.java110.event.center.event;
import com.java110.core.context.IOrderDataFlowContext;
import com.java110.core.context.OrderDataFlow;
import com.java110.entity.order.Business;
/**
 * è°ƒç”¨ä¸šåŠ¡ç³»ç»Ÿäº‹ä»¶
 * Created by wuxw on 2018/7/2.
 */
public class InvokeBusinessBSuccessEvent extends DataFlowEvent {
    private Business business;
    /**
     * Constructs a prototypical Event.
     *
     * @param source   The object on which the Event initially occurred.
     * @param dataFlow
     * @throws IllegalArgumentException if source is null.
     */
    public InvokeBusinessBSuccessEvent(Object source, IOrderDataFlowContext dataFlow, Business business) {
        super(source, dataFlow);
        this.business = business;
    }
    public Business getBusiness() {
        return business;
    }
}
java110-event/src/main/java/com/java110/event/center/event/InvokeBusinessISuccessEvent.java
New file
@@ -0,0 +1,30 @@
package com.java110.event.center.event;
import com.java110.core.context.IOrderDataFlowContext;
import com.java110.core.context.OrderDataFlow;
import com.java110.entity.order.Business;
/**
 * è°ƒç”¨ä¸šåŠ¡ç³»ç»Ÿäº‹ä»¶
 * Created by wuxw on 2018/7/2.
 */
public class InvokeBusinessISuccessEvent extends DataFlowEvent {
    private Business business;
    /**
     * Constructs a prototypical Event.
     *
     * @param source   The object on which the Event initially occurred.
     * @param dataFlow
     * @throws IllegalArgumentException if source is null.
     */
    public InvokeBusinessISuccessEvent(Object source, IOrderDataFlowContext dataFlow, Business business) {
        super(source, dataFlow);
        this.business = business;
    }
    public Business getBusiness() {
        return business;
    }
}
java110-event/src/main/java/com/java110/event/center/event/InvokeBusinessSystemEvent.java
@@ -1,6 +1,8 @@
package com.java110.event.center.event;
import com.java110.core.context.DataFlow;
import com.java110.core.context.IOrderDataFlowContext;
import com.java110.core.context.OrderDataFlow;
/**
 * è°ƒç”¨ä¸šåŠ¡ç³»ç»Ÿäº‹ä»¶
@@ -15,7 +17,7 @@
     * @param dataFlow
     * @throws IllegalArgumentException if source is null.
     */
    public InvokeBusinessSystemEvent(Object source, DataFlow dataFlow) {
    public InvokeBusinessSystemEvent(Object source, IOrderDataFlowContext dataFlow) {
        super(source, dataFlow);
    }
}
java110-event/src/main/java/com/java110/event/center/event/LoadConfigDataCompleteEvent.java
@@ -1,6 +1,8 @@
package com.java110.event.center.event;
import com.java110.core.context.DataFlow;
import com.java110.core.context.IOrderDataFlowContext;
import com.java110.core.context.OrderDataFlow;
/**
 * åŠ è½½é…ç½®æ–‡ä»¶å®Œæˆ
@@ -14,7 +16,7 @@
     * @param dataFlow
     * @throws IllegalArgumentException if source is null.
     */
    public LoadConfigDataCompleteEvent(Object source, DataFlow dataFlow) {
    public LoadConfigDataCompleteEvent(Object source, IOrderDataFlowContext dataFlow) {
        super(source, dataFlow);
    }
}
java110-event/src/main/java/com/java110/event/center/event/ReceiveRequestEvent.java
@@ -1,6 +1,7 @@
package com.java110.event.center.event;
import com.java110.core.context.DataFlow;
import com.java110.core.context.IOrderDataFlowContext;
import java.util.Map;
@@ -19,7 +20,7 @@
     * @param dataFlow
     * @throws IllegalArgumentException if source is null.
     */
    public ReceiveRequestEvent(Object source, DataFlow dataFlow,
    public ReceiveRequestEvent(Object source, IOrderDataFlowContext dataFlow,
                               String requestData, Map<String,String> headers) {
        super(source, dataFlow);
        this.requestData = requestData;
java110-event/src/main/java/com/java110/event/center/event/RuleValidateCompleteEvent.java
@@ -1,6 +1,7 @@
package com.java110.event.center.event;
import com.java110.core.context.DataFlow;
import com.java110.core.context.IOrderDataFlowContext;
import com.java110.core.context.OrderDataFlow;
/**
 * è§„则校验完成事件
@@ -14,7 +15,7 @@
     * @param dataFlow
     * @throws IllegalArgumentException if source is null.
     */
    public RuleValidateCompleteEvent(Object source, DataFlow dataFlow) {
    public RuleValidateCompleteEvent(Object source, IOrderDataFlowContext dataFlow) {
        super(source, dataFlow);
    }
}
java110-event/src/main/java/com/java110/event/service/BusinessServiceDataFlowEventPublishing.java
@@ -55,23 +55,23 @@
    /**
     * æ ¹æ®æ˜¯å¦å®žçŽ°äº†æŸä¸ªæŽ¥å£ï¼Œè¿”å›žä¾¦å¬
     * @param serviceCode
     * @param businessTypeCd
     * @since 1.8
     * @return
     */
    public static List<BusinessServiceDataFlowListener> getListeners(String serviceCode){
    public static List<BusinessServiceDataFlowListener> getListeners(String businessTypeCd){
        Assert.hasLength(serviceCode,"获取需要发布的事件处理侦听时,传递事件为空,请检查");
        Assert.hasLength(businessTypeCd,"获取需要发布的事件处理侦听时,传递事件为空,请检查");
        //先从缓存中获取,为了提升效率
        if(cacheListenersMap.containsKey(serviceCode)){
            return cacheListenersMap.get(serviceCode);
        if(cacheListenersMap.containsKey(businessTypeCd)){
            return cacheListenersMap.get(businessTypeCd);
        }
        List<BusinessServiceDataFlowListener> dataFlowListeners = new ArrayList<BusinessServiceDataFlowListener>();
        for(String listenerBeanName : getListeners()){
            BusinessServiceDataFlowListener listener = ApplicationContextFactory.getBean(listenerBeanName,BusinessServiceDataFlowListener.class);
            if(serviceCode.equals(listener.getServiceCode())){
            if(businessTypeCd.equals(listener.getBusinessTypeCd())){
                dataFlowListeners.add(listener);
            }
        }
@@ -80,7 +80,7 @@
        DataFlowListenerOrderComparator.sort(dataFlowListeners);
        //将数据放入缓存中
        cacheListenersMap.put(serviceCode,dataFlowListeners);
        cacheListenersMap.put(businessTypeCd,dataFlowListeners);
        return dataFlowListeners;
    }
@@ -91,29 +91,29 @@
     */
    public static void multicastEvent(DataFlowContext dataFlowContext) throws BusinessException{
        Assert.notNull(dataFlowContext.getCurrentBusiness(),"当前没有可处理的业务信息!");
        multicastEvent(dataFlowContext.getCurrentBusiness().getServiceCode(),dataFlowContext,null);
        multicastEvent(dataFlowContext.getCurrentBusiness().getBusinessTypeCd(),dataFlowContext,null);
    }
    /**
     * å‘布事件
     * @param serviceCode
     * @param businessTypeCd
     * @param dataFlowContext
     */
    public static void multicastEvent(String serviceCode,DataFlowContext dataFlowContext) throws BusinessException{
        multicastEvent(serviceCode,dataFlowContext,null);
    public static void multicastEvent(String businessTypeCd,DataFlowContext dataFlowContext) throws BusinessException{
        multicastEvent(businessTypeCd,dataFlowContext,null);
    }
    /**
     * å‘布事件
     * @param serviceCode
     * @param businessTypeCd
     * @param dataFlowContext è¿™ä¸ªè®¢å•信息,以便于 ä¾¦å¬é‚£è¾¹éœ€è¦ç”¨
     */
    public static void multicastEvent(String serviceCode,DataFlowContext dataFlowContext,String asyn) throws  BusinessException{
    public static void multicastEvent(String businessTypeCd,DataFlowContext dataFlowContext,String asyn) throws  BusinessException{
        try {
            BusinessServiceDataFlowEvent targetDataFlowEvent = new BusinessServiceDataFlowEvent(serviceCode,dataFlowContext);
            BusinessServiceDataFlowEvent targetDataFlowEvent = new BusinessServiceDataFlowEvent(businessTypeCd,dataFlowContext);
            multicastEvent(serviceCode,targetDataFlowEvent, asyn);
            multicastEvent(businessTypeCd,targetDataFlowEvent, asyn);
        }catch (Exception e){
            throw new BusinessException(ResponseConstant.RESULT_CODE_INNER_ERROR,"发布侦听失败,失败原因为:"+e);
        }
@@ -126,8 +126,8 @@
     * @param event
     * @param asyn A è¡¨ç¤ºå¼‚步处理
     */
    public static void multicastEvent(String serviceCode,final BusinessServiceDataFlowEvent event, String asyn) {
        for (final BusinessServiceDataFlowListener listener : getListeners(serviceCode)) {
    public static void multicastEvent(String businessTypeCd,final BusinessServiceDataFlowEvent event, String asyn) {
        for (final BusinessServiceDataFlowListener listener : getListeners(businessTypeCd)) {
            if(CommonConstant.PROCESS_ORDER_ASYNCHRONOUS.equals(asyn)){ //异步处理
java110-event/src/main/java/com/java110/event/service/BusinessServiceDataFlowListener.java
@@ -14,7 +14,7 @@
     * ä¸šåŠ¡ ç¼–码
     * @return
     */
    public String getServiceCode();
    public String getBusinessTypeCd();
    public void soService(BusinessServiceDataFlowEvent event);
}
java110-service/src/main/java/com/java110/service/dao/IQueryServiceDAO.java
@@ -1,7 +1,9 @@
package com.java110.service.dao;
import com.java110.entity.order.ServiceBusiness;
import com.java110.entity.service.ServiceSql;
import javax.validation.OverridesAttribute;
import java.util.List;
import java.util.Map;
@@ -31,4 +33,10 @@
    public String updateProc(Map<String,Object> paramsInfo);
    public List<ServiceSql> qureyServiceSqlAll();
    /**
     * æŸ¥è¯¢æœåŠ¡ä¸šåŠ¡ä¿¡æ¯
     * @return
     */
    public List<ServiceBusiness> qureyServiceBusiness();
}
java110-service/src/main/java/com/java110/service/dao/impl/QueryServiceDAOImpl.java
@@ -2,6 +2,7 @@
import com.java110.common.util.StringUtil;
import com.java110.core.base.dao.BaseServiceDao;
import com.java110.entity.order.ServiceBusiness;
import com.java110.entity.service.ServiceSql;
import com.java110.service.dao.IQueryServiceDAO;
import org.slf4j.Logger;
@@ -163,4 +164,13 @@
    public List<ServiceSql> qureyServiceSqlAll() {
        return sqlSessionTemplate.selectList("queryServiceDAOImpl.qureyServiceSqlAll");
    }
    /**
     * æŸ¥è¯¢æœåŠ¡ä¸šåŠ¡ä¿¡æ¯
     * @return
     */
    public List<ServiceBusiness> qureyServiceBusiness(){
        return sqlSessionTemplate.selectList("queryServiceDAOImpl.queryServiceBusiness");
    }
}
pom.xml
@@ -24,7 +24,7 @@
        <module>RuleService</module>
        <module>SimpleListenerService</module>
        <module>java110-event</module>
        <module>CenterService</module>
        <module>OrderService</module>
        <module>java110-cacheAgent</module>
        <module>ConsoleService</module>
        <module>java110-logAgent</module>