diff --git a/JSD-8813配置使用文档.docx b/JSD-8813配置使用文档.docx new file mode 100644 index 0000000..62afe3f Binary files /dev/null and b/JSD-8813配置使用文档.docx differ diff --git a/JSD-8813需求确认书.docx b/JSD-8813需求确认书.docx new file mode 100644 index 0000000..7cf6b76 Binary files /dev/null and b/JSD-8813需求确认书.docx differ diff --git a/README.md b/README.md index fee7252..628b365 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ # open-JSD-8813 -JSD-8813 开源任务材料 \ No newline at end of file +JSD-8813 用户操作接口(WS开放) + token单点 开源任务材料\ +免责说明:该源码为第三方爱好者提供,不保证源码和方案的可靠性,也不提供任何形式的源码教学指导和协助!\ +仅作为开发者学习参考使用!禁止用于任何商业用途!\ +为保护开发者隐私,开发者信息已隐去!若原开发者希望公开自己的信息,可联系hugh处理。 \ No newline at end of file diff --git a/lib/cxf-core-3.2.14.jar b/lib/cxf-core-3.2.14.jar new file mode 100644 index 0000000..c549783 Binary files /dev/null and b/lib/cxf-core-3.2.14.jar differ diff --git a/lib/cxf-integration-jca-3.2.14.jar b/lib/cxf-integration-jca-3.2.14.jar new file mode 100644 index 0000000..a3c9d9e Binary files /dev/null and b/lib/cxf-integration-jca-3.2.14.jar differ diff --git a/lib/cxf-manifest.jar b/lib/cxf-manifest.jar new file mode 100644 index 0000000..482d594 Binary files /dev/null and b/lib/cxf-manifest.jar differ diff --git a/lib/cxf-rt-bindings-coloc-3.2.14.jar b/lib/cxf-rt-bindings-coloc-3.2.14.jar new file mode 100644 index 0000000..f136e4a Binary files /dev/null and b/lib/cxf-rt-bindings-coloc-3.2.14.jar differ diff --git a/lib/cxf-rt-bindings-corba-3.2.14.jar b/lib/cxf-rt-bindings-corba-3.2.14.jar new file mode 100644 index 0000000..7d326cd Binary files /dev/null and b/lib/cxf-rt-bindings-corba-3.2.14.jar differ diff --git a/lib/cxf-rt-bindings-soap-3.2.14.jar b/lib/cxf-rt-bindings-soap-3.2.14.jar new file mode 100644 index 0000000..5ee206b Binary files /dev/null and b/lib/cxf-rt-bindings-soap-3.2.14.jar differ diff --git a/lib/cxf-rt-bindings-xml-3.2.14.jar b/lib/cxf-rt-bindings-xml-3.2.14.jar new file mode 100644 index 0000000..4163650 Binary files /dev/null and b/lib/cxf-rt-bindings-xml-3.2.14.jar differ diff --git a/lib/cxf-rt-databinding-aegis-3.2.14.jar b/lib/cxf-rt-databinding-aegis-3.2.14.jar new file mode 100644 index 0000000..586b037 Binary files /dev/null and b/lib/cxf-rt-databinding-aegis-3.2.14.jar differ diff --git a/lib/cxf-rt-databinding-jaxb-3.2.14.jar b/lib/cxf-rt-databinding-jaxb-3.2.14.jar new file mode 100644 index 0000000..e60d8b7 Binary files /dev/null and b/lib/cxf-rt-databinding-jaxb-3.2.14.jar differ diff --git a/lib/cxf-rt-features-clustering-3.2.14.jar b/lib/cxf-rt-features-clustering-3.2.14.jar new file mode 100644 index 0000000..cc5dd53 Binary files /dev/null and b/lib/cxf-rt-features-clustering-3.2.14.jar differ diff --git a/lib/cxf-rt-frontend-jaxrs-3.2.14.jar b/lib/cxf-rt-frontend-jaxrs-3.2.14.jar new file mode 100644 index 0000000..462a43a Binary files /dev/null and b/lib/cxf-rt-frontend-jaxrs-3.2.14.jar differ diff --git a/lib/cxf-rt-frontend-jaxws-3.2.14.jar b/lib/cxf-rt-frontend-jaxws-3.2.14.jar new file mode 100644 index 0000000..c9e0a26 Binary files /dev/null and b/lib/cxf-rt-frontend-jaxws-3.2.14.jar differ diff --git a/lib/cxf-rt-frontend-js-3.2.14.jar b/lib/cxf-rt-frontend-js-3.2.14.jar new file mode 100644 index 0000000..121e51e Binary files /dev/null and b/lib/cxf-rt-frontend-js-3.2.14.jar differ diff --git a/lib/cxf-rt-frontend-simple-3.2.14.jar b/lib/cxf-rt-frontend-simple-3.2.14.jar new file mode 100644 index 0000000..c3c2684 Binary files /dev/null and b/lib/cxf-rt-frontend-simple-3.2.14.jar differ diff --git a/lib/cxf-rt-javascript-3.2.14.jar b/lib/cxf-rt-javascript-3.2.14.jar new file mode 100644 index 0000000..a530b20 Binary files /dev/null and b/lib/cxf-rt-javascript-3.2.14.jar differ diff --git a/lib/cxf-rt-management-3.2.14.jar b/lib/cxf-rt-management-3.2.14.jar new file mode 100644 index 0000000..55daa39 Binary files /dev/null and b/lib/cxf-rt-management-3.2.14.jar differ diff --git a/lib/cxf-rt-rs-client-3.2.14.jar b/lib/cxf-rt-rs-client-3.2.14.jar new file mode 100644 index 0000000..7bea615 Binary files /dev/null and b/lib/cxf-rt-rs-client-3.2.14.jar differ diff --git a/lib/cxf-rt-rs-extension-providers-3.2.14.jar b/lib/cxf-rt-rs-extension-providers-3.2.14.jar new file mode 100644 index 0000000..18fe11e Binary files /dev/null and b/lib/cxf-rt-rs-extension-providers-3.2.14.jar differ diff --git a/lib/cxf-rt-rs-extension-search-3.2.14.jar b/lib/cxf-rt-rs-extension-search-3.2.14.jar new file mode 100644 index 0000000..ab9aad2 Binary files /dev/null and b/lib/cxf-rt-rs-extension-search-3.2.14.jar differ diff --git a/lib/cxf-rt-rs-json-basic-3.2.14.jar b/lib/cxf-rt-rs-json-basic-3.2.14.jar new file mode 100644 index 0000000..e76017c Binary files /dev/null and b/lib/cxf-rt-rs-json-basic-3.2.14.jar differ diff --git a/lib/cxf-rt-rs-security-cors-3.2.14.jar b/lib/cxf-rt-rs-security-cors-3.2.14.jar new file mode 100644 index 0000000..ffe6060 Binary files /dev/null and b/lib/cxf-rt-rs-security-cors-3.2.14.jar differ diff --git a/lib/cxf-rt-rs-security-jose-3.2.14.jar b/lib/cxf-rt-rs-security-jose-3.2.14.jar new file mode 100644 index 0000000..1ea60b7 Binary files /dev/null and b/lib/cxf-rt-rs-security-jose-3.2.14.jar differ diff --git a/lib/cxf-rt-rs-security-jose-jaxrs-3.2.14.jar b/lib/cxf-rt-rs-security-jose-jaxrs-3.2.14.jar new file mode 100644 index 0000000..ea0d6f3 Binary files /dev/null and b/lib/cxf-rt-rs-security-jose-jaxrs-3.2.14.jar differ diff --git a/lib/cxf-rt-rs-security-oauth-3.2.14.jar b/lib/cxf-rt-rs-security-oauth-3.2.14.jar new file mode 100644 index 0000000..269336f Binary files /dev/null and b/lib/cxf-rt-rs-security-oauth-3.2.14.jar differ diff --git a/lib/cxf-rt-rs-security-oauth2-3.2.14.jar b/lib/cxf-rt-rs-security-oauth2-3.2.14.jar new file mode 100644 index 0000000..0491c87 Binary files /dev/null and b/lib/cxf-rt-rs-security-oauth2-3.2.14.jar differ diff --git a/lib/cxf-rt-rs-security-sso-saml-3.2.14.jar b/lib/cxf-rt-rs-security-sso-saml-3.2.14.jar new file mode 100644 index 0000000..73dca60 Binary files /dev/null and b/lib/cxf-rt-rs-security-sso-saml-3.2.14.jar differ diff --git a/lib/cxf-rt-rs-security-xml-3.2.14.jar b/lib/cxf-rt-rs-security-xml-3.2.14.jar new file mode 100644 index 0000000..4f1903e Binary files /dev/null and b/lib/cxf-rt-rs-security-xml-3.2.14.jar differ diff --git a/lib/cxf-rt-rs-service-description-3.2.14.jar b/lib/cxf-rt-rs-service-description-3.2.14.jar new file mode 100644 index 0000000..f9902e9 Binary files /dev/null and b/lib/cxf-rt-rs-service-description-3.2.14.jar differ diff --git a/lib/cxf-rt-rs-sse-3.2.14.jar b/lib/cxf-rt-rs-sse-3.2.14.jar new file mode 100644 index 0000000..4e411fe Binary files /dev/null and b/lib/cxf-rt-rs-sse-3.2.14.jar differ diff --git a/lib/cxf-rt-security-3.2.14.jar b/lib/cxf-rt-security-3.2.14.jar new file mode 100644 index 0000000..3bfb092 Binary files /dev/null and b/lib/cxf-rt-security-3.2.14.jar differ diff --git a/lib/cxf-rt-security-saml-3.2.14.jar b/lib/cxf-rt-security-saml-3.2.14.jar new file mode 100644 index 0000000..5c79eab Binary files /dev/null and b/lib/cxf-rt-security-saml-3.2.14.jar differ diff --git a/lib/cxf-rt-transports-http-3.2.14.jar b/lib/cxf-rt-transports-http-3.2.14.jar new file mode 100644 index 0000000..173f633 Binary files /dev/null and b/lib/cxf-rt-transports-http-3.2.14.jar differ diff --git a/lib/cxf-rt-transports-http-hc-3.2.14.jar b/lib/cxf-rt-transports-http-hc-3.2.14.jar new file mode 100644 index 0000000..e3d9692 Binary files /dev/null and b/lib/cxf-rt-transports-http-hc-3.2.14.jar differ diff --git a/lib/cxf-rt-transports-http-jetty-3.2.14.jar b/lib/cxf-rt-transports-http-jetty-3.2.14.jar new file mode 100644 index 0000000..324ea8d Binary files /dev/null and b/lib/cxf-rt-transports-http-jetty-3.2.14.jar differ diff --git a/lib/cxf-rt-transports-http-netty-client-3.2.14.jar b/lib/cxf-rt-transports-http-netty-client-3.2.14.jar new file mode 100644 index 0000000..5768b77 Binary files /dev/null and b/lib/cxf-rt-transports-http-netty-client-3.2.14.jar differ diff --git a/lib/cxf-rt-transports-http-netty-server-3.2.14.jar b/lib/cxf-rt-transports-http-netty-server-3.2.14.jar new file mode 100644 index 0000000..6efb039 Binary files /dev/null and b/lib/cxf-rt-transports-http-netty-server-3.2.14.jar differ diff --git a/lib/cxf-rt-transports-jms-3.2.14.jar b/lib/cxf-rt-transports-jms-3.2.14.jar new file mode 100644 index 0000000..9b0977e Binary files /dev/null and b/lib/cxf-rt-transports-jms-3.2.14.jar differ diff --git a/lib/cxf-rt-transports-local-3.2.14.jar b/lib/cxf-rt-transports-local-3.2.14.jar new file mode 100644 index 0000000..3313f21 Binary files /dev/null and b/lib/cxf-rt-transports-local-3.2.14.jar differ diff --git a/lib/cxf-rt-transports-udp-3.2.14.jar b/lib/cxf-rt-transports-udp-3.2.14.jar new file mode 100644 index 0000000..4f999e9 Binary files /dev/null and b/lib/cxf-rt-transports-udp-3.2.14.jar differ diff --git a/lib/cxf-rt-ws-addr-3.2.14.jar b/lib/cxf-rt-ws-addr-3.2.14.jar new file mode 100644 index 0000000..e1bd97b Binary files /dev/null and b/lib/cxf-rt-ws-addr-3.2.14.jar differ diff --git a/lib/cxf-rt-ws-mex-3.2.14.jar b/lib/cxf-rt-ws-mex-3.2.14.jar new file mode 100644 index 0000000..abd793a Binary files /dev/null and b/lib/cxf-rt-ws-mex-3.2.14.jar differ diff --git a/lib/cxf-rt-ws-policy-3.2.14.jar b/lib/cxf-rt-ws-policy-3.2.14.jar new file mode 100644 index 0000000..10c7f21 Binary files /dev/null and b/lib/cxf-rt-ws-policy-3.2.14.jar differ diff --git a/lib/cxf-rt-ws-rm-3.2.14.jar b/lib/cxf-rt-ws-rm-3.2.14.jar new file mode 100644 index 0000000..40455e8 Binary files /dev/null and b/lib/cxf-rt-ws-rm-3.2.14.jar differ diff --git a/lib/cxf-rt-ws-security-3.2.14.jar b/lib/cxf-rt-ws-security-3.2.14.jar new file mode 100644 index 0000000..20a10ec Binary files /dev/null and b/lib/cxf-rt-ws-security-3.2.14.jar differ diff --git a/lib/cxf-rt-wsdl-3.2.14.jar b/lib/cxf-rt-wsdl-3.2.14.jar new file mode 100644 index 0000000..f356927 Binary files /dev/null and b/lib/cxf-rt-wsdl-3.2.14.jar differ diff --git a/lib/cxf-services-sts-core-3.2.14.jar b/lib/cxf-services-sts-core-3.2.14.jar new file mode 100644 index 0000000..2a88c2d Binary files /dev/null and b/lib/cxf-services-sts-core-3.2.14.jar differ diff --git a/lib/cxf-services-ws-discovery-api-3.2.14.jar b/lib/cxf-services-ws-discovery-api-3.2.14.jar new file mode 100644 index 0000000..1d153b8 Binary files /dev/null and b/lib/cxf-services-ws-discovery-api-3.2.14.jar differ diff --git a/lib/cxf-services-ws-discovery-service-3.2.14.jar b/lib/cxf-services-ws-discovery-service-3.2.14.jar new file mode 100644 index 0000000..b84cb2a Binary files /dev/null and b/lib/cxf-services-ws-discovery-service-3.2.14.jar differ diff --git a/lib/cxf-services-wsn-api-3.2.14.jar b/lib/cxf-services-wsn-api-3.2.14.jar new file mode 100644 index 0000000..dbd3277 Binary files /dev/null and b/lib/cxf-services-wsn-api-3.2.14.jar differ diff --git a/lib/cxf-services-wsn-core-3.2.14.jar b/lib/cxf-services-wsn-core-3.2.14.jar new file mode 100644 index 0000000..f0f7df5 Binary files /dev/null and b/lib/cxf-services-wsn-core-3.2.14.jar differ diff --git a/lib/cxf-tools-common-3.2.14.jar b/lib/cxf-tools-common-3.2.14.jar new file mode 100644 index 0000000..491ef6a Binary files /dev/null and b/lib/cxf-tools-common-3.2.14.jar differ diff --git a/lib/cxf-tools-corba-3.2.14.jar b/lib/cxf-tools-corba-3.2.14.jar new file mode 100644 index 0000000..7dd4f06 Binary files /dev/null and b/lib/cxf-tools-corba-3.2.14.jar differ diff --git a/lib/cxf-tools-java2ws-3.2.14.jar b/lib/cxf-tools-java2ws-3.2.14.jar new file mode 100644 index 0000000..efe3bef Binary files /dev/null and b/lib/cxf-tools-java2ws-3.2.14.jar differ diff --git a/lib/cxf-tools-misctools-3.2.14.jar b/lib/cxf-tools-misctools-3.2.14.jar new file mode 100644 index 0000000..a8db249 Binary files /dev/null and b/lib/cxf-tools-misctools-3.2.14.jar differ diff --git a/lib/cxf-tools-validator-3.2.14.jar b/lib/cxf-tools-validator-3.2.14.jar new file mode 100644 index 0000000..97ab2d9 Binary files /dev/null and b/lib/cxf-tools-validator-3.2.14.jar differ diff --git a/lib/cxf-tools-wadlto-jaxrs-3.2.14.jar b/lib/cxf-tools-wadlto-jaxrs-3.2.14.jar new file mode 100644 index 0000000..0a38e40 Binary files /dev/null and b/lib/cxf-tools-wadlto-jaxrs-3.2.14.jar differ diff --git a/lib/cxf-tools-wsdlto-core-3.2.14.jar b/lib/cxf-tools-wsdlto-core-3.2.14.jar new file mode 100644 index 0000000..e6add10 Binary files /dev/null and b/lib/cxf-tools-wsdlto-core-3.2.14.jar differ diff --git a/lib/cxf-tools-wsdlto-databinding-jaxb-3.2.14.jar b/lib/cxf-tools-wsdlto-databinding-jaxb-3.2.14.jar new file mode 100644 index 0000000..d330a52 Binary files /dev/null and b/lib/cxf-tools-wsdlto-databinding-jaxb-3.2.14.jar differ diff --git a/lib/cxf-tools-wsdlto-frontend-javascript-3.2.14.jar b/lib/cxf-tools-wsdlto-frontend-javascript-3.2.14.jar new file mode 100644 index 0000000..9b85c84 Binary files /dev/null and b/lib/cxf-tools-wsdlto-frontend-javascript-3.2.14.jar differ diff --git a/lib/cxf-tools-wsdlto-frontend-jaxws-3.2.14.jar b/lib/cxf-tools-wsdlto-frontend-jaxws-3.2.14.jar new file mode 100644 index 0000000..15c894e Binary files /dev/null and b/lib/cxf-tools-wsdlto-frontend-jaxws-3.2.14.jar differ diff --git a/lib/cxf-xjc-boolean-3.2.3.jar b/lib/cxf-xjc-boolean-3.2.3.jar new file mode 100644 index 0000000..02ab6ce Binary files /dev/null and b/lib/cxf-xjc-boolean-3.2.3.jar differ diff --git a/lib/cxf-xjc-bug671-3.2.3.jar b/lib/cxf-xjc-bug671-3.2.3.jar new file mode 100644 index 0000000..6b52a3d Binary files /dev/null and b/lib/cxf-xjc-bug671-3.2.3.jar differ diff --git a/lib/cxf-xjc-dv-3.2.3.jar b/lib/cxf-xjc-dv-3.2.3.jar new file mode 100644 index 0000000..07969c3 Binary files /dev/null and b/lib/cxf-xjc-dv-3.2.3.jar differ diff --git a/lib/cxf-xjc-javadoc-3.2.3.jar b/lib/cxf-xjc-javadoc-3.2.3.jar new file mode 100644 index 0000000..7cf62ba Binary files /dev/null and b/lib/cxf-xjc-javadoc-3.2.3.jar differ diff --git a/lib/cxf-xjc-runtime-3.2.3.jar b/lib/cxf-xjc-runtime-3.2.3.jar new file mode 100644 index 0000000..a902063 Binary files /dev/null and b/lib/cxf-xjc-runtime-3.2.3.jar differ diff --git a/lib/cxf-xjc-ts-3.2.3.jar b/lib/cxf-xjc-ts-3.2.3.jar new file mode 100644 index 0000000..87ceb9a Binary files /dev/null and b/lib/cxf-xjc-ts-3.2.3.jar differ diff --git a/lib/finekit-10.0.jar b/lib/finekit-10.0.jar new file mode 100644 index 0000000..f4482fc Binary files /dev/null and b/lib/finekit-10.0.jar differ diff --git a/lib/jasypt-1.9.3.jar b/lib/jasypt-1.9.3.jar new file mode 100644 index 0000000..f4c4606 Binary files /dev/null and b/lib/jasypt-1.9.3.jar differ diff --git a/lib/java-support-7.3.0.jar b/lib/java-support-7.3.0.jar new file mode 100644 index 0000000..fbd8a18 Binary files /dev/null and b/lib/java-support-7.3.0.jar differ diff --git a/lib/javax.annotation-api-1.3.jar b/lib/javax.annotation-api-1.3.jar new file mode 100644 index 0000000..3f9da00 Binary files /dev/null and b/lib/javax.annotation-api-1.3.jar differ diff --git a/lib/javax.servlet-api-3.1.0.jar b/lib/javax.servlet-api-3.1.0.jar new file mode 100644 index 0000000..6b14c3d Binary files /dev/null and b/lib/javax.servlet-api-3.1.0.jar differ diff --git a/lib/javax.ws.rs-api-2.1.1.jar b/lib/javax.ws.rs-api-2.1.1.jar new file mode 100644 index 0000000..3eabbf0 Binary files /dev/null and b/lib/javax.ws.rs-api-2.1.1.jar differ diff --git a/lib/jaxb-core-2.2.11.jar b/lib/jaxb-core-2.2.11.jar new file mode 100644 index 0000000..f3c8412 Binary files /dev/null and b/lib/jaxb-core-2.2.11.jar differ diff --git a/lib/jcl-over-slf4j-1.7.26.jar b/lib/jcl-over-slf4j-1.7.26.jar new file mode 100644 index 0000000..b060a0d Binary files /dev/null and b/lib/jcl-over-slf4j-1.7.26.jar differ diff --git a/lib/jettison-1.4.1.jar b/lib/jettison-1.4.1.jar new file mode 100644 index 0000000..e6e593b Binary files /dev/null and b/lib/jettison-1.4.1.jar differ diff --git a/lib/jetty-continuation-9.4.30.v20200611.jar b/lib/jetty-continuation-9.4.30.v20200611.jar new file mode 100644 index 0000000..0385461 Binary files /dev/null and b/lib/jetty-continuation-9.4.30.v20200611.jar differ diff --git a/lib/jetty-http-9.4.30.v20200611.jar b/lib/jetty-http-9.4.30.v20200611.jar new file mode 100644 index 0000000..bc05810 Binary files /dev/null and b/lib/jetty-http-9.4.30.v20200611.jar differ diff --git a/lib/jetty-io-9.4.30.v20200611.jar b/lib/jetty-io-9.4.30.v20200611.jar new file mode 100644 index 0000000..f91c8db Binary files /dev/null and b/lib/jetty-io-9.4.30.v20200611.jar differ diff --git a/lib/jetty-security-9.4.30.v20200611.jar b/lib/jetty-security-9.4.30.v20200611.jar new file mode 100644 index 0000000..52221c3 Binary files /dev/null and b/lib/jetty-security-9.4.30.v20200611.jar differ diff --git a/lib/jetty-server-9.4.30.v20200611.jar b/lib/jetty-server-9.4.30.v20200611.jar new file mode 100644 index 0000000..1da23ec Binary files /dev/null and b/lib/jetty-server-9.4.30.v20200611.jar differ diff --git a/lib/jetty-util-9.4.30.v20200611.jar b/lib/jetty-util-9.4.30.v20200611.jar new file mode 100644 index 0000000..b2330d5 Binary files /dev/null and b/lib/jetty-util-9.4.30.v20200611.jar differ diff --git a/lib/joda-time-2.9.jar b/lib/joda-time-2.9.jar new file mode 100644 index 0000000..340af06 Binary files /dev/null and b/lib/joda-time-2.9.jar differ diff --git a/lib/js-1.7R2.jar b/lib/js-1.7R2.jar new file mode 100644 index 0000000..2369f99 Binary files /dev/null and b/lib/js-1.7R2.jar differ diff --git a/lib/metrics-core-3.2.6.jar b/lib/metrics-core-3.2.6.jar new file mode 100644 index 0000000..cadf4df Binary files /dev/null and b/lib/metrics-core-3.2.6.jar differ diff --git a/lib/mina-core-2.0.21.jar b/lib/mina-core-2.0.21.jar new file mode 100644 index 0000000..7660a4e Binary files /dev/null and b/lib/mina-core-2.0.21.jar differ diff --git a/lib/neethi-3.1.1.jar b/lib/neethi-3.1.1.jar new file mode 100644 index 0000000..db72dc2 Binary files /dev/null and b/lib/neethi-3.1.1.jar differ diff --git a/lib/oauth-20100527.jar b/lib/oauth-20100527.jar new file mode 100644 index 0000000..e657953 Binary files /dev/null and b/lib/oauth-20100527.jar differ diff --git a/lib/oauth-provider-20100527.jar b/lib/oauth-provider-20100527.jar new file mode 100644 index 0000000..2bece29 Binary files /dev/null and b/lib/oauth-provider-20100527.jar differ diff --git a/lib/slf4j-api-1.7.26.jar b/lib/slf4j-api-1.7.26.jar new file mode 100644 index 0000000..d2f27ac Binary files /dev/null and b/lib/slf4j-api-1.7.26.jar differ diff --git a/lib/slf4j-jdk14-1.7.26.jar b/lib/slf4j-jdk14-1.7.26.jar new file mode 100644 index 0000000..cb1c784 Binary files /dev/null and b/lib/slf4j-jdk14-1.7.26.jar differ diff --git a/lib/spring-aop-4.3.27.RELEASE.jar b/lib/spring-aop-4.3.27.RELEASE.jar new file mode 100644 index 0000000..3702a51 Binary files /dev/null and b/lib/spring-aop-4.3.27.RELEASE.jar differ diff --git a/lib/spring-beans-4.3.27.RELEASE.jar b/lib/spring-beans-4.3.27.RELEASE.jar new file mode 100644 index 0000000..4cad334 Binary files /dev/null and b/lib/spring-beans-4.3.27.RELEASE.jar differ diff --git a/lib/spring-context-4.3.27.RELEASE.jar b/lib/spring-context-4.3.27.RELEASE.jar new file mode 100644 index 0000000..be46cf3 Binary files /dev/null and b/lib/spring-context-4.3.27.RELEASE.jar differ diff --git a/lib/spring-core-4.3.27.RELEASE.jar b/lib/spring-core-4.3.27.RELEASE.jar new file mode 100644 index 0000000..36a6276 Binary files /dev/null and b/lib/spring-core-4.3.27.RELEASE.jar differ diff --git a/lib/spring-expression-4.3.27.RELEASE.jar b/lib/spring-expression-4.3.27.RELEASE.jar new file mode 100644 index 0000000..ce7c807 Binary files /dev/null and b/lib/spring-expression-4.3.27.RELEASE.jar differ diff --git a/lib/spring-web-4.3.27.RELEASE.jar b/lib/spring-web-4.3.27.RELEASE.jar new file mode 100644 index 0000000..6b1ae44 Binary files /dev/null and b/lib/spring-web-4.3.27.RELEASE.jar differ diff --git a/lib/sso.jar b/lib/sso.jar new file mode 100644 index 0000000..24e87e3 Binary files /dev/null and b/lib/sso.jar differ diff --git a/lib/stax2-api-3.1.4.jar b/lib/stax2-api-3.1.4.jar new file mode 100644 index 0000000..dded036 Binary files /dev/null and b/lib/stax2-api-3.1.4.jar differ diff --git a/lib/velocity-engine-core-2.0.jar b/lib/velocity-engine-core-2.0.jar new file mode 100644 index 0000000..c48d660 Binary files /dev/null and b/lib/velocity-engine-core-2.0.jar differ diff --git a/lib/woodstox-core-5.0.3.jar b/lib/woodstox-core-5.0.3.jar new file mode 100644 index 0000000..1c26864 Binary files /dev/null and b/lib/woodstox-core-5.0.3.jar differ diff --git a/lib/wsdl4j-1.6.3.jar b/lib/wsdl4j-1.6.3.jar new file mode 100644 index 0000000..b9c10b9 Binary files /dev/null and b/lib/wsdl4j-1.6.3.jar differ diff --git a/lib/xml-resolver-1.2.jar b/lib/xml-resolver-1.2.jar new file mode 100644 index 0000000..e535bdc Binary files /dev/null and b/lib/xml-resolver-1.2.jar differ diff --git a/lib/xmlschema-core-2.2.5.jar b/lib/xmlschema-core-2.2.5.jar new file mode 100644 index 0000000..b49a861 Binary files /dev/null and b/lib/xmlschema-core-2.2.5.jar differ diff --git a/plugin.xml b/plugin.xml new file mode 100644 index 0000000..ad1ce6f --- /dev/null +++ b/plugin.xml @@ -0,0 +1,24 @@ + + + com.fr.plugin.hbir.sso + + yes + 1.1.4 + 10.0 + 2018-07-31 + louis + + + com.fr.plugin.hbir + + com.fanruan.api + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/LocaleFinder.java b/src/main/java/com/fr/plugin/hbir/LocaleFinder.java new file mode 100644 index 0000000..96be995 --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/LocaleFinder.java @@ -0,0 +1,37 @@ + /* + * Copyright (C), 2018-2020 + * Project: starter + * FileName: LocaleFinder + * Author: Louis + * Date: 2020/8/31 22:19 + */ + package com.fr.plugin.hbir; + + import com.fr.intelli.record.Focus; +import com.fr.intelli.record.Original; +import com.fr.record.analyzer.EnableMetrics; +import com.fr.stable.fun.impl.AbstractLocaleFinder; + +import static com.fr.plugin.hbir.config.SsoConfig.PLUGIN_ID; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @EnableMetrics + public class LocaleFinder extends AbstractLocaleFinder { + + @Override + @Focus(id = PLUGIN_ID, text = "Plugin-hbir", source = Original.PLUGIN) + public String find() { + return "com/fr/plugin/hbir/locale/lang"; + } + + @Override + public int currentAPILevel() { + return CURRENT_LEVEL; + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/PluginLifecycleMonitor.java b/src/main/java/com/fr/plugin/hbir/PluginLifecycleMonitor.java new file mode 100644 index 0000000..46906ce --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/PluginLifecycleMonitor.java @@ -0,0 +1,41 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: LifeCycleMonitorImpl + * Author: Louis + * Date: 2021/3/30 15:10 + */ + package com.fr.plugin.hbir; + + import com.fanruan.api.log.LogKit; + import com.fr.plugin.context.PluginContext; + import com.fr.plugin.observer.inner.AbstractPluginLifecycleMonitor; + import com.fr.plugin.hbir.config.SsoConfig; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + public class PluginLifecycleMonitor extends AbstractPluginLifecycleMonitor { + public PluginLifecycleMonitor() { + } + + @Override + public void afterRun(PluginContext pluginContext) { + SsoConfig.getInstance(); + boolean isStarted = StartServer.createServer(); + if (isStarted) { + LogKit.info("sso-PluginLifecycleMonitor-[WS]服务启动成功"); + } else { + LogKit.info("sso-PluginLifecycleMonitor-[WS]服务启动失败"); + } + } + + @Override + public void beforeStop(PluginContext pluginContext) { + + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/StartServer.java b/src/main/java/com/fr/plugin/hbir/StartServer.java new file mode 100644 index 0000000..42ac3d5 --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/StartServer.java @@ -0,0 +1,47 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: StartServer + * Author: Louis + * Date: 2021/7/12 10:59 + */ + package com.fr.plugin.hbir; + + import com.fanruan.api.log.LogKit; + import com.fr.plugin.hbir.config.SsoConfig; + import com.fr.plugin.hbir.service.UserManager; + import com.fr.plugin.hbir.service.UserManagerImpl; + import org.apache.cxf.jaxws.JaxWsServerFactoryBean; + + import static com.fr.plugin.hbir.service.UserManager.SERVICE_NAME; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + public class StartServer { + + public static boolean createServer() { + LogKit.info("sso-StartServer-WS start"); + publishServer(SERVICE_NAME, UserManager.class, new UserManagerImpl()); + return true; + } + + private static void publishServer(String servername, Class serviceClass, Object impBean) { + JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean(); + factory.setServiceClass(serviceClass); + factory.setServiceBean(impBean); + factory.setAddress(SsoConfig.getInstance().getWsUri() + servername); +// factory.setAddress(address + servername); + factory.create(); + } + +// public static String address = "http://localhost:8888/fr/ws"; // http://localhost:8888/fr/ws +// +// public static void main(String[] args){ +// boolean server = createServer(); +// } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/bean/DeptChange.java b/src/main/java/com/fr/plugin/hbir/bean/DeptChange.java new file mode 100644 index 0000000..60cedb0 --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/bean/DeptChange.java @@ -0,0 +1,46 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: DeptChange + * Author: Louis + * Date: 2021/7/14 21:57 + */ + package com.fr.plugin.hbir.bean; + + import javax.xml.bind.annotation.*; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @XmlAccessorType(XmlAccessType.FIELD) + @XmlType(name = "OrderDeptChange", propOrder = {"deptCode", "deptName"}) + @XmlRootElement(name = "DICT") + public class DeptChange { + @XmlElement(name = "DEPT_CODE", required = true) + private String deptCode; + @XmlElement(name = "DEPT_NAME", required = true) + private String deptName; + + public DeptChange() { + } + + public String getDeptCode() { + return deptCode; + } + + public void setDeptCode(String deptCode) { + this.deptCode = deptCode; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/bean/DeptChangeRequest.java b/src/main/java/com/fr/plugin/hbir/bean/DeptChangeRequest.java new file mode 100644 index 0000000..eefa5b3 --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/bean/DeptChangeRequest.java @@ -0,0 +1,34 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: DeptChangeRequest + * Author: Louis + * Date: 2021/7/14 21:54 + */ + package com.fr.plugin.hbir.bean; + + import javax.xml.bind.annotation.*; + import java.util.List; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @XmlAccessorType(XmlAccessType.FIELD) + @XmlType(name = "OrderDeptChangeRequest", propOrder = {"value"}) + @XmlRootElement + public class DeptChangeRequest extends Request { + @XmlElement(name = "VALUE", required = true) + private List value; + + public List getValue() { + return value; + } + + public void setValue(List value) { + this.value = value; + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/bean/DeptDelete.java b/src/main/java/com/fr/plugin/hbir/bean/DeptDelete.java new file mode 100644 index 0000000..ee29819 --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/bean/DeptDelete.java @@ -0,0 +1,56 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: DeptDelete + * Author: Louis + * Date: 2021/7/14 22:05 + */ + package com.fr.plugin.hbir.bean; + + import javax.xml.bind.annotation.*; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @XmlAccessorType(XmlAccessType.FIELD) + @XmlType(name = "OrderDeptDelete", propOrder = {"key", "deptCode", "time"}) + @XmlRootElement + public class DeptDelete { + @XmlElement(name = "KEY", required = false) + private String key; + @XmlElement(name = "DEPT_CODE", required = true) + private String deptCode; + @XmlElement(name = "TIME", required = false) + private String time; + + public DeptDelete() { + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getDeptCode() { + return deptCode; + } + + public void setDeptCode(String deptCode) { + this.deptCode = deptCode; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/bean/DeptDeleteRequest.java b/src/main/java/com/fr/plugin/hbir/bean/DeptDeleteRequest.java new file mode 100644 index 0000000..7ea8313 --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/bean/DeptDeleteRequest.java @@ -0,0 +1,34 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: DeptDeleteRequest + * Author: Louis + * Date: 2021/7/14 22:02 + */ + package com.fr.plugin.hbir.bean; + + import javax.xml.bind.annotation.*; + import java.util.List; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @XmlAccessorType(XmlAccessType.FIELD) + @XmlType(name = "OrderDeptDeleteRequest", propOrder = {"value"}) + @XmlRootElement + public class DeptDeleteRequest extends Request { + @XmlElement(name = "VALUE", required = true) + private List value; + + public List getValue() { + return value; + } + + public void setValue(List value) { + this.value = value; + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/bean/Request.java b/src/main/java/com/fr/plugin/hbir/bean/Request.java new file mode 100644 index 0000000..a86fcc7 --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/bean/Request.java @@ -0,0 +1,66 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: request + * Author: Louis + * Date: 2021/7/14 15:31 + */ + package com.fr.plugin.hbir.bean; + + import javax.xml.bind.annotation.*; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @XmlAccessorType(XmlAccessType.FIELD) + @XmlType(name = "OrderRequest", propOrder = {"aliasName", "tableName", "identification", "subscribers"}) + @XmlRootElement + public abstract class Request { + @XmlElement(name = "ALIASNAME", required = true) + private String aliasName; + @XmlElement(name = "TABLENAME", required = true) + private String tableName; + @XmlElement(name = "IDENTIFICATION", required = true) + private String identification; + @XmlElement(name = "SUBSCRIBERS", required = true) + private String subscribers; + + public Request() { + } + + public String getAliasName() { + return aliasName; + } + + public void setAliasName(String aliasName) { + this.aliasName = aliasName; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public String getIdentification() { + return identification; + } + + public void setIdentification(String identification) { + this.identification = identification; + } + + public String getSubscribers() { + return subscribers; + } + + public void setSubscribers(String subscribers) { + this.subscribers = subscribers; + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/bean/RequestAction.java b/src/main/java/com/fr/plugin/hbir/bean/RequestAction.java new file mode 100644 index 0000000..dec91f7 --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/bean/RequestAction.java @@ -0,0 +1,48 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: RequestAction + * Author: Louis + * Date: 2021/7/22 21:43 + */ + package com.fr.plugin.hbir.bean; + + import javax.xml.bind.annotation.XmlAccessType; + import javax.xml.bind.annotation.XmlAccessorType; + import javax.xml.bind.annotation.XmlElement; + import javax.xml.bind.annotation.XmlRootElement; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @XmlAccessorType(XmlAccessType.FIELD) + @XmlRootElement(name = "REQUEST") + public class RequestAction { + @XmlElement(name = "ACTION", required = false) + private String action; + @XmlElement(name = "PARG", required = true) + private String parg; + + public RequestAction() { + } + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public String getParg() { + return parg; + } + + public void setParg(String parg) { + this.parg = parg; + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/bean/Response.java b/src/main/java/com/fr/plugin/hbir/bean/Response.java new file mode 100644 index 0000000..ebc2b7e --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/bean/Response.java @@ -0,0 +1,60 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: Response + * Author: Louis + * Date: 2021/7/14 21:32 + */ + package com.fr.plugin.hbir.bean; + + import javax.xml.bind.annotation.*; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @XmlAccessorType(XmlAccessType.FIELD) + @XmlType(name = "OrderResponse", propOrder = {"resultCode", "resultContent"}) + @XmlRootElement + public class Response { + @XmlElement(name = "RESULT_CODE", required = true) + private String resultCode; + @XmlElement(name = "RESULT_CONTENT", required = true) + private String resultContent; + + public Response() { + } + + public static Response success() { + Response response = new Response(); + response.setResultCode("true"); + response.setResultContent("成功"); + return response; + } + + public static Response failed() { + Response response = new Response(); + response.setResultCode("false"); + response.setResultContent("失败"); + return response; + } + + public String getResultCode() { + return resultCode; + } + + public void setResultCode(String resultCode) { + this.resultCode = resultCode; + } + + public String getResultContent() { + return resultContent; + } + + public void setResultContent(String resultContent) { + this.resultContent = resultContent; + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/bean/UserChangeRequest.java b/src/main/java/com/fr/plugin/hbir/bean/UserChangeRequest.java new file mode 100644 index 0000000..2abaa62 --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/bean/UserChangeRequest.java @@ -0,0 +1,34 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: UserChangeRequest + * Author: Louis + * Date: 2021/7/14 21:07 + */ + package com.fr.plugin.hbir.bean; + + import javax.xml.bind.annotation.*; + import java.util.List; + + /** + *
+ * <用户新增和更新Request> + * + * @author Louis + * @since 1.0.0 + */ + @XmlAccessorType(XmlAccessType.FIELD) + @XmlType(name = "OrderUserChangeRequest", propOrder = {"value"}) + @XmlRootElement + public class UserChangeRequest extends Request { + @XmlElement(name = "VALUE", required = true) + private List value; + + public List getValue() { + return value; + } + + public void setValue(List value) { + this.value = value; + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/bean/UserData.java b/src/main/java/com/fr/plugin/hbir/bean/UserData.java new file mode 100644 index 0000000..b3a7b91 --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/bean/UserData.java @@ -0,0 +1,93 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: UserData + * Author: Louis + * Date: 2021/7/14 15:52 + */ + package com.fr.plugin.hbir.bean; + + import javax.xml.bind.annotation.*; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @XmlAccessorType(XmlAccessType.FIELD) + @XmlType(name = "OrderUserData", propOrder = {"empNo", "name", "departmentId", "jobName", "title", "phone", "flag"}) + @XmlRootElement(name = "DICT") + public class UserData { + @XmlElement(name = "EMP_NO", required = true) + private String empNo; + @XmlElement(name = "NAME", required = true) + private String name; + @XmlElement(name = "DEPT_CODE", required = true) + private String departmentId; + @XmlElement(name = "JOB_NAME", required = true) + private String jobName; + @XmlElement(name = "TITLE", required = true) + private String title; + @XmlElement(name = "PHONE", required = true) + private String phone; + @XmlElement(name = "FLAG", required = true) + private String flag; + + public String getEmpNo() { + return empNo; + } + + public void setEmpNo(String empNo) { + this.empNo = empNo; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDepartmentId() { + return departmentId; + } + + public void setDepartmentId(String departmentId) { + this.departmentId = departmentId; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getJobName() { + return jobName; + } + + public void setJobName(String jobName) { + this.jobName = jobName; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getFlag() { + return flag; + } + + public void setFlag(String flag) { + this.flag = flag; + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/bean/UserDelete.java b/src/main/java/com/fr/plugin/hbir/bean/UserDelete.java new file mode 100644 index 0000000..29dbb02 --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/bean/UserDelete.java @@ -0,0 +1,56 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: UserDelete + * Author: Louis + * Date: 2021/7/14 21:13 + */ + package com.fr.plugin.hbir.bean; + + import javax.xml.bind.annotation.*; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @XmlAccessorType(XmlAccessType.FIELD) + @XmlType(name = "OrderUserDelete", propOrder = {"key", "empNo", "time"}) + @XmlRootElement + public class UserDelete { + @XmlElement(name = "KEY", required = false) + private String key; + @XmlElement(name = "EMP_NO", required = true) + private String empNo; + @XmlElement(name = "TIME", required = false) + private String time; + + public UserDelete() { + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getEmpNo() { + return empNo; + } + + public void setEmpNo(String empNo) { + this.empNo = empNo; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/bean/UserDeleteRequest.java b/src/main/java/com/fr/plugin/hbir/bean/UserDeleteRequest.java new file mode 100644 index 0000000..43fe817 --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/bean/UserDeleteRequest.java @@ -0,0 +1,34 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: UserDeleteRequest + * Author: Louis + * Date: 2021/7/14 21:12 + */ + package com.fr.plugin.hbir.bean; + + import javax.xml.bind.annotation.*; + import java.util.List; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @XmlAccessorType(XmlAccessType.FIELD) + @XmlType(name = "OrderUserDeleteRequest", propOrder = {"value"}) + @XmlRootElement + public class UserDeleteRequest extends Request { + @XmlElement(name = "VALUE", required = true) + private List value; + + public List getValue() { + return value; + } + + public void setValue(List value) { + this.value = value; + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/bean/UserDict.java b/src/main/java/com/fr/plugin/hbir/bean/UserDict.java new file mode 100644 index 0000000..adae62f --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/bean/UserDict.java @@ -0,0 +1,298 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: UserDict + * Author: Louis + * Date: 2021/7/22 22:39 + */ + package com.fr.plugin.hbir.bean; + + import javax.xml.bind.annotation.XmlAccessType; + import javax.xml.bind.annotation.XmlAccessorType; + import javax.xml.bind.annotation.XmlElement; + import javax.xml.bind.annotation.XmlRootElement; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @XmlAccessorType(XmlAccessType.FIELD) + @XmlRootElement(name = "DICT") + public class UserDict { + @XmlElement(name = "KEY") + private String key; + @XmlElement(name = "NAME", required = true) + private String name; + @XmlElement(name = "EMP_NO", required = true) + private String empNo; + @XmlElement(name = "OLD_NO") + private String oldNo; + @XmlElement(name = "DEPT_CODE", required = true) + private String departmentId; + @XmlElement(name = "DEPT_NAME") + private String deptName; + @XmlElement(name = "INPUT_CODE") + private String inputCode; + @XmlElement(name = "SEX") + private String sex; + @XmlElement(name = "AGE") + private String age; + @XmlElement(name = "BIRTH") + private String birth; + @XmlElement(name = "CARD") + private String card; + @XmlElement(name = "JOB_CODE") + private String jobCode; + @XmlElement(name = "JOB_NAME") + private String jobName; + @XmlElement(name = "PHONE", required = true) + private String phone; + @XmlElement(name = "NATION_NAME") + private String nationName; + @XmlElement(name = "MARRUIAGE_NAME") + private String marruiageName; + @XmlElement(name = "POLITICAL_NAME") + private String politicalName; + @XmlElement(name = "EDUCATION_NAME") + private String educationName; + @XmlElement(name = "NATIVE_PLACE") + private String nativePlace; + @XmlElement(name = "FOREIGNANG_LEVEL") + private String foreignangLevel; + @XmlElement(name = "REMARK") + private String remark; + @XmlElement(name = "AUTHODEPTS") + private String authodepts; + @XmlElement(name = "PROPERTYS") + private String propertys; + @XmlElement(name = "RYID") + private String ryid; + @XmlElement(name = "FLAG", required = true) + private String flag; + @XmlElement(name = "TIME") + private String time; + @XmlElement(name = "TITLE") + private String title; + + public UserDict() { + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmpNo() { + return empNo; + } + + public void setEmpNo(String empNo) { + this.empNo = empNo; + } + + public String getOldNo() { + return oldNo; + } + + public void setOldNo(String oldNo) { + this.oldNo = oldNo; + } + + public String getDepartmentId() { + return departmentId; + } + + public void setDepartmentId(String departmentId) { + this.departmentId = departmentId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getInputCode() { + return inputCode; + } + + public void setInputCode(String inputCode) { + this.inputCode = inputCode; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public String getAge() { + return age; + } + + public void setAge(String age) { + this.age = age; + } + + public String getBirth() { + return birth; + } + + public void setBirth(String birth) { + this.birth = birth; + } + + public String getCard() { + return card; + } + + public void setCard(String card) { + this.card = card; + } + + public String getJobCode() { + return jobCode; + } + + public void setJobCode(String jobCode) { + this.jobCode = jobCode; + } + + public String getJobName() { + return jobName; + } + + public void setJobName(String jobName) { + this.jobName = jobName; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getNationName() { + return nationName; + } + + public void setNationName(String nationName) { + this.nationName = nationName; + } + + public String getMarruiageName() { + return marruiageName; + } + + public void setMarruiageName(String marruiageName) { + this.marruiageName = marruiageName; + } + + public String getPoliticalName() { + return politicalName; + } + + public void setPoliticalName(String politicalName) { + this.politicalName = politicalName; + } + + public String getEducationName() { + return educationName; + } + + public void setEducationName(String educationName) { + this.educationName = educationName; + } + + public String getNativePlace() { + return nativePlace; + } + + public void setNativePlace(String nativePlace) { + this.nativePlace = nativePlace; + } + + public String getForeignangLevel() { + return foreignangLevel; + } + + public void setForeignangLevel(String foreignangLevel) { + this.foreignangLevel = foreignangLevel; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getAuthodepts() { + return authodepts; + } + + public void setAuthodepts(String authodepts) { + this.authodepts = authodepts; + } + + public String getPropertys() { + return propertys; + } + + public void setPropertys(String propertys) { + this.propertys = propertys; + } + + public String getRyid() { + return ryid; + } + + public void setRyid(String ryid) { + this.ryid = ryid; + } + + public String getFlag() { + return flag; + } + + public void setFlag(String flag) { + this.flag = flag; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/config/SsoConfig.java b/src/main/java/com/fr/plugin/hbir/config/SsoConfig.java new file mode 100644 index 0000000..b401687 --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/config/SsoConfig.java @@ -0,0 +1,70 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: OneAccessConfig + * Author: Louis + * Date: 2021/3/30 9:38 + */ + package com.fr.plugin.hbir.config; + + import com.fanruan.api.util.StringKit; + import com.fr.config.*; + import com.fr.config.holder.Conf; + import com.fr.config.holder.factory.Holders; + import com.fr.intelli.record.Focus; + import com.fr.intelli.record.Original; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @Visualization(category = "Plugin-hbir_Group") + public class SsoConfig extends DefaultConfiguration { + public static final String PLUGIN_ID = "com.fr.plugin.hbir.sso"; + public static final String USER_INFO_URL = "http://xxxx:xxxx/portal/services/userinfo"; + public static final String WS_URL = "http://localhost:8888/fr/ws"; + + private static volatile SsoConfig config = null; + + @Focus(id = PLUGIN_ID, text = "Plugin-hbir", source = Original.PLUGIN) + public static SsoConfig getInstance() { + if (config == null) { + config = ConfigContext.getConfigInstance(SsoConfig.class); + } + return config; + } + + @Identifier(value = "systemCode", name = "Plugin-hbir_Config_SystemCode", description = "Plugin-hbir_Config_SystemCode_Description", status = Status.SHOW) + private Conf systemCode = Holders.simple(StringKit.EMPTY); + @Identifier(value = "userInfoUrl", name = "Plugin-hbir_Config_UserInfoUrl", description = "Plugin-hbir_Config_UserInfoUrl_Description", status = Status.SHOW) + private Conf userInfoUrl = Holders.simple(USER_INFO_URL); + @Identifier(value = "wsUri", name = "Plugin-hbir_Config_WsUri", description = "Plugin-hbir_Config_WsUri_Description", status = Status.SHOW) + private Conf wsUri = Holders.simple(WS_URL); + + public String getSystemCode() { + return systemCode.get(); + } + + public void setSystemCode(String systemCode) { + this.systemCode.set(systemCode); + } + + public String getUserInfoUrl() { + return userInfoUrl.get(); + } + + public void setUserInfoUrl(String userInfoUrl) { + this.userInfoUrl.set(userInfoUrl); + } + + public String getWsUri() { + return wsUri.get(); + } + + public void setWsUri(String wsUri) { + this.wsUri.set(wsUri); + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/kit/UserServiceKit.java b/src/main/java/com/fr/plugin/hbir/kit/UserServiceKit.java new file mode 100644 index 0000000..6d7e3df --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/kit/UserServiceKit.java @@ -0,0 +1,318 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: UserServiceKit + * Author: Louis + * Date: 2021/6/7 10:00 + */ + package com.fr.plugin.hbir.kit; + + import com.fanruan.api.log.LogKit; +import com.fanruan.api.util.StringKit; +import com.fr.decision.authority.AuthorityContext; +import com.fr.decision.authority.base.constant.SoftRoleType; +import com.fr.decision.authority.base.constant.type.operation.ManualOperationType; +import com.fr.decision.authority.data.BaseUserDataRecord; +import com.fr.decision.authority.data.CustomRole; +import com.fr.decision.authority.data.Post; +import com.fr.decision.authority.data.User; +import com.fr.decision.authority.data.personnel.DepRole; + import com.fr.decision.base.util.UUIDUtil; + import com.fr.decision.privilege.TransmissionTool; +import com.fr.decision.privilege.encrpt.PasswordValidator; +import com.fr.decision.webservice.bean.user.DepartmentPostBean; + import com.fr.decision.webservice.bean.user.RoleBean; + import com.fr.decision.webservice.bean.user.UserBean; +import com.fr.decision.webservice.bean.user.UserUpdateBean; +import com.fr.decision.webservice.exception.general.DuplicatedNameException; +import com.fr.decision.webservice.exception.general.SpecialCharProhibitException; +import com.fr.decision.webservice.exception.user.UserNotExistException; +import com.fr.decision.webservice.utils.CharLimitType; +import com.fr.decision.webservice.utils.UserSourceFactory; +import com.fr.decision.webservice.utils.WebServiceUtils; +import com.fr.decision.webservice.v10.login.kickout.KickOutConfig; +import com.fr.decision.webservice.v10.login.kickout.KickOutUserEvent; + import com.fr.decision.webservice.v10.user.CustomRoleService; + import com.fr.decision.webservice.v10.user.PositionService; +import com.fr.decision.webservice.v10.user.UserService; +import com.fr.event.EventDispatcher; +import com.fr.general.ComparatorUtils; +import com.fr.json.JSONObject; +import com.fr.stable.ArrayUtils; +import com.fr.stable.StringUtils; +import com.fr.stable.collections.CollectionUtils; +import com.fr.stable.query.QueryFactory; +import com.fr.stable.query.condition.QueryCondition; +import com.fr.stable.query.restriction.Restriction; +import com.fr.stable.query.restriction.RestrictionFactory; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + + /** + *
+ * + * 适配jar版本20210526 + * + * @author Louis + * @since 1.0.0 + */ + public class UserServiceKit extends UserService { + private static volatile UserServiceKit userServiceKit = null; + + public UserServiceKit() { + } + + public static UserServiceKit getInstance() { + if (userServiceKit == null) { + userServiceKit = new UserServiceKit(); + } + return userServiceKit; + } + + public int deleteUsers(UserUpdateBean var1) throws Exception { + String[] var2 = var1.getRemoveUserIds(); + int var3 = 0; + if (var2 != null) { + String[] var4 = var2; + int var5 = var2.length; + + for (int var6 = 0; var6 < var5; ++var6) { + String var7 = var4[var6]; + User var8 = (User) AuthorityContext.getInstance().getUserController().getById(var7); + EventDispatcher.fire(KickOutUserEvent.KickOutUser, new KickOutConfig(new UserNotExistException(), new String[]{var8.getUserName()})); + AuthorityContext.getInstance().getUserController().remove(var7); + ++var3; +// MetricRegistry.getMetric().submit(OperateMessage.build("Dec-Module-User_Manager", "Dec-User", var8.getDisplayName(), "Dec-Log_Delete")); + } + } + + return var3; + } + + public void addUser(UserBean var1) throws Exception { + String var2 = var1.getUsername(); + String var3 = var1.getMobile(); + String var4 = var1.getEmail(); + String var5 = TransmissionTool.decrypt(var1.getPassword()); + this.checkUsernameLegal(var2, CharLimitType.USER_LIMIT); + this.checkNonRequiredField(var3, CharLimitType.MOBILE_LIMIT); + this.checkNonRequiredField(var4, CharLimitType.EMAIL_LIMIT); + this.checkDuplicatedUser(var2); + String[] var6 = var1.getRoleIds(); + PasswordValidator var7 = UserSourceFactory.getInstance().getUserSource(ManualOperationType.KEY).getPasswordValidator(); + User var8 = (new User()).userName(var2).realName(var1.getRealName()).password(var7.encode(var2, var5)).email(var1.getEmail()).mobile(var1.getMobile()).creationType(ManualOperationType.KEY).lastOperationType(ManualOperationType.KEY).enable(true); + AuthorityContext.getInstance().getUserController().add(var8); + this.deleteSoftData(var8.getUserName()); + String var9 = var8.getId(); + if (ArrayUtils.isNotEmpty(var6)) { + String[] var10 = var6; + int var11 = var6.length; + + for (int var12 = 0; var12 < var11; ++var12) { + String var13 = var10[var12]; + UserSourceFactory.getInstance().checkSource(var8, (BaseUserDataRecord) AuthorityContext.getInstance().getCustomRoleController().getById(var13)); + AuthorityContext.getInstance().getUserController().addUserToCustomRole(var9, var13); + } + } + + if (!CollectionUtils.isEmpty(var1.getDepartmentPostIds())) { + Iterator var14 = var1.getDepartmentPostIds().iterator(); + + while (var14.hasNext()) { + String var15 = (String) var14.next(); + if (StringUtils.isNotEmpty(var15)) { + DepRole var16 = WebServiceUtils.parseUniqueDepartmentPostId(var15); + UserSourceFactory.getInstance().checkSource(var8, (BaseUserDataRecord) AuthorityContext.getInstance().getDepartmentController().getById(var16.getDepartmentId())); + AuthorityContext.getInstance().getUserController().addUserToDepartmentAndPost(var9, var16.getDepartmentId(), var16.getPostId()); + } + } + } + +// MetricRegistry.getMetric().submit(OperateMessage.build("Dec-Module-User_Manager", "Dec-User", var8.getDisplayName(), "Dec-Log_Add")); + } + + public void editUserInfo(UserBean var1) throws Exception { + User var2 = (User) AuthorityContext.getInstance().getUserController().getById(var1.getId()); + String var3 = var1.getUsername(); + String var4 = var2.getUserName(); + String var5 = var1.getRealName(); + String var6 = var1.getEmail(); + String var7 = var1.getMobile(); + this.checkNonRequiredField(var7, CharLimitType.MOBILE_LIMIT); + this.checkNonRequiredField(var6, CharLimitType.EMAIL_LIMIT); + if (StringUtils.isNotEmpty(var3) && !ComparatorUtils.equals(var4, var3)) { + this.checkDuplicatedUser(var3); + } + + if (StringUtils.isNotEmpty(var5)) { + var2.setRealName(var5); + } + + var2.setEmail(var6); + var2.setMobile(var7); + AuthorityContext.getInstance().getUserController().update(var2.lastOperationType(ManualOperationType.KEY)); + this.deleteSoftData(var2.getUserName()); +// MetricRegistry.getMetric().submit(OperateMessage.build("Dec-Module-User_Manager", "Dec-User", var2.getDisplayName(), "Dec-Log_Update")); + } + + public UserBean createUserBean(JSONObject params) throws Exception { + UserBean userBean = new UserBean(); + userBean.setUsername(params.getString("username")); + userBean.setEnable(!params.getBoolean("disabled")); + if (params.has("name")) { + userBean.setRealName(params.getString("name")); + } + if (params.has("mobile")) { + userBean.setMobile(params.getString("mobile")); + } + if (params.has("email")) { + userBean.setEmail(params.getString("email")); + } + userBean.setPassword(TransmissionTool.defaultEncrypt(params.getString("username") + "123456")); + if (params.has("organizationId") || params.has("organizationid")) { + String organizationId = params.has("organizationId") ? params.getString("organizationId") : params.getString("organizationid", StringUtils.EMPTY); + List departmentPostIds = createDepartmentPostIds(organizationId, params.getString("position")); + userBean.setDepartmentPostIds(departmentPostIds); + } + return userBean; + } + + /** + * 部门id转为部门职务组合list + * + * @param departmentPostId + * @param title + * @return + * @throws Exception + */ + public List createDepartmentPostIds(String departmentPostId, String title) throws Exception { + List departmentPostIds = new ArrayList<>(); + // 职务处理 + String positionId = positionSynOperation(title, departmentPostId); + if (StringKit.isNotBlank(positionId)) { + departmentPostId = departmentPostId + "@@@" + positionId; + } + departmentPostIds.add(departmentPostId); + return departmentPostIds; + } + + /** + * 职务同步操作 + * + * @param title + * @return + * @throws Exception + */ + public String positionSynOperation(String title, String departmentId) throws Exception { + String position = StringKit.isNotBlank(title) ? title : "职员"; + Post post = AuthorityContext.getInstance().getPostController().findOne(QueryFactory.create().addRestriction(RestrictionFactory.eq("name", position))); + String positionId; + if (post == null) { + positionId = PositionService.getInstance().addPosition(position, position); + } else { + positionId = post.getId(); + } + List departmentPostBeanList = PositionService.getInstance().getPositionsUnderParentDepartment(getAdminUserId(), departmentId, position); + if (departmentPostBeanList == null || departmentPostBeanList.isEmpty()) { + try { + AuthorityContext.getInstance().getPostController().addPostToDepartment(positionId, departmentId); + } catch (Exception e) { + LogKit.info("oneaccess-UserServiceKit-positionSynOperation-addPostToDepartmentFailed-position:{}, departmentId:{}", positionId + position, departmentId); + LogKit.error(e.getMessage(), e); + } + } + return positionId; + } + + public String roleSynOperation(String role) throws Exception { + QueryCondition condition = QueryFactory.create().addRestriction(RestrictionFactory.eq("name", role)); + CustomRole customRole = AuthorityContext.getInstance().getCustomRoleController().findOne(condition); + if (customRole != null) { + return customRole.getId(); + } + String roleId = UUIDUtil.generate(); + RoleBean roleBean = new RoleBean(role, roleId, role, ManualOperationType.KEY.toInteger()); + CustomRoleService.getInstance().addCustomRole(this.getAdminUserId(), roleBean); + return roleId; + } + + /** + * 获取管理员id + * + * @return + * @throws Exception + */ + public String getAdminUserId() throws Exception { + List adminUserIdList = UserService.getInstance().getAdminUserIdList(); + if (adminUserIdList.isEmpty()) { + return "admin"; + } + return StringKit.isNotBlank(adminUserIdList.get(0)) ? adminUserIdList.get(0) : "admin"; + } + + + @Override + public void editUser(UserBean userBean) throws Exception { + super.editUser(userBean); + this.forbidUser(userBean.getId(), userBean.isEnable()); + this.updateUserRoles(this.getAdminUserId(), userBean); + this.updateUserDepartmentPost(this.getAdminUserId(), userBean); + } + + public UserBean updateUserBean(JSONObject params) throws Exception { + User user = this.getUserByUserId(params.getString("id")); + if (user == null) { + return null; + } + UserBean userBean = new UserBean(); + userBean.setId(params.getString("id")); + userBean.setUsername(params.getString("username")); + userBean.setEnable(!params.getBoolean("disabled")); + if (params.has("name")) { + userBean.setRealName(params.getString("name")); + } else { + userBean.setRealName(user.getRealName()); + } + if (params.has("mobile")) { + userBean.setMobile(params.getString("mobile")); + } else { + userBean.setMobile(user.getMobile()); + } + if (params.has("email")) { + userBean.setEmail(params.getString("email")); + } else { + userBean.setEmail(user.getEmail()); + } + if (params.has("organizationId")) { + List departmentPostIds = createDepartmentPostIds(params.getString("organizationId"), params.getString("position")); + userBean.setDepartmentPostIds(departmentPostIds); + } + return userBean; + } + + private void checkNonRequiredField(String var1, CharLimitType var2) { + if (StringUtils.isNotEmpty(var1) && WebServiceUtils.containIllegalChars(var2, var1)) { + throw new SpecialCharProhibitException(); + } + } + + private void checkDuplicatedUser(String var1) throws Exception { + User var2 = this.getUserByUserName(var1); + if (var2 != null) { + throw new DuplicatedNameException(); + } + } + + private void deleteSoftData(String var1) throws Exception { + QueryCondition var2 = QueryFactory.create().addRestriction(RestrictionFactory.and(new Restriction[]{RestrictionFactory.eq("deletedName", var1), RestrictionFactory.eq("type", SoftRoleType.USER)})); + AuthorityContext.getInstance().getSoftDataController().remove(var2); + } + + private void checkUsernameLegal(String var1, CharLimitType var2) throws SpecialCharProhibitException { + if (WebServiceUtils.containSQLChars(var1) || WebServiceUtils.containIllegalChars(var2, var1)) { + throw new SpecialCharProhibitException(); + } + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/request/OAuthLogin.java b/src/main/java/com/fr/plugin/hbir/request/OAuthLogin.java new file mode 100644 index 0000000..4cf64d6 --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/request/OAuthLogin.java @@ -0,0 +1,175 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: OAuthLogin + * Author: Louis + * Date: 2021/3/30 22:09 + */ + package com.fr.plugin.hbir.request; + + import com.fanruan.api.decision.login.LoginKit; + import com.fanruan.api.decision.user.UserKit; + import com.fanruan.api.log.LogKit; + import com.fanruan.api.net.NetworkKit; + import com.fanruan.api.net.http.HttpKit; + import com.fanruan.api.net.http.rs.HttpRequest; + import com.fanruan.api.util.RenderKit; + import com.fanruan.api.util.StringKit; + import com.fr.decision.fun.impl.AbstractGlobalRequestFilterProvider; + import com.fr.decision.webservice.utils.DecisionServiceConstants; + import com.fr.decision.webservice.v10.login.LoginService; + import com.fr.plugin.hbir.config.SsoConfig; + import com.fr.third.org.apache.http.entity.ContentType; + import com.fr.third.org.apache.http.entity.StringEntity; + import org.dom4j.DocumentException; + + import javax.servlet.FilterChain; + import javax.servlet.FilterConfig; + import javax.servlet.http.HttpServletRequest; + import javax.servlet.http.HttpServletResponse; + import java.util.HashMap; + import java.util.Map; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + public class OAuthLogin extends AbstractGlobalRequestFilterProvider { + public static final String REMOTE_DESIGN = "/remote/design"; + public static final String RESOURCES_PATH = "/resources"; + public static final String FILE_PATH = "/file"; + public static final String SYSTEM_INFO = "/system/info"; + public static final String MATERIALS_MIN_JS_MAP = "/materials.min.js.map"; + public static final String LOGIN_PATH = "/login"; + public static final String LOGIN_OTHER = "/login/"; + public static final String LOGOUT_PATH = "/logout"; + public static final String USER_LANGUAGE = "/v10/user/language"; + public static final String SYSTEM_HEALTH = "/system/health"; + + public static final String VALIDATE_USER_XML = "${sessionId}${systemCode}
]]>"; + public static final String XML_LABEL_START = "<USER_CODE>"; + public static final String XML_LABEL_END = "</USER_CODE>"; + + private SsoConfig config; + + /** + * 解析xml结果 + * + * @param xml + * @return + */ + public static String parseUserXML(String xml) { + int startIndex = xml.indexOf(XML_LABEL_START) + XML_LABEL_START.length(); + int endIndex = xml.indexOf(XML_LABEL_END); + return xml.substring(startIndex, endIndex); + } + + + /** + * 过滤器名称 + * + * @return + */ + @Override + public String filterName() { + return "hbirFilter"; + } + + /** + * 过滤规则 + * + * @return + */ + @Override + public String[] urlPatterns() { + return new String[]{"/*"}; + } + + /** + * 过滤器初始化 + * + * @param filterConfig + */ + @Override + public void init(FilterConfig filterConfig) { + this.config = SsoConfig.getInstance(); + super.init(filterConfig); + } + + /** + * 过滤器处理 + * + * @param request + * @param response + * @param filterChain + */ + @Override + public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) { + try { + if (operation(request, response)) { + filterChain.doFilter(request, response); + } + } catch (Exception e) { + LogKit.error(e.getMessage(), e); + } + } + + /** + * 用户验证登陆操作 + * + * @param req + * @param res + * @throws Exception + */ + private boolean operation(HttpServletRequest req, HttpServletResponse res) throws Exception { + String pathInfo = (req.getPathInfo() != null) ? req.getPathInfo() : StringKit.EMPTY; +// LogKit.info("sso-OAuthLogin-operation-pathInfo:{}", pathInfo); + if (pathInfo.startsWith(REMOTE_DESIGN) || pathInfo.startsWith(LOGIN_OTHER) + || StringKit.equals(LOGIN_PATH, pathInfo) || pathInfo.startsWith(SYSTEM_HEALTH) + || pathInfo.startsWith(RESOURCES_PATH) || pathInfo.startsWith(LOGOUT_PATH) + || pathInfo.startsWith(SYSTEM_INFO) || pathInfo.startsWith(MATERIALS_MIN_JS_MAP) + || pathInfo.startsWith(USER_LANGUAGE) || pathInfo.startsWith(FILE_PATH)) { + return true; + } + String token = NetworkKit.getHTTPRequestParameter(req, "token"); + if (StringKit.isBlank(token)) { + return true; + } + LogKit.info("sso-OAuthLogin-operation-token:{}", token); + String username = getUsername(token); + if (StringKit.isBlank(username) || !UserKit.existUsername(username)) { + return true; + } + if (LoginService.getInstance().isLogged(req) && StringKit.equals(username, LoginService.getInstance().getCurrentUserNameFromRequestCookie(req))) { + return true; + } + String tokenFR = LoginKit.login(req, res, username); + req.setAttribute(DecisionServiceConstants.FINE_AUTH_TOKEN_NAME, tokenFR); + return true; + } + + /** + * 通过凭证获得username + * + * @param token + * @return + */ + private String getUsername(String token) throws Exception { + Map params = new HashMap<>(); + params.put("sessionId", token); + params.put("systemCode", this.config.getSystemCode()); + String soapXml = RenderKit.renderParameter4Tpl(VALIDATE_USER_XML, params); + LogKit.info("sso-OAuthLogin-getUsername-soapXml:{}", soapXml); + StringEntity stringEntity = new StringEntity(soapXml, ContentType.create(ContentType.TEXT_XML.getMimeType(), "UTF-8")); + Map headers = new HashMap<>(); + headers.put("Content-Type", "text/xml;charset=UTF-8"); + headers.put("SOAPAction", ""); + headers.put("Accept-Encoding", "deflate"); + String res = HttpKit.executeAndParse(HttpRequest.custom().url(this.config.getUserInfoUrl()).post(stringEntity).headers(headers).build()); + LogKit.info("sso-OAuthLogin-getUsername-res:{}", res); + return parseUserXML(res); + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/service/UserManager.java b/src/main/java/com/fr/plugin/hbir/service/UserManager.java new file mode 100644 index 0000000..b138798 --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/service/UserManager.java @@ -0,0 +1,44 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: UserManager + * Author: Louis + * Date: 2021/7/12 11:32 + */ + package com.fr.plugin.hbir.service; + + import com.fr.plugin.hbir.bean.*; + + import javax.jws.WebParam; +import javax.jws.WebResult; +import javax.jws.WebService; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @WebService + public interface UserManager { + public static final String SERVICE_NAME = "/user"; + + @WebResult(name = "RESPONSE") + public Response addUser(@WebParam(name = "inputParam") String inputParam); + + @WebResult(name = "RESPONSE") + public Response editUser(@WebParam(name = "inputParam") String inputParam); + + @WebResult(name = "RESPONSE") + public Response deleteUser(@WebParam(name = "inputParam") String inputParam); + + @WebResult(name = "RESPONSE") + public Response addDept(@WebParam(name = "inputParam") String inputParam); + + @WebResult(name = "RESPONSE") + public Response updateDept(@WebParam(name = "inputParam") String inputParam); + + @WebResult(name = "RESPONSE") + public Response delDept(@WebParam(name = "inputParam") String inputParam); + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/service/UserManagerImpl.java b/src/main/java/com/fr/plugin/hbir/service/UserManagerImpl.java new file mode 100644 index 0000000..f5a456b --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/service/UserManagerImpl.java @@ -0,0 +1,211 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: UserManagerImpl + * Author: Louis + * Date: 2021/7/12 11:34 + */ + package com.fr.plugin.hbir.service; + + import com.fanruan.api.log.LogKit; +import com.fanruan.api.util.StringKit; +import com.fr.decision.authority.AuthorityContext; +import com.fr.decision.authority.base.constant.type.operation.ManualOperationType; +import com.fr.decision.authority.data.Department; +import com.fr.decision.authority.data.User; +import com.fr.decision.webservice.bean.user.DepartmentPostBean; +import com.fr.decision.webservice.bean.user.UserBean; +import com.fr.decision.webservice.bean.user.UserUpdateBean; +import com.fr.decision.webservice.exception.general.DuplicatedNameException; +import com.fr.decision.webservice.v10.user.DepartmentService; +import com.fr.general.ComparatorUtils; +import com.fr.plugin.hbir.bean.*; +import com.fr.plugin.hbir.kit.UserServiceKit; + import com.fr.plugin.hbir.utils.JaxbUtil; + import com.fr.stable.query.QueryFactory; +import com.fr.stable.query.condition.QueryCondition; +import com.fr.stable.query.restriction.Restriction; +import com.fr.stable.query.restriction.RestrictionFactory; + +import javax.jws.WebService; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + @WebService(endpointInterface = "com.fr.plugin.hbir.service.UserManager", serviceName = UserManager.SERVICE_NAME) + public class UserManagerImpl implements UserManager { + public static final String DECISION_DEP_ROOT = "decision-dep-root"; + + @Override + public Response addUser(String request) { + try { + LogKit.info("hbir-UserManagerImpl-addUser-request:{}", request); + String userXml = cutDICT(request); + UserData userData = JaxbUtil.converyToJavaBean(userXml, UserData.class); + UserBean userBean = new UserBean(); + userBean.setUsername(userData.getEmpNo()); + userBean.setRealName(userData.getName()); + userBean.setMobile(userData.getPhone()); + userBean.setEnable(StringKit.equals(userData.getFlag(), "0")); + if (StringKit.isNotBlank(userData.getJobName())) { + String roleId = UserServiceKit.getInstance().roleSynOperation(userData.getJobName()); + userBean.setRoleIds(new String[]{roleId}); + } + if (StringKit.isNotBlank(userData.getDepartmentId())) { + List departmentPostIds = UserServiceKit.getInstance().createDepartmentPostIds(userData.getDepartmentId(), userData.getTitle()); + userBean.setDepartmentPostIds(departmentPostIds); + } + userBean.setPassword(StringKit.EMPTY); + UserServiceKit.getInstance().addUser(userBean); + UserServiceKit.getInstance().forbidUser(userBean.getId(), userBean.isEnable()); + return Response.success(); + } catch (Exception e) { + LogKit.error(e.getMessage(), e); + return Response.failed(); + } + } + + private String cutDICT(String xml) { + String labelStart = ""; + String labelEnd = ""; + int startIndex = xml.indexOf(labelStart) + labelStart.length(); + int endIndex = xml.indexOf(labelEnd); + return labelStart + xml.substring(startIndex, endIndex) + labelEnd; + } + + @Override + public Response editUser(String request) { + try { + LogKit.info("hbir-UserManagerImpl-editUser-request:{}", request); + String userXml = cutDICT(request); + UserData userData = JaxbUtil.converyToJavaBean(userXml, UserData.class); + User user = UserServiceKit.getInstance().getUserByUserName(userData.getEmpNo()); + if (user == null) { + return Response.failed(); + } + UserBean userBean = new UserBean(); + userBean.setId(user.getId()); + userBean.setUsername(userData.getEmpNo()); + userBean.setRealName(userData.getName()); + userBean.setMobile(userData.getPhone()); + userBean.setEnable(StringKit.equals(userData.getFlag(), "0")); + if (StringKit.isNotBlank(userData.getJobName())) { + String roleId = UserServiceKit.getInstance().roleSynOperation(userData.getJobName()); + userBean.setRoleIds(new String[]{roleId}); + } + if (StringKit.isNotBlank(userData.getDepartmentId())) { + List departmentPostIds = UserServiceKit.getInstance().createDepartmentPostIds(userData.getDepartmentId(), userData.getTitle()); + userBean.setDepartmentPostIds(departmentPostIds); + } + UserServiceKit.getInstance().editUser(userBean); + return Response.success(); + } catch (Exception e) { + LogKit.error(e.getMessage(), e); + return Response.failed(); + } + } + + @Override + public Response deleteUser(String request) { + try { + UserDeleteRequest userDeleteRequest = JaxbUtil.converyToJavaBean(request, UserDeleteRequest.class); + List userDeleteList = userDeleteRequest.getValue(); + Set removeUserIdSet = new HashSet<>(); + for (UserDelete userDelete : userDeleteList) { + User user = UserServiceKit.getInstance().getUserByUserName(userDelete.getEmpNo()); + removeUserIdSet.add(user.getId()); + } + UserUpdateBean userUpdateBean = new UserUpdateBean(); + userUpdateBean.setRemoveUserIds(removeUserIdSet.toArray(new String[0])); + UserServiceKit.getInstance().deleteUsers(userUpdateBean); + return Response.success(); + } catch (Exception e) { + LogKit.error(e.getMessage(), e); + return Response.failed(); + } + } + + @Override + public Response addDept(String request) { + try { + LogKit.info("hbir-UserManagerImpl-addDept-request:{}", request); + String deptXml = cutDICT(request); + DeptChange deptChange = JaxbUtil.converyToJavaBean(deptXml, DeptChange.class); + this.addDepartment(deptChange.getDeptCode(), DECISION_DEP_ROOT, deptChange.getDeptName()); + return Response.success(); + } catch (Exception e) { + LogKit.error(e.getMessage(), e); + return Response.failed(); + } + } + + private DepartmentPostBean addDepartment(String id, String pId, String depName) throws Exception { + if (ComparatorUtils.equals(pId, DECISION_DEP_ROOT)) { + pId = null; + } + this.checkDuplicatedDepartmentName(pId, depName); + Department department = (new Department()).id(id).name(depName).parentId(pId).creationType(ManualOperationType.KEY).lastOperationType(ManualOperationType.KEY).enable(true); + AuthorityContext.getInstance().getDepartmentController().add(department); +// MetricRegistry.getMetric().submit(OperateMessage.build("Dec-Module-User_Manager", "Dec-Department", this.getDepartmentFullPath(pId, depName, "/"), "Dec-Log_Add")); + return new DepartmentPostBean(department.getId(), false, false, department.getParentId(), "", department.getName()); + } + + private void checkDuplicatedDepartmentName(String parentId, String depName) throws Exception { + QueryCondition condition = QueryFactory.create().addRestriction(RestrictionFactory.and(new Restriction[]{RestrictionFactory.eq("name", depName), RestrictionFactory.eq("parentId", parentId)})); + Department sameNameDep = (Department) AuthorityContext.getInstance().getDepartmentController().findOne(condition); + if (sameNameDep != null) { + throw new DuplicatedNameException(); + } + } + + @Override + public Response updateDept(String request) { + try { + LogKit.info("hbir-UserManagerImpl-updateDept-request:{}", request); + String deptXml = cutDICT(request); + DeptChange deptChange = JaxbUtil.converyToJavaBean(deptXml, DeptChange.class); + this.editDepartment(deptChange.getDeptCode(), deptChange.getDeptName(), DECISION_DEP_ROOT); + return Response.success(); + } catch (Exception e) { + LogKit.error(e.getMessage(), e); + return Response.failed(); + } + } + + private void editDepartment(String departmentId, String depName, String pId) throws Exception { + if (ComparatorUtils.equals(pId, DECISION_DEP_ROOT)) { + pId = null; + } + Department department = AuthorityContext.getInstance().getDepartmentController().getById(departmentId); + String departmentFullPath = DepartmentService.getInstance().getDepartmentFullPath(departmentId); + if (!ComparatorUtils.equals(department.getName(), depName)) { + this.checkDuplicatedDepartmentName(department.getParentId(), depName); + department.setName(depName); + department.setParentId(pId); + AuthorityContext.getInstance().getDepartmentController().update(department); + } +// MetricRegistry.getMetric().submit(OperateMessage.build("Dec-Module-User_Manager", "Dec-Department", DepartmentService.getInstance().getDepartmentFullPath(departmentId), "Dec-Log_Update", InterProviderFactory.getProvider().getLocText("Fine-Dec_Department") + ":" + departmentFullPath)); + } + + @Override + public Response delDept(String request) { + try { + DeptDeleteRequest deptDeleteRequest = JaxbUtil.converyToJavaBean(request, DeptDeleteRequest.class); + List deptDeleteList = deptDeleteRequest.getValue(); + for (DeptDelete deptDelete : deptDeleteList) { + DepartmentService.getInstance().deleteDepartment(deptDelete.getDeptCode()); + } + return Response.success(); + } catch (Exception e) { + LogKit.error(e.getMessage(), e); + return Response.failed(); + } + } + } \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/hbir/utils/JaxbUtil.java b/src/main/java/com/fr/plugin/hbir/utils/JaxbUtil.java new file mode 100644 index 0000000..675d735 --- /dev/null +++ b/src/main/java/com/fr/plugin/hbir/utils/JaxbUtil.java @@ -0,0 +1,76 @@ + /* + * Copyright (C), 2018-2021 + * Project: starter + * FileName: JaxbUtil + * Author: Louis + * Date: 2021/7/22 22:26 + */ + package com.fr.plugin.hbir.utils; + + import com.fanruan.api.log.LogKit; +import com.fr.plugin.hbir.bean.DeptChange; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; +import java.io.StringReader; +import java.io.StringWriter; + + /** + *
+ * + * + * @author Louis + * @since 1.0.0 + */ + public class JaxbUtil { + + public static String convertToXml(Object obj) { + return convertToXml(obj, "UTF-8"); + } + + /** + * JavaBean转换成xml + * + * @param obj + * @param encoding + * @return + */ + public static String convertToXml(Object obj, String encoding) { + String result = null; + try { + JAXBContext context = JAXBContext.newInstance(obj.getClass()); + Marshaller marshaller = context.createMarshaller(); + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); + marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding); + StringWriter writer = new StringWriter(); + marshaller.marshal(obj, writer); + result = writer.toString(); + } catch (Exception ex) { + LogKit.error(ex.getMessage(), ex); + } + return result; + } + + /** + * xml转换成JavaBean + * + * @param xml + * @param c + * @return + */ + @SuppressWarnings("unchecked") + public static T converyToJavaBean(String xml, Class c) { + T t = null; + try { + JAXBContext context = JAXBContext.newInstance(c); + Unmarshaller unmarshaller = context.createUnmarshaller(); + t = (T) unmarshaller.unmarshal(new StringReader(xml)); + } catch (Exception ex) { + LogKit.error(ex.getMessage(), ex); + } + return t; + } + + + } \ No newline at end of file diff --git a/src/main/resources/com/fr/plugin/hbir/locale/lang.properties b/src/main/resources/com/fr/plugin/hbir/locale/lang.properties new file mode 100644 index 0000000..ec71aca --- /dev/null +++ b/src/main/resources/com/fr/plugin/hbir/locale/lang.properties @@ -0,0 +1,8 @@ +Plugin-hbir=Sso Plugin +Plugin-hbir_Group=Sso Plugin +Plugin-hbir_Config_SystemCode=System Code +Plugin-hbir_Config_SystemCode_Description=System Code +Plugin-hbir_Config_UserInfoUrl=User Info Url +Plugin-hbir_Config_UserInfoUrl_Description=User Info Url +Plugin-hbir_Config_WsUri=WebService Uri +Plugin-hbir_Config_WsUri_Description=WebService Uri \ No newline at end of file diff --git a/src/main/resources/com/fr/plugin/hbir/locale/lang_zh_CN.properties b/src/main/resources/com/fr/plugin/hbir/locale/lang_zh_CN.properties new file mode 100644 index 0000000..5f7e433 --- /dev/null +++ b/src/main/resources/com/fr/plugin/hbir/locale/lang_zh_CN.properties @@ -0,0 +1,8 @@ +Plugin-hbir=\u5355\u70B9\u767B\u9646\u63D2\u4EF6 +Plugin-hbir_Group=\u5355\u70B9\u767B\u9646\u63D2\u4EF6 +Plugin-hbir_Config_SystemCode=\u7CFB\u7EDF\u4EE3\u7801 +Plugin-hbir_Config_SystemCode_Description=\u7CFB\u7EDF\u4EE3\u7801 +Plugin-hbir_Config_UserInfoUrl=\u5355\u70B9\u83B7\u53D6\u7528\u6237\u4FE1\u606F\u63A5\u53E3 +Plugin-hbir_Config_UserInfoUrl_Description=\u5355\u70B9\u83B7\u53D6\u7528\u6237\u4FE1\u606F\u63A5\u53E3 +Plugin-hbir_Config_WsUri=WebService\u63A5\u53E3\u5730\u5740 +Plugin-hbir_Config_WsUri_Description=WebService\u63A5\u53E3\u5730\u5740 \ No newline at end of file