├── .gitignore ├── LICENSE ├── README.md ├── base-alarm ├── pom.xml └── src │ └── main │ └── webapp │ ├── WEB-INF │ └── web.xml │ └── index.jsp ├── base-apm ├── pom.xml └── src │ └── main │ └── webapp │ ├── WEB-INF │ └── web.xml │ └── index.jsp ├── base-bigscreen ├── .env ├── .gitignore ├── .prettierrc ├── README.md ├── babel.config.js ├── config │ └── index.js ├── mock │ ├── index.js │ ├── syncData.json │ └── util.js ├── package-lock.json ├── package.json ├── public │ ├── favicon.ico │ ├── img │ │ └── icons │ │ │ ├── Angle-ys.png │ │ │ ├── Angle-yx.png │ │ │ ├── Angle-zs.png │ │ │ ├── Angle-zx.png │ │ │ ├── header-active.png │ │ │ ├── header.png │ │ │ └── map.png │ ├── index.html │ ├── js │ │ ├── china.json │ │ └── echartsOption.js │ ├── manifest.json │ └── robots.txt ├── src │ ├── App.vue │ ├── api │ │ ├── RealTimeAPI.js │ │ └── elecwallet.js │ ├── assets │ │ ├── less │ │ │ └── baseVar.less │ │ └── logo.png │ ├── components │ │ ├── Header.vue │ │ ├── NumberGrow.vue │ │ ├── echarts.vue │ │ ├── elecwallet │ │ │ ├── PayAndWithdrawal │ │ │ │ ├── PayAndWithdrawal.vue │ │ │ │ └── data.js │ │ │ ├── RealName.vue │ │ │ ├── RealTimeConsumption.vue │ │ │ ├── channel.js │ │ │ ├── sevenChannel.vue │ │ │ ├── sevenExpense.vue │ │ │ ├── sevenPassRate.vue │ │ │ └── userClassify.vue │ │ ├── grid.vue │ │ ├── loan │ │ │ ├── loanCitySalesRanking.vue │ │ │ ├── loanClinchNum.vue │ │ │ ├── loanSalesAmount.vue │ │ │ ├── loanSevenBrandSalesRatio.vue │ │ │ ├── loanSevenClassifiedSales.vue │ │ │ └── vue_ws.js │ │ └── realTImeSalary │ │ │ ├── echartData.vue │ │ │ ├── echartFunnel.vue │ │ │ ├── echartGauge.vue │ │ │ ├── echartSyncDate.vue │ │ │ ├── realTimeRrade.vue │ │ │ └── testData.vue │ ├── config │ │ ├── api.js │ │ └── config.js │ ├── main.js │ ├── registerServiceWorker.js │ ├── router.js │ ├── store.js │ ├── utils │ │ ├── getObjKey.js │ │ ├── getTodayDate.js │ │ ├── getUrl.js │ │ ├── request.js │ │ ├── tool.js │ │ └── ws.js │ └── views │ │ ├── Elecwallet.vue │ │ ├── Home.vue │ │ ├── RealTImeSalary.vue │ │ └── Staging.vue ├── vue.config.js └── yarn.lock ├── base-common ├── common-autogen │ ├── app │ │ ├── auto │ │ │ └── test │ │ │ │ ├── DictJsonFormat.scala │ │ │ │ ├── DictTables.scala │ │ │ │ ├── InnerDictController.scala │ │ │ │ └── InnerDictSqler.scala │ │ ├── controllers │ │ │ └── DictController.scala │ │ └── models │ │ │ └── DictSqler.scala │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── platform │ │ │ └── devops │ │ │ └── autogen │ │ │ ├── ColumnImpl │ │ │ ├── AutoIntColumn.java │ │ │ ├── IntColumn.java │ │ │ ├── JsonColumn.java │ │ │ ├── TextColumn.java │ │ │ ├── TimestampColumn.java │ │ │ └── VarcharColumn.java │ │ │ ├── InputParams.java │ │ │ ├── Main.java │ │ │ ├── TableColumn.java │ │ │ ├── TableInfo.java │ │ │ ├── TmpBuilder.java │ │ │ ├── TmpUtils.java │ │ │ └── impl │ │ │ └── ScalaPlayImpl.java │ │ ├── resources │ │ ├── hellovelocity.vm │ │ └── scala-play │ │ │ └── crud │ │ │ ├── app │ │ │ ├── auto │ │ │ │ └── test │ │ │ │ │ ├── InnerTestController.scala.vm │ │ │ │ │ ├── InnerTestSqler.scala.vm │ │ │ │ │ ├── TestJsonFormat.scala.vm │ │ │ │ │ └── TestTables.scala.vm │ │ │ ├── controllers │ │ │ │ └── TestController.scala.vm │ │ │ └── models │ │ │ │ └── TestSqler.scala.vm │ │ │ └── conf │ │ │ └── routes.vm │ │ └── webapp │ │ ├── WEB-INF │ │ └── web.xml │ │ └── index.jsp ├── common-automain │ ├── dist.sh │ ├── pom.xml │ ├── script │ │ ├── tb │ │ ├── tb-update │ │ ├── tb-update.cmd │ │ └── tb.cmd │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── platform │ │ │ └── devops │ │ │ └── autogen │ │ │ └── UpdaterMain.java │ │ └── webapp │ │ ├── WEB-INF │ │ └── web.xml │ │ └── index.jsp ├── pom.xml └── src │ └── main │ └── webapp │ ├── WEB-INF │ └── web.xml │ └── index.jsp ├── base-config ├── pom.xml └── src │ └── main │ └── webapp │ ├── WEB-INF │ └── web.xml │ └── index.jsp ├── base-devops-server ├── app.py └── apps │ ├── __init__.py │ ├── config │ ├── Db.py │ └── __init__.py │ └── projects │ ├── Models.py │ ├── ProjectDetails.py │ ├── Projects.py │ └── __init__.py ├── base-devops-web ├── .babelrc ├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── src │ ├── DemoPages │ │ ├── charts │ │ │ └── chartjs.hbs │ │ ├── components │ │ │ ├── accordions.hbs │ │ │ ├── calendar.hbs │ │ │ ├── carousel.hbs │ │ │ ├── maps.hbs │ │ │ ├── modals.hbs │ │ │ ├── notifications.hbs │ │ │ ├── pagination.hbs │ │ │ ├── progress-bar.hbs │ │ │ ├── scrollable-elements.hbs │ │ │ ├── tabs.hbs │ │ │ └── tooltips-popovers.hbs │ │ ├── dashboard-widgets │ │ │ └── dashboard-boxes.hbs │ │ ├── dashboards │ │ │ └── dashboard-example-1.hbs │ │ ├── elements │ │ │ ├── badges-labels.hbs │ │ │ ├── buttons │ │ │ │ └── standard.hbs │ │ │ ├── cards.hbs │ │ │ ├── dropdowns.hbs │ │ │ ├── icons.hbs │ │ │ ├── list-group.hbs │ │ │ ├── navigation.hbs │ │ │ └── utilities.hbs │ │ ├── forms │ │ │ └── elements │ │ │ │ ├── controls.hbs │ │ │ │ ├── layouts.hbs │ │ │ │ └── validation.hbs │ │ └── tables │ │ │ └── regular.hbs │ ├── Pages │ │ ├── dashboards │ │ │ └── dashboard.hbs │ │ └── projects │ │ │ ├── project-create.hbs │ │ │ ├── project-detail.hbs │ │ │ ├── project-edit.hbs │ │ │ └── project.hbs │ ├── app.js │ ├── assets │ │ ├── base.scss │ │ ├── components │ │ │ ├── bootstrap4 │ │ │ │ ├── _alert.scss │ │ │ │ ├── _badge.scss │ │ │ │ ├── _breadcrumb.scss │ │ │ │ ├── _button-group.scss │ │ │ │ ├── _buttons.scss │ │ │ │ ├── _card.scss │ │ │ │ ├── _carousel.scss │ │ │ │ ├── _close.scss │ │ │ │ ├── _code.scss │ │ │ │ ├── _custom-forms.scss │ │ │ │ ├── _dropdown.scss │ │ │ │ ├── _forms.scss │ │ │ │ ├── _functions.scss │ │ │ │ ├── _grid.scss │ │ │ │ ├── _images.scss │ │ │ │ ├── _input-group.scss │ │ │ │ ├── _jumbotron.scss │ │ │ │ ├── _list-group.scss │ │ │ │ ├── _media.scss │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _modal.scss │ │ │ │ ├── _nav.scss │ │ │ │ ├── _navbar.scss │ │ │ │ ├── _pagination.scss │ │ │ │ ├── _popover.scss │ │ │ │ ├── _print.scss │ │ │ │ ├── _progress.scss │ │ │ │ ├── _reboot.scss │ │ │ │ ├── _root.scss │ │ │ │ ├── _spinners.scss │ │ │ │ ├── _tables.scss │ │ │ │ ├── _toasts.scss │ │ │ │ ├── _tooltip.scss │ │ │ │ ├── _transitions.scss │ │ │ │ ├── _type.scss │ │ │ │ ├── _utilities.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap-grid.scss │ │ │ │ ├── bootstrap-reboot.scss │ │ │ │ ├── bootstrap.scss │ │ │ │ ├── mixins │ │ │ │ │ ├── _alert.scss │ │ │ │ │ ├── _background-variant.scss │ │ │ │ │ ├── _badge.scss │ │ │ │ │ ├── _border-radius.scss │ │ │ │ │ ├── _box-shadow.scss │ │ │ │ │ ├── _breakpoints.scss │ │ │ │ │ ├── _buttons.scss │ │ │ │ │ ├── _caret.scss │ │ │ │ │ ├── _clearfix.scss │ │ │ │ │ ├── _float.scss │ │ │ │ │ ├── _forms.scss │ │ │ │ │ ├── _gradients.scss │ │ │ │ │ ├── _grid-framework.scss │ │ │ │ │ ├── _grid.scss │ │ │ │ │ ├── _hover.scss │ │ │ │ │ ├── _image.scss │ │ │ │ │ ├── _list-group.scss │ │ │ │ │ ├── _lists.scss │ │ │ │ │ ├── _nav-divider.scss │ │ │ │ │ ├── _pagination.scss │ │ │ │ │ ├── _reset-text.scss │ │ │ │ │ ├── _resize.scss │ │ │ │ │ ├── _screen-reader.scss │ │ │ │ │ ├── _size.scss │ │ │ │ │ ├── _table-row.scss │ │ │ │ │ ├── _text-emphasis.scss │ │ │ │ │ ├── _text-hide.scss │ │ │ │ │ ├── _text-truncate.scss │ │ │ │ │ ├── _transition.scss │ │ │ │ │ └── _visibility.scss │ │ │ │ └── utilities │ │ │ │ │ ├── _align.scss │ │ │ │ │ ├── _background.scss │ │ │ │ │ ├── _borders.scss │ │ │ │ │ ├── _clearfix.scss │ │ │ │ │ ├── _display.scss │ │ │ │ │ ├── _embed.scss │ │ │ │ │ ├── _flex.scss │ │ │ │ │ ├── _float.scss │ │ │ │ │ ├── _overflow.scss │ │ │ │ │ ├── _position.scss │ │ │ │ │ ├── _screenreaders.scss │ │ │ │ │ ├── _shadows.scss │ │ │ │ │ ├── _sizing.scss │ │ │ │ │ ├── _spacing.scss │ │ │ │ │ ├── _text.scss │ │ │ │ │ └── _visibility.scss │ │ │ ├── calendar │ │ │ │ └── _calendar.scss │ │ │ ├── hamburgers │ │ │ │ ├── _base.scss │ │ │ │ ├── hamburgers.scss │ │ │ │ └── types │ │ │ │ │ ├── _3dx-r.scss │ │ │ │ │ ├── _3dx.scss │ │ │ │ │ ├── _3dxy-r.scss │ │ │ │ │ ├── _3dxy.scss │ │ │ │ │ ├── _3dy-r.scss │ │ │ │ │ ├── _3dy.scss │ │ │ │ │ ├── _arrow-r.scss │ │ │ │ │ ├── _arrow.scss │ │ │ │ │ ├── _arrowalt-r.scss │ │ │ │ │ ├── _arrowalt.scss │ │ │ │ │ ├── _arrowturn-r.scss │ │ │ │ │ ├── _arrowturn.scss │ │ │ │ │ ├── _boring.scss │ │ │ │ │ ├── _collapse-r.scss │ │ │ │ │ ├── _collapse.scss │ │ │ │ │ ├── _elastic-r.scss │ │ │ │ │ ├── _elastic.scss │ │ │ │ │ ├── _emphatic-r.scss │ │ │ │ │ ├── _emphatic.scss │ │ │ │ │ ├── _minus.scss │ │ │ │ │ ├── _slider-r.scss │ │ │ │ │ ├── _slider.scss │ │ │ │ │ ├── _spin-r.scss │ │ │ │ │ ├── _spin.scss │ │ │ │ │ ├── _spring-r.scss │ │ │ │ │ ├── _spring.scss │ │ │ │ │ ├── _squeeze.scss │ │ │ │ │ ├── _stand-r.scss │ │ │ │ │ ├── _stand.scss │ │ │ │ │ ├── _vortex-r.scss │ │ │ │ │ └── _vortex.scss │ │ │ ├── icons │ │ │ │ ├── _p7icons.scss │ │ │ │ └── fontawesome │ │ │ │ │ └── _fontawesome.scss │ │ │ ├── maps │ │ │ │ ├── _vector-maps.scss │ │ │ │ └── maps-word-map.js │ │ │ ├── notifications │ │ │ │ └── _toastr.scss │ │ │ ├── perfect-scrollbar │ │ │ │ └── _perfect-scrollbar.scss │ │ │ ├── popovers-tooltips │ │ │ │ └── _popovers-tooltips.scss │ │ │ └── tables │ │ │ │ └── _tables.scss │ │ ├── css │ │ │ └── bootstrapValidator.min.css │ │ ├── demo-ui │ │ │ ├── _demo.scss │ │ │ ├── elements │ │ │ │ ├── _layout-themes.scss │ │ │ │ └── _theme-options.scss │ │ │ └── images │ │ │ │ └── logo.png │ │ ├── elements │ │ │ ├── _accordions.scss │ │ │ ├── _badges.scss │ │ │ ├── _buttons.scss │ │ │ ├── _cards.scss │ │ │ ├── _dropdown.scss │ │ │ ├── _forms.scss │ │ │ ├── _modals.scss │ │ │ ├── _navs.scss │ │ │ ├── _pagination.scss │ │ │ ├── _tabs.scss │ │ │ └── listgroup.scss │ │ ├── images │ │ │ ├── avatars │ │ │ │ ├── 1.jpg │ │ │ │ ├── 10.jpg │ │ │ │ ├── 11.jpg │ │ │ │ ├── 12.jpg │ │ │ │ ├── 2.jpg │ │ │ │ ├── 3.jpg │ │ │ │ ├── 4.jpg │ │ │ │ ├── 5.jpg │ │ │ │ ├── 8.jpg │ │ │ │ ├── 9.jpg │ │ │ │ └── cnn.png │ │ │ ├── logo-inverse.png │ │ │ └── logo.png │ │ ├── layout │ │ │ ├── _layout-variables.scss │ │ │ ├── _layout.scss │ │ │ ├── elements │ │ │ │ ├── page-title │ │ │ │ │ └── _page-title-base.scss │ │ │ │ └── search-box │ │ │ │ │ └── _search-box.scss │ │ │ ├── footer │ │ │ │ ├── _fixed-footer.scss │ │ │ │ └── _footer-base.scss │ │ │ ├── generic │ │ │ │ └── _generic-base.scss │ │ │ ├── header │ │ │ │ ├── _header-base.scss │ │ │ │ ├── modifiers │ │ │ │ │ └── _fixed-header.scss │ │ │ │ └── themes │ │ │ │ │ ├── _header-dark.scss │ │ │ │ │ └── _header-light.scss │ │ │ ├── main │ │ │ │ ├── _main-base.scss │ │ │ │ └── themes │ │ │ │ │ └── _main-white.scss │ │ │ ├── responsive │ │ │ │ └── _responsive-base.scss │ │ │ └── sidebar │ │ │ │ ├── _sidebar-base.scss │ │ │ │ ├── modifiers │ │ │ │ ├── _closed-sidebar.scss │ │ │ │ ├── _fixed-sidebar.scss │ │ │ │ └── _navmenu-vertical.scss │ │ │ │ └── themes │ │ │ │ ├── _sidebar-dark.scss │ │ │ │ └── _sidebar-light.scss │ │ ├── themes │ │ │ ├── _layout-variables.scss │ │ │ └── default │ │ │ │ └── _variables.scss │ │ ├── utils │ │ │ ├── _animate.scss │ │ │ ├── _backgrounds.scss │ │ │ ├── _comps-animations.scss │ │ │ ├── _helpers.scss │ │ │ ├── helpers │ │ │ │ ├── _grayscale.scss │ │ │ │ └── _opacity.scss │ │ │ └── images │ │ │ │ ├── ajax-loader.gif │ │ │ │ ├── avatars │ │ │ │ ├── 1.jpg │ │ │ │ ├── 10.jpg │ │ │ │ ├── 11.jpg │ │ │ │ ├── 12.jpg │ │ │ │ ├── 2.jpg │ │ │ │ ├── 3.jpg │ │ │ │ ├── 4.jpg │ │ │ │ ├── 5.jpg │ │ │ │ ├── 8.jpg │ │ │ │ └── 9.jpg │ │ │ │ ├── logo-inverse.png │ │ │ │ └── logo.png │ │ └── widgets │ │ │ └── content-boxes │ │ │ └── _content-boxes.scss │ ├── layout │ │ ├── AppFooter │ │ │ └── footer.hbs │ │ ├── AppHeader │ │ │ ├── Components │ │ │ │ ├── header-left.hbs │ │ │ │ ├── header-right.hbs │ │ │ │ └── logo.hbs │ │ │ └── header.hbs │ │ ├── AppMain │ │ │ ├── page-title-actions.hbs │ │ │ └── page-title.hbs │ │ ├── AppSidebar │ │ │ └── sidebar.hbs │ │ ├── ThemeOptions │ │ │ └── theme-options.hbs │ │ ├── base.hbs │ │ └── favicon.ico │ ├── pages.js │ └── scripts-init │ │ ├── calendar.js │ │ ├── charts │ │ ├── chartjs.js │ │ └── chartsjs-utils.js │ │ ├── demo.js │ │ ├── maps.js │ │ ├── project.js │ │ ├── scrollbar.js │ │ └── toastr.js ├── webpack-dev.config.js ├── webpack-prod.config.js ├── webpack.config-helper.js └── yarn.lock ├── base-dts ├── pom.xml └── src │ ├── main │ └── java │ │ └── com │ │ └── platform │ │ └── App.java │ └── test │ └── java │ └── com │ └── platform │ └── AppTest.java ├── base-gateway ├── README.md ├── pom.xml └── src │ └── main │ └── webapp │ ├── WEB-INF │ └── web.xml │ └── index.jsp ├── base-hive-comm ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── platform │ └── hive │ └── comm │ ├── config │ └── ImpalaDataSourceConfig.java │ ├── constant │ └── ImpalaRequestPool.java │ └── util │ ├── ImpalaDataToMysqlUtil.java │ └── ImpalaSqlUtil.java ├── base-hive-udf ├── pom.xml └── src │ ├── main │ └── java │ │ └── com │ │ └── platform │ │ └── base │ │ └── udf │ │ ├── ComplexToSimpleUDF.java │ │ ├── IdentityToAge.java │ │ ├── IdentityToGender.java │ │ └── OneToOneToMap.java │ └── test │ └── java │ └── com │ └── platform │ └── base │ └── udf │ ├── ComplexToSimpleUDFTest.java │ ├── IdentityToAgeTest.java │ ├── IdentityToGenderTest.java │ └── OneToOneToJsonTest.java ├── base-model-deploy ├── README.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── platform │ │ │ ├── BaseModelDeployApplication.java │ │ │ ├── common │ │ │ ├── constant │ │ │ │ ├── Constants.java │ │ │ │ ├── ModelTypeConstants.java │ │ │ │ └── ResponseConstants.java │ │ │ └── util │ │ │ │ ├── Batch.java │ │ │ │ ├── BatchUtil.java │ │ │ │ ├── Conflict.java │ │ │ │ ├── CsvUtil.java │ │ │ │ ├── FileUtils.java │ │ │ │ ├── GZipUtils.java │ │ │ │ ├── HdfsUtils.java │ │ │ │ ├── ModelEvaluator.java │ │ │ │ ├── ModelHolder.java │ │ │ │ └── ResponseUtils.java │ │ │ ├── config │ │ │ ├── AppConfiguration.java │ │ │ ├── HDFSConfig.java │ │ │ ├── ModelInitialization.java │ │ │ ├── aop │ │ │ │ └── WebLogAspect.java │ │ │ └── property │ │ │ │ ├── HadoopProperties.java │ │ │ │ ├── ModelParams.java │ │ │ │ └── TopicProperties.java │ │ │ ├── consumer │ │ │ └── ModelConsumer.java │ │ │ ├── entity │ │ │ ├── BaseDO.java │ │ │ ├── MessageTO.java │ │ │ ├── ModelFeature.java │ │ │ └── ModelSelection.java │ │ │ ├── repository │ │ │ ├── ModelFeatureRepo.java │ │ │ └── ModelSelectionRepo.java │ │ │ ├── service │ │ │ ├── ModelSelectionService.java │ │ │ └── impl │ │ │ │ └── ModelSelectionServiceImpl.java │ │ │ └── web │ │ │ └── controller │ │ │ └── CommonModelController.java │ ├── resources │ │ ├── banner.txt │ │ ├── bootstrap.yml │ │ ├── dev │ │ │ ├── application.yml │ │ │ ├── core-site.xml │ │ │ ├── frame.airbnb.json │ │ │ └── hdfs-site.xml │ │ ├── logback-spring.xml │ │ ├── prod │ │ │ ├── application.yml │ │ │ ├── core-site.xml │ │ │ └── hdfs-site.xml │ │ └── test │ │ │ ├── application.yml │ │ │ ├── core-site.xml │ │ │ └── hdfs-site.xml │ └── scala │ │ └── com │ │ └── platform │ │ ├── entity │ │ └── ModelRecord.scala │ │ └── service │ │ └── ModelLoadService.scala │ └── test │ └── java │ └── com │ └── platform │ ├── BaseModelDeployApplicationTests.java │ ├── common │ └── util │ │ └── HdfsUtilsTest.java │ ├── config │ └── HDFSConfigTest.java │ └── service │ └── impl │ └── ModelSelectionServiceImplTest.java ├── base-model-predict ├── Dockerfile ├── common │ └── res_utils.py ├── controller.py ├── model │ └── xgb_fraud_score_model.pkl ├── model_predict │ └── predict_way.py ├── requirements.txt ├── test.py └── versions ├── base-report ├── pom.xml └── src │ └── main │ └── webapp │ ├── WEB-INF │ └── web.xml │ └── index.jsp ├── base-search ├── pom.xml └── src │ └── main │ └── webapp │ ├── WEB-INF │ └── web.xml │ └── index.jsp ├── base-spark-bi ├── README.md ├── pom.xml ├── spark-common │ ├── pom.xml │ └── src │ │ └── main │ │ └── scala │ │ └── com │ │ └── platform │ │ └── base │ │ └── streaming │ │ ├── config │ │ ├── AppConfig.scala │ │ ├── ConnectionFactory.scala │ │ ├── RedisConfig.scala │ │ └── StreamingConf.scala │ │ ├── constant │ │ └── SparkCommon.scala │ │ ├── dal │ │ ├── BaseDB.scala │ │ └── RedisOperation.scala │ │ ├── service │ │ ├── BaseService.scala │ │ └── KafkaManager.scala │ │ └── stream │ │ └── StreamingManager.scala └── spark-realtime-report │ ├── dependency-reduced-pom.xml │ ├── pom.xml │ └── src │ └── main │ ├── resources │ ├── dev │ │ └── application.conf │ ├── prod │ │ └── application.conf │ └── test │ │ └── application.conf │ └── scala │ └── com │ └── platform │ └── base │ └── realtimereport │ ├── RealTimeReportStreaming.scala │ ├── common │ ├── constant │ │ └── ApplicationCommon.scala │ └── util │ │ └── DateTimeUtil.scala │ ├── config │ └── ApplicationConfig.scala │ ├── consumer │ ├── OriginalDataHandler.scala │ └── StreamingDataHandler.scala │ ├── persistence │ ├── dal │ │ └── RedisOperationX.scala │ └── service │ │ ├── AppDataProcessService.scala │ │ ├── FbdDataProcessService.scala │ │ ├── FfqDataProcessService.scala │ │ └── HxDataProcessService.scala │ └── streaming │ ├── ProcessorContext.scala │ ├── StreamProcessStrategy.scala │ ├── processor │ ├── AppStreamProcessor.scala │ ├── FbdStreamProcessor.scala │ ├── FfqStreamProcessor.scala │ └── HxStreamProcessor.scala │ └── rdd │ ├── RDDAppDataProcess.scala │ ├── RDDFbdDataProcess.scala │ ├── RDDFfqDataProcess.scala │ └── RDDHxDataProcess.scala ├── base-spider ├── search │ ├── LcvSearch │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-35.pyc │ │ │ ├── __init__.cpython-36.pyc │ │ │ ├── settings.cpython-35.pyc │ │ │ ├── settings.cpython-36.pyc │ │ │ ├── urls.cpython-35.pyc │ │ │ ├── urls.cpython-36.pyc │ │ │ ├── wsgi.cpython-35.pyc │ │ │ └── wsgi.cpython-36.pyc │ │ ├── settings.py │ │ ├── urls.py │ │ └── wsgi.py │ ├── db.sqlite3 │ ├── dbs │ │ ├── ArticleSpider.db │ │ └── ArticleSpiderc.db │ ├── eggs │ │ ├── ArticleSpider │ │ │ └── 1538646576.egg │ │ └── ArticleSpiderc │ │ │ └── 1538647663.egg │ ├── manage.py │ ├── search │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-35.pyc │ │ │ ├── __init__.cpython-36.pyc │ │ │ ├── admin.cpython-35.pyc │ │ │ ├── admin.cpython-36.pyc │ │ │ ├── models.cpython-35.pyc │ │ │ ├── models.cpython-36.pyc │ │ │ ├── views.cpython-35.pyc │ │ │ └── views.cpython-36.pyc │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations │ │ │ ├── __init__.py │ │ │ └── __pycache__ │ │ │ │ ├── __init__.cpython-35.pyc │ │ │ │ └── __init__.cpython-36.pyc │ │ ├── models.py │ │ ├── tests.py │ │ └── views.py │ ├── static │ │ ├── css │ │ │ ├── advanced.css │ │ │ ├── index.css │ │ │ ├── result.css │ │ │ └── style.css │ │ ├── img │ │ │ ├── Thumbs.db │ │ │ ├── btn_min.png │ │ │ ├── btnbg.png │ │ │ ├── down.png │ │ │ ├── inputbg.png │ │ │ ├── line.png │ │ │ ├── ll.png │ │ │ ├── logo-bak.png │ │ │ ├── logo-bak2.png │ │ │ ├── logo.png │ │ │ ├── logo1-bak.png │ │ │ ├── logo1.png │ │ │ ├── lr.png │ │ │ ├── more.png │ │ │ └── seachbtn.png │ │ └── js │ │ │ ├── common.js │ │ │ ├── global.js │ │ │ ├── jquery.js │ │ │ └── pagination.js │ ├── templates │ │ ├── index.html │ │ └── result.html │ └── twistd.pid ├── spider │ ├── ArticleSpider │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-35.pyc │ │ │ ├── __init__.cpython-36.pyc │ │ │ ├── items.cpython-35.pyc │ │ │ ├── items.cpython-36.pyc │ │ │ ├── items.cpython-37.pyc │ │ │ ├── pipelines.cpython-35.pyc │ │ │ ├── pipelines.cpython-36.pyc │ │ │ ├── settings.cpython-35.pyc │ │ │ ├── settings.cpython-36.pyc │ │ │ └── settings.cpython-37.pyc │ │ ├── items.py │ │ ├── middlewares.py │ │ ├── middlewares │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-35.pyc │ │ │ │ ├── __init__.cpython-36.pyc │ │ │ │ ├── rotate_user_agent.cpython-35.pyc │ │ │ │ └── rotate_user_agent.cpython-36.pyc │ │ │ └── rotate_user_agent.py │ │ ├── models │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-35.pyc │ │ │ │ ├── __init__.cpython-36.pyc │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ ├── models.cpython-35.pyc │ │ │ │ ├── models.cpython-36.pyc │ │ │ │ └── models.cpython-37.pyc │ │ │ └── models.py │ │ ├── pipelines.py │ │ ├── settings.py │ │ ├── spiders │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-35.pyc │ │ │ │ ├── __init__.cpython-36.pyc │ │ │ │ ├── jobbole.cpython-35.pyc │ │ │ │ ├── jobbole.cpython-36.pyc │ │ │ │ ├── lagou.cpython-35.pyc │ │ │ │ ├── lagou.cpython-36.pyc │ │ │ │ ├── zhihu.cpython-35.pyc │ │ │ │ ├── zhihu.cpython-36.pyc │ │ │ │ └── zhihu2.cpython-36.pyc │ │ │ ├── jobbole.py │ │ │ ├── lagou.py │ │ │ └── zhihu.py │ │ ├── tools │ │ │ ├── __init__.py │ │ │ ├── getimage.jpg │ │ │ ├── simple_http_server.py │ │ │ ├── tools.py │ │ │ ├── xici_ip.py │ │ │ └── yundama_requests.py │ │ └── utils │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-35.pyc │ │ │ ├── __init__.cpython-36.pyc │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── common.cpython-35.pyc │ │ │ ├── common.cpython-36.pyc │ │ │ └── common.cpython-37.pyc │ │ │ ├── common.py │ │ │ ├── index_page.html │ │ │ ├── question-test.html │ │ │ ├── zhihu_login.py │ │ │ └── zhihu_login_requests.py │ ├── cookies.txt │ ├── dbs │ │ ├── ArticleSpider.db │ │ └── default.db │ ├── eggs │ │ └── ArticleSpider │ │ │ ├── 1538649179.egg │ │ │ ├── 1538649561.egg │ │ │ ├── 1538649718.egg │ │ │ ├── 1538649920.egg │ │ │ └── 1538666765.egg │ ├── main.py │ ├── project.egg-info │ │ ├── PKG-INFO │ │ ├── SOURCES.txt │ │ ├── dependency_links.txt │ │ ├── entry_points.txt │ │ └── top_level.txt │ ├── scrapy.cfg │ ├── setup.py │ ├── twistd.pid │ └── venv │ │ ├── Lib │ │ ├── site-packages │ │ │ ├── easy-install.pth │ │ │ ├── pip-9.0.1-py3.6.egg │ │ │ │ ├── EGG-INFO │ │ │ │ │ ├── PKG-INFO │ │ │ │ │ ├── SOURCES.txt │ │ │ │ │ ├── dependency_links.txt │ │ │ │ │ ├── entry_points.txt │ │ │ │ │ ├── not-zip-safe │ │ │ │ │ ├── requires.txt │ │ │ │ │ └── top_level.txt │ │ │ │ └── pip │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── __main__.py │ │ │ │ │ ├── _vendor │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── appdirs.py │ │ │ │ │ ├── cachecontrol │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── _cmd.py │ │ │ │ │ │ ├── adapter.py │ │ │ │ │ │ ├── cache.py │ │ │ │ │ │ ├── caches │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── file_cache.py │ │ │ │ │ │ │ └── redis_cache.py │ │ │ │ │ │ ├── compat.py │ │ │ │ │ │ ├── controller.py │ │ │ │ │ │ ├── filewrapper.py │ │ │ │ │ │ ├── heuristics.py │ │ │ │ │ │ ├── serialize.py │ │ │ │ │ │ └── wrapper.py │ │ │ │ │ ├── colorama │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── ansi.py │ │ │ │ │ │ ├── ansitowin32.py │ │ │ │ │ │ ├── initialise.py │ │ │ │ │ │ ├── win32.py │ │ │ │ │ │ └── winterm.py │ │ │ │ │ ├── distlib │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── _backport │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── misc.py │ │ │ │ │ │ │ ├── shutil.py │ │ │ │ │ │ │ ├── sysconfig.cfg │ │ │ │ │ │ │ ├── sysconfig.py │ │ │ │ │ │ │ └── tarfile.py │ │ │ │ │ │ ├── compat.py │ │ │ │ │ │ ├── database.py │ │ │ │ │ │ ├── index.py │ │ │ │ │ │ ├── locators.py │ │ │ │ │ │ ├── manifest.py │ │ │ │ │ │ ├── markers.py │ │ │ │ │ │ ├── metadata.py │ │ │ │ │ │ ├── resources.py │ │ │ │ │ │ ├── scripts.py │ │ │ │ │ │ ├── t32.exe │ │ │ │ │ │ ├── t64.exe │ │ │ │ │ │ ├── util.py │ │ │ │ │ │ ├── version.py │ │ │ │ │ │ ├── w32.exe │ │ │ │ │ │ ├── w64.exe │ │ │ │ │ │ └── wheel.py │ │ │ │ │ ├── distro.py │ │ │ │ │ ├── html5lib │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── _ihatexml.py │ │ │ │ │ │ ├── _inputstream.py │ │ │ │ │ │ ├── _tokenizer.py │ │ │ │ │ │ ├── _trie │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── _base.py │ │ │ │ │ │ │ ├── datrie.py │ │ │ │ │ │ │ └── py.py │ │ │ │ │ │ ├── _utils.py │ │ │ │ │ │ ├── constants.py │ │ │ │ │ │ ├── filters │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── alphabeticalattributes.py │ │ │ │ │ │ │ ├── base.py │ │ │ │ │ │ │ ├── inject_meta_charset.py │ │ │ │ │ │ │ ├── lint.py │ │ │ │ │ │ │ ├── optionaltags.py │ │ │ │ │ │ │ ├── sanitizer.py │ │ │ │ │ │ │ └── whitespace.py │ │ │ │ │ │ ├── html5parser.py │ │ │ │ │ │ ├── serializer.py │ │ │ │ │ │ ├── treeadapters │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── genshi.py │ │ │ │ │ │ │ └── sax.py │ │ │ │ │ │ ├── treebuilders │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── base.py │ │ │ │ │ │ │ ├── dom.py │ │ │ │ │ │ │ ├── etree.py │ │ │ │ │ │ │ └── etree_lxml.py │ │ │ │ │ │ └── treewalkers │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── base.py │ │ │ │ │ │ │ ├── dom.py │ │ │ │ │ │ │ ├── etree.py │ │ │ │ │ │ │ ├── etree_lxml.py │ │ │ │ │ │ │ └── genshi.py │ │ │ │ │ ├── ipaddress.py │ │ │ │ │ ├── lockfile │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── linklockfile.py │ │ │ │ │ │ ├── mkdirlockfile.py │ │ │ │ │ │ ├── pidlockfile.py │ │ │ │ │ │ ├── sqlitelockfile.py │ │ │ │ │ │ └── symlinklockfile.py │ │ │ │ │ ├── ordereddict.py │ │ │ │ │ ├── packaging │ │ │ │ │ │ ├── __about__.py │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── _compat.py │ │ │ │ │ │ ├── _structures.py │ │ │ │ │ │ ├── markers.py │ │ │ │ │ │ ├── requirements.py │ │ │ │ │ │ ├── specifiers.py │ │ │ │ │ │ ├── utils.py │ │ │ │ │ │ └── version.py │ │ │ │ │ ├── pkg_resources │ │ │ │ │ │ └── __init__.py │ │ │ │ │ ├── progress │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── bar.py │ │ │ │ │ │ ├── counter.py │ │ │ │ │ │ ├── helpers.py │ │ │ │ │ │ └── spinner.py │ │ │ │ │ ├── pyparsing.py │ │ │ │ │ ├── re-vendor.py │ │ │ │ │ ├── requests │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── adapters.py │ │ │ │ │ │ ├── api.py │ │ │ │ │ │ ├── auth.py │ │ │ │ │ │ ├── cacert.pem │ │ │ │ │ │ ├── certs.py │ │ │ │ │ │ ├── compat.py │ │ │ │ │ │ ├── cookies.py │ │ │ │ │ │ ├── exceptions.py │ │ │ │ │ │ ├── hooks.py │ │ │ │ │ │ ├── models.py │ │ │ │ │ │ ├── packages │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ ├── chardet │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ ├── big5freq.py │ │ │ │ │ │ │ │ ├── big5prober.py │ │ │ │ │ │ │ │ ├── chardetect.py │ │ │ │ │ │ │ │ ├── chardistribution.py │ │ │ │ │ │ │ │ ├── charsetgroupprober.py │ │ │ │ │ │ │ │ ├── charsetprober.py │ │ │ │ │ │ │ │ ├── codingstatemachine.py │ │ │ │ │ │ │ │ ├── compat.py │ │ │ │ │ │ │ │ ├── constants.py │ │ │ │ │ │ │ │ ├── cp949prober.py │ │ │ │ │ │ │ │ ├── escprober.py │ │ │ │ │ │ │ │ ├── escsm.py │ │ │ │ │ │ │ │ ├── eucjpprober.py │ │ │ │ │ │ │ │ ├── euckrfreq.py │ │ │ │ │ │ │ │ ├── euckrprober.py │ │ │ │ │ │ │ │ ├── euctwfreq.py │ │ │ │ │ │ │ │ ├── euctwprober.py │ │ │ │ │ │ │ │ ├── gb2312freq.py │ │ │ │ │ │ │ │ ├── gb2312prober.py │ │ │ │ │ │ │ │ ├── hebrewprober.py │ │ │ │ │ │ │ │ ├── jisfreq.py │ │ │ │ │ │ │ │ ├── jpcntx.py │ │ │ │ │ │ │ │ ├── langbulgarianmodel.py │ │ │ │ │ │ │ │ ├── langcyrillicmodel.py │ │ │ │ │ │ │ │ ├── langgreekmodel.py │ │ │ │ │ │ │ │ ├── langhebrewmodel.py │ │ │ │ │ │ │ │ ├── langhungarianmodel.py │ │ │ │ │ │ │ │ ├── langthaimodel.py │ │ │ │ │ │ │ │ ├── latin1prober.py │ │ │ │ │ │ │ │ ├── mbcharsetprober.py │ │ │ │ │ │ │ │ ├── mbcsgroupprober.py │ │ │ │ │ │ │ │ ├── mbcssm.py │ │ │ │ │ │ │ │ ├── sbcharsetprober.py │ │ │ │ │ │ │ │ ├── sbcsgroupprober.py │ │ │ │ │ │ │ │ ├── sjisprober.py │ │ │ │ │ │ │ │ ├── universaldetector.py │ │ │ │ │ │ │ │ └── utf8prober.py │ │ │ │ │ │ │ └── urllib3 │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ ├── _collections.py │ │ │ │ │ │ │ │ ├── connection.py │ │ │ │ │ │ │ │ ├── connectionpool.py │ │ │ │ │ │ │ │ ├── contrib │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ ├── appengine.py │ │ │ │ │ │ │ │ ├── ntlmpool.py │ │ │ │ │ │ │ │ ├── pyopenssl.py │ │ │ │ │ │ │ │ └── socks.py │ │ │ │ │ │ │ │ ├── exceptions.py │ │ │ │ │ │ │ │ ├── fields.py │ │ │ │ │ │ │ │ ├── filepost.py │ │ │ │ │ │ │ │ ├── packages │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ ├── ordered_dict.py │ │ │ │ │ │ │ │ ├── six.py │ │ │ │ │ │ │ │ └── ssl_match_hostname │ │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ │ └── _implementation.py │ │ │ │ │ │ │ │ ├── poolmanager.py │ │ │ │ │ │ │ │ ├── request.py │ │ │ │ │ │ │ │ ├── response.py │ │ │ │ │ │ │ │ └── util │ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ │ ├── connection.py │ │ │ │ │ │ │ │ ├── request.py │ │ │ │ │ │ │ │ ├── response.py │ │ │ │ │ │ │ │ ├── retry.py │ │ │ │ │ │ │ │ ├── ssl_.py │ │ │ │ │ │ │ │ ├── timeout.py │ │ │ │ │ │ │ │ └── url.py │ │ │ │ │ │ ├── sessions.py │ │ │ │ │ │ ├── status_codes.py │ │ │ │ │ │ ├── structures.py │ │ │ │ │ │ └── utils.py │ │ │ │ │ ├── retrying.py │ │ │ │ │ ├── six.py │ │ │ │ │ └── webencodings │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── labels.py │ │ │ │ │ │ ├── mklabels.py │ │ │ │ │ │ ├── tests.py │ │ │ │ │ │ └── x_user_defined.py │ │ │ │ │ ├── basecommand.py │ │ │ │ │ ├── baseparser.py │ │ │ │ │ ├── cmdoptions.py │ │ │ │ │ ├── commands │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── check.py │ │ │ │ │ ├── completion.py │ │ │ │ │ ├── download.py │ │ │ │ │ ├── freeze.py │ │ │ │ │ ├── hash.py │ │ │ │ │ ├── help.py │ │ │ │ │ ├── install.py │ │ │ │ │ ├── list.py │ │ │ │ │ ├── search.py │ │ │ │ │ ├── show.py │ │ │ │ │ ├── uninstall.py │ │ │ │ │ └── wheel.py │ │ │ │ │ ├── compat │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── dictconfig.py │ │ │ │ │ ├── download.py │ │ │ │ │ ├── exceptions.py │ │ │ │ │ ├── index.py │ │ │ │ │ ├── locations.py │ │ │ │ │ ├── models │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── index.py │ │ │ │ │ ├── operations │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── check.py │ │ │ │ │ └── freeze.py │ │ │ │ │ ├── pep425tags.py │ │ │ │ │ ├── req │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── req_file.py │ │ │ │ │ ├── req_install.py │ │ │ │ │ ├── req_set.py │ │ │ │ │ └── req_uninstall.py │ │ │ │ │ ├── status_codes.py │ │ │ │ │ ├── utils │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── appdirs.py │ │ │ │ │ ├── build.py │ │ │ │ │ ├── deprecation.py │ │ │ │ │ ├── encoding.py │ │ │ │ │ ├── filesystem.py │ │ │ │ │ ├── glibc.py │ │ │ │ │ ├── hashes.py │ │ │ │ │ ├── logging.py │ │ │ │ │ ├── outdated.py │ │ │ │ │ ├── packaging.py │ │ │ │ │ ├── setuptools_build.py │ │ │ │ │ └── ui.py │ │ │ │ │ ├── vcs │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── bazaar.py │ │ │ │ │ ├── git.py │ │ │ │ │ ├── mercurial.py │ │ │ │ │ └── subversion.py │ │ │ │ │ └── wheel.py │ │ │ ├── setuptools-28.8.0-py3.6.egg │ │ │ └── setuptools.pth │ │ └── tcl8.6 │ │ │ └── init.tcl │ │ ├── Scripts │ │ ├── Activate.ps1 │ │ ├── _asyncio.pyd │ │ ├── _bz2.pyd │ │ ├── _ctypes.pyd │ │ ├── _ctypes_test.pyd │ │ ├── _decimal.pyd │ │ ├── _elementtree.pyd │ │ ├── _hashlib.pyd │ │ ├── _lzma.pyd │ │ ├── _msi.pyd │ │ ├── _multiprocessing.pyd │ │ ├── _overlapped.pyd │ │ ├── _socket.pyd │ │ ├── _sqlite3.pyd │ │ ├── _ssl.pyd │ │ ├── _testbuffer.pyd │ │ ├── _testcapi.pyd │ │ ├── _testconsole.pyd │ │ ├── _testimportmultiple.pyd │ │ ├── _testmultiphase.pyd │ │ ├── _tkinter.pyd │ │ ├── activate │ │ ├── activate.bat │ │ ├── deactivate.bat │ │ ├── easy_install-3.6-script.py │ │ ├── easy_install-3.6.exe │ │ ├── easy_install-script.py │ │ ├── easy_install.exe │ │ ├── pip-script.py │ │ ├── pip.exe │ │ ├── pip3-script.py │ │ ├── pip3.6-script.py │ │ ├── pip3.6.exe │ │ ├── pip3.exe │ │ ├── pyexpat.pyd │ │ ├── python.exe │ │ ├── python3.dll │ │ ├── python36.dll │ │ ├── pythonw.exe │ │ ├── select.pyd │ │ ├── sqlite3.dll │ │ ├── tcl86t.dll │ │ ├── tk86t.dll │ │ ├── unicodedata.pyd │ │ ├── vcruntime140.dll │ │ └── winsound.pyd │ │ ├── pip-selfcheck.json │ │ └── pyvenv.cfg └── startup_scrapy_django.txt ├── base-spring ├── .gitignore ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── platform │ └── spring │ ├── bean │ └── MessageTO.java │ ├── config │ ├── ApolloLog4j2ConfigurationFactory.java │ └── FastJsonConfiguration.java │ ├── constant │ └── ResultCode.java │ ├── controlleradvice │ └── ExceptionHandlerAdvice.java │ ├── destroy │ └── ApplicationPreDestroy.java │ ├── encrypt │ ├── MD5Utils.java │ └── RSAUtil.java │ ├── exception │ ├── AuthException.java │ ├── CommonException.java │ ├── ExceptionCode.java │ ├── JmsException.java │ ├── MQException.java │ ├── PollingException.java │ ├── SecrecyException.java │ └── ServiceException.java │ ├── log │ └── CustomLogger.java │ ├── sign │ └── SignUtil.java │ └── util │ ├── BeanToMapUtil.java │ ├── DatetimeUtil.java │ ├── HttpRequest.java │ ├── IdUtil.java │ ├── PriceUtil.java │ ├── RequestReader.java │ ├── ResponseUtil.java │ ├── StringCustomUtil.java │ ├── UUIDUtil.java │ ├── file │ └── FileUtil.java │ ├── java │ └── FieldUtil.java │ ├── json │ ├── ListJsonToString.java │ └── ObjectMapperBuilder.java │ └── spring │ ├── PropertiesContext.java │ └── SpringContextHolder.java ├── base-task ├── pom.xml └── src │ └── main │ └── webapp │ ├── WEB-INF │ └── web.xml │ └── index.jsp └── pom.xml /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | .idea/* 25 | /.idea/ 26 | .gradle 27 | .gitlab-ci.yml 28 | /target 29 | target 30 | node_modules 31 | *.iml 32 | /base-sql 33 | /architecture 34 | /cluster 35 | /target 36 | .idea 37 | /*/target 38 | /**/target 39 | /*/node_modules 40 | /**/node_modules 41 | /**/*.iml 42 | .mvn 43 | /**/.mvn 44 | /.gitignore 45 | -------------------------------------------------------------------------------- /base-alarm/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /base-alarm/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /base-apm/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /base-apm/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /base-bigscreen/.env: -------------------------------------------------------------------------------- 1 | VUE_APP_PRO=http://mac 2 | VUE_APP_TEST=http://mac 3 | VUE_APP_CHENGCAI=http://mac:8080 4 | VUE_APP_WLHBDP=http://mac:8080 5 | VUE_APP_LIANGXIAO=http://mac:8080 6 | 7 | VUE_APP_HTTP_PRO=http://mac 8 | VUE_APP_HTTP_TEST=http://mac 9 | -------------------------------------------------------------------------------- /base-bigscreen/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw* 22 | test.js 23 | -------------------------------------------------------------------------------- /base-bigscreen/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": true, 3 | "singleQuote": true, 4 | "trailingComma": "all", 5 | "bracketSpacing": true, 6 | "jsxBracketSameLine": false, 7 | "arrowParens": "avoid", 8 | "requirePragma": false, 9 | "proseWrap": "preserve", 10 | "alwaysParen": "always" 11 | } 12 | -------------------------------------------------------------------------------- /base-bigscreen/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ['@vue/app'], 3 | }; 4 | -------------------------------------------------------------------------------- /base-bigscreen/config/index.js: -------------------------------------------------------------------------------- 1 | /* 配置文件 index.js */ 2 | 3 | // 公共变量 4 | const com = { 5 | IP: JSON.stringify('xxx'), 6 | }; 7 | 8 | module.exports = { 9 | // 开发环境变量 10 | dev: { 11 | env: { 12 | TYPE: JSON.stringify('dev'), 13 | ...com, 14 | }, 15 | }, 16 | 17 | // 生产环境变量 18 | build: { 19 | env: { 20 | TYPE: JSON.stringify('prod'), 21 | ...com, 22 | }, 23 | }, 24 | }; 25 | -------------------------------------------------------------------------------- /base-bigscreen/mock/index.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable import/extensions */ 2 | /* eslint-disable import/no-unresolved */ 3 | /* eslint-disable space-before-function-paren */ 4 | /* eslint-disable no-var */ 5 | /* eslint-disable prefer-arrow-callback */ 6 | /* eslint-disable func-names */ 7 | 8 | const Mock = require('mockjs'); 9 | const util = require('./util'); //自定义工具模块 10 | 11 | //返回一个函数 12 | module.exports = function(app) { 13 | //监听http请求 14 | app.get('/dailySalary/syncData', function(rep, res) { 15 | //每次响应请求时读取mock data的json文件 16 | //util.getJsonFile方法定义了如何读取json文件并解析成数据对象 17 | var json = util.getJsonFile('./syncData.json'); 18 | //将json传入 Mock.mock 方法中,生成的数据返回给浏览器 19 | res.json(Mock.mock(json)); 20 | }); 21 | }; 22 | -------------------------------------------------------------------------------- /base-bigscreen/mock/syncData.json: -------------------------------------------------------------------------------- 1 | { 2 | "success": true, 3 | "code": 200, 4 | "msg": "request successful", 5 | "data|11": [ 6 | { 7 | "groupId": "ABU", 8 | "daily|100-300": 2, 9 | "total|300-500": 2 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /base-bigscreen/mock/util.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-var */ 2 | const fs = require('fs'); //引入文件系统模块 3 | const path = require('path'); //引入path模块 4 | 5 | module.exports = { 6 | //读取json文件 7 | getJsonFile(filePath) { 8 | //读取指定json文件 9 | var json = fs.readFileSync(path.resolve(__dirname, filePath), 'utf-8'); 10 | //解析并返回 11 | return JSON.parse(json); 12 | }, 13 | }; 14 | -------------------------------------------------------------------------------- /base-bigscreen/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-bigscreen/public/favicon.ico -------------------------------------------------------------------------------- /base-bigscreen/public/img/icons/Angle-ys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-bigscreen/public/img/icons/Angle-ys.png -------------------------------------------------------------------------------- /base-bigscreen/public/img/icons/Angle-yx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-bigscreen/public/img/icons/Angle-yx.png -------------------------------------------------------------------------------- /base-bigscreen/public/img/icons/Angle-zs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-bigscreen/public/img/icons/Angle-zs.png -------------------------------------------------------------------------------- /base-bigscreen/public/img/icons/Angle-zx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-bigscreen/public/img/icons/Angle-zx.png -------------------------------------------------------------------------------- /base-bigscreen/public/img/icons/header-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-bigscreen/public/img/icons/header-active.png -------------------------------------------------------------------------------- /base-bigscreen/public/img/icons/header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-bigscreen/public/img/icons/header.png -------------------------------------------------------------------------------- /base-bigscreen/public/img/icons/map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-bigscreen/public/img/icons/map.png -------------------------------------------------------------------------------- /base-bigscreen/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | BI 9 | 10 | 11 | 17 |
18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /base-bigscreen/public/js/echartsOption.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-bigscreen/public/js/echartsOption.js -------------------------------------------------------------------------------- /base-bigscreen/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BI", 3 | "short_name": "BI", 4 | "icons": [], 5 | "start_url": "/index.html", 6 | "display": "standalone", 7 | "background_color": "#000000", 8 | "theme_color": "#4DBA87" 9 | } 10 | -------------------------------------------------------------------------------- /base-bigscreen/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /base-bigscreen/src/App.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 45 | -------------------------------------------------------------------------------- /base-bigscreen/src/api/RealTimeAPI.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable import/prefer-default-export */ 2 | import request from '@/utils/request'; 3 | 4 | /** 5 | * 推送用户数据 6 | */ 7 | export function syncData() { 8 | return request({ 9 | url: '/dailySalary/syncData', 10 | method: 'get', 11 | }); 12 | } 13 | 14 | /** 15 | * 交易金额 16 | */ 17 | export function consumeAmountData() { 18 | return request({ 19 | url: '/dailySalary/consumeAmountData', 20 | method: 'get', 21 | }); 22 | } 23 | 24 | /** 25 | * 交易次数 26 | */ 27 | export function consumeCountData() { 28 | return request({ 29 | url: '/dailySalary/consumeCountData', 30 | method: 'get', 31 | }); 32 | } 33 | 34 | /** 35 | * 整体情况 36 | */ 37 | export function summaryData() { 38 | return request({ 39 | url: '/dailySalary/summaryData', 40 | method: 'get', 41 | }); 42 | } 43 | 44 | /** 45 | * 完成率 46 | */ 47 | export function completeData() { 48 | return request({ 49 | url: '/dailySalary/completeData', 50 | method: 'get', 51 | }); 52 | } 53 | -------------------------------------------------------------------------------- /base-bigscreen/src/api/elecwallet.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable import/prefer-default-export */ 2 | import request from '@/utils/request'; 3 | 4 | /** 5 | * 每日实时消费金额 6 | */ 7 | export function dailyRealTimeConsumption() { 8 | return request({ 9 | url: '/rtbi/elecwallet/dailyRealTimeConsumption', 10 | method: 'get', 11 | }); 12 | } 13 | -------------------------------------------------------------------------------- /base-bigscreen/src/assets/less/baseVar.less: -------------------------------------------------------------------------------- 1 | /* 基础变量 */ 2 | @baseBackground: #11244c; /* 基础背景颜色 */ 3 | @baseFontColor: #9b9a9b; /* 标题字体颜色 */ 4 | -------------------------------------------------------------------------------- /base-bigscreen/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-bigscreen/src/assets/logo.png -------------------------------------------------------------------------------- /base-bigscreen/src/components/echarts.vue: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: wlhbdp 3 | * @Description: echarts容器组件 4 | */ 5 | 6 | 9 | 49 | -------------------------------------------------------------------------------- /base-bigscreen/src/components/elecwallet/channel.js: -------------------------------------------------------------------------------- 1 | const channelObj = { 2 | APP系统: 'APP系统', 3 | 桔子分期: '桔子分期', 4 | 电子钱包ios内部员工进件: 'ios内部', 5 | 电子钱包IOS常规进件: 'IOS常规', 6 | 电子钱包H5常规进件: 'H5常规', 7 | 电子钱包H5内部员工进件: 'H5内部', 8 | 公租房代扣白名单进件: '公租房', 9 | 电子钱包Android内部员工进件: 'Android内部', 10 | 电子钱包Android常规进件: 'Android常规', 11 | 非电子钱包转电子钱包社会人士进件: '非电子钱包转进件', 12 | }; 13 | 14 | export default channelObj; 15 | -------------------------------------------------------------------------------- /base-bigscreen/src/components/loan/vue_ws.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-bigscreen/src/components/loan/vue_ws.js -------------------------------------------------------------------------------- /base-bigscreen/src/config/api.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import config from './config'; 3 | 4 | Vue.use(config); 5 | 6 | export default {}; 7 | -------------------------------------------------------------------------------- /base-bigscreen/src/config/config.js: -------------------------------------------------------------------------------- 1 | import qs from 'qs'; 2 | import axios from 'axios'; 3 | 4 | 5 | const objHeaders = { 6 | 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8', 7 | }; 8 | 9 | /** 10 | * ajax初步封装 11 | * 12 | * @param {String} url 请求地址 13 | * @param {Object} params 请求参数 14 | * @param {String} method 请求方法 15 | */ 16 | function ajaxs({ 17 | url, 18 | params = {}, 19 | method = 'POST', 20 | qsStatus = true, 21 | headers = objHeaders, 22 | } = {}) { 23 | return new Promise((resolve, reject) => { 24 | axios({ 25 | withCredentials: true, 26 | //TOOD:路径前缀 27 | url, 28 | data: qsStatus ? qs.stringify(Object.assign({}, params)) : params, 29 | headers, 30 | method, 31 | timeout: 200000, 32 | }).then( 33 | res => { 34 | if (res.data.code === 200) { 35 | resolve(res.data); 36 | } else { 37 | // console.log('数据有误'); 38 | } 39 | }, 40 | err => { 41 | reject(err); 42 | }, 43 | ); 44 | }); 45 | } 46 | 47 | export default ajaxs; 48 | -------------------------------------------------------------------------------- /base-bigscreen/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import echarts from 'echarts'; 3 | import Socket from 'sockjs-client'; 4 | import stomp from 'stompjs'; 5 | import lodash from 'lodash'; 6 | import App from './App.vue'; 7 | import router from './router'; 8 | import store from './store'; 9 | 10 | import './registerServiceWorker'; 11 | // import ajax from './config/config'; // 引入封装的ajax 12 | 13 | Vue.config.devtools = true; 14 | Vue.config.productionTip = false; 15 | 16 | Vue.prototype.$echarts = echarts; //将echarts注册成Vue的全局属性 17 | // Vue.prototype.ajaxs = ajax; 18 | Vue.prototype.Socket = Socket; 19 | Vue.prototype.Stomp = stomp; 20 | Vue.prototype._lodash = lodash; 21 | 22 | new Vue({ 23 | router, 24 | store, 25 | render: h => h(App), 26 | }).$mount('#app'); 27 | -------------------------------------------------------------------------------- /base-bigscreen/src/registerServiceWorker.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-console */ 2 | 3 | import { register } from 'register-service-worker'; 4 | 5 | if (process.env.NODE_ENV === 'production') { 6 | register(`${process.env.BASE_URL}service-worker.js`, { 7 | ready() { 8 | console.log('App is being served from cache by a service worker.\n' + 9 | 'For more details, visit https://goo.gl/AFskqB'); 10 | }, 11 | cached() { 12 | console.log('Content has been cached for offline use.'); 13 | }, 14 | updated() { 15 | console.log('New content is available; please refresh.'); 16 | }, 17 | offline() { 18 | console.log('No internet connection found. App is running in offline mode.'); 19 | }, 20 | error(error) { 21 | console.error('Error during service worker registration:', error); 22 | }, 23 | }); 24 | } 25 | -------------------------------------------------------------------------------- /base-bigscreen/src/router.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Router from 'vue-router'; 3 | import Home from './views/Home.vue'; 4 | 5 | Vue.use(Router); 6 | 7 | export default new Router({ 8 | mode: 'history', 9 | base: process.env.BASE_URL, 10 | routes: [ 11 | { 12 | path: '/', 13 | name: 'Home', 14 | component: Home, 15 | }, 16 | ], 17 | }); 18 | -------------------------------------------------------------------------------- /base-bigscreen/src/store.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | 4 | Vue.use(Vuex); 5 | 6 | export default new Vuex.Store({ 7 | state: { 8 | 9 | }, 10 | mutations: { 11 | 12 | }, 13 | actions: { 14 | 15 | }, 16 | }); 17 | -------------------------------------------------------------------------------- /base-bigscreen/src/utils/getObjKey.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-bigscreen/src/utils/getObjKey.js -------------------------------------------------------------------------------- /base-bigscreen/src/utils/getTodayDate.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 公有方法:获取前num天的日期 3 | * 4 | * @param {Number} num 自动向上取整 传1指当前 5 | * @param {boolean} order true是日期从大到小,false是从小到大 6 | * @returns MMdd 7 | */ 8 | function getTodayDate(num, order = false) { 9 | const temNum = Math.ceil(num); 10 | let result; 11 | const arrDate = []; 12 | for (let i = 0; i < temNum; i++) { 13 | const day = i * 24 * 60 * 60 * 1000; 14 | const date = new Date(new Date().getTime() - day); 15 | const currMonth = new Date(date).getMonth() + 1; 16 | const currDay = new Date(date).getDate(); 17 | result = `${currMonth.toString().length < 2 ? `0${currMonth}` : currMonth}${ 18 | currDay.toString().length < 2 ? `0${currDay}` : currDay 19 | }`; 20 | if (order) { 21 | arrDate.push(result); 22 | } else { 23 | arrDate.unshift(result); 24 | } 25 | } 26 | return arrDate; 27 | } 28 | 29 | export default getTodayDate; 30 | -------------------------------------------------------------------------------- /base-bigscreen/src/utils/getUrl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * 获取请求地址前缀 4 | * 5 | * @param {String} param .env文件内的key 6 | * @returns 7 | */ 8 | function getUrl(param) { 9 | let url; 10 | if (typeof param === 'string') { 11 | switch (process.env.NODE_ENV) { 12 | // 生产环境 13 | case 'production': 14 | url = `${process.env.VUE_APP_PRO}/websocket-simple`; 15 | break; 16 | // 测试环境 17 | case 'test': 18 | url = `${process.env.VUE_APP_TEST}/websocket-simple`; 19 | break; 20 | // 开发环境 21 | case 'development': 22 | url = `${process.env.VUE_APP_PRO}/websocket-simple`; 23 | // url = `${process.env[param]}/websocket-simple`; 24 | break; 25 | default: 26 | // console.error('process.env.NODE_ENV:有误'); 27 | break; 28 | } 29 | } 30 | // url = process.env.VUE_APP_TEST; 31 | // url = `${process.env.VUE_APP_TEST}/websocket-simple`; 32 | // url = 'http://192.168.96.141:8080/websocket-simple'; 33 | return url; 34 | } 35 | 36 | export default getUrl; 37 | -------------------------------------------------------------------------------- /base-bigscreen/src/utils/request.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: wlhbdp 3 | * @Date: 2020-04-03 16:25:52 4 | * 5 | * 走Http协议的请求方式 6 | * 7 | */ 8 | 9 | import axios from 'axios'; 10 | 11 | let param; 12 | switch (process.env.NODE_ENV) { 13 | // 生产环境 14 | case 'production': 15 | param = process.env.VUE_APP_HTTP_PRO; 16 | break; 17 | // 测试环境 18 | case 'test': 19 | param = process.env.VUE_APP_HTTP_TEST; 20 | break; 21 | // 开发环境 22 | case 'development': 23 | param = process.env.VUE_APP_HTTP_PRO; 24 | // param = '/api/'; 25 | break; 26 | default: 27 | // console.error('process.env.NODE_ENV:有误'); 28 | break; 29 | } 30 | 31 | // 创建axios实例 32 | const service = axios.create({ 33 | baseURL: param, 34 | }); 35 | 36 | // response 拦截器 37 | service.interceptors.response.use( 38 | response => { 39 | /** 40 | * code为非200是抛错 可结合自己业务进行修改 41 | */ 42 | const res = response.data; 43 | return res; 44 | }, 45 | error => { 46 | console.log(`err${error}`); // for debug 47 | return Promise.reject(error); 48 | }, 49 | ); 50 | 51 | export default service; 52 | -------------------------------------------------------------------------------- /base-bigscreen/src/utils/tool.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 传入的数字千分位格式化 3 | * @param {Number} num 4 | */ 5 | export function toThousands(num) { 6 | const temNum = (num || 0).toString(); 7 | let result = ''; 8 | // 将temNum按小数点分割成前后两段 9 | const temArr = temNum.split('.'); 10 | while (temArr[0].length > 3) { 11 | result = `,${temArr[0].slice(-3)}${result}`; 12 | // ',' + temArr[0].slice(-3) + result 13 | temArr[0] = temArr[0].slice(0, temArr[0].length - 3); 14 | } 15 | if (temArr[0]) { 16 | result = temArr[0] + result; 17 | } 18 | return temArr[1] ? `${result}.${temArr[1]}` : `${result}`; 19 | } 20 | 21 | /** 22 | * 根据key的层级关系获取指定的value 23 | * 24 | * getObjKey(['key1', 'key2', 'key3'], Obj) = Obj.key1.key2.key3 25 | * 26 | * @param {Array} keys 对象层级关系 [key1,key2,key3] 27 | * @param {Object} Obj 目标对象 obj 28 | * @return obj.key1.key2.key3 29 | * 30 | */ 31 | const getObjKey = (keys, Obj) => 32 | keys.reduce((ele, key) => (ele && ele[key] ? ele[key] : null), Obj); 33 | 34 | export default { toThousands, getObjKey }; 35 | -------------------------------------------------------------------------------- /base-bigscreen/src/utils/ws.js: -------------------------------------------------------------------------------- 1 | // import Socket from 'sockjs-client'; 2 | // import stomp from 'stompjs'; 3 | // import getUrl from '@/utils/getUrl'; 4 | // /** 5 | // * 相关技术文档 6 | // * stompjs文档 7 | // * https://stomp-js.github.io/guide/stompjs/2018/06/28/using-stompjs-v5.html 8 | // * https://segmentfault.com/a/1190000006617344 9 | // */ 10 | // // =========================== 11 | // /** 12 | // * ws请求函数 13 | // * 14 | // * @param {String} url 请求地址 格式:https://ip:port/websocket-simple  15 | // * @param {String} channel 监听通道 格式: /elecwallet/distOfChannelApply 16 | // * @param {Function} callback 回调函数 17 | // */ 18 | // function connWS(url, channel, callback) { 19 | // let objSocket = new Socket(getUrl('VUE_APP_CHENGCAI')); 20 | // } 21 | // export default connWS; 22 | -------------------------------------------------------------------------------- /base-common/common-autogen/app/controllers/DictController.scala: -------------------------------------------------------------------------------- 1 | package controllers 2 | 3 | import javax.inject.{Inject, Singleton} 4 | 5 | import io.swagger.annotations._ 6 | import models.DictSqler 7 | import play.api.libs.ws._ 8 | import play.api.mvc.ControllerComponents 9 | import play.api.{Configuration, Environment} 10 | import auto.Dict._ 11 | import io.swagger.annotations._ 12 | import scala.concurrent.ExecutionContext 13 | 14 | 15 | @Api("dict") 16 | @Singleton 17 | class DictController @Inject()(dictSpler: DictSqler, 18 | ws: WSClient, environment: Environment, apiAction: ApiAction, 19 | config: Configuration, cc: ControllerComponents)(implicit executionContext: ExecutionContext) 20 | extends InnerDictController(dictSpler, ws, environment, apiAction, config, cc)(executionContext) { 21 | 22 | 23 | } 24 | -------------------------------------------------------------------------------- /base-common/common-autogen/app/models/DictSqler.scala: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import javax.inject.Inject 4 | 5 | import auto.Dict.InnerDictSqler 6 | import play.api.db.slick.DatabaseConfigProvider 7 | 8 | import scala.concurrent.ExecutionContext 9 | 10 | class DictSqler @Inject()(protected val dbConfigProvider: DatabaseConfigProvider)(implicit executionContext: ExecutionContext) 11 | extends InnerDictSqler { 12 | 13 | } -------------------------------------------------------------------------------- /base-common/common-autogen/src/main/java/com/platform/devops/autogen/InputParams.java: -------------------------------------------------------------------------------- 1 | package com.platform.devops.autogen; 2 | 3 | /** 4 | * Created by wlhbdp on 2020/04/12. 5 | */ 6 | public class InputParams { 7 | public String type; 8 | public String name; 9 | public String dir; 10 | public String dbUrl; 11 | public String dbUser; 12 | public String dbPass; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /base-common/common-autogen/src/main/resources/hellovelocity.vm: -------------------------------------------------------------------------------- 1 | #set( $iAmVariable = "good!" ) 2 | Welcome $name to velocity.com 3 | today is $date. 4 | #foreach ($i in $list) 5 | $i 6 | #end 7 | $iAmVariable -------------------------------------------------------------------------------- /base-common/common-autogen/src/main/resources/scala-play/crud/app/models/TestSqler.scala.vm: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import javax.inject.Inject 4 | 5 | import auto.${upperTable}.Inner${upperTable}Sqler 6 | import play.api.db.slick.DatabaseConfigProvider 7 | 8 | import scala.concurrent.ExecutionContext 9 | 10 | class ${upperTable}Sqler @Inject()(protected val dbConfigProvider: DatabaseConfigProvider)(implicit executionContext: ExecutionContext) 11 | extends Inner${upperTable}Sqler { 12 | 13 | } -------------------------------------------------------------------------------- /base-common/common-autogen/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /base-common/common-autogen/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /base-common/common-automain/dist.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | mvn clean package 4 | pname="system-devops" 5 | mkdir -p target/${pname} 6 | mkdir -p target/${pname}/bin 7 | mkdir -p target/${pname}/lib 8 | mkdir -p target/${pname}/lib-update 9 | cp -r script/* target/${pname}/bin 10 | cp -r target/common-automain-1.0-SNAPSHOT-jar-with-dependencies.jar target/${pname}/lib-update 11 | cd target 12 | tar -zcvf ${pname}.tar.gz ${pname} 13 | 14 | cd ../ 15 | scp -r target/system-devops.tar.gz my_user@my_ip:/usr/local/BigDataPlatform/system-devops/system-devops.tar.gz 16 | -------------------------------------------------------------------------------- /base-common/common-automain/script/tb: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | DIR=`cd $(dirname "$0")/..;pwd` 3 | cd $DIR 4 | java -cp lib/* com.platform.devops.autogen.Main $@ 5 | -------------------------------------------------------------------------------- /base-common/common-automain/script/tb-update: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | DIR=`cd $(dirname "$0")/..;pwd` 3 | cd $DIR 4 | java -cp lib-update/* com.platform.devops.autogen.UpdaterMain $DIR 5 | -------------------------------------------------------------------------------- /base-common/common-automain/script/tb-update.cmd: -------------------------------------------------------------------------------- 1 | set "DIR=%~dp0.." 2 | java -cp %DIR%/lib-update/* com.platform.devops.autogen.UpdaterMain %DIR% 3 | -------------------------------------------------------------------------------- /base-common/common-automain/script/tb.cmd: -------------------------------------------------------------------------------- 1 | set "DIR=%~dp0.." 2 | java -cp %DIR%/lib/* com.platform.devops.autogen.Main %* -------------------------------------------------------------------------------- /base-common/common-automain/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /base-common/common-automain/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /base-common/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /base-common/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /base-config/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /base-config/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /base-devops-server/app.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | from flask import Flask 5 | from flask_restful import Api 6 | from apps.projects.Projects import Project 7 | from apps.projects.ProjectDetails import ProjectDetail 8 | from apps.config.Db import db 9 | 10 | """ 11 | @author: wlhbdp 12 | @file: app 13 | """ 14 | 15 | app = Flask(__name__) 16 | app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:123456@node02:3306/devops" 17 | app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 18 | app.config['SQLALCHEMY_POOL_RECYCLE'] = 999 19 | db.init_app(app) 20 | api = Api(app) 21 | api.add_resource(Project, '/api/Projects') 22 | api.add_resource(ProjectDetail, '/api/ProjectDetail') 23 | 24 | if __name__ == '__main__': 25 | app.run(debug=True, host="0.0.0.0") 26 | -------------------------------------------------------------------------------- /base-devops-server/apps/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | 5 | """ 6 | @author: wlhbdp 7 | @file: __init__.py 8 | """ -------------------------------------------------------------------------------- /base-devops-server/apps/config/Db.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | from flask_sqlalchemy import SQLAlchemy 4 | 5 | """ 6 | @author: wlhbdp 7 | @file: db 8 | 9 | """ 10 | 11 | db = SQLAlchemy() -------------------------------------------------------------------------------- /base-devops-server/apps/config/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | 5 | """ 6 | @author: wlhbdp 7 | @file: __init__.py 8 | 9 | """ -------------------------------------------------------------------------------- /base-devops-server/apps/projects/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | 5 | """ 6 | @author: wlhbdp 7 | @file: __init__.py 8 | """ -------------------------------------------------------------------------------- /base-devops-web/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "@babel/preset-env" 4 | ] 5 | } -------------------------------------------------------------------------------- /base-devops-web/README.md: -------------------------------------------------------------------------------- 1 | # base-devops-web 2 | 3 | nvm use v10.15.0 4 | 5 | npm install --global npm@latest 6 | 7 | install 8 | 9 | npm install 10 | 11 | run 12 | 13 | npm run start 14 | 15 | 16 | build 17 | 18 | npm run build 19 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/_jumbotron.scss: -------------------------------------------------------------------------------- 1 | .jumbotron { 2 | padding: $jumbotron-padding ($jumbotron-padding / 2); 3 | margin-bottom: $jumbotron-padding; 4 | background-color: $jumbotron-bg; 5 | @include border-radius($border-radius-lg); 6 | 7 | @include media-breakpoint-up(sm) { 8 | padding: ($jumbotron-padding * 2) $jumbotron-padding; 9 | } 10 | } 11 | 12 | .jumbotron-fluid { 13 | padding-right: 0; 14 | padding-left: 0; 15 | @include border-radius(0); 16 | } 17 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/_media.scss: -------------------------------------------------------------------------------- 1 | .media { 2 | display: flex; 3 | align-items: flex-start; 4 | } 5 | 6 | .media-body { 7 | flex: 1; 8 | } 9 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/_progress.scss: -------------------------------------------------------------------------------- 1 | @keyframes progress-bar-stripes { 2 | from { background-position: $progress-height 0; } 3 | to { background-position: 0 0; } 4 | } 5 | 6 | .progress { 7 | display: flex; 8 | height: $progress-height; 9 | overflow: hidden; // force rounded corners by cropping it 10 | font-size: $progress-font-size; 11 | background-color: $progress-bg; 12 | @include border-radius($progress-border-radius); 13 | @include box-shadow($progress-box-shadow); 14 | } 15 | 16 | .progress-bar { 17 | display: flex; 18 | flex-direction: column; 19 | justify-content: center; 20 | color: $progress-bar-color; 21 | text-align: center; 22 | white-space: nowrap; 23 | background-color: $progress-bar-bg; 24 | @include transition($progress-bar-transition); 25 | } 26 | 27 | .progress-bar-striped { 28 | @include gradient-striped(); 29 | background-size: $progress-height $progress-height; 30 | } 31 | 32 | .progress-bar-animated { 33 | animation: progress-bar-stripes $progress-bar-animation-timing; 34 | } 35 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/_root.scss: -------------------------------------------------------------------------------- 1 | :root { 2 | // Custom variable values only support SassScript inside `#{}`. 3 | @each $color, $value in $colors { 4 | --#{$color}: #{$value}; 5 | } 6 | 7 | @each $color, $value in $theme-colors { 8 | --#{$color}: #{$value}; 9 | } 10 | 11 | @each $bp, $value in $grid-breakpoints { 12 | --breakpoint-#{$bp}: #{$value}; 13 | } 14 | 15 | // Use `inspect` for lists so that quoted items keep the quotes. 16 | // See https://github.com/sass/sass/issues/2383#issuecomment-336349172 17 | --font-family-sans-serif: #{inspect($font-family-sans-serif)}; 18 | --font-family-monospace: #{inspect($font-family-monospace)}; 19 | } 20 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/_transitions.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable selector-no-qualifying-type 2 | 3 | .fade { 4 | @include transition($transition-fade); 5 | 6 | &:not(.show) { 7 | opacity: 0; 8 | } 9 | } 10 | 11 | .collapse { 12 | &:not(.show) { 13 | display: none; 14 | } 15 | } 16 | 17 | .collapsing { 18 | position: relative; 19 | height: 0; 20 | overflow: hidden; 21 | @include transition($transition-collapse); 22 | } 23 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/_utilities.scss: -------------------------------------------------------------------------------- 1 | @import "utilities/align"; 2 | @import "utilities/background"; 3 | @import "utilities/borders"; 4 | @import "utilities/clearfix"; 5 | @import "utilities/display"; 6 | @import "utilities/embed"; 7 | @import "utilities/flex"; 8 | @import "utilities/float"; 9 | @import "utilities/overflow"; 10 | @import "utilities/position"; 11 | @import "utilities/screenreaders"; 12 | @import "utilities/shadows"; 13 | @import "utilities/sizing"; 14 | @import "utilities/spacing"; 15 | @import "utilities/text"; 16 | @import "utilities/visibility"; 17 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/bootstrap-grid.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Grid v4.2.1 (https://getbootstrap.com/) 3 | * Copyright 2011-2018 The Bootstrap Authors 4 | * Copyright 2011-2018 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | */ 7 | 8 | html { 9 | box-sizing: border-box; 10 | -ms-overflow-style: scrollbar; 11 | } 12 | 13 | *, 14 | *::before, 15 | *::after { 16 | box-sizing: inherit; 17 | } 18 | 19 | @import "functions"; 20 | @import "variables"; 21 | 22 | @import "mixins/breakpoints"; 23 | @import "mixins/grid-framework"; 24 | @import "mixins/grid"; 25 | 26 | @import "grid"; 27 | @import "utilities/display"; 28 | @import "utilities/flex"; 29 | @import "utilities/spacing"; 30 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/bootstrap-reboot.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v4.2.1 (https://getbootstrap.com/) 3 | * Copyright 2011-2018 The Bootstrap Authors 4 | * Copyright 2011-2018 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */ 8 | 9 | @import "functions"; 10 | @import "variables"; 11 | @import "mixins"; 12 | @import "reboot"; 13 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_alert.scss: -------------------------------------------------------------------------------- 1 | @mixin alert-variant($background, $border, $color) { 2 | color: $color; 3 | @include gradient-bg($background); 4 | border-color: $border; 5 | 6 | hr { 7 | border-top-color: darken($border, 5%); 8 | } 9 | 10 | .alert-link { 11 | color: darken($color, 10%); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_background-variant.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Contextual backgrounds 4 | 5 | @mixin bg-variant($parent, $color) { 6 | #{$parent} { 7 | background-color: $color !important; 8 | } 9 | a#{$parent}, 10 | button#{$parent} { 11 | @include hover-focus { 12 | background-color: darken($color, 10%) !important; 13 | } 14 | } 15 | } 16 | 17 | @mixin bg-gradient-variant($parent, $color) { 18 | #{$parent} { 19 | background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_badge.scss: -------------------------------------------------------------------------------- 1 | @mixin badge-variant($bg) { 2 | color: color-yiq($bg); 3 | background-color: $bg; 4 | 5 | @at-root a#{&} { 6 | @include hover-focus { 7 | color: color-yiq($bg); 8 | background-color: darken($bg, 10%); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_border-radius.scss: -------------------------------------------------------------------------------- 1 | // Single side border-radius 2 | 3 | @mixin border-radius($radius: $border-radius) { 4 | @if $enable-rounded { 5 | border-radius: $radius; 6 | } 7 | } 8 | 9 | @mixin border-top-radius($radius) { 10 | @if $enable-rounded { 11 | border-top-left-radius: $radius; 12 | border-top-right-radius: $radius; 13 | } 14 | } 15 | 16 | @mixin border-right-radius($radius) { 17 | @if $enable-rounded { 18 | border-top-right-radius: $radius; 19 | border-bottom-right-radius: $radius; 20 | } 21 | } 22 | 23 | @mixin border-bottom-radius($radius) { 24 | @if $enable-rounded { 25 | border-bottom-right-radius: $radius; 26 | border-bottom-left-radius: $radius; 27 | } 28 | } 29 | 30 | @mixin border-left-radius($radius) { 31 | @if $enable-rounded { 32 | border-top-left-radius: $radius; 33 | border-bottom-left-radius: $radius; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_box-shadow.scss: -------------------------------------------------------------------------------- 1 | @mixin box-shadow($shadow...) { 2 | @if $enable-shadows { 3 | box-shadow: $shadow; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_clearfix.scss: -------------------------------------------------------------------------------- 1 | @mixin clearfix() { 2 | &::after { 3 | display: block; 4 | clear: both; 5 | content: ""; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_float.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @mixin float-left { 4 | float: left !important; 5 | } 6 | @mixin float-right { 7 | float: right !important; 8 | } 9 | @mixin float-none { 10 | float: none !important; 11 | } 12 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_hover.scss: -------------------------------------------------------------------------------- 1 | // Hover mixin and `$enable-hover-media-query` are deprecated. 2 | // 3 | // Originally added during our alphas and maintained during betas, this mixin was 4 | // designed to prevent `:hover` stickiness on iOS-an issue where hover styles 5 | // would persist after initial touch. 6 | // 7 | // For backward compatibility, we've kept these mixins and updated them to 8 | // always return their regular pseudo-classes instead of a shimmed media query. 9 | // 10 | // Issue: https://github.com/twbs/bootstrap/issues/25195 11 | 12 | @mixin hover { 13 | &:hover { @content; } 14 | } 15 | 16 | @mixin hover-focus { 17 | &:hover, 18 | &:focus { 19 | @content; 20 | } 21 | } 22 | 23 | @mixin plain-hover-focus { 24 | &, 25 | &:hover, 26 | &:focus { 27 | @content; 28 | } 29 | } 30 | 31 | @mixin hover-focus-active { 32 | &:hover, 33 | &:focus, 34 | &:active { 35 | @content; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_list-group.scss: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | @mixin list-group-item-variant($state, $background, $color) { 4 | .list-group-item-#{$state} { 5 | color: $color; 6 | background-color: $background; 7 | 8 | &.list-group-item-action { 9 | @include hover-focus { 10 | color: $color; 11 | background-color: darken($background, 5%); 12 | } 13 | 14 | &.active { 15 | color: $white; 16 | background-color: $color; 17 | border-color: $color; 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_lists.scss: -------------------------------------------------------------------------------- 1 | // Lists 2 | 3 | // Unstyled keeps list items block level, just removes default browser padding and list-style 4 | @mixin list-unstyled { 5 | padding-left: 0; 6 | list-style: none; 7 | } 8 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_nav-divider.scss: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | @mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y) { 6 | height: 0; 7 | margin: $margin-y 0; 8 | overflow: hidden; 9 | border-top: 1px solid $color; 10 | } 11 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_pagination.scss: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | @mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) { 4 | .page-link { 5 | padding: $padding-y $padding-x; 6 | font-size: $font-size; 7 | line-height: $line-height; 8 | } 9 | 10 | .page-item { 11 | &:first-child { 12 | .page-link { 13 | @include border-left-radius($border-radius); 14 | } 15 | } 16 | &:last-child { 17 | .page-link { 18 | @include border-right-radius($border-radius); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_reset-text.scss: -------------------------------------------------------------------------------- 1 | @mixin reset-text { 2 | font-family: $font-family-base; 3 | // We deliberately do NOT reset font-size or word-wrap. 4 | font-style: normal; 5 | font-weight: $font-weight-normal; 6 | line-height: $line-height-base; 7 | text-align: left; // Fallback for where `start` is not supported 8 | text-align: start; // stylelint-disable-line declaration-block-no-duplicate-properties 9 | text-decoration: none; 10 | text-shadow: none; 11 | text-transform: none; 12 | letter-spacing: normal; 13 | word-break: normal; 14 | word-spacing: normal; 15 | white-space: normal; 16 | line-break: auto; 17 | } 18 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_resize.scss: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | @mixin resizable($direction) { 4 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 5 | resize: $direction; // Options: horizontal, vertical, both 6 | } 7 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_screen-reader.scss: -------------------------------------------------------------------------------- 1 | // Only display content to screen readers 2 | // 3 | // See: https://a11yproject.com/posts/how-to-hide-content/ 4 | // See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/ 5 | 6 | @mixin sr-only { 7 | position: absolute; 8 | width: 1px; 9 | height: 1px; 10 | padding: 0; 11 | overflow: hidden; 12 | clip: rect(0, 0, 0, 0); 13 | white-space: nowrap; 14 | border: 0; 15 | } 16 | 17 | // Use in conjunction with .sr-only to only display content when it's focused. 18 | // 19 | // Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 20 | // 21 | // Credit: HTML5 Boilerplate 22 | 23 | @mixin sr-only-focusable { 24 | &:active, 25 | &:focus { 26 | position: static; 27 | width: auto; 28 | height: auto; 29 | overflow: visible; 30 | clip: auto; 31 | white-space: normal; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_size.scss: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | @mixin size($width, $height: $width) { 4 | width: $width; 5 | height: $height; 6 | } 7 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_table-row.scss: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | @mixin table-row-variant($state, $background, $border: null) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table-#{$state} { 7 | &, 8 | > th, 9 | > td { 10 | background-color: $background; 11 | } 12 | 13 | @if $border != null { 14 | th, 15 | td, 16 | thead th, 17 | tbody + tbody { 18 | border-color: $border; 19 | } 20 | } 21 | } 22 | 23 | // Hover states for `.table-hover` 24 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 25 | .table-hover { 26 | $hover-background: darken($background, 5%); 27 | 28 | .table-#{$state} { 29 | @include hover { 30 | background-color: $hover-background; 31 | 32 | > td, 33 | > th { 34 | background-color: $hover-background; 35 | } 36 | } 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_text-emphasis.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Typography 4 | 5 | @mixin text-emphasis-variant($parent, $color) { 6 | #{$parent} { 7 | color: $color !important; 8 | } 9 | a#{$parent} { 10 | @include hover-focus { 11 | color: darken($color, $emphasized-link-hover-darken-percentage) !important; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_text-hide.scss: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | @mixin text-hide($ignore-warning: false) { 3 | // stylelint-disable-next-line font-family-no-missing-generic-family-keyword 4 | font: 0/0 a; 5 | color: transparent; 6 | text-shadow: none; 7 | background-color: transparent; 8 | border: 0; 9 | 10 | @if ($ignore-warning != true) { 11 | @warn "The `text-hide()` mixin has been deprecated as of v4.1.0. It will be removed entirely in v5."; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_text-truncate.scss: -------------------------------------------------------------------------------- 1 | // Text truncate 2 | // Requires inline-block or block for proper styling 3 | 4 | @mixin text-truncate() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_transition.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable property-blacklist 2 | @mixin transition($transition...) { 3 | @if $enable-transitions { 4 | @if length($transition) == 0 { 5 | transition: $transition-base; 6 | } @else { 7 | transition: $transition; 8 | } 9 | } 10 | 11 | @if $enable-prefers-reduced-motion-media-query { 12 | @media screen and (prefers-reduced-motion: reduce) { 13 | transition: none; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/mixins/_visibility.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Visibility 4 | 5 | @mixin invisible($visibility) { 6 | visibility: $visibility !important; 7 | } 8 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/utilities/_align.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | .align-baseline { vertical-align: baseline !important; } // Browser default 4 | .align-top { vertical-align: top !important; } 5 | .align-middle { vertical-align: middle !important; } 6 | .align-bottom { vertical-align: bottom !important; } 7 | .align-text-bottom { vertical-align: text-bottom !important; } 8 | .align-text-top { vertical-align: text-top !important; } 9 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/utilities/_background.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $color, $value in $theme-colors { 4 | @include bg-variant(".bg-#{$color}", $value); 5 | } 6 | 7 | @if $enable-gradients { 8 | @each $color, $value in $theme-colors { 9 | @include bg-gradient-variant(".bg-gradient-#{$color}", $value); 10 | } 11 | } 12 | 13 | .bg-white { 14 | background-color: $white !important; 15 | } 16 | 17 | .bg-transparent { 18 | background-color: transparent !important; 19 | } 20 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/utilities/_clearfix.scss: -------------------------------------------------------------------------------- 1 | .clearfix { 2 | @include clearfix(); 3 | } 4 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/utilities/_embed.scss: -------------------------------------------------------------------------------- 1 | // Credit: Nicolas Gallagher and SUIT CSS. 2 | 3 | .embed-responsive { 4 | position: relative; 5 | display: block; 6 | width: 100%; 7 | padding: 0; 8 | overflow: hidden; 9 | 10 | &::before { 11 | display: block; 12 | content: ""; 13 | } 14 | 15 | .embed-responsive-item, 16 | iframe, 17 | embed, 18 | object, 19 | video { 20 | position: absolute; 21 | top: 0; 22 | bottom: 0; 23 | left: 0; 24 | width: 100%; 25 | height: 100%; 26 | border: 0; 27 | } 28 | } 29 | 30 | @each $embed-responsive-aspect-ratio in $embed-responsive-aspect-ratios { 31 | $embed-responsive-aspect-ratio-x: nth($embed-responsive-aspect-ratio, 1); 32 | $embed-responsive-aspect-ratio-y: nth($embed-responsive-aspect-ratio, 2); 33 | 34 | .embed-responsive-#{$embed-responsive-aspect-ratio-x}by#{$embed-responsive-aspect-ratio-y} { 35 | &::before { 36 | padding-top: percentage($embed-responsive-aspect-ratio-y / $embed-responsive-aspect-ratio-x); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/utilities/_float.scss: -------------------------------------------------------------------------------- 1 | @each $breakpoint in map-keys($grid-breakpoints) { 2 | @include media-breakpoint-up($breakpoint) { 3 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints); 4 | 5 | .float#{$infix}-left { @include float-left; } 6 | .float#{$infix}-right { @include float-right; } 7 | .float#{$infix}-none { @include float-none; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/utilities/_overflow.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $value in $overflows { 4 | .overflow-#{$value} { overflow: $value !important; } 5 | } 6 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/utilities/_position.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Common values 4 | @each $position in $positions { 5 | .position-#{$position} { position: $position !important; } 6 | } 7 | 8 | // Shorthand 9 | 10 | .fixed-top { 11 | position: fixed; 12 | top: 0; 13 | right: 0; 14 | left: 0; 15 | z-index: $zindex-fixed; 16 | } 17 | 18 | .fixed-bottom { 19 | position: fixed; 20 | right: 0; 21 | bottom: 0; 22 | left: 0; 23 | z-index: $zindex-fixed; 24 | } 25 | 26 | .sticky-top { 27 | @supports (position: sticky) { 28 | position: sticky; 29 | top: 0; 30 | z-index: $zindex-sticky; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/utilities/_screenreaders.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Screenreaders 3 | // 4 | 5 | .sr-only { 6 | @include sr-only(); 7 | } 8 | 9 | .sr-only-focusable { 10 | @include sr-only-focusable(); 11 | } 12 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/utilities/_shadows.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | .shadow-sm { box-shadow: $box-shadow-sm !important; } 4 | .shadow { box-shadow: $box-shadow !important; } 5 | .shadow-lg { box-shadow: $box-shadow-lg !important; } 6 | .shadow-none { box-shadow: none !important; } 7 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/utilities/_sizing.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Width and height 4 | 5 | @each $prop, $abbrev in (width: w, height: h) { 6 | @each $size, $length in $sizes { 7 | .#{$abbrev}-#{$size} { #{$prop}: $length !important; } 8 | } 9 | } 10 | 11 | .mw-100 { max-width: 100% !important; } 12 | .mh-100 { max-height: 100% !important; } 13 | 14 | // Viewport additional helpers 15 | 16 | .min-vw-100 { min-width: 100vw !important; } 17 | .min-vh-100 { min-height: 100vh !important; } 18 | 19 | .vw-100 { width: 100vw !important; } 20 | .vh-100 { height: 100vh !important; } 21 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/bootstrap4/utilities/_visibility.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Visibility utilities 3 | // 4 | 5 | .visible { 6 | @include invisible(visible); 7 | } 8 | 9 | .invisible { 10 | @include invisible(hidden); 11 | } 12 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/hamburgers/types/_3dx-r.scss: -------------------------------------------------------------------------------- 1 | @if index($hamburger-types, 3 dx-r) { 2 | /* 3 | * 3DX Reverse 4 | */ 5 | .hamburger--3dx-r { 6 | .hamburger-box { 7 | perspective: $hamburger-layer-width * 2; 8 | } 9 | 10 | .hamburger-inner { 11 | transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), 12 | background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); 13 | 14 | &::before, 15 | &::after { 16 | transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); 17 | } 18 | } 19 | 20 | &.is-active { 21 | .hamburger-inner { 22 | background-color: transparent !important; 23 | transform: rotateY(-180deg); 24 | 25 | &::before { 26 | transform: translate3d(0, $hamburger-layer-height + $hamburger-layer-spacing, 0) rotate(45deg); 27 | } 28 | 29 | &::after { 30 | transform: translate3d(0, ($hamburger-layer-height + $hamburger-layer-spacing) * -1, 0) rotate(-45deg); 31 | } 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/hamburgers/types/_3dx.scss: -------------------------------------------------------------------------------- 1 | @if index($hamburger-types, 3 dx) { 2 | /* 3 | * 3DX 4 | */ 5 | .hamburger--3dx { 6 | .hamburger-box { 7 | perspective: $hamburger-layer-width * 2; 8 | } 9 | 10 | .hamburger-inner { 11 | transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), 12 | background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); 13 | 14 | &::before, 15 | &::after { 16 | transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); 17 | } 18 | } 19 | 20 | &.is-active { 21 | .hamburger-inner { 22 | background-color: transparent !important; 23 | transform: rotateY(180deg); 24 | 25 | &::before { 26 | transform: translate3d(0, $hamburger-layer-height + $hamburger-layer-spacing, 0) rotate(45deg); 27 | } 28 | 29 | &::after { 30 | transform: translate3d(0, ($hamburger-layer-height + $hamburger-layer-spacing) * -1, 0) rotate(-45deg); 31 | } 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/hamburgers/types/_3dxy.scss: -------------------------------------------------------------------------------- 1 | @if index($hamburger-types, 3 dxy) { 2 | /* 3 | * 3DXY 4 | */ 5 | .hamburger--3dxy { 6 | .hamburger-box { 7 | perspective: $hamburger-layer-width * 2; 8 | } 9 | 10 | .hamburger-inner { 11 | transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), 12 | background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); 13 | 14 | &::before, 15 | &::after { 16 | transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); 17 | } 18 | } 19 | 20 | &.is-active { 21 | .hamburger-inner { 22 | background-color: transparent !important; 23 | transform: rotateX(180deg) rotateY(180deg); 24 | 25 | &::before { 26 | transform: translate3d(0, $hamburger-layer-height + $hamburger-layer-spacing, 0) rotate(45deg); 27 | } 28 | 29 | &::after { 30 | transform: translate3d(0, ($hamburger-layer-height + $hamburger-layer-spacing) * -1, 0) rotate(-45deg); 31 | } 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/hamburgers/types/_3dy-r.scss: -------------------------------------------------------------------------------- 1 | @if index($hamburger-types, 3 dy-r) { 2 | /* 3 | * 3DY Reverse 4 | */ 5 | .hamburger--3dy-r { 6 | .hamburger-box { 7 | perspective: $hamburger-layer-width * 2; 8 | } 9 | 10 | .hamburger-inner { 11 | transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), 12 | background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); 13 | 14 | &::before, 15 | &::after { 16 | transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); 17 | } 18 | } 19 | 20 | &.is-active { 21 | .hamburger-inner { 22 | background-color: transparent !important; 23 | transform: rotateX(180deg); 24 | 25 | &::before { 26 | transform: translate3d(0, $hamburger-layer-height + $hamburger-layer-spacing, 0) rotate(45deg); 27 | } 28 | 29 | &::after { 30 | transform: translate3d(0, ($hamburger-layer-height + $hamburger-layer-spacing) * -1, 0) rotate(-45deg); 31 | } 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/hamburgers/types/_3dy.scss: -------------------------------------------------------------------------------- 1 | @if index($hamburger-types, 3 dy) { 2 | /* 3 | * 3DY 4 | */ 5 | .hamburger--3dy { 6 | .hamburger-box { 7 | perspective: $hamburger-layer-width * 2; 8 | } 9 | 10 | .hamburger-inner { 11 | transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), 12 | background-color 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); 13 | 14 | &::before, 15 | &::after { 16 | transition: transform 0s 0.1s cubic-bezier(0.645, 0.045, 0.355, 1); 17 | } 18 | } 19 | 20 | &.is-active { 21 | .hamburger-inner { 22 | background-color: transparent !important; 23 | transform: rotateX(-180deg); 24 | 25 | &::before { 26 | transform: translate3d(0, $hamburger-layer-height + $hamburger-layer-spacing, 0) rotate(45deg); 27 | } 28 | 29 | &::after { 30 | transform: translate3d(0, ($hamburger-layer-height + $hamburger-layer-spacing) * -1, 0) rotate(-45deg); 31 | } 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/hamburgers/types/_arrow-r.scss: -------------------------------------------------------------------------------- 1 | @if index($hamburger-types, arrow-r) { 2 | /* 3 | * Arrow Right 4 | */ 5 | .hamburger--arrow-r.is-active { 6 | .hamburger-inner { 7 | &::before { 8 | transform: translate3d($hamburger-layer-width * 0.2, 0, 0) rotate(45deg) scale(0.7, 1); 9 | } 10 | 11 | &::after { 12 | transform: translate3d($hamburger-layer-width * 0.2, 0, 0) rotate(-45deg) scale(0.7, 1); 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/hamburgers/types/_arrow.scss: -------------------------------------------------------------------------------- 1 | @if index($hamburger-types, arrow) { 2 | /* 3 | * Arrow 4 | */ 5 | .hamburger--arrow.is-active { 6 | .hamburger-inner { 7 | &::before { 8 | transform: translate3d($hamburger-layer-width * -0.2, 0, 0) rotate(-45deg) scale(0.7, 1); 9 | } 10 | 11 | &::after { 12 | transform: translate3d($hamburger-layer-width * -0.2, 0, 0) rotate(45deg) scale(0.7, 1); 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/hamburgers/types/_arrowturn-r.scss: -------------------------------------------------------------------------------- 1 | @if index($hamburger-types, arrowturn-r) { 2 | /* 3 | * Arrow Turn Right 4 | */ 5 | .hamburger--arrowturn-r.is-active { 6 | .hamburger-inner { 7 | transform: rotate(-180deg); 8 | 9 | &::before { 10 | transform: translate3d(-8px, 0, 0) rotate(-45deg) scale(0.7, 1); 11 | } 12 | 13 | &::after { 14 | transform: translate3d(-8px, 0, 0) rotate(45deg) scale(0.7, 1); 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/hamburgers/types/_arrowturn.scss: -------------------------------------------------------------------------------- 1 | @if index($hamburger-types, arrowturn) { 2 | /* 3 | * Arrow Turn 4 | */ 5 | .hamburger--arrowturn.is-active { 6 | .hamburger-inner { 7 | transform: rotate(-180deg); 8 | 9 | &::before { 10 | transform: translate3d(8px, 0, 0) rotate(45deg) scale(0.7, 1); 11 | } 12 | 13 | &::after { 14 | transform: translate3d(8px, 0, 0) rotate(-45deg) scale(0.7, 1); 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/hamburgers/types/_boring.scss: -------------------------------------------------------------------------------- 1 | @if index($hamburger-types, boring) { 2 | /* 3 | * Boring 4 | */ 5 | .hamburger--boring { 6 | .hamburger-inner { 7 | &, 8 | &::before, 9 | &::after { 10 | transition-property: none; 11 | } 12 | } 13 | 14 | &.is-active { 15 | .hamburger-inner { 16 | transform: rotate(45deg); 17 | 18 | &::before { 19 | top: 0; 20 | opacity: 0; 21 | } 22 | 23 | &::after { 24 | bottom: 0; 25 | transform: rotate(-90deg); 26 | } 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/hamburgers/types/_minus.scss: -------------------------------------------------------------------------------- 1 | @if index($hamburger-types, minus) { 2 | /* 3 | * Minus 4 | */ 5 | .hamburger--minus { 6 | .hamburger-inner { 7 | &::before, 8 | &::after { 9 | transition: bottom 0.08s 0s ease-out, 10 | top 0.08s 0s ease-out, 11 | opacity 0s linear; 12 | } 13 | } 14 | 15 | &.is-active { 16 | .hamburger-inner { 17 | &::before, 18 | &::after { 19 | opacity: 0; 20 | transition: bottom 0.08s ease-out, 21 | top 0.08s ease-out, 22 | opacity 0s 0.08s linear; 23 | } 24 | &::before { 25 | top: 0; 26 | } 27 | 28 | &::after { 29 | bottom: 0; 30 | } 31 | } 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/icons/_p7icons.scss: -------------------------------------------------------------------------------- 1 | $pe-7s-font-path: "~pe7-icon/dist/fonts"; 2 | 3 | @import "~pe7-icon/dist/scss/pe-icon-7-stroke.scss"; -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/icons/fontawesome/_fontawesome.scss: -------------------------------------------------------------------------------- 1 | // Fontawesome 2 | 3 | $fa-font-path: "~@fortawesome/fontawesome-free/webfonts"; 4 | 5 | @import "~@fortawesome/fontawesome-free/scss/variables"; 6 | 7 | @import "~@fortawesome/fontawesome-free/scss/solid"; 8 | 9 | @import "~@fortawesome/fontawesome-free/scss/mixins"; 10 | @import "~@fortawesome/fontawesome-free/scss/core"; 11 | @import "~@fortawesome/fontawesome-free/scss/larger"; 12 | @import "~@fortawesome/fontawesome-free/scss/fixed-width"; 13 | @import "~@fortawesome/fontawesome-free/scss/list"; 14 | @import "~@fortawesome/fontawesome-free/scss/bordered-pulled"; 15 | @import "~@fortawesome/fontawesome-free/scss/animated"; 16 | @import "~@fortawesome/fontawesome-free/scss/rotated-flipped"; 17 | @import "~@fortawesome/fontawesome-free/scss/stacked"; 18 | @import "~@fortawesome/fontawesome-free/scss/icons"; 19 | @import "~@fortawesome/fontawesome-free/scss/screen-reader"; 20 | 21 | .fa-2x { 22 | line-height: 2; 23 | } -------------------------------------------------------------------------------- /base-devops-web/src/assets/components/popovers-tooltips/_popovers-tooltips.scss: -------------------------------------------------------------------------------- 1 | // Tooltips & Popovers 2 | 3 | .popover, 4 | .tooltip { 5 | opacity: 0; 6 | transition: opacity .2s ease; 7 | 8 | &.show { 9 | opacity: 1; 10 | } 11 | } 12 | 13 | // Popover 14 | 15 | .popover { 16 | box-shadow: $box-shadow-default; 17 | } 18 | 19 | .rm-pointers { 20 | .popover { 21 | .arrow { 22 | display: none !important; 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /base-devops-web/src/assets/css/bootstrapValidator.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * BootstrapValidator (http://bootstrapvalidator.com) 3 | * The best jQuery plugin to validate form fields. Designed to use with Bootstrap 3 4 | * 5 | * @version v0.5.4, built on 2014-12-11 9:05:43 AM 6 | * @author https://twitter.com/nghuuphuoc 7 | * @copyright (c) 2013 - 2014 Nguyen Huu Phuoc 8 | * @license Commercial: http://bootstrapvalidator.com/license/ 9 | * Non-commercial: http://creativecommons.org/licenses/by-nc-nd/3.0/ 10 | */ 11 | 12 | .bv-form .help-block{margin-bottom:0}.bv-form .tooltip-inner{text-align:left}.nav-tabs li.bv-tab-success>a{color:#3c763d}.nav-tabs li.bv-tab-error>a{color:#a94442}.bv-form .bv-icon-no-label{top:0}.bv-form .bv-icon-input-group{top:0;z-index:100} -------------------------------------------------------------------------------- /base-devops-web/src/assets/demo-ui/elements/_layout-themes.scss: -------------------------------------------------------------------------------- 1 | // Themes 2 | 3 | $themes: (); 4 | 5 | $themes: map_merge( 6 | ( 7 | "default": ( 8 | ), 9 | "light-blue": ( 10 | ), 11 | ), 12 | $themes 13 | ); 14 | 15 | @mixin theme-variant($app-container-bg, $app-sidebar-bg, $app-header-bg, $app-header-logo-bg) { 16 | 17 | } 18 | 19 | @each $theme, $colors in $themes { 20 | $color1: nth($colors, 1); 21 | $color2: nth($colors, 2); 22 | $color3: nth($colors, 3); 23 | $color4: nth($colors, 4); 24 | 25 | .theme-#{$theme} { 26 | @include theme-variant($color1, $color2, $color3, $color4); 27 | } 28 | } -------------------------------------------------------------------------------- /base-devops-web/src/assets/demo-ui/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/demo-ui/images/logo.png -------------------------------------------------------------------------------- /base-devops-web/src/assets/elements/_accordions.scss: -------------------------------------------------------------------------------- 1 | // Accordions 2 | 3 | .accordion-wrapper { 4 | @include border-radius($border-radius); 5 | border: $gray-200 solid 1px; 6 | 7 | & > .card { 8 | box-shadow: 0 0 0 0 transparent; 9 | 10 | & > .card-header { 11 | padding: 1rem; 12 | height: auto; 13 | 14 | .btn:active, 15 | .btn:focus, 16 | .btn:hover { 17 | text-decoration: none; 18 | } 19 | 20 | .form-heading { 21 | p { 22 | margin: 0; 23 | } 24 | } 25 | } 26 | 27 | .collapse { 28 | border-bottom: transparent solid 1px; 29 | 30 | &.show { 31 | border-bottom-color: $gray-200; 32 | } 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /base-devops-web/src/assets/elements/_badges.scss: -------------------------------------------------------------------------------- 1 | // Badges 2 | 3 | @each $color, $value in $theme-colors { 4 | .badge-#{$color} { 5 | @include badge-variant($value); 6 | } 7 | } 8 | 9 | .badge { 10 | font-weight: bold; 11 | text-transform: uppercase; 12 | padding: 5px 10px; 13 | min-width: 19px; 14 | } 15 | 16 | .badge-light { 17 | background: $white; 18 | } 19 | 20 | 21 | .btn { 22 | .badge { 23 | margin-left: 8px; 24 | } 25 | } 26 | 27 | .btn-sm { 28 | .badge-pill { 29 | position: absolute; 30 | top: -4px; 31 | right: -4px; 32 | } 33 | } 34 | 35 | .badge-abs { 36 | position: absolute; 37 | right: -3px; 38 | top: -3px; 39 | } -------------------------------------------------------------------------------- /base-devops-web/src/assets/elements/_forms.scss: -------------------------------------------------------------------------------- 1 | // Forms Legend 2 | 3 | legend { 4 | font-size: $font-size-base; 5 | font-weight: bold; 6 | } 7 | 8 | // Headings 9 | 10 | .form-heading { 11 | font-size: $font-size-lg; 12 | margin: 0; 13 | color: $primary; 14 | 15 | p { 16 | color: $gray-600; 17 | padding: 0.3rem 0 0; 18 | font-size: $font-size-base; 19 | } 20 | } 21 | 22 | .custom-select { 23 | -webkit-appearance: none; 24 | -moz-appearance: none; 25 | } -------------------------------------------------------------------------------- /base-devops-web/src/assets/elements/_modals.scss: -------------------------------------------------------------------------------- 1 | // Modals 2 | 3 | .modal-header, 4 | .modal-footer { 5 | background: $gray-100; 6 | } 7 | 8 | .modal-footer { 9 | @include border-bottom-radius($border-radius); 10 | } 11 | 12 | .modal-dialog { 13 | box-shadow: $box-shadow-lg-default; 14 | @include border-radius($border-radius); 15 | } -------------------------------------------------------------------------------- /base-devops-web/src/assets/elements/listgroup.scss: -------------------------------------------------------------------------------- 1 | // List Group 2 | 3 | .list-group-flush + .card-footer { 4 | border-top: 0; 5 | } 6 | 7 | .rm-list-borders { 8 | .list-group-item { 9 | border: 0; 10 | padding: ($card-spacer-y / 1.5) 0; 11 | } 12 | } 13 | 14 | .rm-list-borders-scroll { 15 | .list-group-item { 16 | border: 0; 17 | padding-right: ($card-spacer-y * 1.5); 18 | } 19 | } -------------------------------------------------------------------------------- /base-devops-web/src/assets/images/avatars/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/images/avatars/1.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/images/avatars/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/images/avatars/10.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/images/avatars/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/images/avatars/11.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/images/avatars/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/images/avatars/12.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/images/avatars/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/images/avatars/2.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/images/avatars/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/images/avatars/3.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/images/avatars/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/images/avatars/4.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/images/avatars/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/images/avatars/5.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/images/avatars/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/images/avatars/8.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/images/avatars/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/images/avatars/9.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/images/avatars/cnn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/images/avatars/cnn.png -------------------------------------------------------------------------------- /base-devops-web/src/assets/images/logo-inverse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/images/logo-inverse.png -------------------------------------------------------------------------------- /base-devops-web/src/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/images/logo.png -------------------------------------------------------------------------------- /base-devops-web/src/assets/layout/_layout-variables.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | 3 | $spacer-lg: 3rem; 4 | $spacer-sm: 1.5rem; 5 | 6 | $layout-spacer-lg: 3rem; 7 | $layout-spacer-x: 1.5rem; 8 | 9 | $app-sidebar-width: 280px; 10 | $app-sidebar-width-collapsed: 80px; 11 | 12 | $logo-height: 23px; 13 | $logo-width: 97px; 14 | 15 | $app-header-height: 60px; -------------------------------------------------------------------------------- /base-devops-web/src/assets/layout/_layout.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | @import "layout-variables"; 3 | @import "generic/generic-base"; 4 | @import "header/header-base"; 5 | @import "sidebar/sidebar-base"; 6 | @import "main/main-base"; 7 | @import "footer/footer-base"; 8 | @import "elements/page-title/page-title-base"; 9 | @import "elements/search-box/search-box"; -------------------------------------------------------------------------------- /base-devops-web/src/assets/layout/footer/_fixed-footer.scss: -------------------------------------------------------------------------------- 1 | // Fixed Header 2 | 3 | .fixed-footer { 4 | .app-footer { 5 | position: fixed; 6 | width: 100%; 7 | bottom: 0; 8 | left: 0; 9 | z-index: 7; 10 | 11 | .app-footer__inner { 12 | margin-left: $app-sidebar-width; 13 | box-shadow: 0.3rem -0.46875rem 2.1875rem rgba(darken($primary, 50%), .02), 14 | 0.3rem -0.9375rem 1.40625rem rgba(darken($primary, 50%), .02), 15 | 0.3rem -0.25rem 0.53125rem rgba(darken($primary, 50%), .04), 16 | 0.3rem -0.125rem 0.1875rem rgba(darken($primary, 50%), .02); 17 | 18 | } 19 | } 20 | 21 | .app-main .app-main__outer { 22 | padding-bottom: $app-header-height; 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /base-devops-web/src/assets/layout/footer/_footer-base.scss: -------------------------------------------------------------------------------- 1 | // Footer base 2 | 3 | .app-footer { 4 | height: $app-header-height; 5 | 6 | .app-footer__inner { 7 | padding: 0 $layout-spacer-x 0 ($layout-spacer-x / 2); 8 | height: $app-header-height; 9 | 10 | display: flex; 11 | align-content: center; 12 | align-items: center; 13 | 14 | .app-footer-left { 15 | display: flex; 16 | align-items: center; 17 | } 18 | 19 | .app-footer-right { 20 | margin-left: auto; 21 | display: flex; 22 | } 23 | } 24 | } 25 | 26 | // Footer Modifiers 27 | 28 | @import "fixed-footer"; -------------------------------------------------------------------------------- /base-devops-web/src/assets/layout/generic/_generic-base.scss: -------------------------------------------------------------------------------- 1 | // General 2 | 3 | a, 4 | button, 5 | .btn { 6 | outline: none !important; 7 | } 8 | 9 | .app-container { 10 | display: flex; 11 | min-height: 100vh; 12 | flex-direction: column; 13 | margin: 0; 14 | } 15 | 16 | .table th, 17 | .table td { 18 | vertical-align: middle; 19 | } -------------------------------------------------------------------------------- /base-devops-web/src/assets/layout/header/modifiers/_fixed-header.scss: -------------------------------------------------------------------------------- 1 | // Fixed Header 2 | 3 | .fixed-header { 4 | .app-header { 5 | position: fixed; 6 | width: 100%; 7 | top: 0; 8 | 9 | .app-header__logo { 10 | visibility: visible; 11 | } 12 | } 13 | 14 | .app-main { 15 | padding-top: $app-header-height; 16 | } 17 | 18 | &:not(.fixed-sidebar):not(.closed-sidebar) { 19 | .app-sidebar { 20 | .app-header__logo { 21 | visibility: hidden; 22 | } 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /base-devops-web/src/assets/layout/main/_main-base.scss: -------------------------------------------------------------------------------- 1 | // Main Base 2 | 3 | .app-main { 4 | flex: 1; 5 | display: flex; 6 | z-index: 8; 7 | position: relative; 8 | 9 | .app-main__outer { 10 | flex: 1; 11 | flex-direction: column; 12 | display: flex; 13 | z-index: 12; 14 | } 15 | 16 | .app-main__inner { 17 | padding: $grid-gutter-width $grid-gutter-width 0; 18 | flex: 1; 19 | } 20 | } 21 | 22 | // Themes 23 | 24 | @import "themes/main-white"; 25 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/layout/main/themes/_main-white.scss: -------------------------------------------------------------------------------- 1 | // Theme White 2 | 3 | // Variables 4 | 5 | $app-container-bg: #f1f4f6; 6 | $app-sidebar-bg: #ffffff; 7 | $app-header-bg: #fafbfc; 8 | $app-header-logo-bg: rgba(255, 255, 255, .9); 9 | 10 | // Content 11 | 12 | .app-theme-white { 13 | 14 | &.app-container { 15 | background: $app-container-bg; 16 | } 17 | 18 | .app-sidebar { 19 | background: $app-sidebar-bg; 20 | } 21 | 22 | .app-page-title { 23 | background: rgba(255, 255, 255, .45); 24 | } 25 | 26 | .app-footer .app-footer__inner, 27 | .app-header { 28 | background: $app-header-bg; 29 | } 30 | 31 | &.fixed-header { 32 | .app-header__logo { 33 | background: rgba($app-header-bg, .1); 34 | } 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /base-devops-web/src/assets/themes/_layout-variables.scss: -------------------------------------------------------------------------------- 1 | // Default 2 | 3 | @import "default/variables"; 4 | -------------------------------------------------------------------------------- /base-devops-web/src/assets/utils/_comps-animations.scss: -------------------------------------------------------------------------------- 1 | // Common Comps Animations 2 | 3 | $base-duration: .2s; 4 | $base-distance: 10px; 5 | $base-fill-mode: both; 6 | 7 | // Dropdown Animation 8 | 9 | .dropdown-menu { 10 | &.show { 11 | animation: fade-in2 .2s cubic-bezier(0.390, 0.575, 0.565, 1.000) both; 12 | } 13 | } 14 | 15 | .popover { 16 | &:not([data-placement^="top"]).show { 17 | animation: fade-in2 .2s cubic-bezier(0.390, 0.575, 0.565, 1.000) both; 18 | } 19 | } 20 | 21 | .dropdown-menu { 22 | &[data-placement^="top"].show { 23 | animation: fade-in3 .2s cubic-bezier(0.390, 0.575, 0.565, 1.000) both; 24 | bottom: auto !important; 25 | top: auto !important; 26 | } 27 | } 28 | 29 | @keyframes fade-in2 { 30 | 0% { 31 | margin-top: -50px; 32 | visibility: hidden; 33 | opacity: 0; 34 | } 35 | 100% { 36 | margin-top: 0px; 37 | visibility: visible; 38 | opacity: 1; 39 | } 40 | } 41 | 42 | .form-control { 43 | transition: all .2s; 44 | } -------------------------------------------------------------------------------- /base-devops-web/src/assets/utils/helpers/_grayscale.scss: -------------------------------------------------------------------------------- 1 | // Grayscale Filter 2 | 3 | .filter-grayscale-5 { 4 | filter: grayscale(5%) !important; 5 | } 6 | 7 | .filter-grayscale-10 { 8 | filter: grayscale(10%) !important; 9 | } 10 | 11 | .filter-grayscale-20 { 12 | filter: grayscale(20%) !important; 13 | } 14 | 15 | .filter-grayscale-30 { 16 | filter: grayscale(30%) !important; 17 | } 18 | 19 | .filter-grayscale-40 { 20 | filter: grayscale(40%) !important; 21 | } 22 | 23 | .filter-grayscale-50 { 24 | filter: grayscale(50%) !important; 25 | } 26 | 27 | .filter-grayscale-80 { 28 | filter: grayscale(80%) !important; 29 | } 30 | 31 | .filter-grayscale-100 { 32 | filter: grayscale(100%) !important; 33 | } -------------------------------------------------------------------------------- /base-devops-web/src/assets/utils/images/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/utils/images/ajax-loader.gif -------------------------------------------------------------------------------- /base-devops-web/src/assets/utils/images/avatars/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/utils/images/avatars/1.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/utils/images/avatars/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/utils/images/avatars/10.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/utils/images/avatars/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/utils/images/avatars/11.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/utils/images/avatars/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/utils/images/avatars/12.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/utils/images/avatars/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/utils/images/avatars/2.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/utils/images/avatars/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/utils/images/avatars/3.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/utils/images/avatars/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/utils/images/avatars/4.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/utils/images/avatars/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/utils/images/avatars/5.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/utils/images/avatars/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/utils/images/avatars/8.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/utils/images/avatars/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/utils/images/avatars/9.jpg -------------------------------------------------------------------------------- /base-devops-web/src/assets/utils/images/logo-inverse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/utils/images/logo-inverse.png -------------------------------------------------------------------------------- /base-devops-web/src/assets/utils/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/assets/utils/images/logo.png -------------------------------------------------------------------------------- /base-devops-web/src/layout/AppHeader/Components/header-left.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 |
6 | 7 |
8 | -------------------------------------------------------------------------------- /base-devops-web/src/layout/AppHeader/header.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{> Components/logo }} 3 |
4 |
5 | {{> Components/header-right }} 6 |
7 |
8 |
-------------------------------------------------------------------------------- /base-devops-web/src/layout/AppMain/page-title.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 | 6 | 7 |
8 |
{{ htmlWebpackPlugin.options.title }} 9 |
{{ htmlWebpackPlugin.options.description }} 10 |
11 |
12 |
13 |
14 |
-------------------------------------------------------------------------------- /base-devops-web/src/layout/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-devops-web/src/layout/favicon.ico -------------------------------------------------------------------------------- /base-devops-web/src/scripts-init/scrollbar.js: -------------------------------------------------------------------------------- 1 | // Perfect Scrollbar 2 | 3 | import PerfectScrollbar from 'perfect-scrollbar'; 4 | 5 | $(document).ready(() => { 6 | 7 | setTimeout(function () { 8 | 9 | if ($(".scrollbar-container")[0]) { 10 | 11 | $('.scrollbar-container').each(function () { 12 | const ps = new PerfectScrollbar($(this)[0], { 13 | wheelSpeed: 2, 14 | wheelPropagation: false, 15 | minScrollbarLength: 20 16 | }); 17 | }); 18 | 19 | const ps = new PerfectScrollbar('.scrollbar-sidebar', { 20 | wheelSpeed: 2, 21 | wheelPropagation: false, 22 | minScrollbarLength: 20 23 | }); 24 | 25 | } 26 | 27 | }, 1000); 28 | }); -------------------------------------------------------------------------------- /base-devops-web/webpack-dev.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./webpack.config-helper')({ 2 | isProduction: false, 3 | devtool: 'cheap-eval-source-map', 4 | port: 8081 5 | }); -------------------------------------------------------------------------------- /base-devops-web/webpack-prod.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./webpack.config-helper')({ 2 | isProduction: true, 3 | }); -------------------------------------------------------------------------------- /base-dts/src/main/java/com/platform/App.java: -------------------------------------------------------------------------------- 1 | package com.platform; 2 | 3 | /** 4 | * Hello world! 5 | * 6 | */ 7 | public class App 8 | { 9 | public static void main( String[] args ) 10 | { 11 | System.out.println( "Hello World!" ); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /base-dts/src/test/java/com/platform/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.platform; 2 | 3 | import static org.junit.Assert.assertTrue; 4 | 5 | import org.junit.Test; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | { 12 | /** 13 | * Rigorous Test :-) 14 | */ 15 | @Test 16 | public void shouldAnswerWithTrue() 17 | { 18 | assertTrue( true ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /base-gateway/README.md: -------------------------------------------------------------------------------- 1 | 启动: 2 | bdp-dataplatform开源 3 | 完成: 4 | bdp-gold上线 5 | bdp-store开源 6 | https://console.cloud.tencent.com/cvm/instance/index?rid=4 7 | base: 895004942@qq.com KangU1234! 8 | 9 | visual: 49.235.238.120(公) 10 | 172.17.0.16(内) 11 | 1439148322@qq.com KangU1234! 12 | 13 | data: 1466560558@qq.com KangU1234! -------------------------------------------------------------------------------- /base-gateway/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /base-gateway/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /base-hive-comm/src/main/java/com/platform/hive/comm/config/ImpalaDataSourceConfig.java: -------------------------------------------------------------------------------- 1 | package com.platform.hive.comm.config; 2 | 3 | import javax.sql.DataSource; 4 | 5 | import org.springframework.boot.context.properties.ConfigurationProperties; 6 | import org.springframework.context.annotation.Bean; 7 | import org.springframework.context.annotation.Configuration; 8 | import org.springframework.jdbc.datasource.DriverManagerDataSource; 9 | 10 | /** 11 | * 12 | * @author wlhbdp 13 | * @Description impala数据源 14 | * 15 | */ 16 | 17 | @Configuration 18 | public class ImpalaDataSourceConfig { 19 | 20 | @ConfigurationProperties(prefix = "impala") 21 | @Bean("impalaDataSource") 22 | public DataSource getDataSource() { 23 | return new DriverManagerDataSource(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /base-hive-comm/src/main/java/com/platform/hive/comm/constant/ImpalaRequestPool.java: -------------------------------------------------------------------------------- 1 | package com.platform.hive.comm.constant; 2 | 3 | /** 4 | * @author wlhbdp 5 | * @Description impala动态资源池定义 6 | */ 7 | 8 | public class ImpalaRequestPool { 9 | /** 10 | * 每个节点内存限制1GB 11 | */ 12 | public static String RL1GB = "RL1GB"; 13 | 14 | /** 15 | * 每个节点内存限制3GB 16 | */ 17 | public static String RL3GB = "RL3GB"; 18 | 19 | /** 20 | * 每个节点内存限制6GB 21 | */ 22 | public static String RL6GB = "RL6GB"; 23 | 24 | /** 25 | * 每个节点内存限制9GB 26 | */ 27 | public static String RL9GB = "RL9GB"; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /base-model-deploy/README.md: -------------------------------------------------------------------------------- 1 | # base-model-deploy 2 | 3 | ## Description 4 | 模型部署项目,用于将通用机器学习模型部署到生产环境,并提供Restful风格的api调用服务。 5 | 6 | ## Feature 7 | - 支持项目启动时,自动加载数据库中的模型; 8 | - 支持从不同平台导出的模型文件,目前主要有:scikit-klean、spark; 9 | - 模型集中式地存储于HDFS中,本项目支持分布式部署; 10 | 11 | ## How to use 12 | -------------------------------------------------------------------------------- /base-model-deploy/src/main/java/com/platform/BaseModelDeployApplication.java: -------------------------------------------------------------------------------- 1 | package com.platform; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class BaseModelDeployApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(BaseModelDeployApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /base-model-deploy/src/main/java/com/platform/common/constant/Constants.java: -------------------------------------------------------------------------------- 1 | package com.platform.common.constant; 2 | 3 | /** 4 | * author: wlhbdp 5 | * create: 2020-05-20 17:33 6 | */ 7 | public interface Constants { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /base-model-deploy/src/main/java/com/platform/common/constant/ModelTypeConstants.java: -------------------------------------------------------------------------------- 1 | package com.platform.common.constant; 2 | 3 | /** 4 | * author: wlhbdp 5 | * create: 2020-06-01 14:58 6 | */ 7 | public interface ModelTypeConstants { 8 | 9 | String MLEAP = "mleap"; 10 | 11 | String PMML = "pmml"; 12 | } 13 | -------------------------------------------------------------------------------- /base-model-deploy/src/main/java/com/platform/common/constant/ResponseConstants.java: -------------------------------------------------------------------------------- 1 | package com.platform.common.constant; 2 | 3 | /** 4 | * author: wlhbdp 5 | * create: 2020-05-31 09:38 6 | */ 7 | public interface ResponseConstants { 8 | /** 9 | * 请求成功 10 | */ 11 | int CODE_SUCCESS = 0; 12 | /** 13 | * 请求成功,处理失败 14 | */ 15 | int CODE_PROCESS_FAIL = 1001; 16 | /** 17 | * 请求失败 18 | */ 19 | int CODE_FAILURE = 1; 20 | 21 | int SUCCESS = 1; 22 | 23 | int FAILURE = 0; 24 | 25 | String MSG_SUCCESS = "request success"; 26 | 27 | String MSG_FAILURE = "request failure"; 28 | } 29 | -------------------------------------------------------------------------------- /base-model-deploy/src/main/java/com/platform/common/util/ModelHolder.java: -------------------------------------------------------------------------------- 1 | package com.platform.common.util; 2 | 3 | import java.util.Map; 4 | import java.util.concurrent.ConcurrentHashMap; 5 | 6 | /** 7 | * author: wlhbdp 8 | * create: 2020-05-31 13:33 9 | */ 10 | public class ModelHolder { 11 | 12 | private static Map modelHolder = new ConcurrentHashMap<>(); 13 | 14 | public static int getModelSize() { 15 | return modelHolder.size(); 16 | } 17 | 18 | public static Object getModel(String modelName) { 19 | return modelHolder.get(modelName); 20 | } 21 | 22 | public static void setModel(String modelName, Object model) { 23 | modelHolder.put(modelName, model); 24 | } 25 | 26 | public static void setModel(Map map) { 27 | modelHolder.putAll(map); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /base-model-deploy/src/main/java/com/platform/config/property/HadoopProperties.java: -------------------------------------------------------------------------------- 1 | package com.platform.config.property; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * author: wlhbdp 7 | * create: 2020-05-29 14:46 8 | */ 9 | @Data 10 | public class HadoopProperties { 11 | 12 | private String fsUri; 13 | 14 | private String user; 15 | } 16 | -------------------------------------------------------------------------------- /base-model-deploy/src/main/java/com/platform/config/property/ModelParams.java: -------------------------------------------------------------------------------- 1 | package com.platform.config.property; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.ArrayList; 6 | import java.util.Collections; 7 | import java.util.List; 8 | 9 | /** 10 | * author: wlhbdp 11 | * create: 2020-05-21 14:08 12 | */ 13 | @Data 14 | public class ModelParams { 15 | 16 | private String cacheBuilderSpec; 17 | 18 | private Boolean intern; 19 | 20 | private Boolean optimize; 21 | 22 | private Boolean measure; 23 | 24 | private Integer loop; 25 | 26 | /** 27 | * Exclude non-final output fields 28 | */ 29 | private Boolean filterOutput; 30 | 31 | /** 32 | * Permit missing input field columns 33 | */ 34 | private Boolean sparse; 35 | 36 | /** 37 | * padding missing value with strings 38 | */ 39 | private List missingValues = new ArrayList<>( 40 | Collections.singletonList("NA")); 41 | } 42 | -------------------------------------------------------------------------------- /base-model-deploy/src/main/java/com/platform/config/property/TopicProperties.java: -------------------------------------------------------------------------------- 1 | package com.platform.config.property; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * author: wlhbdp 7 | * create: 2020-01-10 09:47 8 | */ 9 | @Data 10 | public class TopicProperties { 11 | 12 | private String notification; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /base-model-deploy/src/main/java/com/platform/consumer/ModelConsumer.java: -------------------------------------------------------------------------------- 1 | package com.platform.consumer; 2 | 3 | import org.apache.kafka.clients.consumer.ConsumerRecord; 4 | import org.springframework.kafka.annotation.KafkaListener; 5 | 6 | import java.util.Optional; 7 | 8 | /** 9 | * author: wlhbdp 10 | * create: 2020-05-20 10:09 11 | */ 12 | 13 | public class ModelConsumer { 14 | 15 | /** 16 | * 监听模型的变化,当发现模型变化后,更新内存中的模型 17 | * @param record Kafka Records 18 | */ 19 | @KafkaListener(topics = "${app-config.topics.notification}") 20 | public void modelUpdateListener(ConsumerRecord record) { 21 | Optional wrapperMessage = Optional.ofNullable(record.value()); 22 | if (wrapperMessage.isPresent()) { 23 | String message = wrapperMessage.get(); 24 | 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /base-model-deploy/src/main/java/com/platform/entity/BaseDO.java: -------------------------------------------------------------------------------- 1 | package com.platform.entity; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.Date; 6 | 7 | /** 8 | * author: wlhbdp 9 | * create: 2020-05-17 17:21 10 | */ 11 | @Data 12 | public class BaseDO { 13 | 14 | private Integer id; 15 | 16 | private Date createTime; 17 | 18 | private Date updateTime; 19 | 20 | private Integer status; 21 | 22 | private Integer version; 23 | } 24 | -------------------------------------------------------------------------------- /base-model-deploy/src/main/java/com/platform/entity/MessageTO.java: -------------------------------------------------------------------------------- 1 | package com.platform.entity; 2 | 3 | 4 | import lombok.Data; 5 | 6 | /** 7 | * author: wlhbdp 8 | * create: 2020-05-31 09:22 9 | */ 10 | @Data 11 | public class MessageTO { 12 | 13 | private int code; 14 | 15 | private String msg; 16 | 17 | private Object data; 18 | } 19 | -------------------------------------------------------------------------------- /base-model-deploy/src/main/java/com/platform/entity/ModelFeature.java: -------------------------------------------------------------------------------- 1 | package com.platform.entity; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | 6 | import java.sql.Blob; 7 | 8 | /** 9 | * author: wlhbdp 10 | * create: 2020-05-17 17:11 11 | */ 12 | @EqualsAndHashCode(callSuper = true) 13 | @Data 14 | public class ModelFeature extends BaseDO { 15 | 16 | private String modelName; 17 | 18 | private String modelVersion; 19 | 20 | private String path; 21 | } 22 | -------------------------------------------------------------------------------- /base-model-deploy/src/main/java/com/platform/entity/ModelSelection.java: -------------------------------------------------------------------------------- 1 | package com.platform.entity; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | 6 | /** 7 | * author: wlhbdp 8 | * create: 2020-05-17 17:11 9 | */ 10 | @EqualsAndHashCode(callSuper = true) 11 | @Data 12 | public class ModelSelection extends BaseDO { 13 | 14 | private Integer modelId; 15 | 16 | private String modelName; 17 | } 18 | -------------------------------------------------------------------------------- /base-model-deploy/src/main/java/com/platform/repository/ModelFeatureRepo.java: -------------------------------------------------------------------------------- 1 | package com.platform.repository; 2 | 3 | import com.platform.entity.ModelFeature; 4 | import org.apache.ibatis.annotations.Mapper; 5 | import org.apache.ibatis.annotations.Param; 6 | import org.apache.ibatis.annotations.Select; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * author: wlhbdp 12 | * create: 2020-05-17 18:22 13 | */ 14 | @Mapper 15 | public interface ModelFeatureRepo { 16 | 17 | @Select("select * from model_repo where id=#{id}") 18 | ModelFeature findById(@Param("id") Integer id); 19 | 20 | @Select("select * from model_repo where id in (select model_id from model_selection where status=0 and model_type=#{modelType})") 21 | List findByModelType(@Param("modelType") String modelType); 22 | } 23 | -------------------------------------------------------------------------------- /base-model-deploy/src/main/java/com/platform/service/ModelSelectionService.java: -------------------------------------------------------------------------------- 1 | package com.platform.service; 2 | 3 | import ml.combust.mleap.runtime.frame.Transformer; 4 | import org.dmg.pmml.PMML; 5 | import org.xml.sax.SAXException; 6 | 7 | import javax.xml.bind.JAXBException; 8 | import java.io.IOException; 9 | import java.sql.SQLException; 10 | import java.util.List; 11 | import java.util.Map; 12 | 13 | /** 14 | * author: wlhbdp 15 | * create: 2020-05-20 11:01 16 | */ 17 | public interface ModelSelectionService { 18 | 19 | PMML loadPMMLModelFromDB(String modelName) throws SQLException, JAXBException, SAXException, IOException; 20 | 21 | Map loadAllModelsFromDB() throws SQLException, JAXBException, SAXException, IOException; 22 | 23 | Transformer loadMLeapModelFromDB(String modelName) throws IOException; 24 | 25 | Integer updateModelByName(String modelName, int modelId); 26 | 27 | Integer deleteModelByName(String modelName); 28 | 29 | void reloadModel(String modelName, String modelType) throws IOException, JAXBException, SAXException; 30 | } 31 | -------------------------------------------------------------------------------- /base-model-deploy/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | _______ _______ ______ _______ _________ _______ 2 | ( ____ \( ___ )|\ /|( __ \ ( ___ )\__ __/( ___ ) 3 | | ( \/| ( ) |( \ / )| ( \ )| ( ) | ) ( | ( ) | 4 | | (__ | | | | \ (_) / | | ) || (___) | | | | (___) | 5 | | __) | | | | ) _ ( | | | || ___ | | | | ___ | 6 | | ( | | | | / ( ) \ | | ) || ( ) | | | | ( ) | 7 | | ) | (___) |( / \ )| (__/ )| ) ( | | | | ) ( | 8 | |/ (_______)|/ \|(______/ |/ \| )_( |/ \| -------------------------------------------------------------------------------- /base-model-deploy/src/main/resources/bootstrap.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | application: 3 | name: base-model-deploy 4 | cloud: 5 | consul: 6 | host: localhost 7 | port: 8500 8 | discovery: 9 | prefer-ip-address: true 10 | instance-id: ${spring.application.name}:${random.value} 11 | management: 12 | endpoints: 13 | web: 14 | exposure: 15 | include: "*" 16 | endpoint: 17 | health: 18 | show-details: always 19 | -------------------------------------------------------------------------------- /base-model-deploy/src/test/java/com/platform/BaseModelDeployApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.platform; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.springframework.boot.test.context.SpringBootTest; 6 | import org.springframework.test.context.junit4.SpringRunner; 7 | 8 | @RunWith(SpringRunner.class) 9 | @SpringBootTest 10 | public class BaseModelDeployApplicationTests { 11 | 12 | @Test 13 | public void contextLoads() { 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /base-model-deploy/src/test/java/com/platform/common/util/HdfsUtilsTest.java: -------------------------------------------------------------------------------- 1 | package com.platform.common.util; 2 | 3 | import org.apache.hadoop.conf.Configuration; 4 | import org.apache.hadoop.fs.FileSystem; 5 | import org.junit.Before; 6 | import org.junit.Test; 7 | 8 | import java.io.File; 9 | import java.io.IOException; 10 | import java.net.URI; 11 | 12 | import static org.junit.Assert.*; 13 | 14 | /** 15 | * author: wlhbdp 16 | * create: 2020-05-29 18:36 17 | */ 18 | public class HdfsUtilsTest { 19 | 20 | @Test 21 | public void testPathSeperator() { 22 | String localPath = "/tmp/model" + File.separator + "xgboost.zip"; 23 | System.out.println(localPath); 24 | } 25 | 26 | @Test 27 | public void testBooleanToInteger() { 28 | String v = "true"; 29 | boolean b = Boolean.parseBoolean(v); 30 | Integer i = b ?1:0; 31 | System.out.println(i); 32 | } 33 | 34 | } -------------------------------------------------------------------------------- /base-model-predict/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM master/library/python:3.6 2 | WORKDIR /app/ 3 | COPY model_predict /app/model_predict 4 | COPY common /app/common 5 | COPY model /app/model 6 | COPY controller.py /app/controller.py 7 | COPY requirements.txt /app/requirements.txt 8 | RUN pip3 install -r /app/requirements.txt 9 | CMD python3 controller.py -------------------------------------------------------------------------------- /base-model-predict/common/res_utils.py: -------------------------------------------------------------------------------- 1 | class Response(object): 2 | 3 | def __init__(self): 4 | self.result = {"data": -1, "code": 0, "message": ""} 5 | 6 | def success(self, data): 7 | self.result["data"] = data 8 | return str(self.result) 9 | 10 | def success_no_data(self): 11 | return str(self.result) 12 | 13 | def fail(self, message): 14 | self.result["message"] = message 15 | self.result["code"] = 1 16 | return str(self.result) 17 | -------------------------------------------------------------------------------- /base-model-predict/model/xgb_fraud_score_model.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-model-predict/model/xgb_fraud_score_model.pkl -------------------------------------------------------------------------------- /base-model-predict/model_predict/predict_way.py: -------------------------------------------------------------------------------- 1 | import joblib 2 | import os 3 | 4 | 5 | class Predict: 6 | 7 | @staticmethod 8 | def predict_by_joblib(model_name, data): 9 | file_path = os.getcwd() + "/model/" + model_name 10 | model = joblib.load(file_path) 11 | result = model.predict_proba(data) 12 | return result 13 | -------------------------------------------------------------------------------- /base-model-predict/requirements.txt: -------------------------------------------------------------------------------- 1 | pandas 2 | flask 3 | joblib 4 | xgboost 5 | sklearn -------------------------------------------------------------------------------- /base-model-predict/test.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import model_predict.predict_way as predict 3 | 4 | if __name__ == '__main__': 5 | df = pd.read_csv("/Users/wlhbdp/sample.csv", nrows=1) 6 | print(df) 7 | print(predict.Predict.predict_by_joblib("xgb_fraud_score_model.pkl", df)) 8 | -------------------------------------------------------------------------------- /base-model-predict/versions: -------------------------------------------------------------------------------- 1 | 1.1.0 -------------------------------------------------------------------------------- /base-report/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /base-report/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /base-search/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /base-search/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /base-spark-bi/README.md: -------------------------------------------------------------------------------- 1 | # base-spark-bi 2 | 3 | ## 功能模块 4 | 1. 公共模块 5 | 2. 实时报表统计模块 6 | 7 | ## 项目架构 8 | spark-realtime-report模块的结构组成如下: 9 | 1. 数据消费层:spark消费kafka分区数据,生成RDD,供后续处理 10 | 2. 数据处理层:进行相应过滤和统计计算 11 | 3. 数据持久层:将统计指标保存到数据库中 -------------------------------------------------------------------------------- /base-spark-bi/spark-common/src/main/scala/com/platform/base/streaming/config/RedisConfig.scala: -------------------------------------------------------------------------------- 1 | package com.platform.streaming.config 2 | 3 | import com.redis.RedisClientPool 4 | 5 | object RedisConfig { 6 | 7 | val clients = new RedisClientPool(host=AppConfig.REDIS_URL, port=AppConfig.REDIS_PORT, 8 | maxIdle = AppConfig.REDIS_MAXIDLE, secret = Option.apply(AppConfig.REDIS_SECRET), database = AppConfig.REDIS_DB, 9 | timeout = AppConfig.REDIS_TIMEOUT, maxConnections = AppConfig.REDIS_MAX_CONNECTIONS, 10 | whenExhaustedBehavior = AppConfig.REDIS_EXHAUSTED_BEHAVIOUR.toByte) 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /base-spark-bi/spark-realtime-report/src/main/scala/com/platform/base/realtimereport/persistence/service/AppDataProcessService.scala: -------------------------------------------------------------------------------- 1 | package com.platform.realtimereport.persistence.service 2 | 3 | import com.platform.realtimereport.persistence.dal.RedisOperationX 4 | 5 | case class AppDataProcessService (){ 6 | 7 | def persistDeviceLocationData(deviceLocationArray: Array[String]): Unit = { 8 | deviceLocationArray.foreach(param => 9 | RedisOperationX.listLpushCreate("zfb_usage_data", param) 10 | ) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /base-spark-bi/spark-realtime-report/src/main/scala/com/platform/base/realtimereport/persistence/service/FbdDataProcessService.scala: -------------------------------------------------------------------------------- 1 | package com.platform.realtimereport.persistence.service 2 | 3 | import java.util.{Calendar, Date} 4 | 5 | import com.platform.realtimereport.persistence.dal.RedisOperationX 6 | import org.apache.commons.lang3.time.DateUtils 7 | 8 | case class ZfbDataProcessService() { 9 | 10 | /** 11 | * 将数据保存到Redis中 12 | * @param amountArray Array[(String, Long)]类型的数组 13 | */ 14 | def persistZfbUserData(amountArray: Array[(String, Long)]): Unit = { 15 | val nowHour:Long = DateUtils.getFragmentInHours(new Date(), Calendar.DAY_OF_YEAR) 16 | amountArray.foreach(param => { 17 | RedisOperationX.hmIncrementByOrCreate(param._1, nowHour, param._2) 18 | }) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /base-spark-bi/spark-realtime-report/src/main/scala/com/platform/base/realtimereport/persistence/service/FfqDataProcessService.scala: -------------------------------------------------------------------------------- 1 | package com.platform.realtimereport.persistence.service 2 | 3 | import java.util.{Calendar, Date} 4 | 5 | import com.platform.realtimereport.common.constant.ApplicationCommon 6 | import com.platform.realtimereport.persistence.dal.RedisOperationX 7 | import org.apache.commons.lang3.time.DateUtils 8 | 9 | 10 | case class LoanDataProcessService () { 11 | 12 | def persistLoanOrderData(resultArray: Array[(String, Float)]): Unit = { 13 | val nowHour:Long = DateUtils.getFragmentInHours(new Date(), Calendar.DAY_OF_YEAR) 14 | resultArray.foreach(param => { 15 | RedisOperationX.hmIncrementByFloatOrCreate(param._1, nowHour, param._2) 16 | }) 17 | } 18 | 19 | def persistLoanOrderCityData(resultArray: Array[(String, Int)]): Unit = { 20 | resultArray.foreach(param => { 21 | RedisOperationX.hmIncrementByIntOrCreate(ApplicationCommon.LOANCITY_RANK, param._1, param._2) 22 | }) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /base-spark-bi/spark-realtime-report/src/main/scala/com/platform/base/realtimereport/streaming/ProcessorContext.scala: -------------------------------------------------------------------------------- 1 | package com.platform.realtimereport.streaming 2 | 3 | import com.alibaba.fastjson.JSONObject 4 | import org.apache.spark.streaming.dstream.DStream 5 | 6 | /** 7 | * 8 | * author: wlhbdp 9 | */ 10 | case class ProcessorContext(processor: StreamProcessStrategy) { 11 | 12 | def executeStreamProcess(stream: DStream[JSONObject]):Unit = { 13 | processor.processDataStream(stream) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /base-spark-bi/spark-realtime-report/src/main/scala/com/platform/base/realtimereport/streaming/StreamProcessStrategy.scala: -------------------------------------------------------------------------------- 1 | package com.platform.realtimereport.streaming 2 | 3 | import com.alibaba.fastjson.JSONObject 4 | import org.apache.spark.streaming.dstream.DStream 5 | import org.slf4j.{Logger, LoggerFactory} 6 | 7 | /** 8 | * 9 | * author: wlhbdp 10 | */ 11 | trait StreamProcessStrategy { 12 | 13 | val logger:Logger = LoggerFactory.getLogger(getClass) 14 | 15 | def processDataStream(stream: DStream[JSONObject]) 16 | } 17 | -------------------------------------------------------------------------------- /base-spark-bi/spark-realtime-report/src/main/scala/com/platform/base/realtimereport/streaming/processor/HxStreamProcessor.scala: -------------------------------------------------------------------------------- 1 | package com.platform.realtimereport.streaming.processor 2 | 3 | import com.alibaba.fastjson.JSONObject 4 | import com.platform.realtimereport.streaming.StreamProcessStrategy 5 | import com.platform.realtimereport.streaming.rdd.RDDCoreDataProcess 6 | import org.apache.spark.streaming.dstream.DStream 7 | 8 | /** 9 | * 报表处理 10 | */ 11 | case class CoreStreamProcessor() extends StreamProcessStrategy { 12 | override def processDataStream(stream: DStream[JSONObject]): Unit = { 13 | RDDCoreDataProcess().aggregateHourlyConsumptionMoneyData(stream) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /base-spider/search/LcvSearch/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/LcvSearch/__init__.py -------------------------------------------------------------------------------- /base-spider/search/LcvSearch/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/LcvSearch/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/search/LcvSearch/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/LcvSearch/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/search/LcvSearch/__pycache__/settings.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/LcvSearch/__pycache__/settings.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/search/LcvSearch/__pycache__/settings.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/LcvSearch/__pycache__/settings.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/search/LcvSearch/__pycache__/urls.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/LcvSearch/__pycache__/urls.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/search/LcvSearch/__pycache__/urls.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/LcvSearch/__pycache__/urls.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/search/LcvSearch/__pycache__/wsgi.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/LcvSearch/__pycache__/wsgi.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/search/LcvSearch/__pycache__/wsgi.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/LcvSearch/__pycache__/wsgi.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/search/LcvSearch/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for LcvSearch project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "LcvSearch.settings") 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /base-spider/search/db.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/db.sqlite3 -------------------------------------------------------------------------------- /base-spider/search/dbs/ArticleSpider.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/dbs/ArticleSpider.db -------------------------------------------------------------------------------- /base-spider/search/dbs/ArticleSpiderc.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/dbs/ArticleSpiderc.db -------------------------------------------------------------------------------- /base-spider/search/eggs/ArticleSpider/1538646576.egg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/eggs/ArticleSpider/1538646576.egg -------------------------------------------------------------------------------- /base-spider/search/eggs/ArticleSpiderc/1538647663.egg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/eggs/ArticleSpiderc/1538647663.egg -------------------------------------------------------------------------------- /base-spider/search/manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == "__main__": 6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "LcvSearch.settings") 7 | try: 8 | from django.core.management import execute_from_command_line 9 | except ImportError: 10 | # The above import may fail for some other reason. Ensure that the 11 | # issue is really that Django is missing to avoid masking other 12 | # exceptions on Python 2. 13 | try: 14 | import django 15 | except ImportError: 16 | raise ImportError( 17 | "Couldn't import Django. Are you sure it's installed and " 18 | "available on your PYTHONPATH environment variable? Did you " 19 | "forget to activate a virtual environment?" 20 | ) 21 | raise 22 | execute_from_command_line(sys.argv) 23 | -------------------------------------------------------------------------------- /base-spider/search/search/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/search/__init__.py -------------------------------------------------------------------------------- /base-spider/search/search/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/search/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/search/search/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/search/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/search/search/__pycache__/admin.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/search/__pycache__/admin.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/search/search/__pycache__/admin.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/search/__pycache__/admin.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/search/search/__pycache__/models.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/search/__pycache__/models.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/search/search/__pycache__/models.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/search/__pycache__/models.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/search/search/__pycache__/views.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/search/__pycache__/views.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/search/search/__pycache__/views.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/search/__pycache__/views.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/search/search/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /base-spider/search/search/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class SearchConfig(AppConfig): 5 | name = 'search' 6 | -------------------------------------------------------------------------------- /base-spider/search/search/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/search/migrations/__init__.py -------------------------------------------------------------------------------- /base-spider/search/search/migrations/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/search/migrations/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/search/search/migrations/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/search/migrations/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/search/search/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /base-spider/search/static/img/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/static/img/Thumbs.db -------------------------------------------------------------------------------- /base-spider/search/static/img/btn_min.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/static/img/btn_min.png -------------------------------------------------------------------------------- /base-spider/search/static/img/btnbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/static/img/btnbg.png -------------------------------------------------------------------------------- /base-spider/search/static/img/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/static/img/down.png -------------------------------------------------------------------------------- /base-spider/search/static/img/inputbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/static/img/inputbg.png -------------------------------------------------------------------------------- /base-spider/search/static/img/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/static/img/line.png -------------------------------------------------------------------------------- /base-spider/search/static/img/ll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/static/img/ll.png -------------------------------------------------------------------------------- /base-spider/search/static/img/logo-bak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/static/img/logo-bak.png -------------------------------------------------------------------------------- /base-spider/search/static/img/logo-bak2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/static/img/logo-bak2.png -------------------------------------------------------------------------------- /base-spider/search/static/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/static/img/logo.png -------------------------------------------------------------------------------- /base-spider/search/static/img/logo1-bak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/static/img/logo1-bak.png -------------------------------------------------------------------------------- /base-spider/search/static/img/logo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/static/img/logo1.png -------------------------------------------------------------------------------- /base-spider/search/static/img/lr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/static/img/lr.png -------------------------------------------------------------------------------- /base-spider/search/static/img/more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/static/img/more.png -------------------------------------------------------------------------------- /base-spider/search/static/img/seachbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/search/static/img/seachbtn.png -------------------------------------------------------------------------------- /base-spider/search/static/js/global.js: -------------------------------------------------------------------------------- 1 | 2 | $(document).ready(function(){ 3 | 4 | // 去除虚线框(会影响效率) 5 | $("a,input:checkbox,input:radio,button,input:button").live('focus',function(){$(this).blur();}); 6 | 7 | }); 8 | 9 | 10 | function hideElement(currentElement, targetElement) { 11 | if (!$.isArray(targetElement)) { 12 | targetElement = [ targetElement ]; 13 | } 14 | $(document).on("click.hideElement", function(e) { 15 | var len = 0, $target = $(e.target); 16 | for (var i = 0, length = targetElement.length; i < length; i++) { 17 | $.each(targetElement[i], function(j, n) { 18 | if ($target.is($(n)) || $.contains($(n)[0], $target[0])) { 19 | len++; 20 | } 21 | }); 22 | } 23 | if ($.contains(currentElement[0], $target[0])) { 24 | len = 1; 25 | } 26 | if (len == 0) { 27 | currentElement.hide(); 28 | } 29 | }); 30 | }; -------------------------------------------------------------------------------- /base-spider/search/twistd.pid: -------------------------------------------------------------------------------- 1 | 5199 -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/__init__.py -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/__pycache__/items.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/__pycache__/items.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/__pycache__/items.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/__pycache__/items.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/__pycache__/items.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/__pycache__/items.cpython-37.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/__pycache__/pipelines.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/__pycache__/pipelines.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/__pycache__/pipelines.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/__pycache__/pipelines.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/__pycache__/settings.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/__pycache__/settings.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/__pycache__/settings.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/__pycache__/settings.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/__pycache__/settings.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/__pycache__/settings.cpython-37.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/middlewares/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | __author__ = 'bobby' 3 | -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/middlewares/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/middlewares/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/middlewares/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/middlewares/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/middlewares/__pycache__/rotate_user_agent.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/middlewares/__pycache__/rotate_user_agent.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/middlewares/__pycache__/rotate_user_agent.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/middlewares/__pycache__/rotate_user_agent.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/models/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | __author__ = 'bobby' 3 | -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/models/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/models/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/models/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/models/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/models/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/models/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/models/__pycache__/models.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/models/__pycache__/models.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/models/__pycache__/models.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/models/__pycache__/models.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/models/__pycache__/models.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/models/__pycache__/models.cpython-37.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/spiders/__init__.py: -------------------------------------------------------------------------------- 1 | # This package will contain the spiders of your Scrapy project 2 | # 3 | # Please refer to the documentation for information on how to create and manage 4 | # your spiders. 5 | -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/spiders/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/spiders/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/spiders/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/spiders/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/spiders/__pycache__/jobbole.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/spiders/__pycache__/jobbole.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/spiders/__pycache__/jobbole.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/spiders/__pycache__/jobbole.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/spiders/__pycache__/lagou.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/spiders/__pycache__/lagou.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/spiders/__pycache__/lagou.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/spiders/__pycache__/lagou.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/spiders/__pycache__/zhihu.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/spiders/__pycache__/zhihu.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/spiders/__pycache__/zhihu.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/spiders/__pycache__/zhihu.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/spiders/__pycache__/zhihu2.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/spiders/__pycache__/zhihu2.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/tools/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # encoding: utf-8 3 | 4 | 5 | def func(): 6 | pass 7 | 8 | 9 | class Main(): 10 | def __init__(self): 11 | pass 12 | 13 | 14 | if __name__ == '__main__': 15 | pass -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/tools/getimage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/tools/getimage.jpg -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/tools/xici_ip.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # encoding: utf-8 3 | 4 | def func(): 5 | pass 6 | 7 | 8 | class Main(): 9 | def __init__(self): 10 | pass 11 | 12 | 13 | if __name__ == '__main__': 14 | pass -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/utils/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | __author__ = 'bobby' 3 | -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/utils/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/utils/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/utils/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/utils/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/utils/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/utils/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/utils/__pycache__/common.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/utils/__pycache__/common.cpython-35.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/utils/__pycache__/common.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/utils/__pycache__/common.cpython-36.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/utils/__pycache__/common.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/ArticleSpider/utils/__pycache__/common.cpython-37.pyc -------------------------------------------------------------------------------- /base-spider/spider/ArticleSpider/utils/common.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | __author__ = 'bobby' 3 | import hashlib 4 | import re 5 | 6 | 7 | def get_md5(url): 8 | if isinstance(url, str): 9 | url = url.encode("utf-8") 10 | m = hashlib.md5() 11 | m.update(url) 12 | return m.hexdigest() 13 | 14 | 15 | def extract_num(text): 16 | # 从字符串中提取出数字 17 | match_re = re.match(".*?(\d+).*", text) 18 | if match_re: 19 | nums = int(match_re.group(1)) 20 | else: 21 | nums = 0 22 | 23 | return nums 24 | 25 | 26 | if __name__ == "__main__": 27 | print(get_md5("http://jobbole.com".encode("utf-8"))) 28 | -------------------------------------------------------------------------------- /base-spider/spider/cookies.txt: -------------------------------------------------------------------------------- 1 | #LWP-Cookies-2.0 2 | Set-Cookie3: _zap="fe5d066e-ff84-4a57-ad3f-4a6eee760dd8"; path="/"; domain=".zhihu.com"; path_spec; domain_dot; expires="2020-10-01 02:48:14Z"; version=0 3 | Set-Cookie3: capsion_ticket="\"2|1:0|10:1538448638|14:capsion_ticket|44:MWYxZDY4N2UyZTgzNDJjZThiZWUwNjUxOWQ1ZDA5YTk=|31b954ba76f2058a7995abe9f240f4eee751e48fb07a0b0fb63d826e9b50864f\""; path="/"; domain=".zhihu.com"; path_spec; expires="2018-11-01 02:50:38Z"; httponly=None; version=0 4 | Set-Cookie3: d_c0="\"AFCnsu6-TA6PTqgIfkHzfgl5fz4o4V92ogQ=|1538448494\""; path="/"; domain=".zhihu.com"; path_spec; expires="2021-10-01 02:48:14Z"; version=0 5 | Set-Cookie3: z_c0="\"2|1:0|10:1538448700|4:z_c0|92:Mi4xTUNhV0F3QUFBQUFBVUtleTdyNU1EaVlBQUFCZ0FsVk5QQ3VnWEFEU0gxel8yZFJUNWowMGNlTW1FWWk2V0JtbXlB|64335c384828d281dc63f95998c80500e314b3ab62a69d5642a45daf955520ef\""; path="/"; domain=".zhihu.com"; path_spec; expires="2019-03-31 02:51:40Z"; httponly=None; version=0 6 | Set-Cookie3: tgw_l7_route=27a99ac9a31c20b25b182fd9e44378b8; path="/"; domain="www.zhihu.com"; path_spec; expires="2018-10-04 15:42:35Z"; version=0 7 | -------------------------------------------------------------------------------- /base-spider/spider/dbs/ArticleSpider.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/dbs/ArticleSpider.db -------------------------------------------------------------------------------- /base-spider/spider/dbs/default.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/dbs/default.db -------------------------------------------------------------------------------- /base-spider/spider/eggs/ArticleSpider/1538649179.egg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/eggs/ArticleSpider/1538649179.egg -------------------------------------------------------------------------------- /base-spider/spider/eggs/ArticleSpider/1538649561.egg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/eggs/ArticleSpider/1538649561.egg -------------------------------------------------------------------------------- /base-spider/spider/eggs/ArticleSpider/1538649718.egg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/eggs/ArticleSpider/1538649718.egg -------------------------------------------------------------------------------- /base-spider/spider/eggs/ArticleSpider/1538649920.egg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/eggs/ArticleSpider/1538649920.egg -------------------------------------------------------------------------------- /base-spider/spider/eggs/ArticleSpider/1538666765.egg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/eggs/ArticleSpider/1538666765.egg -------------------------------------------------------------------------------- /base-spider/spider/main.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | __author__ = 'bobby' 3 | 4 | from scrapy.cmdline import execute 5 | 6 | import sys 7 | import os 8 | 9 | #pip install -i https://pypi.douban.com/simple/ mysqlclient 10 | sys.path.append(os.path.dirname(os.path.abspath(__file__))) 11 | # execute(["scrapy", "crawl", "jobbole"]) 12 | execute(["scrapy", "crawl", "zhihu"]) 13 | # execute(["scrapy", "crawl", "lagou"]) 14 | # execute(["scrapy", "crawl", "zhihu2"]) 15 | 16 | # import scrapy 17 | # from scrapy.crawler import CrawlerProcess 18 | # from spiders.jobbole import JobboleSpider 19 | # from spiders.lagou import LagouSpider 20 | # from twisted.internet import reactor, defer 21 | # from scrapy.crawler import CrawlerRunner 22 | # from scrapy.utils.log import configure_logging 23 | # 24 | # configure_logging() 25 | # runner = CrawlerRunner() 26 | # 27 | # @defer.inlineCallbacks 28 | # def crawl(): 29 | # yield runner.crawl(JobboleSpider) 30 | # yield runner.crawl(LagouSpider) 31 | # reactor.stop() 32 | # 33 | # crawl() 34 | # reactor.run() # the script will block here until the last crawl call is finished -------------------------------------------------------------------------------- /base-spider/spider/project.egg-info/PKG-INFO: -------------------------------------------------------------------------------- 1 | Metadata-Version: 1.0 2 | Name: project 3 | Version: 1.0 4 | Summary: UNKNOWN 5 | Home-page: UNKNOWN 6 | Author: UNKNOWN 7 | Author-email: UNKNOWN 8 | License: UNKNOWN 9 | Description: UNKNOWN 10 | Platform: UNKNOWN 11 | -------------------------------------------------------------------------------- /base-spider/spider/project.egg-info/SOURCES.txt: -------------------------------------------------------------------------------- 1 | setup.py 2 | ArticleSpider/__init__.py 3 | ArticleSpider/items.py 4 | ArticleSpider/middlewares.py 5 | ArticleSpider/pipelines.py 6 | ArticleSpider/settings.py 7 | ArticleSpider/middlewares/__init__.py 8 | ArticleSpider/middlewares/rotate_user_agent.py 9 | ArticleSpider/models/__init__.py 10 | ArticleSpider/models/models.py 11 | ArticleSpider/spiders/__init__.py 12 | ArticleSpider/spiders/jobbole.py 13 | ArticleSpider/spiders/lagou.py 14 | ArticleSpider/spiders/zhihu.py 15 | ArticleSpider/tools/__init__.py 16 | ArticleSpider/tools/simple_http_server.py 17 | ArticleSpider/tools/tools.py 18 | ArticleSpider/tools/xici_ip.py 19 | ArticleSpider/tools/yundama_requests.py 20 | ArticleSpider/utils/__init__.py 21 | ArticleSpider/utils/common.py 22 | ArticleSpider/utils/zhihu_login.py 23 | ArticleSpider/utils/zhihu_login_requests.py 24 | project.egg-info/PKG-INFO 25 | project.egg-info/SOURCES.txt 26 | project.egg-info/dependency_links.txt 27 | project.egg-info/entry_points.txt 28 | project.egg-info/top_level.txt -------------------------------------------------------------------------------- /base-spider/spider/project.egg-info/dependency_links.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /base-spider/spider/project.egg-info/entry_points.txt: -------------------------------------------------------------------------------- 1 | [scrapy] 2 | settings = ArticleSpider.settings 3 | 4 | -------------------------------------------------------------------------------- /base-spider/spider/project.egg-info/top_level.txt: -------------------------------------------------------------------------------- 1 | ArticleSpider 2 | -------------------------------------------------------------------------------- /base-spider/spider/scrapy.cfg: -------------------------------------------------------------------------------- 1 | # Automatically created by: scrapy startproject 2 | # 3 | # For more information about the [deploy] section see: 4 | # https://scrapyd.readthedocs.org/en/latest/deploy.html 5 | 6 | [settings] 7 | default = ArticleSpider.settings 8 | 9 | [deploy:Myploy] 10 | url = http://localhost:6800/ 11 | project = ArticleSpider 12 | -------------------------------------------------------------------------------- /base-spider/spider/setup.py: -------------------------------------------------------------------------------- 1 | # Automatically created by: scrapyd-deploy 2 | 3 | from setuptools import setup, find_packages 4 | 5 | setup( 6 | name = 'project', 7 | version = '1.0', 8 | packages = find_packages(), 9 | entry_points = {'scrapy': ['settings = ArticleSpider.settings']}, 10 | ) 11 | -------------------------------------------------------------------------------- /base-spider/spider/twistd.pid: -------------------------------------------------------------------------------- 1 | 7246 -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/easy-install.pth: -------------------------------------------------------------------------------- 1 | ./setuptools-28.8.0-py3.6.egg 2 | ./pip-9.0.1-py3.6.egg 3 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/EGG-INFO/dependency_links.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/EGG-INFO/entry_points.txt: -------------------------------------------------------------------------------- 1 | [console_scripts] 2 | pip = pip:main 3 | pip3 = pip:main 4 | pip3.6 = pip:main 5 | 6 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/EGG-INFO/not-zip-safe: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/EGG-INFO/requires.txt: -------------------------------------------------------------------------------- 1 | 2 | [testing] 3 | pytest 4 | virtualenv>=1.10 5 | scripttest>=1.3 6 | mock 7 | pretend 8 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/EGG-INFO/top_level.txt: -------------------------------------------------------------------------------- 1 | pip 2 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/__main__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | import os 4 | import sys 5 | 6 | # If we are running from a wheel, add the wheel to sys.path 7 | # This allows the usage python pip-*.whl/pip install pip-*.whl 8 | if __package__ == '': 9 | # __file__ is pip-*.whl/pip/__main__.py 10 | # first dirname call strips of '/__main__.py', second strips off '/pip' 11 | # Resulting path is the name of the wheel itself 12 | # Add that to sys.path so we can import pip 13 | path = os.path.dirname(os.path.dirname(__file__)) 14 | sys.path.insert(0, path) 15 | 16 | import pip # noqa 17 | 18 | if __name__ == '__main__': 19 | sys.exit(pip.main()) 20 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/cachecontrol/__init__.py: -------------------------------------------------------------------------------- 1 | """CacheControl import Interface. 2 | 3 | Make it easy to import from cachecontrol without long namespaces. 4 | """ 5 | __author__ = 'Eric Larson' 6 | __email__ = 'eric@ionrock.org' 7 | __version__ = '0.11.7' 8 | 9 | from .wrapper import CacheControl 10 | from .adapter import CacheControlAdapter 11 | from .controller import CacheController 12 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/cachecontrol/cache.py: -------------------------------------------------------------------------------- 1 | """ 2 | The cache object API for implementing caches. The default is a thread 3 | safe in-memory dictionary. 4 | """ 5 | from threading import Lock 6 | 7 | 8 | class BaseCache(object): 9 | 10 | def get(self, key): 11 | raise NotImplemented() 12 | 13 | def set(self, key, value): 14 | raise NotImplemented() 15 | 16 | def delete(self, key): 17 | raise NotImplemented() 18 | 19 | def close(self): 20 | pass 21 | 22 | 23 | class DictCache(BaseCache): 24 | 25 | def __init__(self, init_dict=None): 26 | self.lock = Lock() 27 | self.data = init_dict or {} 28 | 29 | def get(self, key): 30 | return self.data.get(key, None) 31 | 32 | def set(self, key, value): 33 | with self.lock: 34 | self.data.update({key: value}) 35 | 36 | def delete(self, key): 37 | with self.lock: 38 | if key in self.data: 39 | self.data.pop(key) 40 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/cachecontrol/caches/__init__.py: -------------------------------------------------------------------------------- 1 | from textwrap import dedent 2 | 3 | try: 4 | from .file_cache import FileCache 5 | except ImportError: 6 | notice = dedent(''' 7 | NOTE: In order to use the FileCache you must have 8 | lockfile installed. You can install it via pip: 9 | pip install lockfile 10 | ''') 11 | print(notice) 12 | 13 | 14 | try: 15 | import redis 16 | from .redis_cache import RedisCache 17 | except ImportError: 18 | pass 19 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/cachecontrol/compat.py: -------------------------------------------------------------------------------- 1 | try: 2 | from urllib.parse import urljoin 3 | except ImportError: 4 | from urlparse import urljoin 5 | 6 | 7 | try: 8 | import cPickle as pickle 9 | except ImportError: 10 | import pickle 11 | 12 | 13 | from pip._vendor.requests.packages.urllib3.response import HTTPResponse 14 | from pip._vendor.requests.packages.urllib3.util import is_fp_closed 15 | 16 | # Replicate some six behaviour 17 | try: 18 | text_type = (unicode,) 19 | except NameError: 20 | text_type = (str,) 21 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/cachecontrol/wrapper.py: -------------------------------------------------------------------------------- 1 | from .adapter import CacheControlAdapter 2 | from .cache import DictCache 3 | 4 | 5 | def CacheControl(sess, 6 | cache=None, 7 | cache_etags=True, 8 | serializer=None, 9 | heuristic=None): 10 | 11 | cache = cache or DictCache() 12 | adapter = CacheControlAdapter( 13 | cache, 14 | cache_etags=cache_etags, 15 | serializer=serializer, 16 | heuristic=heuristic, 17 | ) 18 | sess.mount('http://', adapter) 19 | sess.mount('https://', adapter) 20 | 21 | return sess 22 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/colorama/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. 2 | from .initialise import init, deinit, reinit, colorama_text 3 | from .ansi import Fore, Back, Style, Cursor 4 | from .ansitowin32 import AnsiToWin32 5 | 6 | __version__ = '0.3.7' 7 | 8 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/distlib/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # Copyright (C) 2012-2016 Vinay Sajip. 4 | # Licensed to the Python Software Foundation under a contributor agreement. 5 | # See LICENSE.txt and CONTRIBUTORS.txt. 6 | # 7 | import logging 8 | 9 | __version__ = '0.2.4' 10 | 11 | class DistlibException(Exception): 12 | pass 13 | 14 | try: 15 | from logging import NullHandler 16 | except ImportError: # pragma: no cover 17 | class NullHandler(logging.Handler): 18 | def handle(self, record): pass 19 | def emit(self, record): pass 20 | def createLock(self): self.lock = None 21 | 22 | logger = logging.getLogger(__name__) 23 | logger.addHandler(NullHandler()) 24 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/distlib/_backport/__init__.py: -------------------------------------------------------------------------------- 1 | """Modules copied from Python 3 standard libraries, for internal use only. 2 | 3 | Individual classes and functions are found in d2._backport.misc. Intended 4 | usage is to always import things missing from 3.1 from that module: the 5 | built-in/stdlib objects will be used if found. 6 | """ 7 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/distlib/t32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/distlib/t32.exe -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/distlib/t64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/distlib/t64.exe -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/distlib/w32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/distlib/w32.exe -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/distlib/w64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/distlib/w64.exe -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/html5lib/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | HTML parsing library based on the WHATWG "HTML5" 3 | specification. The parser is designed to be compatible with existing 4 | HTML found in the wild and implements well-defined error recovery that 5 | is largely compatible with modern desktop web browsers. 6 | 7 | Example usage: 8 | 9 | import html5lib 10 | f = open("my_document.html") 11 | tree = html5lib.parse(f) 12 | """ 13 | 14 | from __future__ import absolute_import, division, unicode_literals 15 | 16 | from .html5parser import HTMLParser, parse, parseFragment 17 | from .treebuilders import getTreeBuilder 18 | from .treewalkers import getTreeWalker 19 | from .serializer import serialize 20 | 21 | __all__ = ["HTMLParser", "parse", "parseFragment", "getTreeBuilder", 22 | "getTreeWalker", "serialize"] 23 | 24 | # this has to be at the top level, see how setup.py parses this 25 | __version__ = "1.0b10" 26 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/html5lib/_trie/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, division, unicode_literals 2 | 3 | from .py import Trie as PyTrie 4 | 5 | Trie = PyTrie 6 | 7 | # pylint:disable=wrong-import-position 8 | try: 9 | from .datrie import Trie as DATrie 10 | except ImportError: 11 | pass 12 | else: 13 | Trie = DATrie 14 | # pylint:enable=wrong-import-position 15 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/html5lib/filters/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/html5lib/filters/__init__.py -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/html5lib/filters/alphabeticalattributes.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, division, unicode_literals 2 | 3 | from . import base 4 | 5 | try: 6 | from collections import OrderedDict 7 | except ImportError: 8 | from ordereddict import OrderedDict 9 | 10 | 11 | class Filter(base.Filter): 12 | def __iter__(self): 13 | for token in base.Filter.__iter__(self): 14 | if token["type"] in ("StartTag", "EmptyTag"): 15 | attrs = OrderedDict() 16 | for name, value in sorted(token["data"].items(), 17 | key=lambda x: x[0]): 18 | attrs[name] = value 19 | token["data"] = attrs 20 | yield token 21 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/html5lib/filters/base.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, division, unicode_literals 2 | 3 | 4 | class Filter(object): 5 | def __init__(self, source): 6 | self.source = source 7 | 8 | def __iter__(self): 9 | return iter(self.source) 10 | 11 | def __getattr__(self, name): 12 | return getattr(self.source, name) 13 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/html5lib/treeadapters/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import, division, unicode_literals 2 | 3 | from . import sax 4 | 5 | __all__ = ["sax"] 6 | 7 | try: 8 | from . import genshi # noqa 9 | except ImportError: 10 | pass 11 | else: 12 | __all__.append("genshi") 13 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/packaging/__about__.py: -------------------------------------------------------------------------------- 1 | # This file is dual licensed under the terms of the Apache License, Version 2 | # 2.0, and the BSD License. See the LICENSE file in the root of this repository 3 | # for complete details. 4 | from __future__ import absolute_import, division, print_function 5 | 6 | __all__ = [ 7 | "__title__", "__summary__", "__uri__", "__version__", "__author__", 8 | "__email__", "__license__", "__copyright__", 9 | ] 10 | 11 | __title__ = "packaging" 12 | __summary__ = "Core utilities for Python packages" 13 | __uri__ = "https://github.com/pypa/packaging" 14 | 15 | __version__ = "16.8" 16 | 17 | __author__ = "Donald Stufft and individual contributors" 18 | __email__ = "donald@stufft.io" 19 | 20 | __license__ = "BSD or Apache License, Version 2.0" 21 | __copyright__ = "Copyright 2014-2016 %s" % __author__ 22 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/packaging/__init__.py: -------------------------------------------------------------------------------- 1 | # This file is dual licensed under the terms of the Apache License, Version 2 | # 2.0, and the BSD License. See the LICENSE file in the root of this repository 3 | # for complete details. 4 | from __future__ import absolute_import, division, print_function 5 | 6 | from .__about__ import ( 7 | __author__, __copyright__, __email__, __license__, __summary__, __title__, 8 | __uri__, __version__ 9 | ) 10 | 11 | __all__ = [ 12 | "__title__", "__summary__", "__uri__", "__version__", "__author__", 13 | "__email__", "__license__", "__copyright__", 14 | ] 15 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/packaging/_compat.py: -------------------------------------------------------------------------------- 1 | # This file is dual licensed under the terms of the Apache License, Version 2 | # 2.0, and the BSD License. See the LICENSE file in the root of this repository 3 | # for complete details. 4 | from __future__ import absolute_import, division, print_function 5 | 6 | import sys 7 | 8 | 9 | PY2 = sys.version_info[0] == 2 10 | PY3 = sys.version_info[0] == 3 11 | 12 | # flake8: noqa 13 | 14 | if PY3: 15 | string_types = str, 16 | else: 17 | string_types = basestring, 18 | 19 | 20 | def with_metaclass(meta, *bases): 21 | """ 22 | Create a base class with a metaclass. 23 | """ 24 | # This requires a bit of explanation: the basic idea is to make a dummy 25 | # metaclass for one level of class instantiation that replaces itself with 26 | # the actual metaclass. 27 | class metaclass(meta): 28 | def __new__(cls, name, this_bases, d): 29 | return meta(name, bases, d) 30 | return type.__new__(metaclass, 'temporary_class', (), {}) 31 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/packaging/utils.py: -------------------------------------------------------------------------------- 1 | # This file is dual licensed under the terms of the Apache License, Version 2 | # 2.0, and the BSD License. See the LICENSE file in the root of this repository 3 | # for complete details. 4 | from __future__ import absolute_import, division, print_function 5 | 6 | import re 7 | 8 | 9 | _canonicalize_regex = re.compile(r"[-_.]+") 10 | 11 | 12 | def canonicalize_name(name): 13 | # This is taken from PEP 503. 14 | return _canonicalize_regex.sub("-", name).lower() 15 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/re-vendor.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import pip 4 | import glob 5 | import shutil 6 | 7 | here = os.path.abspath(os.path.dirname(__file__)) 8 | 9 | def usage(): 10 | print("Usage: re-vendor.py [clean|vendor]") 11 | sys.exit(1) 12 | 13 | def clean(): 14 | for fn in os.listdir(here): 15 | dirname = os.path.join(here, fn) 16 | if os.path.isdir(dirname): 17 | shutil.rmtree(dirname) 18 | # six is a single file, not a package 19 | os.unlink(os.path.join(here, 'six.py')) 20 | 21 | def vendor(): 22 | pip.main(['install', '-t', here, '-r', 'vendor.txt']) 23 | for dirname in glob.glob('*.egg-info'): 24 | shutil.rmtree(dirname) 25 | 26 | if __name__ == '__main__': 27 | if len(sys.argv) != 2: 28 | usage() 29 | if sys.argv[1] == 'clean': 30 | clean() 31 | elif sys.argv[1] == 'vendor': 32 | vendor() 33 | else: 34 | usage() 35 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/requests/certs.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | requests.certs 6 | ~~~~~~~~~~~~~~ 7 | 8 | This module returns the preferred default CA certificate bundle. 9 | 10 | If you are packaging Requests, e.g., for a Linux distribution or a managed 11 | environment, you can change the definition of where() to return a separately 12 | packaged CA bundle. 13 | """ 14 | import os.path 15 | 16 | try: 17 | from certifi import where 18 | except ImportError: 19 | def where(): 20 | """Return the preferred certificate bundle.""" 21 | # vendored bundle inside Requests 22 | return os.path.join(os.path.dirname(__file__), 'cacert.pem') 23 | 24 | if __name__ == '__main__': 25 | print(where()) 26 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/requests/hooks.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | requests.hooks 5 | ~~~~~~~~~~~~~~ 6 | 7 | This module provides the capabilities for the Requests hooks system. 8 | 9 | Available hooks: 10 | 11 | ``response``: 12 | The response generated from a Request. 13 | """ 14 | HOOKS = ['response'] 15 | 16 | 17 | def default_hooks(): 18 | return dict((event, []) for event in HOOKS) 19 | 20 | # TODO: response is the only one 21 | 22 | 23 | def dispatch_hook(key, hooks, hook_data, **kwargs): 24 | """Dispatches a hook dictionary on a given piece of data.""" 25 | hooks = hooks or dict() 26 | hooks = hooks.get(key) 27 | if hooks: 28 | if hasattr(hooks, '__call__'): 29 | hooks = [hooks] 30 | for hook in hooks: 31 | _hook_data = hook(hook_data, **kwargs) 32 | if _hook_data is not None: 33 | hook_data = _hook_data 34 | return hook_data 35 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/requests/packages/urllib3/contrib/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/requests/packages/urllib3/contrib/__init__.py -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/requests/packages/urllib3/packages/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from . import ssl_match_hostname 4 | 5 | __all__ = ('ssl_match_hostname', ) 6 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py: -------------------------------------------------------------------------------- 1 | try: 2 | # Python 3.2+ 3 | from ssl import CertificateError, match_hostname 4 | except ImportError: 5 | try: 6 | # Backport of the function from a pypi module 7 | from backports.ssl_match_hostname import CertificateError, match_hostname 8 | except ImportError: 9 | # Our vendored copy 10 | from ._implementation import CertificateError, match_hostname 11 | 12 | # Not needed, but documenting what we provide. 13 | __all__ = ('CertificateError', 'match_hostname') 14 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/models/__init__.py: -------------------------------------------------------------------------------- 1 | from pip.models.index import Index, PyPI 2 | 3 | 4 | __all__ = ["Index", "PyPI"] 5 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/models/index.py: -------------------------------------------------------------------------------- 1 | from pip._vendor.six.moves.urllib import parse as urllib_parse 2 | 3 | 4 | class Index(object): 5 | def __init__(self, url): 6 | self.url = url 7 | self.netloc = urllib_parse.urlsplit(url).netloc 8 | self.simple_url = self.url_to_path('simple') 9 | self.pypi_url = self.url_to_path('pypi') 10 | self.pip_json_url = self.url_to_path('pypi/pip/json') 11 | 12 | def url_to_path(self, path): 13 | return urllib_parse.urljoin(self.url, path) 14 | 15 | 16 | PyPI = Index('https://pypi.python.org/') 17 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/operations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/operations/__init__.py -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/req/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from .req_install import InstallRequirement 4 | from .req_set import RequirementSet, Requirements 5 | from .req_file import parse_requirements 6 | 7 | __all__ = [ 8 | "RequirementSet", "Requirements", "InstallRequirement", 9 | "parse_requirements", 10 | ] 11 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/status_codes.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | SUCCESS = 0 4 | ERROR = 1 5 | UNKNOWN_ERROR = 2 6 | VIRTUALENV_NOT_FOUND = 3 7 | PREVIOUS_BUILD_DIR_ERROR = 4 8 | NO_MATCHES_FOUND = 23 9 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/utils/filesystem.py: -------------------------------------------------------------------------------- 1 | import os 2 | import os.path 3 | 4 | from pip.compat import get_path_uid 5 | 6 | 7 | def check_path_owner(path): 8 | # If we don't have a way to check the effective uid of this process, then 9 | # we'll just assume that we own the directory. 10 | if not hasattr(os, "geteuid"): 11 | return True 12 | 13 | previous = None 14 | while path != previous: 15 | if os.path.lexists(path): 16 | # Check if path is writable by current user. 17 | if os.geteuid() == 0: 18 | # Special handling for root user in order to handle properly 19 | # cases where users use sudo without -H flag. 20 | try: 21 | path_uid = get_path_uid(path) 22 | except OSError: 23 | return False 24 | return path_uid == 0 25 | else: 26 | return os.access(path, os.W_OK) 27 | else: 28 | previous, path = path, os.path.dirname(path) 29 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/pip-9.0.1-py3.6.egg/pip/utils/setuptools_build.py: -------------------------------------------------------------------------------- 1 | # Shim to wrap setup.py invocation with setuptools 2 | SETUPTOOLS_SHIM = ( 3 | "import setuptools, tokenize;__file__=%r;" 4 | "f=getattr(tokenize, 'open', open)(__file__);" 5 | "code=f.read().replace('\\r\\n', '\\n');" 6 | "f.close();" 7 | "exec(compile(code, __file__, 'exec'))" 8 | ) 9 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/setuptools-28.8.0-py3.6.egg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Lib/site-packages/setuptools-28.8.0-py3.6.egg -------------------------------------------------------------------------------- /base-spider/spider/venv/Lib/site-packages/setuptools.pth: -------------------------------------------------------------------------------- 1 | ./setuptools-28.8.0-py3.6.egg 2 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_asyncio.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_asyncio.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_bz2.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_bz2.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_ctypes.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_ctypes.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_ctypes_test.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_ctypes_test.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_decimal.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_decimal.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_elementtree.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_elementtree.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_hashlib.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_hashlib.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_lzma.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_lzma.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_msi.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_msi.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_multiprocessing.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_multiprocessing.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_overlapped.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_overlapped.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_socket.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_socket.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_sqlite3.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_sqlite3.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_ssl.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_ssl.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_testbuffer.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_testbuffer.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_testcapi.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_testcapi.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_testconsole.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_testconsole.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_testimportmultiple.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_testimportmultiple.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_testmultiphase.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_testmultiphase.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/_tkinter.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/_tkinter.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/activate.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | set "VIRTUAL_ENV=D:\wlhbdp\software\Python\linuxShare\l0x8df\venv" 3 | 4 | if not defined PROMPT ( 5 | set "PROMPT=$P$G" 6 | ) 7 | 8 | if defined _OLD_VIRTUAL_PROMPT ( 9 | set "PROMPT=%_OLD_VIRTUAL_PROMPT%" 10 | ) 11 | 12 | if defined _OLD_VIRTUAL_PYTHONHOME ( 13 | set "PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%" 14 | ) 15 | 16 | set "_OLD_VIRTUAL_PROMPT=%PROMPT%" 17 | set "PROMPT=(venv) %PROMPT%" 18 | 19 | if defined PYTHONHOME ( 20 | set "_OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME%" 21 | set PYTHONHOME= 22 | ) 23 | 24 | if defined _OLD_VIRTUAL_PATH ( 25 | set "PATH=%_OLD_VIRTUAL_PATH%" 26 | ) else ( 27 | set "_OLD_VIRTUAL_PATH=%PATH%" 28 | ) 29 | 30 | set "PATH=%VIRTUAL_ENV%\Scripts;%PATH%" 31 | 32 | :END 33 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/deactivate.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | if defined _OLD_VIRTUAL_PROMPT ( 4 | set "PROMPT=%_OLD_VIRTUAL_PROMPT%" 5 | ) 6 | set _OLD_VIRTUAL_PROMPT= 7 | 8 | if defined _OLD_VIRTUAL_PYTHONHOME ( 9 | set "PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%" 10 | set _OLD_VIRTUAL_PYTHONHOME= 11 | ) 12 | 13 | if defined _OLD_VIRTUAL_PATH ( 14 | set "PATH=%_OLD_VIRTUAL_PATH%" 15 | ) 16 | 17 | set _OLD_VIRTUAL_PATH= 18 | 19 | set VIRTUAL_ENV= 20 | 21 | :END 22 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/easy_install-3.6-script.py: -------------------------------------------------------------------------------- 1 | #!D:\wlhbdp\software\Python\linuxShare\l0x8df\venv\Scripts\python.exe 2 | # EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==28.8.0','console_scripts','easy_install-3.6' 3 | __requires__ = 'setuptools==28.8.0' 4 | import re 5 | import sys 6 | from pkg_resources import load_entry_point 7 | 8 | if __name__ == '__main__': 9 | sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) 10 | sys.exit( 11 | load_entry_point('setuptools==28.8.0', 'console_scripts', 'easy_install-3.6')() 12 | ) 13 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/easy_install-3.6.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/easy_install-3.6.exe -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/easy_install-script.py: -------------------------------------------------------------------------------- 1 | #!D:\wlhbdp\software\Python\linuxShare\l0x8df\venv\Scripts\python.exe 2 | # EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==28.8.0','console_scripts','easy_install' 3 | __requires__ = 'setuptools==28.8.0' 4 | import re 5 | import sys 6 | from pkg_resources import load_entry_point 7 | 8 | if __name__ == '__main__': 9 | sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) 10 | sys.exit( 11 | load_entry_point('setuptools==28.8.0', 'console_scripts', 'easy_install')() 12 | ) 13 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/easy_install.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/easy_install.exe -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/pip-script.py: -------------------------------------------------------------------------------- 1 | #!D:\wlhbdp\software\Python\linuxShare\l0x8df\venv\Scripts\python.exe 2 | # EASY-INSTALL-ENTRY-SCRIPT: 'pip==9.0.1','console_scripts','pip' 3 | __requires__ = 'pip==9.0.1' 4 | import re 5 | import sys 6 | from pkg_resources import load_entry_point 7 | 8 | if __name__ == '__main__': 9 | sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) 10 | sys.exit( 11 | load_entry_point('pip==9.0.1', 'console_scripts', 'pip')() 12 | ) 13 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/pip.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/pip.exe -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/pip3-script.py: -------------------------------------------------------------------------------- 1 | #!D:\wlhbdp\software\Python\linuxShare\l0x8df\venv\Scripts\python.exe 2 | # EASY-INSTALL-ENTRY-SCRIPT: 'pip==9.0.1','console_scripts','pip3' 3 | __requires__ = 'pip==9.0.1' 4 | import re 5 | import sys 6 | from pkg_resources import load_entry_point 7 | 8 | if __name__ == '__main__': 9 | sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) 10 | sys.exit( 11 | load_entry_point('pip==9.0.1', 'console_scripts', 'pip3')() 12 | ) 13 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/pip3.6-script.py: -------------------------------------------------------------------------------- 1 | #!D:\wlhbdp\software\Python\linuxShare\l0x8df\venv\Scripts\python.exe 2 | # EASY-INSTALL-ENTRY-SCRIPT: 'pip==9.0.1','console_scripts','pip3.6' 3 | __requires__ = 'pip==9.0.1' 4 | import re 5 | import sys 6 | from pkg_resources import load_entry_point 7 | 8 | if __name__ == '__main__': 9 | sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) 10 | sys.exit( 11 | load_entry_point('pip==9.0.1', 'console_scripts', 'pip3.6')() 12 | ) 13 | -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/pip3.6.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/pip3.6.exe -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/pip3.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/pip3.exe -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/pyexpat.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/pyexpat.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/python.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/python.exe -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/python3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/python3.dll -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/python36.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/python36.dll -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/pythonw.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/pythonw.exe -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/select.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/select.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/sqlite3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/sqlite3.dll -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/tcl86t.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/tcl86t.dll -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/tk86t.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/tk86t.dll -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/unicodedata.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/unicodedata.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/vcruntime140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/vcruntime140.dll -------------------------------------------------------------------------------- /base-spider/spider/venv/Scripts/winsound.pyd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jangocheng/bdp-base/4484580c204a0f92b9ed20d99fd1c16caaa24292/base-spider/spider/venv/Scripts/winsound.pyd -------------------------------------------------------------------------------- /base-spider/spider/venv/pip-selfcheck.json: -------------------------------------------------------------------------------- 1 | {"last_check":"2018-10-01T08:00:26Z","pypi_version":"18.0"} -------------------------------------------------------------------------------- /base-spider/spider/venv/pyvenv.cfg: -------------------------------------------------------------------------------- 1 | home = D:\wlhbdp\software\Python\Python36 2 | include-system-site-packages = false 3 | version = 3.6.2 4 | -------------------------------------------------------------------------------- /base-spider/startup_scrapy_django.txt: -------------------------------------------------------------------------------- 1 | #启动django 2 | source /usr/local/python-3.6.2/envs/scrapytest/bin/activate 3 | cd /usr/local/scrapy/LcvSearch 4 | python3 manage.py runserver 0.0.0.0:8000 5 | 6 | #启动scrapyd 7 | cd /usr/local/scrapy/l0x8df_new/ 8 | netstat -tlnp | grep 6800 9 | 10 | /usr/local/python-3.6.2/envs/scrapytest/bin/scrapyd & 11 | #部署爬虫 12 | /usr/local/python-3.6.2/envs/scrapytest/bin/scrapyd-deploy Myploy -p ArticleSpider 13 | #开始爬虫 14 | curl http://web:6800/schedule.json -d project=ArticleSpider -d spider=zhihu 15 | curl http://web:6800/schedule.json -d project=ArticleSpider -d spider=lagou 16 | curl http://web:6800/schedule.json -d project=ArticleSpider -d spider=jobbole -------------------------------------------------------------------------------- /base-spring/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Example user template template 3 | ### Example user template 4 | 5 | # IntelliJ project files 6 | .idea 7 | *.iml 8 | out 9 | gen 10 | target 11 | -------------------------------------------------------------------------------- /base-spring/src/main/java/com/platform/spring/constant/ResultCode.java: -------------------------------------------------------------------------------- 1 | package com.platform.spring.constant; 2 | 3 | /** 4 | * author: wlhbdp 5 | * create: 2020-07-10 15:47 6 | */ 7 | public interface ResultCode { 8 | 9 | Integer SUCCESS = 200; 10 | 11 | //业务相关返回码,从1000开始 12 | Integer FAIL = 1000; 13 | 14 | Integer ANALYSIS_NOT_COMPLETE = 1001; 15 | } 16 | -------------------------------------------------------------------------------- /base-spring/src/main/java/com/platform/spring/destroy/ApplicationPreDestroy.java: -------------------------------------------------------------------------------- 1 | package com.platform.spring.destroy; 2 | 3 | import lombok.extern.log4j.Log4j2; 4 | import org.apache.logging.log4j.LogManager; 5 | import org.springframework.stereotype.Component; 6 | 7 | import javax.annotation.PreDestroy; 8 | 9 | 10 | 11 | @Component 12 | @Log4j2 13 | public class ApplicationPreDestroy { 14 | 15 | 16 | @PreDestroy 17 | public void destroy(){ 18 | log.info("application pre destroy..."); 19 | LogManager.shutdown(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /base-spring/src/main/java/com/platform/spring/exception/AuthException.java: -------------------------------------------------------------------------------- 1 | package com.platform.spring.exception; 2 | 3 | 4 | public class AuthException extends RuntimeException{ 5 | /** 6 | * 7 | */ 8 | private static final long serialVersionUID = 2645982476100356779L; 9 | 10 | /** 11 | * @param code 12 | * 异常编码 13 | */ 14 | public AuthException(String code) { 15 | super(code, null); 16 | } 17 | 18 | /** 19 | * @param code 20 | * 异常编码 21 | * @param cause 22 | * 原异常信息 23 | */ 24 | public AuthException(String code, Throwable cause) { 25 | super(code, cause); 26 | } 27 | 28 | 29 | 30 | public AuthException() { 31 | super(null, null); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /base-spring/src/main/java/com/platform/spring/exception/CommonException.java: -------------------------------------------------------------------------------- 1 | package com.platform.spring.exception; 2 | 3 | public class CommonException extends RuntimeException { 4 | /** 5 | * 6 | */ 7 | private static final long serialVersionUID = 2645982476100356779L; 8 | 9 | /** 10 | * @param code 11 | * 异常编码 12 | */ 13 | public CommonException(String code) { 14 | super(code, null); 15 | } 16 | 17 | /** 18 | * @param code 19 | * 异常编码 20 | * @param cause 21 | * 原异常信息 22 | */ 23 | public CommonException(String code, Throwable cause) { 24 | super(code, cause); 25 | } 26 | 27 | 28 | 29 | public CommonException() { 30 | super(null, null); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /base-spring/src/main/java/com/platform/spring/exception/ExceptionCode.java: -------------------------------------------------------------------------------- 1 | package com.platform.spring.exception; 2 | 3 | 4 | public class ExceptionCode { 5 | 6 | /** 7 | * 字符串转换成date类型错误 8 | */ 9 | public static final String STRING_TO_DATE_ERROR = "字符串转换成date类型错误"; 10 | 11 | /** 12 | * 解、加密异常 13 | */ 14 | public static final String SECURITY_ERROR = "解、加密异常"; 15 | 16 | /** 17 | * MD5不能解密 18 | */ 19 | public static final String MD5_NOT_CAN_DECRYPT = "MD5不能解密"; 20 | 21 | 22 | 23 | 24 | } -------------------------------------------------------------------------------- /base-spring/src/main/java/com/platform/spring/exception/MQException.java: -------------------------------------------------------------------------------- 1 | package com.platform.spring.exception; 2 | 3 | public class MQException extends JmsException { 4 | 5 | private static final long serialVersionUID = 4333083322223588727L; 6 | 7 | public MQException(String msg, Throwable cause) { 8 | super(msg, cause); 9 | } 10 | 11 | public MQException(String msg) { 12 | super(msg); 13 | } 14 | 15 | public MQException(Throwable cause) { 16 | super(cause); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /base-spring/src/main/java/com/platform/spring/exception/PollingException.java: -------------------------------------------------------------------------------- 1 | package com.platform.spring.exception; 2 | 3 | public class PollingException extends RuntimeException{ 4 | 5 | /** 6 | * 7 | */ 8 | private static final long serialVersionUID = 1L; 9 | 10 | 11 | 12 | /** 13 | * @param code 14 | * 异常编码 15 | */ 16 | public PollingException(String code) { 17 | super(code, null); 18 | } 19 | 20 | /** 21 | * @param code 22 | * 异常编码 23 | * @param cause 24 | * 原异常信息 25 | */ 26 | public PollingException(String code, Throwable cause) { 27 | super(code, cause); 28 | } 29 | 30 | 31 | 32 | public PollingException() { 33 | super(null, null); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /base-spring/src/main/java/com/platform/spring/exception/SecrecyException.java: -------------------------------------------------------------------------------- 1 | package com.platform.spring.exception; 2 | 3 | 4 | public class SecrecyException extends Exception { 5 | 6 | /** 7 | * 8 | */ 9 | private static final long serialVersionUID = 4114095629871926170L; 10 | 11 | /** 12 | * @param code 13 | * 异常编码 14 | * @param cause 15 | * 原异常信息 16 | */ 17 | public SecrecyException(String code, Throwable cause) { 18 | super(code, cause); 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /base-spring/src/main/java/com/platform/spring/exception/ServiceException.java: -------------------------------------------------------------------------------- 1 | package com.platform.spring.exception; 2 | 3 | 4 | public class ServiceException extends RuntimeException { 5 | 6 | /** 7 | * 8 | */ 9 | private static final long serialVersionUID = 2645982476100356779L; 10 | 11 | /** 12 | * @param code 13 | * 异常编码 14 | */ 15 | public ServiceException(String code) { 16 | super(code, null); 17 | } 18 | 19 | /** 20 | * @param code 21 | * 异常编码 22 | * @param cause 23 | * 原异常信息 24 | */ 25 | public ServiceException(String code, Throwable cause) { 26 | super(code, cause); 27 | } 28 | 29 | 30 | 31 | public ServiceException() { 32 | super(null, null); 33 | } 34 | } -------------------------------------------------------------------------------- /base-spring/src/main/java/com/platform/spring/util/IdUtil.java: -------------------------------------------------------------------------------- 1 | package com.platform.spring.util; 2 | 3 | import java.util.UUID; 4 | 5 | 6 | public class IdUtil { 7 | 8 | 9 | /** 10 | *

11 | * 作用描述:生成全局统一ID,长度为32位的唯一UUID 12 | *

13 | *

14 | * @return String 15 | */ 16 | public static synchronized String createUUID() { 17 | UUID uuid = UUID.randomUUID(); 18 | return uuid.toString().replace("-", ""); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /base-spring/src/main/java/com/platform/spring/util/PriceUtil.java: -------------------------------------------------------------------------------- 1 | package com.platform.spring.util; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | 5 | public class PriceUtil { 6 | 7 | public static String convertPrice(String price){ 8 | if (StringUtils.isBlank(price)){ 9 | return "0"; 10 | }else 11 | { 12 | float priceFloat = Float.parseFloat(price); 13 | priceFloat = priceFloat * 100 + 0.01f; 14 | int priceInt = (int) priceFloat; 15 | return String.valueOf(priceInt); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /base-spring/src/main/java/com/platform/spring/util/RequestReader.java: -------------------------------------------------------------------------------- 1 | package com.platform.spring.util; 2 | 3 | import java.io.BufferedReader; 4 | 5 | import javax.servlet.http.HttpServletRequest; 6 | 7 | /** 8 | * @Description: 9 | * @author wlhbdp 10 | */ 11 | 12 | public class RequestReader { 13 | 14 | public static String readContent(HttpServletRequest request){ 15 | StringBuffer content = new StringBuffer(); 16 | String line = null; 17 | try { 18 | BufferedReader reader = request.getReader(); 19 | while ((line = reader.readLine()) != null) { 20 | content.append(line); 21 | } 22 | } catch (Exception e) { 23 | e.printStackTrace(); 24 | } 25 | return content.toString(); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /base-spring/src/main/java/com/platform/spring/util/StringCustomUtil.java: -------------------------------------------------------------------------------- 1 | package com.platform.spring.util; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | 5 | 6 | public class StringCustomUtil { 7 | 8 | 9 | /** 10 | * 移除字符串头部尾部数字 11 | * @return 12 | */ 13 | public static String removeHeadEndNumber(String str){ 14 | if (StringUtils.isBlank(str)){ 15 | return str; 16 | }else{ 17 | String resultStr = str.trim(); 18 | resultStr = resultStr.replaceAll("^\\d+", ""); 19 | resultStr = resultStr.replaceAll("\\d+$", ""); 20 | return resultStr.trim(); 21 | } 22 | 23 | } 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /base-spring/src/main/java/com/platform/spring/util/java/FieldUtil.java: -------------------------------------------------------------------------------- 1 | package com.platform.spring.util.java; 2 | 3 | import java.lang.reflect.Field; 4 | import java.util.HashMap; 5 | import java.util.Map; 6 | 7 | import org.apache.commons.lang3.StringUtils; 8 | 9 | 10 | 11 | public class FieldUtil { 12 | public static Map getFieldNames(Class clz) { 13 | Map nameTypeMap = new HashMap(); 14 | Field[] field = clz.getDeclaredFields(); 15 | String name = StringUtils.EMPTY; 16 | String type = StringUtils.EMPTY; 17 | for (int i = 0; i < field.length; i++) { 18 | name = field[i].getName(); 19 | type = field[i].getType().toString(); 20 | if ("class java.lang.String".equals(type) || "class java.lang.Integer".equals(type) || "class java.lang.Long".equals(type) || "class java.lang.Boolean".equals(type)) { 21 | nameTypeMap.put(name, type); 22 | } 23 | } 24 | return nameTypeMap; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /base-spring/src/main/java/com/platform/spring/util/json/ListJsonToString.java: -------------------------------------------------------------------------------- 1 | package com.platform.spring.util.json; 2 | 3 | import java.util.List; 4 | 5 | 6 | 7 | public class ListJsonToString { 8 | 9 | public static String toString(List jsonList) { 10 | if (jsonList == null || jsonList.size() == 0) { 11 | return "[]"; 12 | } 13 | StringBuffer sb = new StringBuffer("["); 14 | for (String json : jsonList) { 15 | sb.append(json); 16 | } 17 | sb.append("]"); 18 | return sb.toString(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /base-task/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /base-task/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | --------------------------------------------------------------------------------