├── src ├── Senparc.Web │ ├── wwwroot │ │ ├── css │ │ │ ├── Admin │ │ │ │ ├── Index │ │ │ │ │ └── index.css │ │ │ │ ├── adminlogin │ │ │ │ │ └── logo.png │ │ │ │ ├── AdminUserInfo │ │ │ │ │ └── AdminUserInfo.css │ │ │ │ └── Menu │ │ │ │ │ └── Menu.css │ │ │ └── site.min.css │ │ ├── ScfDocs │ │ │ ├── cn │ │ │ │ ├── docs │ │ │ │ │ ├── doc │ │ │ │ │ │ ├── SUMMARY.md │ │ │ │ │ │ └── start │ │ │ │ │ │ │ ├── release │ │ │ │ │ │ │ ├── log.md │ │ │ │ │ │ │ └── new_function.md │ │ │ │ │ │ │ ├── qa │ │ │ │ │ │ │ ├── explanation_of_terms.md │ │ │ │ │ │ │ └── common_problem.md │ │ │ │ │ │ │ ├── images │ │ │ │ │ │ │ ├── enable_module.png │ │ │ │ │ │ │ ├── project_build.png │ │ │ │ │ │ │ ├── page_dbcontext.png │ │ │ │ │ │ │ ├── edit_project_file.png │ │ │ │ │ │ │ ├── hidden_extend_menu.png │ │ │ │ │ │ │ ├── install_finished.png │ │ │ │ │ │ │ ├── page_entity_name.png │ │ │ │ │ │ │ ├── page_folder_struct.png │ │ │ │ │ │ │ ├── project_properties.png │ │ │ │ │ │ │ ├── register_content.png │ │ │ │ │ │ │ ├── exec_module_function.png │ │ │ │ │ │ │ ├── install_nuget_source.png │ │ │ │ │ │ │ ├── select_nuget_source.png │ │ │ │ │ │ │ ├── click_add_nuget_button.png │ │ │ │ │ │ │ ├── hidden_after_menu_show.png │ │ │ │ │ │ │ ├── register_add_functions.png │ │ │ │ │ │ │ ├── senparcconfig_database.png │ │ │ │ │ │ │ ├── set_as_startup_project.png │ │ │ │ │ │ │ ├── appsetting_database_name.png │ │ │ │ │ │ │ ├── build_general_nuget_file.png │ │ │ │ │ │ │ ├── page_create_dto_file_path.png │ │ │ │ │ │ │ ├── prefect_nuget_infomation.png │ │ │ │ │ │ │ ├── copy_to_local_nuget_source.png │ │ │ │ │ │ │ ├── enter_nuget_source_setting_1.png │ │ │ │ │ │ │ ├── exec_updata_database_error.png │ │ │ │ │ │ │ ├── general_nuget_file_success.png │ │ │ │ │ │ │ ├── page_create_entity_file_path.png │ │ │ │ │ │ │ ├── page_create_pages_file_path.png │ │ │ │ │ │ │ ├── page_project_support_razor.png │ │ │ │ │ │ │ ├── show_new_module_can_install.png │ │ │ │ │ │ │ ├── show_open_extend_menu_button.png │ │ │ │ │ │ │ ├── create_functions_class_library.png │ │ │ │ │ │ │ ├── enter_nuget_source_setting_2_1.png │ │ │ │ │ │ │ ├── enter_nuget_source_setting_2_2.png │ │ │ │ │ │ │ ├── modify_database_connectstring.png │ │ │ │ │ │ │ ├── page_create_mapping_file_path.png │ │ │ │ │ │ │ ├── page_create_service_file_path.png │ │ │ │ │ │ │ ├── create_dotnet_core_class_library.png │ │ │ │ │ │ │ ├── create_register_and_functions_folder.png │ │ │ │ │ │ │ ├── input_dotnet_core_class_library_name.png │ │ │ │ │ │ │ ├── page_create_dotnet_core_class_library.png │ │ │ │ │ │ │ └── page_create_dotnet_core_class_library_input_name.png │ │ │ │ │ │ │ └── SUMMARY.md │ │ │ │ │ └── assets │ │ │ │ │ │ └── favicon.ico │ │ │ │ ├── package.json │ │ │ │ ├── server.js │ │ │ │ └── .gitignore │ │ │ ├── README.md │ │ │ ├── version.json │ │ │ └── .gitignore │ │ ├── lib │ │ │ ├── Chart.js │ │ │ │ ├── .eslintignore │ │ │ │ ├── config.jshintrc │ │ │ │ ├── .editorconfig │ │ │ │ ├── src │ │ │ │ │ └── charts │ │ │ │ │ │ ├── Chart.Bar.js │ │ │ │ │ │ ├── Chart.Bubble.js │ │ │ │ │ │ ├── Chart.Line.js │ │ │ │ │ │ ├── Chart.Doughnut.js │ │ │ │ │ │ ├── Chart.PolarArea.js │ │ │ │ │ │ └── Chart.Radar.js │ │ │ │ ├── karma.conf.js │ │ │ │ ├── .codeclimate.yml │ │ │ │ ├── .github │ │ │ │ │ ├── ISSUE_TEMPLATE.md │ │ │ │ │ └── PULL_REQUEST_TEMPLATE.md │ │ │ │ ├── bower.json │ │ │ │ ├── karma.conf.ci.js │ │ │ │ ├── .travis.yml │ │ │ │ ├── .bower.json │ │ │ │ ├── composer.json │ │ │ │ ├── test │ │ │ │ │ └── core.scaleService.tests.js │ │ │ │ ├── karma.coverage.conf.js │ │ │ │ └── LICENSE.md │ │ │ ├── echarts │ │ │ │ ├── extension │ │ │ │ │ ├── echarts.js │ │ │ │ │ ├── dataTool │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── webpack.config.js │ │ │ │ │ └── bmap │ │ │ │ │ │ ├── bmap.js │ │ │ │ │ │ └── BMapModel.js │ │ │ │ ├── src │ │ │ │ │ ├── chart │ │ │ │ │ │ ├── graph │ │ │ │ │ │ │ ├── backwardCompat.js │ │ │ │ │ │ │ ├── circularLayout.js │ │ │ │ │ │ │ ├── simpleLayoutHelper.js │ │ │ │ │ │ │ ├── simpleLayoutEdge.js │ │ │ │ │ │ │ └── roamAction.js │ │ │ │ │ │ ├── gauge.js │ │ │ │ │ │ ├── heatmap.js │ │ │ │ │ │ ├── sankey.js │ │ │ │ │ │ ├── parallel.js │ │ │ │ │ │ ├── boxplot.js │ │ │ │ │ │ ├── treemap.js │ │ │ │ │ │ ├── lines.js │ │ │ │ │ │ ├── candlestick.js │ │ │ │ │ │ ├── effectScatter.js │ │ │ │ │ │ ├── candlestick │ │ │ │ │ │ │ └── preprocessor.js │ │ │ │ │ │ ├── chord.js │ │ │ │ │ │ ├── funnel.js │ │ │ │ │ │ ├── themeRiver.js │ │ │ │ │ │ ├── scatter.js │ │ │ │ │ │ ├── bar │ │ │ │ │ │ │ └── barItemStyle.js │ │ │ │ │ │ ├── map │ │ │ │ │ │ │ └── mapVisual.js │ │ │ │ │ │ ├── line.js │ │ │ │ │ │ ├── bar.js │ │ │ │ │ │ ├── themeRiver │ │ │ │ │ │ │ └── themeRiverVisual.js │ │ │ │ │ │ ├── radar.js │ │ │ │ │ │ ├── effectScatter │ │ │ │ │ │ │ └── EffectScatterView.js │ │ │ │ │ │ ├── heatmap │ │ │ │ │ │ │ └── HeatmapSeries.js │ │ │ │ │ │ ├── map.js │ │ │ │ │ │ ├── pie.js │ │ │ │ │ │ ├── graph.js │ │ │ │ │ │ └── radar │ │ │ │ │ │ │ └── radarLayout.js │ │ │ │ │ ├── component │ │ │ │ │ │ ├── radiusAxis.js │ │ │ │ │ │ ├── angleAxis.js │ │ │ │ │ │ ├── radar.js │ │ │ │ │ │ ├── axis.js │ │ │ │ │ │ ├── dataZoom │ │ │ │ │ │ │ ├── SelectZoomView.js │ │ │ │ │ │ │ ├── typeDefaulter.js │ │ │ │ │ │ │ ├── SelectZoomModel.js │ │ │ │ │ │ │ └── InsideZoomModel.js │ │ │ │ │ │ ├── visualMap.js │ │ │ │ │ │ ├── singleAxis.js │ │ │ │ │ │ ├── parallelAxis.js │ │ │ │ │ │ ├── timeline │ │ │ │ │ │ │ ├── typeDefaulter.js │ │ │ │ │ │ │ └── TimelineView.js │ │ │ │ │ │ ├── single.js │ │ │ │ │ │ ├── polar.js │ │ │ │ │ │ ├── markLine.js │ │ │ │ │ │ ├── toolbox │ │ │ │ │ │ │ ├── featureManager.js │ │ │ │ │ │ │ └── feature │ │ │ │ │ │ │ │ └── Restore.js │ │ │ │ │ │ ├── markPoint.js │ │ │ │ │ │ ├── legend.js │ │ │ │ │ │ ├── toolbox.js │ │ │ │ │ │ ├── timeline.js │ │ │ │ │ │ ├── dataZoomInside.js │ │ │ │ │ │ ├── dataZoomSelect.js │ │ │ │ │ │ ├── visualMapPiecewise.js │ │ │ │ │ │ ├── visualMapContinuous.js │ │ │ │ │ │ ├── parallel.js │ │ │ │ │ │ ├── dataZoom.js │ │ │ │ │ │ ├── helper │ │ │ │ │ │ │ └── interactionMutex.js │ │ │ │ │ │ ├── visualMap │ │ │ │ │ │ │ ├── visualMapAction.js │ │ │ │ │ │ │ └── typeDefaulter.js │ │ │ │ │ │ ├── axis │ │ │ │ │ │ │ └── parallelAxisAction.js │ │ │ │ │ │ ├── legend │ │ │ │ │ │ │ └── legendFilter.js │ │ │ │ │ │ ├── grid.js │ │ │ │ │ │ ├── tooltip.js │ │ │ │ │ │ └── geo │ │ │ │ │ │ │ └── GeoView.js │ │ │ │ │ ├── model │ │ │ │ │ │ └── mixin │ │ │ │ │ │ │ ├── areaStyle.js │ │ │ │ │ │ │ ├── boxLayout.js │ │ │ │ │ │ │ ├── itemStyle.js │ │ │ │ │ │ │ ├── lineStyle.js │ │ │ │ │ │ │ └── makeStyleMapper.js │ │ │ │ │ ├── ExtensionAPI.js │ │ │ │ │ ├── coord │ │ │ │ │ │ ├── geo │ │ │ │ │ │ │ └── fix │ │ │ │ │ │ │ │ ├── geoCoord.js │ │ │ │ │ │ │ │ └── textCoord.js │ │ │ │ │ │ ├── polar │ │ │ │ │ │ │ ├── RadiusAxis.js │ │ │ │ │ │ │ └── AngleAxis.js │ │ │ │ │ │ ├── radar │ │ │ │ │ │ │ └── IndicatorAxis.js │ │ │ │ │ │ ├── cartesian │ │ │ │ │ │ │ ├── axisLabelInterval.js │ │ │ │ │ │ │ └── GridModel.js │ │ │ │ │ │ └── axisModelCommonMixin.js │ │ │ │ │ ├── processor │ │ │ │ │ │ └── dataFilter.js │ │ │ │ │ └── layout │ │ │ │ │ │ └── points.js │ │ │ │ ├── asset │ │ │ │ │ └── logo.png │ │ │ │ ├── index.simple.js │ │ │ │ ├── .bower.json │ │ │ │ ├── webpack.config.js │ │ │ │ ├── index.common.js │ │ │ │ ├── .editorconfig │ │ │ │ ├── .github │ │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ │ └── ISSUE_TEMPLATE.md │ │ │ │ └── theme │ │ │ │ │ └── vintage.js │ │ │ ├── font-awesome │ │ │ │ └── fonts │ │ │ │ │ ├── FontAwesome.otf │ │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ │ └── fontawesome-webfont.woff2 │ │ │ ├── element-ui_2.13.2 │ │ │ │ └── fonts │ │ │ │ │ ├── element-icons.ttf │ │ │ │ │ └── element-icons.woff │ │ │ ├── jquery-validation-unobtrusive │ │ │ │ └── LICENSE.txt │ │ │ └── jquery-validation │ │ │ │ └── LICENSE.md │ │ ├── scripts │ │ │ └── app.js │ │ ├── favicon.ico │ │ ├── images │ │ │ ├── Admin │ │ │ │ ├── Logo.png │ │ │ │ ├── Avatar │ │ │ │ │ ├── NeuChar.png │ │ │ │ │ └── default.png │ │ │ │ └── base │ │ │ │ │ ├── head │ │ │ │ │ ├── logo_70x55.png │ │ │ │ │ ├── logo_128x128.png │ │ │ │ │ └── logo_230x55.png │ │ │ │ │ └── AdminLogin │ │ │ │ │ └── admin_login.jpg │ │ │ ├── logo-index.png │ │ │ ├── logo-login.png │ │ │ ├── Index │ │ │ │ ├── modules.png │ │ │ │ ├── creat-img.png │ │ │ │ ├── creat-img1.png │ │ │ │ ├── moduleint.png │ │ │ │ └── qq-code-img.jpg │ │ │ ├── logo-login-0.png │ │ │ ├── logo-login-scf.png │ │ │ ├── logo-square-scf.jpg │ │ │ ├── Shared │ │ │ │ └── SCFLogo │ │ │ │ │ ├── logo_230x55.png │ │ │ │ │ ├── logo_70x55.png │ │ │ │ │ └── logo_128x128.png │ │ │ └── Icon │ │ │ │ └── github.svg │ │ └── js │ │ │ ├── Index │ │ │ └── index.js │ │ │ ├── site.js │ │ │ └── Admin │ │ │ ├── vuePermission.js │ │ │ ├── store.js │ │ │ └── Pages │ │ │ └── SenparcTrace │ │ │ └── Index.js │ ├── Pages │ │ ├── _ViewStart.cshtml │ │ ├── _ViewImports.cshtml │ │ ├── Privacy.cshtml │ │ ├── Privacy.cshtml.cs │ │ ├── Error.cshtml.cs │ │ ├── Index.cshtml.cs │ │ ├── Error.cshtml │ │ └── Shared │ │ │ ├── _CookieConsentPartial.cshtml │ │ │ └── _ValidationScriptsPartial.cshtml │ ├── global.json │ ├── scripts │ │ ├── app.ts │ │ ├── app.js │ │ └── app.js.map │ ├── Startup.cs │ ├── App_Data │ │ └── QQWry.Dat │ ├── libman.json │ ├── Models │ │ └── ErrorViewModel.cs │ ├── tsconfig.json │ ├── Hubs │ │ └── ReloadPageHub.cs │ ├── Dockerfile │ ├── BootStrapper │ │ └── AutoMapperBootStrapper.cs │ ├── Program.cs │ └── Properties │ │ ├── launchSettings.json │ │ └── PublishProfiles │ │ └── FolderProfile.pubxml ├── Senparc.Core │ ├── Enums.Core.cs │ ├── Models │ │ ├── VD │ │ │ ├── HomeVD.cs │ │ │ ├── InstallVD.cs │ │ │ ├── BasePageModel.cs │ │ │ ├── LoginVD.cs │ │ │ └── ErrorVD.Core.cs │ │ └── DataBaseModel │ │ │ ├── Dto │ │ │ └── Base │ │ │ │ ├── BaseDto.cs │ │ │ │ └── BaseQueryDto.cs │ │ │ ├── readme.md │ │ │ ├── FeedBack.cs │ │ │ └── Mapping │ │ │ └── FeedbackConfigurationMapping.cs │ ├── Exceptions │ │ └── ScfUninstallException.cs │ ├── Utility │ │ └── FileSaveUtility.cs │ └── Conventions │ │ └── AutoValidateAntiForgeryTokenModelConvention.cs ├── Senparc.Mvc │ ├── readme.md │ ├── Extensions │ │ └── HtmlExtension.cs │ ├── Domain │ │ └── DomainData.cs │ ├── Controllers │ │ ├── BaseControllers │ │ │ └── BaseFrontController.cs │ │ ├── LoginController.cs │ │ ├── AreaController.cs │ │ ├── ErrorController.cs │ │ └── HomeController.cs │ ├── Weixin │ │ └── ScfMessageContext.cs │ ├── Models │ │ └── HomeVD.cs │ ├── Filter │ │ ├── AjaxMethodAttribute.cs │ │ ├── MenuFilter.cs │ │ ├── JsonFilter.cs │ │ └── SenparcRequireHttpsAttribute.cs │ └── CustomActionResults │ │ └── ActionControllerExtensions.cs ├── Senparc.Areas.Admin │ ├── Areas │ │ ├── Admin │ │ │ └── Pages │ │ │ │ ├── _ViewStart.cshtml │ │ │ │ ├── XscfModuleTools │ │ │ │ └── readme.md │ │ │ │ ├── Login.cshtml.cs │ │ │ │ ├── Menu │ │ │ │ └── Edit.cshtml.cs │ │ │ │ ├── XscfModule │ │ │ │ └── Index.cshtml.cs │ │ │ │ ├── AdminUserInfo │ │ │ │ ├── Edit.cshtml.cs │ │ │ │ ├── Index.cshtml.cs │ │ │ │ └── AuthorizationPage.cshtml.cs │ │ │ │ ├── _ViewImports.cshtml │ │ │ │ ├── Shared │ │ │ │ ├── _HeaderPartial.cshtml │ │ │ │ └── _XscfModuleLayout_Menu.cshtml │ │ │ │ └── SenparcTrace │ │ │ │ ├── Index.cshtml.cs │ │ │ │ └── DateLog.cshtml.cs │ │ └── readme.md │ ├── readme.md │ └── SeparcTraceManager │ │ └── SenparcTraceType.cs ├── Senparc.Areas.Admin.OldMvc │ ├── readme.md │ ├── Models │ │ └── VD │ │ │ ├── HomeVD.cs │ │ │ ├── FeedbackVD.cs │ │ │ ├── LoginVD.cs │ │ │ ├── LogVD.cs │ │ │ ├── SystemConfigVD.cs │ │ │ └── BaseAdminVD.cs │ └── Controllers │ │ ├── HomeController.cs │ │ └── SystemConfigController.cs ├── Senparc.Xscf.ExtensionAreaTemplate │ ├── Areas │ │ └── Admin │ │ │ └── Pages │ │ │ ├── MyApp │ │ │ ├── _ViewStart.cshtml │ │ │ ├── _ViewImports.cshtml │ │ │ ├── About.cshtml.cs │ │ │ ├── HidePage.cshtml.cs │ │ │ └── About.cshtml │ │ │ └── Shared │ │ │ └── _MyAreaMenuPartial.cshtml │ ├── readme.md │ ├── appsettings.json │ ├── Models │ │ ├── SenparcDbContextFactory.cs │ │ ├── DatabaseModel │ │ │ ├── Dto │ │ │ │ └── ColorDto.cs │ │ │ └── Mapping │ │ │ │ └── AreaTemplate_ColorConfigurationMapping.cs │ │ └── MySenparcEntities.cs │ └── Migrations │ │ └── 20200308094148_Xscf_AreaTemplate_Init2.cs ├── readme.md ├── Senparc.Service │ ├── FeedBackService.cs │ ├── SystemConfigService.cs │ ├── BaseService │ │ └── BaseClientService.cs │ ├── SystemEntities │ │ ├── SystemServiceEntities.cs │ │ ├── MigrationsForSenparcEntities │ │ │ ├── 20200225161207_Update_Menu_20200226.cs │ │ │ └── 20200622051315_update-migration.cs │ │ └── SystemServiceEntitiesDbContextFactory.cs │ └── EncryptionServiceBase.cs ├── Senparc.Web.FirefoxDriverTest │ ├── geckodriver.exe │ ├── FireFoxBaseDriverTest.cs │ └── Senparc.Web.FirefoxDriverTest.csproj ├── Senparc.SMS │ ├── SmsPlatformFactory.cs │ └── Senparc.SMS.csproj ├── Senparc.Database │ ├── Senparc.Database.sqlproj.user │ └── dbo │ │ └── Tables │ │ ├── SystemConfigs.sql │ │ ├── FeedBacks.sql │ │ └── AdminUserInfos.sql ├── Tools │ └── GenerateDbMigration │ │ ├── Program.cs │ │ └── GenerateDbMigration.csproj ├── Senparc.Areas.WX.OldMvc │ ├── Models │ │ └── BaseWXVD.cs │ └── Senparc.Areas.WX.csproj ├── Senparc.Areas.User.OldMvc │ ├── Models │ │ ├── BaseUserVD.cs │ │ ├── FeedBackVD.cs │ │ └── HomeVD.cs │ └── Senparc.Areas.User.csproj ├── Senparc.File │ └── Senparc.File.csproj ├── Senparc.ImageUtility │ └── Senparc.ImageUtility.csproj ├── Senparc.SMS.Tests │ ├── BaseSMSTest.cs │ ├── SmsPlatform_JunMeiTest.cs │ └── Senparc.SMS.Tests.csproj ├── Senparc.Log │ └── Senparc.Log.csproj ├── Senparc.Respository │ ├── FeedBackRepository.cs │ ├── AccountRepository.cs │ ├── AdminUserInfoRepository.cs │ ├── PointsLogRepository.cs │ ├── SystemConfigRepository.cs │ ├── AccountPayLogRepository.cs │ └── Senparc.Respository.csproj ├── Senparc.Services.Tests │ └── Senparc.Services.Tests.csproj ├── Senparc.Office │ └── Senparc.Office.csproj ├── Senparc.Web.UI │ ├── Senparc.Web.UI.csproj │ └── MetaExtentions.cs ├── Senparc.Threads │ ├── Senparc.Threads.csproj │ └── WurflThread.cs └── Senparc.Utility │ └── Senparc.Utility.csproj ├── 规范 └── readme.md ├── XscfExtensionSample └── MyExtensionCode │ ├── readme.md │ └── MyExtensionCode.csproj ├── .github └── workflows │ └── dotnetcore.yml ├── README.md └── .gitignore /src/Senparc.Web/wwwroot/css/Admin/Index/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/SUMMARY.md: -------------------------------------------------------------------------------- 1 | * [起步](start) -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/release/log.md: -------------------------------------------------------------------------------- 1 | # 日志 -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/.eslintignore: -------------------------------------------------------------------------------- 1 | **/*{.,-}min.js 2 | -------------------------------------------------------------------------------- /src/Senparc.Core/Enums.Core.cs: -------------------------------------------------------------------------------- 1 | namespace Senparc.Core.Enums 2 | { 3 | 4 | } -------------------------------------------------------------------------------- /src/Senparc.Web/Pages/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /src/Senparc.Web/global.json: -------------------------------------------------------------------------------- 1 | { 2 | "sdk": { 3 | "version": "3.1.100" 4 | } 5 | } -------------------------------------------------------------------------------- /src/Senparc.Web/scripts/app.ts: -------------------------------------------------------------------------------- 1 | function init() { 2 | console.log('ts init()'); 3 | } -------------------------------------------------------------------------------- /src/Senparc.Mvc/readme.md: -------------------------------------------------------------------------------- 1 | ## 重要说明 2 | 本项目保留是作为 ASP.NET MVC 部分文件过渡的参考,不是 SCF 框架的一部分,因此不需要参与编译! -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin/Areas/Admin/Pages/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/scripts/app.js: -------------------------------------------------------------------------------- 1 | function init() { 2 | console.log('ts init()'); 3 | } 4 | -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin.OldMvc/readme.md: -------------------------------------------------------------------------------- 1 | ## 重要说明 2 | 本项目保留是作为 ASP.NET MVC 部分文件过渡的参考,不是 SCF 框架的一部分,因此不需要参与编译! -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin/Areas/Admin/Pages/XscfModuleTools/readme.md: -------------------------------------------------------------------------------- 1 | 当前文件夹存放基础模板提供的页面,继承 _XscfModuleLayout 模板。 -------------------------------------------------------------------------------- /src/Senparc.Web/Startup.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/Startup.cs -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/README.md: -------------------------------------------------------------------------------- 1 | # ScfDocs 2 | SCF 开发者文档 3 | 4 | ## 更新日志 5 | 6 | v0.0.1.1 初始化开发文档 7 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/extension/echarts.js: -------------------------------------------------------------------------------- 1 | define('echarts', [], function () {return echarts;}); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/graph/backwardCompat.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/config.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "node": true, 3 | "predef": [ "require", "module" ] 4 | } -------------------------------------------------------------------------------- /src/Senparc.Web/scripts/app.js: -------------------------------------------------------------------------------- 1 | function init() { 2 | console.log('ts init()'); 3 | } 4 | //# sourceMappingURL=app.js.map -------------------------------------------------------------------------------- /src/Senparc.Core/Models/VD/HomeVD.cs: -------------------------------------------------------------------------------- 1 | namespace Senparc.Core.Models.VD 2 | { 3 | public class Home_BaseVD : BaseVD { } 4 | } -------------------------------------------------------------------------------- /src/Senparc.Web/App_Data/QQWry.Dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/App_Data/QQWry.Dat -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/favicon.ico -------------------------------------------------------------------------------- /src/Senparc.Xscf.ExtensionAreaTemplate/Areas/Admin/Pages/MyApp/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_XscfModuleLayout"; 3 | } 4 | -------------------------------------------------------------------------------- /src/readme.md: -------------------------------------------------------------------------------- 1 | 当前最新代码请见分支:[Developer-RazorPage-DDD](https://github.com/SenparcCoreFramework/SCF/tree/Developer-RazorPage-DDD)。 2 | -------------------------------------------------------------------------------- /src/Senparc.Service/FeedBackService.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Service/FeedBackService.cs -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/qa/explanation_of_terms.md: -------------------------------------------------------------------------------- 1 | # SCF名词解释 2 | 3 | > SCF全称 4 | 5 | Senparc Core Framework(盛派核心框架) -------------------------------------------------------------------------------- /src/Senparc.Service/SystemConfigService.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Service/SystemConfigService.cs -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/version.json: -------------------------------------------------------------------------------- 1 | { 2 | "Version":"0.1.1", 3 | "UpdateTime": "2020-05-31 17:50:00", 4 | "WhatsNew": "新增数据库配置说明" 5 | } -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/Admin/Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/Admin/Logo.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/logo-index.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/logo-index.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/logo-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/logo-login.png -------------------------------------------------------------------------------- /src/Senparc.Web.FirefoxDriverTest/geckodriver.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web.FirefoxDriverTest/geckodriver.exe -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/Index/modules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/Index/modules.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/logo-login-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/logo-login-0.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/logo-login-scf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/logo-login-scf.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/Index/creat-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/Index/creat-img.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/Index/creat-img1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/Index/creat-img1.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/Index/moduleint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/Index/moduleint.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/logo-square-scf.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/logo-square-scf.jpg -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/asset/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/lib/echarts/asset/logo.png -------------------------------------------------------------------------------- /src/Senparc.SMS/SmsPlatformFactory.cs: -------------------------------------------------------------------------------- 1 | 2 | 3 | namespace Senparc.SMS 4 | { 5 | public static class Extensions 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/css/Admin/adminlogin/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/css/Admin/adminlogin/logo.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/Index/qq-code-img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/Index/qq-code-img.jpg -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/gauge.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | require('./gauge/GaugeSeries'); 3 | require('./gauge/GaugeView'); 4 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/Admin/Avatar/NeuChar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/Admin/Avatar/NeuChar.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/Admin/Avatar/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/Admin/Avatar/default.png -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin/Areas/Admin/Pages/Login.cshtml.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Areas.Admin/Areas/Admin/Pages/Login.cshtml.cs -------------------------------------------------------------------------------- /src/Senparc.Mvc/Extensions/HtmlExtension.cs: -------------------------------------------------------------------------------- 1 | namespace Microsoft.AspNetCore.Mvc.Rendering 2 | { 3 | public static partial class HtmlExtension 4 | { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/Senparc.Web.FirefoxDriverTest/FireFoxBaseDriverTest.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web.FirefoxDriverTest/FireFoxBaseDriverTest.cs -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/assets/favicon.ico -------------------------------------------------------------------------------- /src/Senparc.Xscf.ExtensionAreaTemplate/readme.md: -------------------------------------------------------------------------------- 1 | ## Senparc.Xscf.ExtensionAreaTemplate 项目说明 2 | 3 | 这是一个示例项目,用于展示如何扩展自己的网页、功能模块, 4 | 学习之后可以删除,也可以以此为基础模板,改成自己的扩展模块(XSCF Modules)。 -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin/Areas/Admin/Pages/Menu/Edit.cshtml.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Areas.Admin/Areas/Admin/Pages/Menu/Edit.cshtml.cs -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/Admin/base/head/logo_70x55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/Admin/base/head/logo_70x55.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/Shared/SCFLogo/logo_230x55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/Shared/SCFLogo/logo_230x55.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/Shared/SCFLogo/logo_70x55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/Shared/SCFLogo/logo_70x55.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/js/Index/index.js: -------------------------------------------------------------------------------- 1 | $('#qq-code').hover(function () { 2 | $('#qq-code-img').toggle(); 3 | }); 4 | function unopen() { 5 | alert('版块暂未开放,敬请期待~'); 6 | } -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/heatmap.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | require('./heatmap/HeatmapSeries'); 4 | require('./heatmap/HeatmapView'); 5 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/Admin/base/head/logo_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/Admin/base/head/logo_128x128.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/Admin/base/head/logo_230x55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/Admin/base/head/logo_230x55.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/Shared/SCFLogo/logo_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/Shared/SCFLogo/logo_128x128.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/lib/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /src/Senparc.Web/Pages/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using Senparc.Web 2 | @using Senparc.Core.Models.VD 3 | 4 | @namespace Senparc.Web.Pages 5 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 6 | -------------------------------------------------------------------------------- /src/Senparc.Web/scripts/app.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"app.js","sourceRoot":"","sources":["app.ts"],"names":[],"mappings":"AAAA,SAAS,IAAI;IACT,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC7B,CAAC"} -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin/Areas/Admin/Pages/XscfModule/Index.cshtml.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Areas.Admin/Areas/Admin/Pages/XscfModule/Index.cshtml.cs -------------------------------------------------------------------------------- /src/Senparc.Database/Senparc.Database.sqlproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/Admin/base/AdminLogin/admin_login.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/images/Admin/base/AdminLogin/admin_login.jpg -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/radiusAxis.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | require('../coord/polar/polarCreator'); 4 | 5 | require('./axis/RadiusAxisView'); 6 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/element-ui_2.13.2/fonts/element-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/lib/element-ui_2.13.2/fonts/element-icons.ttf -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin/Areas/Admin/Pages/AdminUserInfo/Edit.cshtml.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Areas.Admin/Areas/Admin/Pages/AdminUserInfo/Edit.cshtml.cs -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin/Areas/Admin/Pages/AdminUserInfo/Index.cshtml.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Areas.Admin/Areas/Admin/Pages/AdminUserInfo/Index.cshtml.cs -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin/readme.md: -------------------------------------------------------------------------------- 1 | ## Senparc.Areas.Admin 项目说明 2 | 3 | 此项目是管理员后台模块,同样属于 XSCF 模块。不过这是一个特殊的模块,在系统安装的时候就被装载,并且可用于管理其他所有模块。 4 | 5 | 如果你狠狠心,也可以将此模块删除,这不会影响系统的正常运行,只不过你无法再进入管理后台。当然对黑客来说也一样。 -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/element-ui_2.13.2/fonts/element-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/lib/element-ui_2.13.2/fonts/element-icons.woff -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/enable_module.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/enable_module.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/project_build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/project_build.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /src/Senparc.Web/Pages/Privacy.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model PrivacyModel 3 | @{ 4 | ViewData["Title"] = "隐私策略"; 5 | } 6 |

@ViewData["Title"]

7 | 8 |

9 | 使用此页面详细说明您的网站的隐私政策。 10 |

11 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_dbcontext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_dbcontext.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/edit_project_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/edit_project_file.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/hidden_extend_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/hidden_extend_menu.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/install_finished.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/install_finished.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_entity_name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_entity_name.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_folder_struct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_folder_struct.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/project_properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/project_properties.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/register_content.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/register_content.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/css/Admin/AdminUserInfo/AdminUserInfo.css: -------------------------------------------------------------------------------- 1 | .admin-user-info .username-tip { 2 | padding-left: 100px; 3 | } 4 | .el-checkbox.is-bordered { 5 | margin:20px 0; 6 | margin-left:10px; 7 | } 8 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/angleAxis.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 'use strict'; 3 | 4 | require('../coord/polar/polarCreator'); 5 | 6 | require('./axis/AngleAxisView'); 7 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/exec_module_function.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/exec_module_function.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/install_nuget_source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/install_nuget_source.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/select_nuget_source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/select_nuget_source.png -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin/Areas/Admin/Pages/AdminUserInfo/AuthorizationPage.cshtml.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Areas.Admin/Areas/Admin/Pages/AdminUserInfo/AuthorizationPage.cshtml.cs -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/click_add_nuget_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/click_add_nuget_button.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/hidden_after_menu_show.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/hidden_after_menu_show.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/register_add_functions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/register_add_functions.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/senparcconfig_database.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/senparcconfig_database.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/set_as_startup_project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/set_as_startup_project.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/radar.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | require('../coord/radar/Radar'); 4 | require('../coord/radar/RadarModel'); 5 | 6 | require('./radar/RadarView'); 7 | }); -------------------------------------------------------------------------------- /src/Senparc.Core/Models/DataBaseModel/Dto/Base/BaseDto.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Scf.Core.Models; 2 | 3 | namespace Senparc.Core.Models.DataBaseModel 4 | { 5 | public class BaseDto : DtoBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/appsetting_database_name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/appsetting_database_name.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/build_general_nuget_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/build_general_nuget_file.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_create_dto_file_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_create_dto_file_path.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/prefect_nuget_infomation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/prefect_nuget_infomation.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/axis.js: -------------------------------------------------------------------------------- 1 | // TODO boundaryGap 2 | define(function(require) { 3 | 'use strict'; 4 | 5 | require('../coord/cartesian/AxisModel'); 6 | 7 | require('./axis/AxisView'); 8 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/dataZoom/SelectZoomView.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | return require('./DataZoomView').extend({ 4 | 5 | type: 'dataZoom.select' 6 | 7 | }); 8 | 9 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/copy_to_local_nuget_source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/copy_to_local_nuget_source.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/enter_nuget_source_setting_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/enter_nuget_source_setting_1.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/exec_updata_database_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/exec_updata_database_error.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/general_nuget_file_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/general_nuget_file_success.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_create_entity_file_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_create_entity_file_path.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_create_pages_file_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_create_pages_file_path.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_project_support_razor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_project_support_razor.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/show_new_module_can_install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/show_new_module_can_install.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/show_open_extend_menu_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/show_open_extend_menu_button.png -------------------------------------------------------------------------------- /src/Senparc.Web/libman.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0", 3 | "defaultProvider": "cdnjs", 4 | "libraries": [ 5 | { 6 | "library": "zTree.v3@3.5.40", 7 | "destination": "wwwroot/lib/zTree.v3/" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/create_functions_class_library.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/create_functions_class_library.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/enter_nuget_source_setting_2_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/enter_nuget_source_setting_2_1.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/enter_nuget_source_setting_2_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/enter_nuget_source_setting_2_2.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/modify_database_connectstring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/modify_database_connectstring.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_create_mapping_file_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_create_mapping_file_path.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_create_service_file_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_create_service_file_path.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/visualMap.js: -------------------------------------------------------------------------------- 1 | /** 2 | * visualMap component entry 3 | */ 4 | define(function (require) { 5 | 6 | require('./visualMapContinuous'); 7 | require('./visualMapPiecewise'); 8 | 9 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/create_dotnet_core_class_library.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/create_dotnet_core_class_library.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/singleAxis.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | require('../coord/single/singleCreator'); 4 | require('./axis/SingleAxisView'); 5 | require('../coord/single/AxisModel'); 6 | 7 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/parallelAxis.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | require('../coord/parallel/parallelCreator'); 4 | require('./axis/parallelAxisAction'); 5 | require('./axis/ParallelAxisView'); 6 | 7 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/create_register_and_functions_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/create_register_and_functions_folder.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/input_dotnet_core_class_library_name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/input_dotnet_core_class_library_name.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_create_dotnet_core_class_library.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_create_dotnet_core_class_library.png -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin.OldMvc/Models/VD/HomeVD.cs: -------------------------------------------------------------------------------- 1 | namespace Senparc.Areas.Admin.Models.VD 2 | { 3 | public class BaseHomeVD : BaseAdminVD 4 | { 5 | } 6 | 7 | public class Home_IndexVD : BaseHomeVD 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /规范/readme.md: -------------------------------------------------------------------------------- 1 | # SCF 基础规范及约定 2 | 3 | 1. 所有 `Base` 结尾的文件及类型(如:`EntityBase.cs`、`IEntityBase.cs`),均为底层支持文件,虽然源代码已经开放给大家,建议不要修改,如果项目直接使用 `Senparc.Scf.*` 的 Nuget 包,可以忽略此问题。所有允许修改的基类,`Base` 会放在开头,如 `BaseEntity`。 4 | 5 | 2. 如果没有特殊情况,所有数据库实体都标记为可序列化 `[Serializable]`。 6 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification 2 | // for details on configuring this project to bundle and minify static web assets. 3 | 4 | // Write your Javascript code. 5 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = tab 6 | indent_size = 4 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = false 11 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/src/charts/Chart.Bar.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | module.exports = function(Chart) { 4 | 5 | Chart.Bar = function(context, config) { 6 | config.type = 'bar'; 7 | 8 | return new Chart(context, config); 9 | }; 10 | 11 | }; -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_create_dotnet_core_class_library_input_name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SenparcCoreFramework/SCF/HEAD/src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/images/page_create_dotnet_core_class_library_input_name.png -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/src/charts/Chart.Bubble.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | module.exports = function(Chart) { 4 | 5 | Chart.Bubble = function(context, config) { 6 | config.type = 'bubble'; 7 | return new Chart(context, config); 8 | }; 9 | 10 | }; -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/src/charts/Chart.Line.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | module.exports = function(Chart) { 4 | 5 | Chart.Line = function(context, config) { 6 | config.type = 'line'; 7 | 8 | return new Chart(context, config); 9 | }; 10 | 11 | }; -------------------------------------------------------------------------------- /XscfExtensionSample/MyExtensionCode/readme.md: -------------------------------------------------------------------------------- 1 | ## 文件夹说明 2 | 本文件夹内的内容为配合 SCF 部分演示模块而添加,和 SCF 基础模块无关,无需使用此测试模块后可以删除。 3 | 4 | 当前示例从 nuget 引用了 [Senparc.Xscf.WeixinManager](https://www.nuget.org/packages/Senparc.Xscf.WeixinManager) 包, 5 | 所有的 SCF 模块(XSCF)都可以使用这种方式开发或引用,保持独立,同时高度可集成、可伸缩。 -------------------------------------------------------------------------------- /src/Senparc.Mvc/Domain/DomainData.cs: -------------------------------------------------------------------------------- 1 | namespace Senparc.Mvc 2 | { 3 | public class DomainData 4 | { 5 | public string Protocol { get; set; } 6 | public string HostName { get; set; } 7 | public string Fragment { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/.gitignore: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 此 .gitignore 文件已由 Microsoft(R) Visual Studio 自动创建。 3 | ################################################################################ 4 | 5 | /.vs 6 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/src/charts/Chart.Doughnut.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | module.exports = function(Chart) { 4 | 5 | Chart.Doughnut = function(context, config) { 6 | config.type = 'doughnut'; 7 | 8 | return new Chart(context, config); 9 | }; 10 | 11 | }; -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/timeline/typeDefaulter.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | require('../../model/Component').registerSubTypeDefaulter('timeline', function () { 4 | // Only slider now. 5 | return 'slider'; 6 | }); 7 | 8 | }); -------------------------------------------------------------------------------- /src/Tools/GenerateDbMigration/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace GenerateDbMigration 4 | { 5 | class Program 6 | { 7 | static void Main(string[] args) 8 | { 9 | Console.WriteLine("Hello World!"); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/src/charts/Chart.PolarArea.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | module.exports = function(Chart) { 4 | 5 | Chart.PolarArea = function(context, config) { 6 | config.type = 'polarArea'; 7 | 8 | return new Chart(context, config); 9 | }; 10 | 11 | }; -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/index.simple.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Export echarts as CommonJS module 3 | */ 4 | module.exports = require('./lib/echarts'); 5 | 6 | require('./lib/chart/line'); 7 | require('./lib/chart/bar'); 8 | require('./lib/chart/pie'); 9 | require('./lib/component/grid'); -------------------------------------------------------------------------------- /src/Senparc.Areas.WX.OldMvc/Models/BaseWXVD.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Scf.Core.Models.VD; 2 | 3 | namespace Senparc.Areas.WX.Models.VD 4 | { 5 | public interface IBaseWXVD : IBaseVD 6 | { 7 | 8 | } 9 | 10 | public class BaseWXVD :BaseVD, IBaseWXVD 11 | { 12 | 13 | } 14 | } -------------------------------------------------------------------------------- /src/Senparc.Web/Models/ErrorViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Senparc.Web.Models 4 | { 5 | public class ErrorViewModel 6 | { 7 | public string RequestId { get; set; } 8 | 9 | public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); 10 | } 11 | } -------------------------------------------------------------------------------- /src/Senparc.Web/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "noImplicitAny": false, 4 | "noEmitOnError": true, 5 | "removeComments": false, 6 | "sourceMap": true, 7 | "target": "es5" 8 | }, 9 | "exclude": [ 10 | "node_modules", 11 | "wwwroot" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /src/Senparc.Web/Hubs/ReloadPageHub.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.SignalR; 2 | 3 | namespace Senparc.Web.Hubs 4 | { 5 | /// 6 | /// 刷新页面 7 | /// 8 | public class ReloadPageHub : Hub 9 | { 10 | public const string Route = "/reloadHub"; 11 | } 12 | } -------------------------------------------------------------------------------- /src/Senparc.Areas.User.OldMvc/Models/BaseUserVD.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Scf.Core.Models.VD; 2 | 3 | namespace Senparc.Areas.User.Models.VD 4 | { 5 | public interface IBaseUserVD : IBaseVD 6 | { 7 | 8 | } 9 | 10 | public class BaseUserVD : BaseVD, IBaseUserVD 11 | { 12 | 13 | } 14 | } -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/dataZoom/typeDefaulter.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | require('../../model/Component').registerSubTypeDefaulter('dataZoom', function (option) { 4 | // Default 'slider' when no type specified. 5 | return 'slider'; 6 | }); 7 | 8 | }); -------------------------------------------------------------------------------- /src/Senparc.Xscf.ExtensionAreaTemplate/Areas/Admin/Pages/MyApp/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using Microsoft.AspNetCore.Mvc.Razor 2 | @using System.Web.Mvc 3 | @using Senparc.CO2NET.Extensions 4 | 5 | @namespace Senparc.Xscf.ExtensionAreaTemplate.Areas.MyApp.Pages 6 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 7 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/css/site.min.css: -------------------------------------------------------------------------------- 1 | body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}.carousel-caption p{font-size:20px;line-height:1.4}.carousel-inner .item img[src$=".svg"]{width:100%}#qrCode{margin:15px}@media screen and (max-width:767px){.carousel-caption{display:none}} -------------------------------------------------------------------------------- /src/Senparc.Core/Models/VD/InstallVD.cs: -------------------------------------------------------------------------------- 1 | namespace Senparc.Core.Models.VD 2 | { 3 | public class Install_BaseVD : BaseVD { } 4 | 5 | public class Install_IndexVD : Install_BaseVD 6 | { 7 | public string AdminUserName { get; set; } 8 | public string AdminPassword { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin/Areas/readme.md: -------------------------------------------------------------------------------- 1 | ## 调试说明 2 | 3 | Razor Page 的独立库需要编译成 dll 后被 Senparc.Web 项目引用才能生效。 4 | 5 | 因此,如果需要快速调试 .cshtml 中的页面内容(避免每次都调试),可以将此文件夹(Areas)整体移动到 Senparc.Web 根目录下。 6 | 7 | ## 安全性 8 | Admin 模块进行访问限 9 | 为了提高安全性,我们建议对于线上生产环境中的制(如限制IP、限制本地访问,或在别处加载而不在生产环境中集成)。 10 | 11 | 同时,您也可以通过随机修改 Area 名字来提高后台的安全性。 -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/dataZoom/SelectZoomModel.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @file Data zoom model 3 | */ 4 | define(function(require) { 5 | 6 | var DataZoomModel = require('./DataZoomModel'); 7 | 8 | return DataZoomModel.extend({ 9 | 10 | type: 'dataZoom.select' 11 | 12 | }); 13 | 14 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/single.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | require('../coord/single/singleCreator'); 4 | require('./singleAxis'); 5 | 6 | var echarts = require('../echarts'); 7 | 8 | echarts.extendComponentView({ 9 | type: 'single' 10 | }); 11 | 12 | }); -------------------------------------------------------------------------------- /src/Senparc.File/Senparc.File.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/Senparc.ImageUtility/Senparc.ImageUtility.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/extension/dataTool/index.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | var echarts = require('echarts'); 3 | echarts.dataTool = { 4 | version: '1.0.0', 5 | gexf: require('./gexf'), 6 | prepareBoxplotData: require('./prepareBoxplotData') 7 | }; 8 | return echarts.dataTool; 9 | }); -------------------------------------------------------------------------------- /src/Senparc.Core/Models/DataBaseModel/Dto/Base/BaseQueryDto.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Scf.Core.Models.DataBaseModel.Dto.Base; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Senparc.Core.Models.DataBaseModel.Dto.Base 7 | { 8 | public class BaseQueryDto : QueryDtoBase 9 | { 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/polar.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 'use strict'; 3 | 4 | require('../coord/polar/polarCreator'); 5 | require('./angleAxis'); 6 | require('./radiusAxis'); 7 | 8 | // Polar view 9 | require('../echarts').extendComponentView({ 10 | type: 'polar' 11 | }); 12 | }); -------------------------------------------------------------------------------- /src/Senparc.Mvc/Controllers/BaseControllers/BaseFrontController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Authorization; 2 | using Senparc.Scf.Core.Extensions; 3 | 4 | namespace Senparc.Mvc.Controllers 5 | { 6 | [UserAuthorize("UserAnonymous")] 7 | [AllowAnonymous] 8 | public class BaseFrontController : BaseController 9 | { 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/src/charts/Chart.Radar.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | module.exports = function(Chart) { 4 | 5 | Chart.Radar = function(context, config) { 6 | config.options = Chart.helpers.configMerge({ aspectRatio: 1 }, config.options); 7 | config.type = 'radar'; 8 | 9 | return new Chart(context, config); 10 | }; 11 | 12 | }; 13 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/karma.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = function(config) { 2 | config.set({ 3 | browsers: ['Chrome', 'Firefox'], 4 | frameworks: ['browserify', 'jasmine'], 5 | reporters: ['progress', 'html'], 6 | 7 | preprocessors: { 8 | 'src/**/*.js': ['browserify'] 9 | }, 10 | browserify: { 11 | debug: true 12 | } 13 | }); 14 | }; -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/sankey.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var echarts = require('../echarts'); 4 | 5 | require('./sankey/SankeySeries'); 6 | require('./sankey/SankeyView'); 7 | echarts.registerLayout(require('./sankey/sankeyLayout')); 8 | echarts.registerVisualCoding('chart', require('./sankey/sankeyVisual')); 9 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/markLine.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | require('./marker/MarkLineModel'); 4 | require('./marker/MarkLineView'); 5 | 6 | require('../echarts').registerPreprocessor(function (opt) { 7 | // Make sure markLine component is enabled 8 | opt.markLine = opt.markLine || {}; 9 | }); 10 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/parallel.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var echarts = require('../echarts'); 4 | 5 | require('../component/parallel'); 6 | 7 | require('./parallel/ParallelSeries'); 8 | require('./parallel/ParallelView'); 9 | 10 | echarts.registerVisualCoding('chart', require('./parallel/parallelVisual')); 11 | 12 | }); -------------------------------------------------------------------------------- /src/Senparc.Xscf.ExtensionAreaTemplate/Areas/Admin/Pages/Shared/_MyAreaMenuPartial.cshtml: -------------------------------------------------------------------------------- 1 | @model Senparc.Scf.AreaBase.Admin.AdminXscfModulePageModelBase 2 | @addTagHelper *, MyArea 3 |
  • 首页
  • 4 |
  • 关于
  • 5 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/.codeclimate.yml: -------------------------------------------------------------------------------- 1 | engines: 2 | duplication: 3 | enabled: true 4 | config: 5 | languages: 6 | - javascript 7 | eslint: 8 | enabled: true 9 | fixme: 10 | enabled: true 11 | ratings: 12 | paths: 13 | - "src/**/*.js" 14 | exclude_paths: 15 | - dist/**/* 16 | - node_modules/**/* 17 | - test/**/* 18 | - coverage/**/* 19 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | - [ ] I have read the [guidelines for contributing](https://github.com/chartjs/Chart.js/blob/master/CONTRIBUTING.md) 2 | - [ ] I have included an example of my issue on a website such as [JS Bin](http://jsbin.com/), [JS Fiddle](http://jsfiddle.net/), or [Codepen](http://codepen.io/pen/). ([Template](http://codepen.io/pen?template=JXVYzq)) -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Chart.js", 3 | "version": "2.1.4", 4 | "description": "Simple HTML5 Charts using the canvas element", 5 | "homepage": "https://github.com/chartjs/Chart.js", 6 | "author": "nnnick", 7 | "license": "MIT", 8 | "main": [ 9 | "dist/Chart.js" 10 | ], 11 | "devDependencies": { 12 | "jquery": "~2.1.4" 13 | } 14 | } -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/boxplot.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var echarts = require('../echarts'); 4 | 5 | require('./boxplot/BoxplotSeries'); 6 | require('./boxplot/BoxplotView'); 7 | 8 | echarts.registerVisualCoding('chart', require('./boxplot/boxplotVisual')); 9 | echarts.registerLayout(require('./boxplot/boxplotLayout')); 10 | 11 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/toolbox/featureManager.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 'use strict'; 3 | 4 | var features = {}; 5 | 6 | return { 7 | register: function (name, ctor) { 8 | features[name] = ctor; 9 | }, 10 | 11 | get: function (name) { 12 | return features[name]; 13 | } 14 | }; 15 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | - [ ] I have read the [guidelines for contributing](https://github.com/chartjs/Chart.js/blob/master/CONTRIBUTING.md) 2 | - [ ] I have included an example of my changes on a website such as [JS Bin](http://jsbin.com/), [JS Fiddle](http://jsfiddle.net/), or [Codepen](http://codepen.io/pen/). ([Template](http://codepen.io/pen?template=JXVYzq)) -------------------------------------------------------------------------------- /src/Senparc.Mvc/Weixin/ScfMessageContext.cs: -------------------------------------------------------------------------------- 1 | using Senparc.NeuChar.Context; 2 | using Senparc.NeuChar.Entities; 3 | using Senparc.Weixin.MP.Entities; 4 | using Senparc.Weixin.MP.MessageContexts; 5 | 6 | namespace Senparc.Mvc.Weixin 7 | { 8 | public class ScfMessageContext : DefaultMpMessageContext 9 | { 10 | public ScfMessageContext() 11 | { 12 | 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Tools/GenerateDbMigration/GenerateDbMigration.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | netcoreapp3.1 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.github/workflows/dotnetcore.yml: -------------------------------------------------------------------------------- 1 | name: .NET Core 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v1 12 | - name: Setup .NET Core 13 | uses: actions/setup-dotnet@v1 14 | with: 15 | dotnet-version: 3.1.100 16 | - name: Build with dotnet 17 | run: dotnet build ./src/SCF.sln --configuration Release 18 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/markPoint.js: -------------------------------------------------------------------------------- 1 | // HINT Markpoint can't be used too much 2 | define(function (require) { 3 | 4 | require('./marker/MarkPointModel'); 5 | require('./marker/MarkPointView'); 6 | 7 | require('../echarts').registerPreprocessor(function (opt) { 8 | // Make sure markPoint component is enabled 9 | opt.markPoint = opt.markPoint || {}; 10 | }); 11 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/timeline/TimelineView.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @file Timeline view 3 | */ 4 | define(function (require) { 5 | 6 | // var zrUtil = require('zrender/core/util'); 7 | // var graphic = require('../../util/graphic'); 8 | var ComponentView = require('../../view/Component'); 9 | 10 | return ComponentView.extend({ 11 | 12 | type: 'timeline' 13 | }); 14 | 15 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/SUMMARY.md: -------------------------------------------------------------------------------- 1 | ## 起步 2 | 3 | * [简介](instruction/index.md) 4 | * [Xscf模块简介](instruction/index_xscf.md) 5 | * [如何开发一个Xscf模块](developer/xscf_module.md) 6 | * [发布本地Nuget](developer/issue_local_nuget.md) 7 | 8 | ## Q&A 9 | 10 | * [名词解释](qa/explanation_of_terms.md) 11 | * [常见问题](qa/common_problem.md) 12 | 13 | ## 新发布 14 | 15 | * [新功能](release/new_function.md) 16 | * [日志](release/log.md) -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/legend.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Legend component entry file8 3 | */ 4 | define(function (require) { 5 | 6 | require('./legend/LegendModel'); 7 | require('./legend/legendAction'); 8 | require('./legend/LegendView'); 9 | 10 | var echarts = require('../echarts'); 11 | // Series Filter 12 | echarts.registerProcessor('filter', require('./legend/legendFilter')); 13 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/toolbox.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | require('./toolbox/ToolboxModel'); 4 | require('./toolbox/ToolboxView'); 5 | 6 | require('./toolbox/feature/SaveAsImage'); 7 | require('./toolbox/feature/MagicType'); 8 | require('./toolbox/feature/DataView'); 9 | require('./toolbox/feature/DataZoom'); 10 | require('./toolbox/feature/Restore'); 11 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dongjian-doc-website", 3 | "version": "1.0.0", 4 | "description": "dongjian doc website", 5 | "author": "henry", 6 | "main": "index.html", 7 | "dependencies": { 8 | "connect": "^3.6.6", 9 | "morgan": "^1.9.1", 10 | "serve-static": "^1.13.2" 11 | }, 12 | "devDependencies": {}, 13 | "scripts": { 14 | "dev": "node server.js" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/treemap.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var echarts = require('../echarts'); 4 | 5 | require('./treemap/TreemapSeries'); 6 | require('./treemap/TreemapView'); 7 | require('./treemap/treemapAction'); 8 | 9 | echarts.registerVisualCoding('chart', require('./treemap/treemapVisual')); 10 | 11 | echarts.registerLayout(require('./treemap/treemapLayout')); 12 | }); -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin/Areas/Admin/Pages/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using Microsoft.AspNetCore.Mvc.Razor 2 | @using Senparc.Core.Models.VD 3 | @using Senparc.Scf.Mvc.UI 4 | @using System.Web.Mvc 5 | @using Senparc.CO2NET.Extensions 6 | @using Senparc.Scf.XscfBase 7 | @namespace Senparc.Areas.Admin.Pages 8 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 9 | @addTagHelper AuthoringTagHelpers.TagHelpers.EmailTagHelper, AuthoringTagHelpers 10 | -------------------------------------------------------------------------------- /src/Senparc.SMS.Tests/BaseSMSTest.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using log4net; 3 | using log4net.Config; 4 | 5 | namespace Senparc.Scf.SMS.Tests 6 | { 7 | public class BaseSMSTest 8 | { 9 | public BaseSMSTest() 10 | { 11 | var repository = LogManager.CreateRepository("NETCoreRepository"); 12 | XmlConfigurator.Configure(repository, new FileInfo("log4net.config")); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Senparc.Web/Pages/Privacy.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | using Microsoft.AspNetCore.Mvc.RazorPages; 7 | using Senparc.Core.Models.VD; 8 | 9 | namespace Senparc.Web.Pages 10 | { 11 | public class PrivacyModel : BasePageModel 12 | { 13 | public void OnGet() 14 | { 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/graph/circularLayout.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | var circularLayoutHelper = require('./circularLayoutHelper'); 3 | return function (ecModel, api) { 4 | ecModel.eachSeriesByType('graph', function (seriesModel) { 5 | if (seriesModel.get('layout') === 'circular') { 6 | circularLayoutHelper(seriesModel); 7 | } 8 | }); 9 | }; 10 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/dataZoom/InsideZoomModel.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @file Data zoom model 3 | */ 4 | define(function(require) { 5 | 6 | return require('./DataZoomModel').extend({ 7 | 8 | type: 'dataZoom.inside', 9 | 10 | /** 11 | * @protected 12 | */ 13 | defaultOption: { 14 | zoomLock: false // Whether disable zoom but only pan. 15 | } 16 | }); 17 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "echarts", 3 | "homepage": "https://github.com/ecomfe/echarts", 4 | "version": "3.1.10", 5 | "_release": "3.1.10", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "3.1.10", 9 | "commit": "5b08696ef103314c827907907432b15146940c45" 10 | }, 11 | "_source": "https://github.com/ecomfe/echarts.git", 12 | "_target": "^3.1.7", 13 | "_originalSource": "echarts" 14 | } -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/model/mixin/areaStyle.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | return { 3 | getAreaStyle: require('./makeStyleMapper')( 4 | [ 5 | ['fill', 'color'], 6 | ['shadowBlur'], 7 | ['shadowOffsetX'], 8 | ['shadowOffsetY'], 9 | ['opacity'], 10 | ['shadowColor'] 11 | ] 12 | ) 13 | }; 14 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/timeline.js: -------------------------------------------------------------------------------- 1 | /** 2 | * DataZoom component entry 3 | */ 4 | define(function (require) { 5 | 6 | var echarts = require('../echarts'); 7 | 8 | echarts.registerPreprocessor(require('./timeline/preprocessor')); 9 | 10 | require('./timeline/typeDefaulter'); 11 | require('./timeline/timelineAction'); 12 | require('./timeline/SliderTimelineModel'); 13 | require('./timeline/SliderTimelineView'); 14 | 15 | }); -------------------------------------------------------------------------------- /src/Senparc.Core/Models/DataBaseModel/readme.md: -------------------------------------------------------------------------------- 1 | ## 数据库实体 2 | 3 | 命名空间统一为:Senparc.Core.Models 4 | 5 | 6 | ## 设计模式参考(部分) 7 | 8 | 逻辑服务:https://www.thereformedprogrammer.net/architecture-of-business-layer-working-with-entity-framework-core-and-v6-revisited/ 9 | 10 | EF Core + DDD:https://www.thereformedprogrammer.net/creating-domain-driven-design-entity-classes-with-entity-framework-core/ 11 | 12 | ABP:https://github.com/abpframework/abp 13 | 14 | SCF 并没有`完全`认同上述设计思路,因此会有不同。 15 | -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin.OldMvc/Models/VD/FeedbackVD.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Core.Models; 2 | using Senparc.Scf.Core.Enums; 3 | using Senparc.Scf.Core.Models; 4 | 5 | namespace Senparc.Areas.Admin.Models.VD 6 | { 7 | public class Feedback_BaseVD : BaseAdminVD 8 | { 9 | 10 | } 11 | 12 | public class Feedback_IndexVD : Feedback_BaseVD 13 | { 14 | public string Kw { get; set; } 15 | public PagedList FeedbackList { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Senparc.Core/Exceptions/ScfUninstallException.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Scf.Core.Exceptions; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Senparc.Core 7 | { 8 | /// 9 | /// SCF 未安装 10 | /// 11 | public class ScfUninstallException : SCFExceptionBase 12 | { 13 | public ScfUninstallException(string message, bool logged = false) : base(message, logged) 14 | { 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Senparc.Core/Models/VD/BasePageModel.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Scf.Core.Models; 2 | using Senparc.Scf.Core.Models.VD; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | 7 | namespace Senparc.Core.Models.VD 8 | { 9 | public interface IBasePageModel : IPageModelBase 10 | { } 11 | 12 | /// 13 | /// 当前项目供前端(非Areas)使用的PageModel全局基类 14 | /// 15 | public class BasePageModel : PageModelBase, IBasePageModel 16 | { 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/lines.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | require('./lines/LinesSeries'); 4 | require('./lines/LinesView'); 5 | 6 | var zrUtil = require('zrender/core/util'); 7 | var echarts = require('../echarts'); 8 | echarts.registerLayout( 9 | require('./lines/linesLayout') 10 | ); 11 | 12 | echarts.registerVisualCoding( 13 | 'chart', zrUtil.curry(require('../visual/seriesColor'), 'lines', 'lineStyle') 14 | ); 15 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/dataZoomInside.js: -------------------------------------------------------------------------------- 1 | /** 2 | * DataZoom component entry 3 | */ 4 | define(function (require) { 5 | 6 | require('./dataZoom/typeDefaulter'); 7 | 8 | require('./dataZoom/DataZoomModel'); 9 | require('./dataZoom/DataZoomView'); 10 | 11 | require('./dataZoom/InsideZoomModel'); 12 | require('./dataZoom/InsideZoomView'); 13 | 14 | require('./dataZoom/dataZoomProcessor'); 15 | require('./dataZoom/dataZoomAction'); 16 | 17 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/dataZoomSelect.js: -------------------------------------------------------------------------------- 1 | /** 2 | * DataZoom component entry 3 | */ 4 | define(function (require) { 5 | 6 | require('./dataZoom/typeDefaulter'); 7 | 8 | require('./dataZoom/DataZoomModel'); 9 | require('./dataZoom/DataZoomView'); 10 | 11 | require('./dataZoom/SelectZoomModel'); 12 | require('./dataZoom/SelectZoomView'); 13 | 14 | require('./dataZoom/dataZoomProcessor'); 15 | require('./dataZoom/dataZoomAction'); 16 | 17 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/visualMapPiecewise.js: -------------------------------------------------------------------------------- 1 | /** 2 | * DataZoom component entry 3 | */ 4 | define(function (require) { 5 | 6 | require('../echarts').registerPreprocessor( 7 | require('./visualMap/preprocessor') 8 | ); 9 | 10 | require('./visualMap/typeDefaulter'); 11 | require('./visualMap/visualCoding'); 12 | require('./visualMap/PiecewiseModel'); 13 | require('./visualMap/PiecewiseView'); 14 | require('./visualMap/visualMapAction'); 15 | 16 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/model/mixin/boxLayout.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | return { 4 | getBoxLayoutParams: function () { 5 | return { 6 | left: this.get('left'), 7 | top: this.get('top'), 8 | right: this.get('right'), 9 | bottom: this.get('bottom'), 10 | width: this.get('width'), 11 | height: this.get('height') 12 | }; 13 | } 14 | }; 15 | }); -------------------------------------------------------------------------------- /src/Senparc.Mvc/Models/HomeVD.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Core.Models.VD; 2 | using Senparc.Scf.Core.Models.VD; 3 | 4 | namespace Senparc.Mvc.Models.VD 5 | { 6 | public class Home_IndexVD : Home_BaseVD 7 | { 8 | 9 | } 10 | 11 | public class Home_AboutVD : Home_BaseVD 12 | { 13 | public string Version { get; set; } 14 | } 15 | 16 | public class Home_RegAgreementVD : Home_BaseVD 17 | { 18 | 19 | } 20 | public class Home_DetailVD : BaseVD 21 | { 22 | } 23 | 24 | } -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/visualMapContinuous.js: -------------------------------------------------------------------------------- 1 | /** 2 | * DataZoom component entry 3 | */ 4 | define(function (require) { 5 | 6 | require('../echarts').registerPreprocessor( 7 | require('./visualMap/preprocessor') 8 | ); 9 | 10 | require('./visualMap/typeDefaulter'); 11 | require('./visualMap/visualCoding'); 12 | require('./visualMap/ContinuousModel'); 13 | require('./visualMap/ContinuousView'); 14 | require('./visualMap/visualMapAction'); 15 | 16 | }); -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin/SeparcTraceManager/SenparcTraceType.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Senparc.Areas.Admin.SenparcTraceManager 8 | { 9 | /// 10 | /// 消息类型 11 | /// 12 | public enum SenparcTraceType 13 | { 14 | Normal = 0, 15 | API = 2, 16 | PostRequest = 4, 17 | GetRequest = 6, 18 | Exception = 8 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Senparc.Log/Senparc.Log.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Senparc.Respository/FeedBackRepository.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Core.Models; 2 | using Senparc.Scf.Repository; 3 | 4 | namespace Senparc.Repository 5 | { 6 | public interface IFeedBackRepository : IClientRepositoryBase 7 | { 8 | } 9 | 10 | public class FeedBackRepository : ClientRepositoryBase, IFeedBackRepository 11 | { 12 | public FeedBackRepository(ISqlClientFinanceData sqlClientFinanceData) : base(sqlClientFinanceData) 13 | { 14 | 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/webpack.config.js: -------------------------------------------------------------------------------- 1 | var PROD = process.argv.indexOf('-p') >= 0; 2 | 3 | module.exports = { 4 | entry: { 5 | 'echarts': __dirname + '/index.js', 6 | 'echarts.simple': __dirname + '/index.simple.js', 7 | 'echarts.common': __dirname + '/index.common.js' 8 | }, 9 | output: { 10 | libraryTarget: 'umd', 11 | library: 'echarts', 12 | path: __dirname + '/dist', 13 | filename: PROD ? '[name].min.js' : '[name].js' 14 | } 15 | }; -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/parallel.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | require('../coord/parallel/parallelCreator'); 4 | require('../coord/parallel/ParallelModel'); 5 | require('./parallelAxis'); 6 | 7 | var echarts = require('../echarts'); 8 | 9 | // Parallel view 10 | echarts.extendComponentView({ 11 | type: 'parallel' 12 | }); 13 | 14 | echarts.registerPreprocessor( 15 | require('../coord/parallel/parallelPreprocessor') 16 | ); 17 | 18 | }); -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin.OldMvc/Controllers/HomeController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using Senparc.Areas.Admin.Models.VD; 3 | using Senparc.Mvc.Filter; 4 | 5 | namespace Senparc.Areas.Admin.Controllers 6 | { 7 | [MenuFilter("Home")] 8 | public class HomeController : BaseAdminController 9 | { 10 | public ActionResult Index() 11 | { 12 | var vd = new Home_IndexVD() 13 | { 14 | 15 | }; 16 | return View(vd); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/candlestick.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var echarts = require('../echarts'); 4 | 5 | require('./candlestick/CandlestickSeries'); 6 | require('./candlestick/CandlestickView'); 7 | 8 | echarts.registerPreprocessor( 9 | require('./candlestick/preprocessor') 10 | ); 11 | 12 | echarts.registerVisualCoding('chart', require('./candlestick/candlestickVisual')); 13 | echarts.registerLayout(require('./candlestick/candlestickLayout')); 14 | 15 | }); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | | SCF | moved to | [NCF](https://github.com/NeuCharFramework/NCF) 2 | |-------|-------|--------- 3 | | | >>>>> | 4 | 5 | 6 | # SCF - SenparcCoreFramework 7 | 8 | 9 | > ## 注意:当前项目已停止更新,请移步:https://github.com/NeuCharFramework/NCF 10 | 11 | > SenparcCoreFramework 已经结合 NeuChar 核心,整合功能,全面升级至 [NeuCharFramework](https://github.com/NeuCharFramework/NCF) 下,进行长期维护,所有原有功能向下兼容。感谢您的支持! 12 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/model/mixin/itemStyle.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | return { 3 | getItemStyle: require('./makeStyleMapper')( 4 | [ 5 | ['fill', 'color'], 6 | ['stroke', 'borderColor'], 7 | ['lineWidth', 'borderWidth'], 8 | ['opacity'], 9 | ['shadowBlur'], 10 | ['shadowOffsetX'], 11 | ['shadowOffsetY'], 12 | ['shadowColor'] 13 | ] 14 | ) 15 | }; 16 | }); -------------------------------------------------------------------------------- /src/Senparc.Respository/AccountRepository.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Core.Models; 2 | using Senparc.Scf.Core.Models; 3 | using Senparc.Scf.Repository; 4 | 5 | namespace Senparc.Repository 6 | { 7 | public interface IAccountRepository : IClientRepositoryBase 8 | { 9 | } 10 | 11 | public class AccountRepository : ClientRepositoryBase, IAccountRepository 12 | { 13 | public AccountRepository(ISqlClientFinanceData sqlClientFinanceData) : base(sqlClientFinanceData) 14 | { 15 | 16 | } 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /src/Senparc.Respository/AdminUserInfoRepository.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Core.Models; 2 | using Senparc.Scf.Repository; 3 | 4 | namespace Senparc.Repository 5 | { 6 | public interface IAdminUserInfoRepository : IClientRepositoryBase 7 | { 8 | } 9 | 10 | public class AdminUserInfoRepository : ClientRepositoryBase, IAdminUserInfoRepository 11 | { 12 | public AdminUserInfoRepository(ISqlClientFinanceData sqlClientFinanceData) : base(sqlClientFinanceData) 13 | { 14 | 15 | } 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/Senparc.Respository/PointsLogRepository.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Core.Models; 2 | using Senparc.Scf.Core.Models; 3 | using Senparc.Scf.Repository; 4 | 5 | namespace Senparc.Repository 6 | { 7 | public interface IPointsLogRepository : IClientRepositoryBase 8 | { 9 | } 10 | 11 | public class PointsLogRepository : ClientRepositoryBase, IPointsLogRepository 12 | { 13 | public PointsLogRepository(ISqlClientFinanceData sqlClientFinanceData) : base(sqlClientFinanceData) 14 | { 15 | 16 | } 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/extension/webpack.config.js: -------------------------------------------------------------------------------- 1 | var PROD = process.argv.indexOf('-p') >= 0; 2 | 3 | module.exports = { 4 | entry: { 5 | 'bmap': __dirname + '/../extension/bmap/bmap.js', 6 | 'dataTool': __dirname + '/../extension/dataTool' 7 | }, 8 | output: { 9 | libraryTarget: 'umd', 10 | library: ['echarts', '[name]'], 11 | path: __dirname + '/../dist/extension', 12 | filename: PROD ? '[name].min.js' : '[name].js' 13 | }, 14 | externals: { 15 | 'echarts': 'echarts' 16 | } 17 | }; -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/effectScatter.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var zrUtil = require('zrender/core/util'); 4 | var echarts = require('../echarts'); 5 | 6 | require('./effectScatter/EffectScatterSeries'); 7 | require('./effectScatter/EffectScatterView'); 8 | 9 | echarts.registerVisualCoding('chart', zrUtil.curry( 10 | require('../visual/symbol'), 'effectScatter', 'circle', null 11 | )); 12 | echarts.registerLayout(zrUtil.curry( 13 | require('../layout/points'), 'effectScatter' 14 | )); 15 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM microsoft/aspnetcore:2.0 AS base 2 | WORKDIR /app 3 | EXPOSE 80 4 | 5 | FROM microsoft/aspnetcore-build:2.0 AS build 6 | WORKDIR /src 7 | COPY Senparc.Core.sln ./ 8 | COPY Senparc.Web/Senparc.Web.csproj Senparc.Web/ 9 | RUN dotnet restore -nowarn:msb3202,nu1503 10 | COPY . . 11 | WORKDIR /src/Senparc.Web 12 | RUN dotnet build -c Release -o /app 13 | 14 | FROM build AS publish 15 | RUN dotnet publish -c Release -o /app 16 | 17 | FROM base AS final 18 | WORKDIR /app 19 | COPY --from=publish /app . 20 | ENTRYPOINT ["dotnet", "Senparc.Web.dll"] 21 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/release/new_function.md: -------------------------------------------------------------------------------- 1 | # 新功能 2 | 3 | ## 一键隐藏扩展模块的菜单项 4 | 5 | 对于有强迫症的开发小伙伴来说,多一层菜单可谓是脑壳疼,那么下面新发布了一个超强功能,让界面一键变美 6 | 7 | ![Image Text](/start/images/hidden_extend_menu.png) 8 | 9 | 效果如下: 10 | 11 | ![Image Text](/start/images/hidden_after_menu_show.png) 12 | 13 | 这个效果对于客户来说可谓绝佳! 14 | 15 | ## 一键还原(开启)扩展模块的菜单项 16 | 17 | 对于开发来说难免还需要再次进行安装其他的模块,进行调试,跟踪,那么如何还原呢? 18 | 19 | 重新访问:http://你的域名/Admin/XscfModule/Index 20 | 21 | ![Image Text](/start/images/show_open_extend_menu_button.png) 22 | 23 | 点击开启即可,是不是 So Easy. 24 | 25 | (更多功能敬请期待...) -------------------------------------------------------------------------------- /src/Senparc.Respository/SystemConfigRepository.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Core.Models; 2 | using Senparc.Scf.Core.Models; 3 | using Senparc.Scf.Repository; 4 | 5 | namespace Senparc.Repository 6 | { 7 | public interface ISystemConfigRepository : IClientRepositoryBase 8 | { 9 | } 10 | 11 | public class SystemConfigRepository : ClientRepositoryBase, ISystemConfigRepository 12 | { 13 | public SystemConfigRepository(ISqlClientFinanceData sqlClientFinanceData) : base(sqlClientFinanceData) 14 | { 15 | 16 | } 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/dataZoom.js: -------------------------------------------------------------------------------- 1 | /** 2 | * DataZoom component entry 3 | */ 4 | define(function (require) { 5 | 6 | require('./dataZoom/typeDefaulter'); 7 | 8 | require('./dataZoom/DataZoomModel'); 9 | require('./dataZoom/DataZoomView'); 10 | 11 | require('./dataZoom/SliderZoomModel'); 12 | require('./dataZoom/SliderZoomView'); 13 | 14 | require('./dataZoom/InsideZoomModel'); 15 | require('./dataZoom/InsideZoomView'); 16 | 17 | require('./dataZoom/dataZoomProcessor'); 18 | require('./dataZoom/dataZoomAction'); 19 | 20 | }); -------------------------------------------------------------------------------- /src/Senparc.Core/Models/DataBaseModel/FeedBack.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Scf.Core.Enums; 2 | using Senparc.Scf.Core.Models; 3 | using System; 4 | using System.ComponentModel.DataAnnotations.Schema; 5 | 6 | namespace Senparc.Core.Models 7 | { 8 | [Serializable] 9 | public partial class FeedBack : EntityBase 10 | { 11 | public int AccountId { get; set; } 12 | 13 | public string Content { get; set; } 14 | 15 | /// 16 | /// 用户 17 | /// 18 | /// 19 | public Account Account { get; set; } 20 | } 21 | } -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/candlestick/preprocessor.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var zrUtil = require('zrender/core/util'); 4 | 5 | return function (option) { 6 | if (!option || !zrUtil.isArray(option.series)) { 7 | return; 8 | } 9 | 10 | // Translate 'k' to 'candlestick'. 11 | zrUtil.each(option.series, function (seriesItem) { 12 | if (zrUtil.isObject(seriesItem) && seriesItem.type === 'k') { 13 | seriesItem.type = 'candlestick'; 14 | } 15 | }); 16 | }; 17 | 18 | }); -------------------------------------------------------------------------------- /src/Senparc.Respository/AccountPayLogRepository.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Core.Models; 2 | using Senparc.Scf.Core.Models; 3 | using Senparc.Scf.Repository; 4 | 5 | 6 | namespace Senparc.Repository 7 | { 8 | public interface IAccountPayLogRepository : IClientRepositoryBase 9 | { 10 | } 11 | 12 | public class AccountPayLogRepository : ClientRepositoryBase, IAccountPayLogRepository 13 | { 14 | public AccountPayLogRepository(ISqlClientFinanceData sqlClientFinanceData) : base(sqlClientFinanceData) 15 | { 16 | 17 | } 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/chord.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | require('./chord/ChordSeries'); 4 | require('./chord/ChordView'); 5 | 6 | var echarts = require('../echarts'); 7 | var zrUtil = require('zrender/core/util'); 8 | echarts.registerLayout(require('./chord/chordCircularLayout')); 9 | 10 | echarts.registerVisualCoding( 11 | 'chart', zrUtil.curry(require('../visual/dataColor'), 'chord') 12 | ); 13 | 14 | echarts.registerProcessor( 15 | 'filter', zrUtil.curry(require('../processor/dataFilter'), 'pie') 16 | ); 17 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/funnel.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var zrUtil = require('zrender/core/util'); 4 | var echarts = require('../echarts'); 5 | 6 | require('./funnel/FunnelSeries'); 7 | require('./funnel/FunnelView'); 8 | 9 | echarts.registerVisualCoding( 10 | 'chart', zrUtil.curry(require('../visual/dataColor'), 'funnel') 11 | ); 12 | echarts.registerLayout(require('./funnel/funnelLayout')); 13 | 14 | echarts.registerProcessor( 15 | 'filter', zrUtil.curry(require('../processor/dataFilter'), 'funnel') 16 | ); 17 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/themeRiver.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var echarts = require('../echarts'); 4 | var zrUtil = require('zrender/core/util'); 5 | 6 | 7 | require('./themeRiver/ThemeRiverSeries'); 8 | 9 | require('./themeRiver/ThemeRiverView'); 10 | 11 | echarts.registerLayout(require('./themeRiver/themeRiverLayout')); 12 | 13 | echarts.registerVisualCoding('chart', require('./themeRiver/themeRiverVisual')); 14 | 15 | echarts.registerProcessor( 16 | 'filter', zrUtil.curry(require('../processor/dataFilter'), 'themeRiver') 17 | ); 18 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/karma.conf.ci.js: -------------------------------------------------------------------------------- 1 | module.exports = function(config) { 2 | var configuration = { 3 | browsers: ['Firefox'], 4 | customLaunchers: { 5 | Chrome_travis_ci: { 6 | base: 'Chrome', 7 | flags: ['--no-sandbox'] 8 | } 9 | }, 10 | frameworks: ['browserify', 'jasmine'], 11 | reporters: ['progress', 'html'], 12 | preprocessors: { 13 | 'src/**/*.js': ['browserify'] 14 | }, 15 | browserify: { 16 | debug: true 17 | } 18 | }; 19 | 20 | if (process.env.TRAVIS) { 21 | configuration.browsers.push('Chrome_travis_ci'); 22 | } 23 | 24 | config.set(configuration); 25 | }; -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin.OldMvc/Controllers/SystemConfigController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using Senparc.Areas.Admin.Models.VD; 3 | using Senparc.Mvc.Filter; 4 | 5 | namespace Senparc.Areas.Admin.Controllers 6 | { 7 | [MenuFilter("SystemConfig")] 8 | public class SystemConfigController : BaseAdminController 9 | { 10 | public ActionResult Index() 11 | { 12 | return View(); 13 | } 14 | 15 | [HttpPost] 16 | public IActionResult Index(SystemConfig_IndexVD model) 17 | { 18 | return RedirectToAction("Index"); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/Senparc.Core/Models/DataBaseModel/Mapping/FeedbackConfigurationMapping.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | using Microsoft.EntityFrameworkCore.Metadata.Builders; 3 | using Senparc.Scf.Core.Models.DataBaseModel; 4 | using Senparc.Scf.XscfBase.Attributes; 5 | 6 | namespace Senparc.Core.Models 7 | { 8 | [XscfAutoConfigurationMapping] 9 | public class FeedbackConfigurationMapping : ConfigurationMappingWithIdBase 10 | { 11 | public override void Configure(EntityTypeBuilder builder) 12 | { 13 | builder.HasQueryFilter(z => !z.Flag); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/ExtensionAPI.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | 'use strict'; 4 | 5 | var zrUtil = require('zrender/core/util'); 6 | 7 | var echartsAPIList = [ 8 | 'getDom', 'getZr', 'getWidth', 'getHeight', 'dispatchAction', 9 | 'on', 'off', 'getDataURL', 'getConnectedDataURL', 'getModel', 'getOption' 10 | ]; 11 | 12 | function ExtensionAPI(chartInstance) { 13 | zrUtil.each(echartsAPIList, function (name) { 14 | this[name] = zrUtil.bind(chartInstance[name], chartInstance); 15 | }, this); 16 | } 17 | 18 | return ExtensionAPI; 19 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/scatter.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var zrUtil = require('zrender/core/util'); 4 | var echarts = require('../echarts'); 5 | 6 | require('./scatter/ScatterSeries'); 7 | require('./scatter/ScatterView'); 8 | 9 | echarts.registerVisualCoding('chart', zrUtil.curry( 10 | require('../visual/symbol'), 'scatter', 'circle', null 11 | )); 12 | echarts.registerLayout(zrUtil.curry( 13 | require('../layout/points'), 'scatter' 14 | )); 15 | 16 | // In case developer forget to include grid component 17 | require('../component/grid'); 18 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/coord/geo/fix/geoCoord.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var zrUtil = require('zrender/core/util'); 4 | 5 | var geoCoordMap = { 6 | 'Russia': [100, 60], 7 | 'United States of America': [-99, 38] 8 | }; 9 | 10 | return function (geo) { 11 | zrUtil.each(geo.regions, function (region) { 12 | var geoCoord = geoCoordMap[region.name]; 13 | if (geoCoord) { 14 | var cp = region.center; 15 | cp[0] = geoCoord[0]; 16 | cp[1] = geoCoord[1]; 17 | } 18 | }); 19 | }; 20 | }); -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin.OldMvc/Models/VD/LoginVD.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | using Senparc.Scf.Core.Models.VD; 3 | 4 | namespace Senparc.Areas.Admin.Models.VD 5 | { 6 | public class Login_BaseVD : BaseVD 7 | { 8 | 9 | } 10 | 11 | 12 | public class Login_IndexVD : Login_BaseVD 13 | { 14 | [Required(ErrorMessage = "请输入用户名")] 15 | public string Name { get; set; } 16 | 17 | [Required(ErrorMessage = "请输入密码")] 18 | public string Password { get; set; } 19 | 20 | public string ReturnUrl { get; set; } 21 | public bool IsLogined { get; set; } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Senparc.Mvc/Filter/AjaxMethodAttribute.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Http; 2 | using Microsoft.AspNetCore.Mvc.ActionConstraints; 3 | using Microsoft.AspNetCore.Mvc.Abstractions; 4 | using Microsoft.AspNetCore.Routing; 5 | 6 | namespace Senparc.Mvc 7 | { 8 | public class AjaxMethodAttribute : ActionMethodSelectorAttribute 9 | { 10 | public AjaxMethodAttribute() 11 | { 12 | } 13 | 14 | public override bool IsValidForRequest(RouteContext routeContext, ActionDescriptor action) 15 | { 16 | return routeContext.HttpContext.Request.IsAjaxRequest(); 17 | 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/server.js: -------------------------------------------------------------------------------- 1 | let connect = require('connect'); 2 | let serveStatic = require('serve-static'); 3 | let morgan = require('morgan'); 4 | 5 | let app = connect() 6 | .use(morgan('combined')) 7 | .use('/', serveStatic(__dirname + '/docs/assets')) 8 | .use('/', serveStatic(__dirname + '/docs/doc')) 9 | // .use('/', function (req, res) { 10 | // res.writeHead(302, {'Location': '/index.html'}); 11 | // res.end(); 12 | // }) 13 | .use(function (err, req, res, next) { 14 | console.log(err) 15 | res.end() 16 | }) 17 | .listen(3080, function () { 18 | console.log('Server running on 3080...'); 19 | }) 20 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/graph/simpleLayoutHelper.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var simpleLayoutEdge = require('./simpleLayoutEdge'); 4 | 5 | return function (seriesModel) { 6 | var coordSys = seriesModel.coordinateSystem; 7 | if (coordSys && coordSys.type !== 'view') { 8 | return; 9 | } 10 | var graph = seriesModel.getGraph(); 11 | 12 | graph.eachNode(function (node) { 13 | var model = node.getModel(); 14 | node.setLayout([+model.get('x'), +model.get('y')]); 15 | }); 16 | 17 | simpleLayoutEdge(graph); 18 | }; 19 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/index.common.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Export echarts as CommonJS module 3 | */ 4 | module.exports = require('./lib/echarts'); 5 | 6 | require('./lib/chart/line'); 7 | require('./lib/chart/bar'); 8 | require('./lib/chart/pie'); 9 | require('./lib/chart/scatter'); 10 | require('./lib/component/tooltip'); 11 | require('./lib/component/legend'); 12 | 13 | require('./lib/component/grid'); 14 | require('./lib/component/title'); 15 | 16 | require('./lib/component/markPoint'); 17 | require('./lib/component/markLine'); 18 | require('./lib/component/dataZoom'); 19 | require('./lib/component/toolbox'); 20 | 21 | require('zrender/lib/vml/vml'); -------------------------------------------------------------------------------- /src/Senparc.Services.Tests/Senparc.Services.Tests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | false 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/css/Admin/Menu/Menu.css: -------------------------------------------------------------------------------- 1 | .menu-icons-grid{ 2 | position:relative; 3 | display:grid; 4 | grid-template-columns:repeat(auto-fill,minmax(120px,1fr)); 5 | height:600px; 6 | overflow-y:scroll; 7 | } 8 | .menu-icon-item { 9 | height: 85px; 10 | text-align: center; 11 | width: 100px; 12 | float: left; 13 | font-size: 30px; 14 | color: rgb(36, 41, 46); 15 | cursor: pointer; 16 | margin: 20px; 17 | } 18 | .menu-icon-item:hover { 19 | color: #409EFF 20 | } 21 | .menu-icon-item span { 22 | display: block; 23 | font-size: 16px; 24 | margin-top: 10px; 25 | } -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/helper/interactionMutex.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var ATTR = '\0_ec_interaction_mutex'; 4 | 5 | var interactionMutex = { 6 | 7 | take: function (key, zr) { 8 | getStore(zr)[key] = true; 9 | }, 10 | 11 | release: function (key, zr) { 12 | getStore(zr)[key] = false; 13 | }, 14 | 15 | isTaken: function (key, zr) { 16 | return !!getStore(zr)[key]; 17 | } 18 | }; 19 | 20 | function getStore(zr) { 21 | return zr[ATTR] || (zr[ATTR] = {}); 22 | } 23 | 24 | return interactionMutex; 25 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/js/Admin/vuePermission.js: -------------------------------------------------------------------------------- 1 | function permissionJudge(value) { 2 | let list = JSON.parse(window.sessionStorage.getItem('saveResourceCodes')); 3 | if (!value.length > 0) { 4 | return true; 5 | } 6 | for (let item of list) { 7 | if (value.indexOf(item.resourceCode) > -1) { 8 | return true; 9 | } 10 | } 11 | return false; 12 | } 13 | // 注册一个全局自定义指令 `v-has` 14 | Vue.directive('has', { 15 | // 当被绑定的元素插入到 DOM 中时触发bind钩子 16 | inserted: function (el, binding) { 17 | if (!permissionJudge(binding.value)) { 18 | el.parentNode.removeChild(el); 19 | } 20 | } 21 | }); -------------------------------------------------------------------------------- /src/Senparc.SMS/Senparc.SMS.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "5.10" 4 | 5 | before_install: 6 | - "export CHROME_BIN=/usr/bin/google-chrome" 7 | - "export DISPLAY=:99.0" 8 | - "sh -e /etc/init.d/xvfb start" 9 | 10 | before_script: 11 | - npm install 12 | 13 | script: 14 | - gulp test 15 | - gulp coverage 16 | - cat ./coverage/lcov.info | ./node_modules/.bin/coveralls 17 | 18 | notifications: 19 | slack: chartjs:pcfCZR6ugg5TEcaLtmIfQYuA 20 | 21 | sudo: required 22 | dist: trusty 23 | 24 | addons: 25 | firefox: latest 26 | apt: 27 | sources: 28 | - google-chrome 29 | packages: 30 | - google-chrome-stable 31 | -------------------------------------------------------------------------------- /src/Senparc.Xscf.ExtensionAreaTemplate/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | }, 7 | "AllowedHosts": "*", 8 | "SenparcCoreSetting": { 9 | "IsDebug": true, 10 | "IsTestSite": true, 11 | //"DatabaseName": "Client", // 对应:AppData/DataBase/SenparcConfig.config 中,所需要使用的数据库连接的 节点的 Name 12 | "DatabaseName": "Local", // 对应:AppData/DataBase/SenparcConfig.config 中,所需要使用的数据库连接的 节点的 Name 13 | "MemcachedAddresses": "", 14 | "CacheTypeStr": "Local", //注意:不是Senaprc.Weixin SDK 中的 Local 15 | "CacheType": "Local" 16 | //"CacheType": "Redis" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/visualMap/visualMapAction.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @file Data range action 3 | */ 4 | define(function(require) { 5 | 6 | var echarts = require('../../echarts'); 7 | 8 | var actionInfo = { 9 | type: 'selectDataRange', 10 | event: 'dataRangeSelected', 11 | // FIXME use updateView appears wrong 12 | update: 'update' 13 | }; 14 | 15 | echarts.registerAction(actionInfo, function (payload, ecModel) { 16 | 17 | ecModel.eachComponent({mainType: 'visualMap', query: payload}, function (model) { 18 | model.setSelected(payload.selected); 19 | }); 20 | 21 | }); 22 | 23 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) .NET Foundation. All rights reserved. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use 4 | these files except in compliance with the License. You may obtain a copy of the 5 | License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software distributed 10 | under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 11 | CONDITIONS OF ANY KIND, either express or implied. See the License for the 12 | specific language governing permissions and limitations under the License. 13 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Chart.js", 3 | "version": "2.1.4", 4 | "description": "Simple HTML5 Charts using the canvas element", 5 | "homepage": "https://github.com/chartjs/Chart.js", 6 | "author": "nnnick", 7 | "license": "MIT", 8 | "main": [ 9 | "dist/Chart.js" 10 | ], 11 | "devDependencies": { 12 | "jquery": "~2.1.4" 13 | }, 14 | "_release": "2.1.4", 15 | "_resolution": { 16 | "type": "version", 17 | "tag": "v2.1.4", 18 | "commit": "40d76b6a7ba14aeac69b05ad15d713c3402867b2" 19 | }, 20 | "_source": "https://github.com/nnnick/Chart.js.git", 21 | "_target": "^2.0.2", 22 | "_originalSource": "Chart.js" 23 | } -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin.OldMvc/Models/VD/LogVD.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Senparc.Scf.Core.Models; 4 | 5 | namespace Senparc.Areas.Admin.Models.VD 6 | { 7 | public class Log_BaseVD : BaseAdminVD 8 | { 9 | 10 | } 11 | 12 | public class Log_WebLogListVD : Log_BaseVD 13 | { 14 | public PagedList DateList { get; set; } 15 | } 16 | 17 | public class Log_WebLogDateVD : Log_BaseVD 18 | { 19 | public int TotalPageCount { get; set; } 20 | public int PageIndex { get; set; } 21 | public DateTime CurrentDate { get; set; } 22 | public List LogList { get; set; } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | charset = utf-8 6 | trim_trailing_whitespace = true 7 | insert_final_newline = true 8 | 9 | [**.js] 10 | indent_style = space 11 | indent_size = 4 12 | 13 | [**.css] 14 | indent_style = space 15 | indent_size = 4 16 | 17 | [**.less] 18 | indent_style = space 19 | indent_size = 4 20 | 21 | [**.styl] 22 | indent_style = space 23 | indent_size = 4 24 | 25 | [**.html] 26 | indent_style = space 27 | indent_size = 4 28 | 29 | [**.tpl] 30 | indent_style = space 31 | indent_size = 4 32 | 33 | [**.json] 34 | indent_style = space 35 | indent_size = 4 36 | 37 | [*.md] 38 | trim_trailing_whitespace = false 39 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nnnick/chartjs", 3 | "type": "library", 4 | "description": "Simple HTML5 charts using the canvas element.", 5 | "keywords": [ 6 | "chart", 7 | "js" 8 | ], 9 | "homepage": "http://www.chartjs.org/", 10 | "license": "MIT", 11 | "authors": [ 12 | { 13 | "name": "NICK DOWNIE", 14 | "email": "hello@nickdownie.com" 15 | } 16 | ], 17 | "require": { 18 | "php": ">=5.3.3" 19 | }, 20 | "minimum-stability": "stable", 21 | "extra": { 22 | "branch-alias": { 23 | "release/2.0": "v2.0-dev" 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Senparc.Office/Senparc.Office.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/Senparc.Web.UI/Senparc.Web.UI.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/Senparc.Web/BootStrapper/AutoMapperBootStrapper.cs: -------------------------------------------------------------------------------- 1 | using AutoMapper; 2 | using Microsoft.AspNetCore.Builder; 3 | 4 | namespace Senparc.Web 5 | { 6 | public static class AutoMapperBootStrapper 7 | { 8 | public static void UseAutoMapper(this IApplicationBuilder app) 9 | { 10 | //Mapper.Initialize(y => 11 | //{ 12 | // #region User 13 | 14 | // //y.CreateMap().ForAllOtherMembers(z => z.ExplicitExpansion()); 15 | // //y.CreateMap().ForAllOtherMembers(z => z.ExplicitExpansion()); 16 | 17 | // #endregion 18 | //}); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/bar/barItemStyle.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | return { 3 | getBarItemStyle: require('../../model/mixin/makeStyleMapper')( 4 | [ 5 | ['fill', 'color'], 6 | ['stroke', 'borderColor'], 7 | ['lineWidth', 'borderWidth'], 8 | // Compatitable with 2 9 | ['stroke', 'barBorderColor'], 10 | ['lineWidth', 'barBorderWidth'], 11 | ['opacity'], 12 | ['shadowBlur'], 13 | ['shadowOffsetX'], 14 | ['shadowOffsetY'], 15 | ['shadowColor'] 16 | ] 17 | ) 18 | }; 19 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/map/mapVisual.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | return function (ecModel) { 3 | ecModel.eachSeriesByType('map', function (seriesModel) { 4 | var colorList = seriesModel.get('color'); 5 | var itemStyleModel = seriesModel.getModel('itemStyle.normal'); 6 | 7 | var areaColor = itemStyleModel.get('areaColor'); 8 | var color = itemStyleModel.get('color') 9 | || colorList[seriesModel.seriesIndex % colorList.length]; 10 | 11 | seriesModel.getData().setVisual({ 12 | 'areaColor': areaColor, 13 | 'color': color 14 | }); 15 | }); 16 | }; 17 | }); -------------------------------------------------------------------------------- /src/Senparc.Mvc/Controllers/LoginController.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Service; 2 | using Senparc.Scf.Core.Cache; 3 | using Senparc.Scf.Service; 4 | 5 | namespace Senparc.Mvc.Controllers 6 | { 7 | public class LoginController : BaseController 8 | { 9 | private AccountService _accountService; 10 | private WeixinService _weixinService; 11 | private IQrCodeLoginCache _qrCodeLoginCache; 12 | public LoginController(WeixinService weixinService, IQrCodeLoginCache qrCodeLoginCache, AccountService accountService) 13 | { 14 | _weixinService = weixinService; 15 | _qrCodeLoginCache = qrCodeLoginCache; 16 | this._accountService = accountService; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Senparc.Areas.WX.OldMvc/Senparc.Areas.WX.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.2 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/Senparc.Web/Pages/Error.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | using Microsoft.AspNetCore.Mvc; 7 | using Microsoft.AspNetCore.Mvc.RazorPages; 8 | 9 | namespace Senparc.Web.Pages 10 | { 11 | [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] 12 | public class ErrorModel : PageModel 13 | { 14 | public string RequestId { get; set; } 15 | 16 | public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); 17 | 18 | public void OnGet() 19 | { 20 | RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/visualMap/typeDefaulter.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | require('../../model/Component').registerSubTypeDefaulter('visualMap', function (option) { 4 | // Compatible with ec2, when splitNumber === 0, continuous visualMap will be used. 5 | return ( 6 | !option.categories 7 | && ( 8 | !( 9 | option.pieces 10 | ? option.pieces.length > 0 11 | : option.splitNumber > 0 12 | ) 13 | || option.calculable 14 | ) 15 | ) 16 | ? 'continuous' : 'piecewise'; 17 | }); 18 | 19 | }); -------------------------------------------------------------------------------- /src/Senparc.Core/Utility/FileSaveUtility.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | 3 | namespace Senparc.Core.Utility 4 | { 5 | public static class FileSaveUtility 6 | { 7 | public static string GetAvailableFileName(string filePath) 8 | { 9 | string fileExtension = Path.GetExtension(filePath); 10 | string fileNameWithoutExtension = filePath.Substring(0, filePath.Length - fileExtension.Length); 11 | string newFilePath = filePath; 12 | int i = 1; 13 | while (File.Exists(newFilePath)) 14 | { 15 | newFilePath = $"{fileNameWithoutExtension}({i.ToString()}){fileExtension}"; 16 | i++; 17 | } 18 | return newFilePath; 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/Senparc.Web/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | using Microsoft.AspNetCore; 7 | using Microsoft.AspNetCore.Hosting; 8 | using Microsoft.Extensions.Configuration; 9 | using Microsoft.Extensions.Logging; 10 | 11 | namespace Senparc.Web 12 | { 13 | public class Program 14 | { 15 | public static void Main(string[] args) 16 | { 17 | var build = CreateWebHostBuilder(args).Build(); 18 | build.Run(); 19 | } 20 | 21 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 22 | WebHost.CreateDefaultBuilder(args) 23 | .UseStartup(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Senparc.Xscf.ExtensionAreaTemplate/Areas/Admin/Pages/MyApp/About.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | using Microsoft.AspNetCore.Mvc.RazorPages; 7 | using Senparc.Scf.Core.Models.DataBaseModel; 8 | using Senparc.Scf.Service; 9 | using Senparc.Scf.XscfBase; 10 | 11 | namespace Senparc.Xscf.ExtensionAreaTemplate.Areas.MyApp.Pages 12 | { 13 | public class About : Senparc.Scf.AreaBase.Admin.AdminXscfModulePageModelBase 14 | { 15 | public About(Lazy xscfModuleService) : base(xscfModuleService) 16 | { 17 | 18 | } 19 | 20 | public void OnGet() 21 | { 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/coord/geo/fix/textCoord.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var zrUtil = require('zrender/core/util'); 4 | 5 | var coordsOffsetMap = { 6 | '南海诸岛' : [32, 80], 7 | // 全国 8 | '广东': [0, -10], 9 | '香港': [10, 5], 10 | '澳门': [-10, 10], 11 | //'北京': [-10, 0], 12 | '天津': [5, 5] 13 | }; 14 | 15 | return function (geo) { 16 | zrUtil.each(geo.regions, function (region) { 17 | var coordFix = coordsOffsetMap[region.name]; 18 | if (coordFix) { 19 | var cp = region.center; 20 | cp[0] += coordFix[0] / 10.5; 21 | cp[1] += -coordFix[1] / (10.5 / 0.75); 22 | } 23 | }); 24 | }; 25 | }); -------------------------------------------------------------------------------- /src/Senparc.Xscf.ExtensionAreaTemplate/Areas/Admin/Pages/MyApp/HidePage.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | using Microsoft.AspNetCore.Mvc.RazorPages; 7 | using Senparc.Scf.Core.Models.DataBaseModel; 8 | using Senparc.Scf.Service; 9 | using Senparc.Scf.XscfBase; 10 | 11 | namespace Senparc.Xscf.ExtensionAreaTemplate.Areas.MyApp.Pages 12 | { 13 | public class HidePage : Senparc.Scf.AreaBase.Admin.AdminXscfModulePageModelBase 14 | { 15 | public HidePage(Lazy xscfModuleService) : base(xscfModuleService) 16 | { 17 | 18 | } 19 | 20 | public void OnGet() 21 | { 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Senparc.Respository/Senparc.Respository.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Senparc.Areas.User.OldMvc/Senparc.Areas.User.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.2 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Senparc.Database/dbo/Tables/SystemConfigs.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE [dbo].[SystemConfigs] ( 2 | [Id] INT IDENTITY (1, 1) NOT NULL, 3 | [Flag] BIT NOT NULL, 4 | [AddTime] DATETIME2 (7) NOT NULL, 5 | [LastUpdateTime] DATETIME2 (7) NOT NULL, 6 | [AdminRemark] NVARCHAR (300) NULL, 7 | [Remark] NVARCHAR (300) NULL, 8 | [SystemName] NVARCHAR (100) NOT NULL, 9 | [MchId] VARCHAR (100) NULL, 10 | [MchKey] VARCHAR (300) NULL, 11 | [TenPayAppId] VARCHAR (100) NULL, 12 | [HideModuleManager] BIT NULL, 13 | CONSTRAINT [PK_SystemConfigs] PRIMARY KEY CLUSTERED ([Id] ASC) 14 | ); 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/Senparc.Web.FirefoxDriverTest/Senparc.Web.FirefoxDriverTest.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | false 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | PreserveNewest 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/line.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var zrUtil = require('zrender/core/util'); 4 | var echarts = require('../echarts'); 5 | 6 | require('./line/LineSeries'); 7 | require('./line/LineView'); 8 | 9 | echarts.registerVisualCoding('chart', zrUtil.curry( 10 | require('../visual/symbol'), 'line', 'circle', 'line' 11 | )); 12 | echarts.registerLayout(zrUtil.curry( 13 | require('../layout/points'), 'line' 14 | )); 15 | 16 | // Down sample after filter 17 | echarts.registerProcessor('statistic', zrUtil.curry( 18 | require('../processor/dataSample'), 'line' 19 | )); 20 | 21 | // In case developer forget to include grid component 22 | require('../component/grid'); 23 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/Pages/Index.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | using Microsoft.AspNetCore.Mvc.RazorPages; 7 | using Senparc.Core.Models.VD; 8 | using Senparc.Scf.Core.Cache; 9 | using Senparc.Scf.Core.Models; 10 | 11 | namespace Senparc.Web.Pages 12 | { 13 | public class IndexModel : BasePageModel 14 | { 15 | public async Task OnGetAsync() 16 | { 17 | await Task.CompletedTask; 18 | //判断是否需要自动进入到安装程序 19 | if (base.FullSystemConfig==null) 20 | { 21 | return new RedirectResult("/Install"); 22 | } 23 | return Page(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 此 .gitignore 文件已由 Microsoft(R) Visual Studio 自动创建。 3 | ################################################################################ 4 | 5 | .vs/ 6 | bin/ 7 | obj/ 8 | .pdb 9 | .user 10 | .vscode/ 11 | /src/Senparc.Web/wwwroot/bower_components 12 | /src/Senparc.Web/logs/ 13 | /src/Senparc.Database 14 | *.user 15 | /src/Senparc.Web.OldMvc 16 | /src/Senparc.Web/App_Data/SenparcTraceLog/* 17 | /src/Senparc.Web/wwwroot/lib/* 18 | /src/Senparc.Web/node_modules/gentelella 19 | /src/Senparc.Web/node_modules 20 | /src/ProjectFileManager 21 | /src/Senparc.Web/App_Data/*.bak 22 | # /src/Senparc.Web/wwwroot/doc 23 | /src/Senparc.Web/wwwroot/docs 24 | /src/Senparc.Web/wwwroot/ScfDocs 25 | /src/Senparc.Web/.config 26 | -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin.OldMvc/Models/VD/SystemConfigVD.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Microsoft.AspNetCore.Mvc.Rendering; 3 | 4 | namespace Senparc.Areas.Admin.Models.VD 5 | { 6 | public class BaseSystemConfigVD : BaseAdminVD 7 | { 8 | } 9 | 10 | public class SystemConfig_IndexVD : BaseSystemConfigVD 11 | { 12 | /// 13 | /// Id 14 | /// 15 | public int Id { get; set; } 16 | /// 17 | /// 系统名称 18 | /// 19 | public string SystemName { get; set; } 20 | 21 | public int IndexTitle { get; set; } 22 | 23 | public List ContentItems { get; set; } 24 | 25 | public string NavSysName { get; set; } 26 | } 27 | } 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/Senparc.Web/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:61126", 7 | "sslPort": 44311 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "Senparc.Web": { 19 | "commandName": "Project", 20 | "launchBrowser": true, 21 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 22 | "environmentVariables": { 23 | "ASPNETCORE_ENVIRONMENT": "Development" 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/graph/simpleLayoutEdge.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | var vec2 = require('zrender/core/vector'); 3 | return function (graph) { 4 | graph.eachEdge(function (edge) { 5 | var curveness = edge.getModel().get('lineStyle.normal.curveness') || 0; 6 | var p1 = vec2.clone(edge.node1.getLayout()); 7 | var p2 = vec2.clone(edge.node2.getLayout()); 8 | var points = [p1, p2]; 9 | if (curveness > 0) { 10 | points.push([ 11 | (p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, 12 | (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness 13 | ]); 14 | } 15 | edge.setLayout(points); 16 | }); 17 | }; 18 | }); -------------------------------------------------------------------------------- /src/Senparc.Xscf.ExtensionAreaTemplate/Models/SenparcDbContextFactory.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Xscf.ExtensionAreaTemplate.Models.DatabaseModel; 2 | using Senparc.Scf.XscfBase.Database; 3 | using System; 4 | using System.IO; 5 | 6 | namespace Senparc.Xscf.ExtensionAreaTemplate 7 | { 8 | /// 9 | /// 设计时 DbContext 创建(仅在开发时创建 Code-First 的数据库 Migration 使用,在生产环境不会执行) 10 | /// 11 | public class SenparcDbContextFactory : SenparcDesignTimeDbContextFactoryBase 12 | { 13 | /// 14 | /// 用于寻找 App_Data 文件夹,从而找到数据库连接字符串配置信息 15 | /// 16 | public override string RootDictionaryPath => Path.Combine(AppContext.BaseDirectory, "..\\..\\..\\"/*项目根目录*/, "..\\Senparc.Web"/*找到 Web目录,以获取统一的数据库连接字符串配置*/); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/Senparc.Core/Models/VD/LoginVD.cs: -------------------------------------------------------------------------------- 1 | namespace Senparc.Core.Models.VD 2 | { 3 | public class Login_BaseVD : BaseVD 4 | { 5 | 6 | } 7 | 8 | 9 | public class Login_IndexVD : Login_BaseVD 10 | { 11 | new public string UserName { get; set; } 12 | public string Password { get; set; } 13 | public string CheckCode { get; set; } 14 | public bool ShowCheckCode { get; set; } 15 | public string ReturnUrl { get; set; } 16 | public bool AuthorityNotReach { get; set; } 17 | public bool IsLogined { get; set; } 18 | } 19 | 20 | public class Login_QyLoginVD : Login_BaseVD 21 | { 22 | public string UserUserName { get; set; } 23 | public string Password { get; set; } 24 | public string Code { get; set; } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/axis/parallelAxisAction.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var echarts = require('../../echarts'); 4 | 5 | var actionInfo = { 6 | type: 'axisAreaSelect', 7 | event: 'axisAreaSelected', 8 | update: 'updateVisual' 9 | }; 10 | 11 | /** 12 | * @payload 13 | * @property {string} parallelAxisId 14 | * @property {Array.>} intervals 15 | */ 16 | echarts.registerAction(actionInfo, function (payload, ecModel) { 17 | ecModel.eachComponent( 18 | {mainType: 'parallelAxis', query: payload}, 19 | function (parallelAxisModel) { 20 | parallelAxisModel.axis.model.setActiveIntervals(payload.intervals); 21 | } 22 | ); 23 | 24 | }); 25 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | 如果你想帮助 **ECharts** 的话,请首先阅读指导原则: 2 | 3 | - 如果你希望提 bug: 4 | 5 | - 清楚地描述问题,注意:**别人是否能通过你的描述理解这是什么问题**。 6 | - 说明版本(ECharts 版本,浏览器版本,设备、操作系统版本等) 7 | - 最好提供完整的ECharts option,截图或线上实例(可以使用JSFiddle/JSBin/Codepen)。 8 | 9 | - 如果你想问问题: 10 | 11 | - 首先是否在这些文档中寻找过问题的答案:[option文档](http://echarts.baidu.com/option.html),[API文档](http://echarts.baidu.com/api.html),[教程](http://echarts.baidu.com/tutorial.html) 12 | - 简单的问题,可以在QQ群中求助(群号:465958031) 13 | 14 | - 如何取得能运行的 `ECharts option` 15 | 16 | 一个参考方式: 17 | 在你的程序的 18 | ```javascript 19 | chart.setOption(option); 20 | ``` 21 | 前加入这句话 22 | ```javascript 23 | console.log(JSON.stringify(option, null, 4)); 24 | ``` 25 | 26 | 然后打开浏览器的调试工具(如 `Chrome Deverloper Tool`)的 `控制台(console)`,可以得到option输出。 27 | 28 | -------------------------------------------------------------------------------- /src/Senparc.Xscf.ExtensionAreaTemplate/Models/DatabaseModel/Dto/ColorDto.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Scf.Core.Models; 2 | using Senparc.Scf.Core.Models.DataBaseModel; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | 7 | namespace Senparc.Xscf.ExtensionAreaTemplate.Models.DatabaseModel.Dto 8 | { 9 | public class ColorDto : DtoBase 10 | { 11 | /// 12 | /// 颜色码,0-255 13 | /// 14 | public int Red { get; private set; } 15 | /// 16 | /// 颜色码,0-255 17 | /// 18 | public int Green { get; private set; } 19 | 20 | /// 21 | /// 颜色码,0-255 22 | /// 23 | public int Blue { get; private set; } 24 | 25 | private ColorDto() { } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Senparc.Xscf.ExtensionAreaTemplate/Migrations/20200308094148_Xscf_AreaTemplate_Init2.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore.Migrations; 2 | 3 | namespace Senparc.Xscf.ExtensionAreaTemplate.Migrations 4 | { 5 | public partial class Xscf_AreaTemplate_Init2 : Migration 6 | { 7 | protected override void Up(MigrationBuilder migrationBuilder) 8 | { 9 | migrationBuilder.AddColumn( 10 | name: "AdditionNote", 11 | table: "AreaTemplate_Color", 12 | nullable: true); 13 | } 14 | 15 | protected override void Down(MigrationBuilder migrationBuilder) 16 | { 17 | migrationBuilder.DropColumn( 18 | name: "AdditionNote", 19 | table: "AreaTemplate_Color"); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin/Areas/Admin/Pages/Shared/_HeaderPartial.cshtml: -------------------------------------------------------------------------------- 1 | @model Senparc.Scf.AreaBase.Admin.IAdminPageModelBase 2 | 3 |
    4 | 18 |
    19 | 20 | -------------------------------------------------------------------------------- /src/Senparc.Database/dbo/Tables/FeedBacks.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE [dbo].[FeedBacks] ( 2 | [Id] INT IDENTITY (1, 1) NOT NULL, 3 | [Flag] BIT NOT NULL, 4 | [AddTime] DATETIME2 (7) NOT NULL, 5 | [LastUpdateTime] DATETIME2 (7) NOT NULL, 6 | [AdminRemark] NVARCHAR (300) NULL, 7 | [Remark] NVARCHAR (300) NULL, 8 | [AccountId] INT NOT NULL, 9 | [Content] NVARCHAR (MAX) NULL, 10 | CONSTRAINT [PK_FeedBacks] PRIMARY KEY CLUSTERED ([Id] ASC), 11 | CONSTRAINT [FK_FeedBacks_Accounts_AccountId] FOREIGN KEY ([AccountId]) REFERENCES [dbo].[Accounts] ([Id]) ON DELETE CASCADE 12 | ); 13 | 14 | 15 | 16 | 17 | 18 | 19 | GO 20 | CREATE NONCLUSTERED INDEX [IX_FeedBacks_AccountId] 21 | ON [dbo].[FeedBacks]([AccountId] ASC); 22 | 23 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/legend/legendFilter.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | return function (ecModel) { 3 | var legendModels = ecModel.findComponents({ 4 | mainType: 'legend' 5 | }); 6 | if (legendModels && legendModels.length) { 7 | ecModel.filterSeries(function (series) { 8 | // If in any legend component the status is not selected. 9 | // Because in legend series is assumed selected when it is not in the legend data. 10 | for (var i = 0; i < legendModels.length; i++) { 11 | if (!legendModels[i].isSelected(series.name)) { 12 | return false; 13 | } 14 | } 15 | return true; 16 | }); 17 | } 18 | }; 19 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/images/Icon/github.svg: -------------------------------------------------------------------------------- 1 | GitHub icon -------------------------------------------------------------------------------- /src/Senparc.Service/BaseService/BaseClientService.cs: -------------------------------------------------------------------------------- 1 | using AutoMapper; 2 | using Microsoft.EntityFrameworkCore.Storage; 3 | using Senparc.Scf.Core.Models; 4 | using Senparc.Scf.Repository; 5 | using Senparc.Scf.Service; 6 | using System; 7 | 8 | namespace Senparc.Service 9 | { 10 | public interface IBaseClientService : IClientServiceBase where T : EntityBase//global::System.Data.Objects.DataClasses.EntityObject, new() 11 | { 12 | 13 | } 14 | 15 | 16 | public class BaseClientService : ClientServiceBase, IBaseClientService where T : EntityBase//global::System.Data.Objects.DataClasses.EntityObject, new() 17 | { 18 | public BaseClientService(IClientRepositoryBase repo, IServiceProvider serviceProvider) 19 | : base(repo, serviceProvider) 20 | { 21 | 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/Senparc.Service/SystemEntities/SystemServiceEntities.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | using Senparc.Core.Models; 3 | using Senparc.Scf.XscfBase; 4 | using Senparc.Scf.XscfBase.Database; 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Text; 8 | 9 | namespace Senparc.Service 10 | { 11 | /// 12 | /// 当前 Entities 只为对接 Service 的 Register 而存在(必须继承自 XscfDatabaseDbContext),没有特别的意义。 13 | /// TODO:让 SenparcEntities 继承 XscfDatabaseDbContext,并提供 Senparc.Core 的 Register。 14 | /// 15 | public class SystemServiceEntities : XscfDatabaseDbContext 16 | { 17 | public override IXscfDatabase XscfDatabaseRegister => new Register(); 18 | public SystemServiceEntities(DbContextOptions dbContextOptions) : base(dbContextOptions) 19 | { 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Senparc.Xscf.ExtensionAreaTemplate/Models/DatabaseModel/Mapping/AreaTemplate_ColorConfigurationMapping.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore.Metadata.Builders; 2 | using Senparc.Scf.Core.Models.DataBaseModel; 3 | using Senparc.Scf.XscfBase.Attributes; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Text; 7 | 8 | namespace Senparc.Xscf.ExtensionAreaTemplate.Models 9 | { 10 | [XscfAutoConfigurationMapping] 11 | public class AreaTemplate_ColorConfigurationMapping : ConfigurationMappingWithIdBase 12 | { 13 | public override void Configure(EntityTypeBuilder builder) 14 | { 15 | builder.Property(e => e.Red).IsRequired(); 16 | builder.Property(e => e.Green).IsRequired(); 17 | builder.Property(e => e.Blue).IsRequired(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 4 | #### 问题简述 (One-line summary) 5 | 6 | 7 | 8 | #### 版本及环境 (Version & Environment) 9 | + ECharts 版本 (ECharts version): 10 | + 浏览器类型和版本 (Browser version): 11 | + 操作系统类型和版本 (OS Version): 12 | 13 | 14 | #### 重现步骤 (Steps to reproduce) 15 | 1. 16 | 2. 17 | 18 | 19 | #### 期望结果 (Expected behaviour) 20 | 21 | 22 | 23 | #### 可能哪里有问题 (What went wrong) 24 | 25 | 26 | 27 | #### ECharts配置项 (ECharts option) 28 | 31 | ```javascript 32 | option = { 33 | 34 | } 35 | 36 | ``` 37 | 38 | 39 | #### 其他信息 (Other comments) 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/extension/bmap/bmap.js: -------------------------------------------------------------------------------- 1 | /** 2 | * BMap component extension 3 | */ 4 | define(function (require) { 5 | 6 | require('echarts').registerCoordinateSystem( 7 | 'bmap', require('./BMapCoordSys') 8 | ); 9 | require('./BMapModel'); 10 | require('./BMapView'); 11 | 12 | // Action 13 | require('echarts').registerAction({ 14 | type: 'bmapRoam', 15 | event: 'bmapRoam', 16 | update: 'updateLayout' 17 | }, function (payload, ecModel) { 18 | ecModel.eachComponent('bmap', function (bMapModel) { 19 | var bmap = bMapModel.getBMap(); 20 | var center = bmap.getCenter(); 21 | bMapModel.setCenterAndZoom([center.lng, center.lat], bmap.getZoom()); 22 | }); 23 | }); 24 | 25 | return { 26 | version: '1.0.0' 27 | }; 28 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/bar.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var zrUtil = require('zrender/core/util'); 4 | 5 | require('../coord/cartesian/Grid'); 6 | 7 | require('./bar/BarSeries'); 8 | require('./bar/BarView'); 9 | 10 | var barLayoutGrid = require('../layout/barGrid'); 11 | var echarts = require('../echarts'); 12 | 13 | echarts.registerLayout(zrUtil.curry(barLayoutGrid, 'bar')); 14 | // Visual coding for legend 15 | echarts.registerVisualCoding('chart', function (ecModel) { 16 | ecModel.eachSeriesByType('bar', function (seriesModel) { 17 | var data = seriesModel.getData(); 18 | data.setVisual('legendSymbol', 'roundRect'); 19 | }); 20 | }); 21 | 22 | // In case developer forget to include grid component 23 | require('../component/grid'); 24 | }); -------------------------------------------------------------------------------- /src/Senparc.SMS.Tests/SmsPlatform_JunMeiTest.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UnitTesting; 2 | using Senparc.Scf.Core.Enums; 3 | using Senparc.Scf.Core.Extensions; 4 | using System; 5 | 6 | namespace Senparc.Scf.SMS.Tests 7 | { 8 | [TestClass] 9 | public class SmsPlatform_JunMeiTest : BaseSMSTest 10 | { 11 | public SmsPlatform_JunMeiTest() 12 | { 13 | 14 | } 15 | [TestMethod] 16 | public void SendTest() 17 | { 18 | var content = "【SCF】验证码测试 客服热线:400-301-8816"; //加上签名和后缀 19 | SmsPlatform_JunMei junMei = new SmsPlatform_JunMei(null, "CORPID", "UserName", "Password ", "subNumber"); 20 | var result = junMei.Send(content, "<手机号>‬"); 21 | Console.WriteLine(result); 22 | Assert.IsTrue(result == SmsResult.成功); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Senparc.Service/SystemEntities/MigrationsForSenparcEntities/20200225161207_Update_Menu_20200226.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore.Migrations; 2 | 3 | namespace Senparc.Service.SystemEntities.MigrationsForSenparcEntities 4 | { 5 | public partial class Update_Menu_20200226 : Migration 6 | { 7 | protected override void Up(MigrationBuilder migrationBuilder) 8 | { 9 | migrationBuilder.AddColumn( 10 | name: "IsLocked", 11 | table: "SysMenus", 12 | nullable: false, 13 | defaultValue: false); 14 | } 15 | 16 | protected override void Down(MigrationBuilder migrationBuilder) 17 | { 18 | migrationBuilder.DropColumn( 19 | name: "IsLocked", 20 | table: "SysMenus"); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Senparc.Mvc/Controllers/AreaController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using Senparc.Scf.Core.Area; 3 | 4 | namespace Senparc.Mvc.Controllers 5 | { 6 | public class AreaController : BaseHttpsRequireController//NOT BaseController 7 | { 8 | [HttpPost] 9 | public ActionResult GetAreaJsonData(string area, string name) 10 | { 11 | var areaData = new AreaData(); 12 | 13 | switch (area) 14 | { 15 | case "province": 16 | var cityDataList = areaData.GetCitiesData(name); 17 | return Json(cityDataList); 18 | case "city": 19 | var districtDataList = areaData.GetDistrictsData(name); 20 | return Json(districtDataList); 21 | } 22 | return null; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/themeRiver/themeRiverVisual.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | return function (ecModel) { 4 | ecModel.eachSeriesByType('themeRiver', function (seriesModel) { 5 | var data = seriesModel.getData(); 6 | var rawData = seriesModel.getRawData(); 7 | var colorList = seriesModel.get('color'); 8 | 9 | data.each(function (index) { 10 | var name = data.getName(index); 11 | var rawIndex = data.getRawIndex(index); 12 | // use rawData just for drawing legend 13 | rawData.setItemVisual( 14 | rawIndex, 15 | 'color', 16 | colorList[(seriesModel.nameMap[name] - 1) % colorList.length] 17 | ); 18 | }); 19 | }); 20 | }; 21 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/coord/polar/RadiusAxis.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 'use strict'; 3 | 4 | var zrUtil = require('zrender/core/util'); 5 | var Axis = require('../Axis'); 6 | 7 | function RadiusAxis(scale, radiusExtent) { 8 | 9 | Axis.call(this, 'radius', scale, radiusExtent); 10 | 11 | /** 12 | * Axis type 13 | * - 'category' 14 | * - 'value' 15 | * - 'time' 16 | * - 'log' 17 | * @type {string} 18 | */ 19 | this.type = 'category'; 20 | } 21 | 22 | RadiusAxis.prototype = { 23 | 24 | constructor: RadiusAxis, 25 | 26 | dataToRadius: Axis.prototype.dataToCoord, 27 | 28 | radiusToData: Axis.prototype.coordToData 29 | }; 30 | 31 | zrUtil.inherits(RadiusAxis, Axis); 32 | 33 | return RadiusAxis; 34 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/radar.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var zrUtil = require('zrender/core/util'); 4 | var echarts = require('../echarts'); 5 | 6 | // Must use radar component 7 | require('../component/radar'); 8 | 9 | require('./radar/RadarSeries'); 10 | require('./radar/RadarView'); 11 | 12 | echarts.registerVisualCoding( 13 | 'chart', zrUtil.curry(require('../visual/dataColor'), 'radar') 14 | ); 15 | echarts.registerVisualCoding('chart', zrUtil.curry( 16 | require('../visual/symbol'), 'radar', 'circle', null 17 | )); 18 | echarts.registerLayout(require('./radar/radarLayout')); 19 | 20 | echarts.registerProcessor( 21 | 'filter', zrUtil.curry(require('../processor/dataFilter'), 'radar') 22 | ); 23 | 24 | echarts.registerPreprocessor(require('./radar/backwardCompat')); 25 | }); -------------------------------------------------------------------------------- /src/Senparc.Mvc/Controllers/ErrorController.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Scf.Core.Models.VD; 2 | using Microsoft.AspNetCore.Mvc; 3 | using Senparc.Core.Models.VD; 4 | 5 | namespace Senparc.Mvc.Controllers 6 | { 7 | public class ErrorController : BaseController 8 | { 9 | public ActionResult Error() 10 | { 11 | Error_ExceptionVD vd = new Error_ExceptionVD() 12 | { 13 | //COCONET 暂时隐藏 14 | //HandleErrorInfo = new HandleErrorInfo(new Exception("发生未知错误,请联系客服!"), "Error", "Error") 15 | }; 16 | return View(vd); 17 | } 18 | 19 | public ActionResult Error404(string aspxerrorpath) 20 | { 21 | Error_Error404VD vd = new Error_Error404VD() 22 | { 23 | Url = aspxerrorpath 24 | }; 25 | return View(vd); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /src/Senparc.Mvc/Controllers/HomeController.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Mvc.Filter; 2 | using Microsoft.AspNetCore.Mvc; 3 | using Senparc.Mvc.Models.VD; 4 | 5 | namespace Senparc.Mvc.Controllers 6 | { 7 | [MenuFilter("Home")] 8 | public class HomeController : BaseFrontController 9 | { 10 | 11 | public HomeController() 12 | { 13 | 14 | } 15 | 16 | public ActionResult Index() 17 | { 18 | var vd = new Home_IndexVD() 19 | { 20 | }; 21 | 22 | return View(vd); 23 | } 24 | 25 | public ActionResult Detail(int id) 26 | { 27 | var vd = new Home_DetailVD() 28 | { 29 | }; 30 | return View(vd); 31 | } 32 | public ActionResult List() 33 | { 34 | return View(); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/Senparc.Areas.User.OldMvc/Models/FeedBackVD.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Scf.Core.Enums; 2 | using Senparc.Scf.Core.Models; 3 | using System; 4 | 5 | namespace Senparc.Areas.User.Models.VD 6 | { 7 | 8 | public class FeedBack_BaseVD : BaseUserVD 9 | { 10 | } 11 | 12 | public class FeedBack_IndexVD : FeedBack_BaseVD 13 | { 14 | public PagedList ModelList { get; set; } 15 | } 16 | 17 | public class FeedBack_EditVD : FeedBack_BaseVD 18 | { 19 | public int Id { get; set; } 20 | 21 | public int UserId { get; set; } 22 | 23 | public string Content { get; set; } 24 | 25 | public DateTime AddTime { get; set; } 26 | 27 | /// 28 | /// 用户 29 | /// 30 | /// 31 | public Account Account { get; set; } 32 | 33 | 34 | public bool IsEdit { get; set; } 35 | } 36 | } -------------------------------------------------------------------------------- /src/Senparc.Mvc/Filter/MenuFilter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using Microsoft.AspNetCore.Mvc.Filters; 3 | using Senparc.Scf.Core.Models.VD; 4 | 5 | namespace Senparc.Mvc.Filter 6 | { 7 | public class MenuFilterAttribute : ActionFilterAttribute 8 | { 9 | public string CurrentMenu { get; set; } 10 | public MenuFilterAttribute(string currentMenu) 11 | { 12 | CurrentMenu = currentMenu; 13 | } 14 | 15 | public override void OnResultExecuting(ResultExecutingContext filterContext) 16 | { 17 | if ((filterContext.Controller as Controller).ViewData.Model is IBaseUiVD model) 18 | { 19 | //model.CurrentMenu = model.CurrentMenu ?? CurrentMenu; 20 | model.CurrentMenu = CurrentMenu; 21 | } 22 | base.OnResultExecuting(filterContext); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin.OldMvc/Models/VD/BaseAdminVD.cs: -------------------------------------------------------------------------------- 1 | 2 | using System; 3 | using System.Collections.Generic; 4 | using Microsoft.AspNetCore.Routing; 5 | using Senparc.Scf.Core.Models; 6 | using Senparc.Scf.Core.Models.VD; 7 | 8 | namespace Senparc.Areas.Admin.Models.VD 9 | { 10 | public interface IBaseAdminVD : IBaseUiVD 11 | { 12 | RouteData RouteData { get; set; } 13 | } 14 | 15 | public class BaseAdminVD : IBaseAdminVD 16 | { 17 | public bool IsAdmin { get; set; } 18 | public MetaCollection MetaCollection { get; set; } 19 | public string UserName { get; set; } 20 | public RouteData RouteData { get; set; } 21 | public string CurrentMenu { get; set; } 22 | public List MessagerList { get; set; } 23 | public DateTime PageStartTime { get; set; } 24 | public DateTime PageEndTime { get; set; } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/coord/radar/IndicatorAxis.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var zrUtil = require('zrender/core/util'); 4 | var Axis = require('../Axis'); 5 | 6 | function IndicatorAxis(dim, scale, radiusExtent) { 7 | Axis.call(this, dim, scale, radiusExtent); 8 | 9 | /** 10 | * Axis type 11 | * - 'category' 12 | * - 'value' 13 | * - 'time' 14 | * - 'log' 15 | * @type {string} 16 | */ 17 | this.type = 'value'; 18 | 19 | this.angle = 0; 20 | 21 | /** 22 | * Indicator name 23 | * @type {string} 24 | */ 25 | this.name = ''; 26 | /** 27 | * @type {module:echarts/model/Model} 28 | */ 29 | this.model; 30 | } 31 | 32 | zrUtil.inherits(IndicatorAxis, Axis); 33 | 34 | return IndicatorAxis; 35 | }); -------------------------------------------------------------------------------- /src/Senparc.Threads/Senparc.Threads.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/coord/polar/AngleAxis.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 'use strict'; 3 | 4 | var zrUtil = require('zrender/core/util'); 5 | var Axis = require('../Axis'); 6 | 7 | function AngleAxis(scale, angleExtent) { 8 | 9 | angleExtent = angleExtent || [0, 360]; 10 | 11 | Axis.call(this, 'angle', scale, angleExtent); 12 | 13 | /** 14 | * Axis type 15 | * - 'category' 16 | * - 'value' 17 | * - 'time' 18 | * - 'log' 19 | * @type {string} 20 | */ 21 | this.type = 'category'; 22 | } 23 | 24 | AngleAxis.prototype = { 25 | 26 | constructor: AngleAxis, 27 | 28 | dataToAngle: Axis.prototype.dataToCoord, 29 | 30 | angleToData: Axis.prototype.coordToData 31 | }; 32 | 33 | zrUtil.inherits(AngleAxis, Axis); 34 | 35 | return AngleAxis; 36 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/test/core.scaleService.tests.js: -------------------------------------------------------------------------------- 1 | // Tests of the scale service 2 | describe('Test the scale service', function() { 3 | 4 | it('should update scale defaults', function() { 5 | var defaults = { 6 | testProp: true 7 | }; 8 | var type = 'my_test_type'; 9 | var Constructor = function() { 10 | this.initialized = true; 11 | }; 12 | Chart.scaleService.registerScaleType(type, Constructor, defaults); 13 | 14 | // Should equal defaults but not be an identical object 15 | expect(Chart.scaleService.getScaleDefaults(type)).toEqual(jasmine.objectContaining({ 16 | testProp: true 17 | })); 18 | 19 | Chart.scaleService.updateScaleDefaults(type, { 20 | testProp: 'red', 21 | newProp: 42 22 | }); 23 | 24 | expect(Chart.scaleService.getScaleDefaults(type)).toEqual(jasmine.objectContaining({ 25 | testProp: 'red', 26 | newProp: 42 27 | })); 28 | }); 29 | }); 30 | -------------------------------------------------------------------------------- /src/Senparc.Utility/Senparc.Utility.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/Senparc.Service/EncryptionServiceBase.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Scf.Core.Utility; 2 | 3 | namespace Senparc.Service 4 | { 5 | public partial interface IEncryptionServiceBase //: IBaseServiceData 6 | { 7 | string GetEncodedContent(string content, string encodeKey); 8 | string GetDecodedContent(string content, string encodeKey); 9 | } 10 | 11 | public class EncryptionServiceBase :/* BaseServiceData,*/ IEncryptionServiceBase 12 | { 13 | public EncryptionServiceBase()//(IBaseData baseData): base(baseData) 14 | { } 15 | 16 | public string GetEncodedContent(string content, string encodeKey) 17 | { 18 | return DesUtility.EncryptDES(content, encodeKey); 19 | } 20 | 21 | public string GetDecodedContent(string content, string encodeKey) 22 | { 23 | return DesUtility.DecryptDES(content, encodeKey); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Senparc.Xscf.ExtensionAreaTemplate/Models/MySenparcEntities.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | using Senparc.Scf.Core.Models; 3 | using Senparc.Scf.XscfBase; 4 | using Senparc.Scf.XscfBase.Database; 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Text; 8 | 9 | namespace Senparc.Xscf.ExtensionAreaTemplate.Models.DatabaseModel 10 | { 11 | public class MySenparcEntities : XscfDatabaseDbContext 12 | { 13 | public override IXscfDatabase XscfDatabaseRegister => new Register(); 14 | public MySenparcEntities(DbContextOptions dbContextOptions) : base(dbContextOptions) 15 | { 16 | } 17 | 18 | public DbSet Colors { get; set; } 19 | 20 | 21 | //如无特殊需需要,OnModelCreating 方法可以不用写,已经在 Register 中要求注册 22 | //protected override void OnModelCreating(ModelBuilder modelBuilder) 23 | //{ 24 | //} 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/processor/dataFilter.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | return function (seriesType, ecModel) { 3 | var legendModels = ecModel.findComponents({ 4 | mainType: 'legend' 5 | }); 6 | if (!legendModels || !legendModels.length) { 7 | return; 8 | } 9 | ecModel.eachSeriesByType(seriesType, function (series) { 10 | var data = series.getData(); 11 | data.filterSelf(function (idx) { 12 | var name = data.getName(idx); 13 | // If in any legend component the status is not selected. 14 | for (var i = 0; i < legendModels.length; i++) { 15 | if (!legendModels[i].isSelected(name)) { 16 | return false; 17 | } 18 | } 19 | return true; 20 | }, this); 21 | }, this); 22 | }; 23 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/grid.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 'use strict'; 3 | 4 | var graphic = require('../util/graphic'); 5 | var zrUtil = require('zrender/core/util'); 6 | 7 | require('../coord/cartesian/Grid'); 8 | 9 | require('./axis'); 10 | 11 | // Grid view 12 | require('../echarts').extendComponentView({ 13 | 14 | type: 'grid', 15 | 16 | render: function (gridModel, ecModel) { 17 | this.group.removeAll(); 18 | if (gridModel.get('show')) { 19 | this.group.add(new graphic.Rect({ 20 | shape:gridModel.coordinateSystem.getRect(), 21 | style: zrUtil.defaults({ 22 | fill: gridModel.get('backgroundColor') 23 | }, gridModel.getItemStyle()), 24 | silent: true 25 | })); 26 | } 27 | } 28 | }); 29 | }); -------------------------------------------------------------------------------- /src/Senparc.Database/dbo/Tables/AdminUserInfos.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE [dbo].[AdminUserInfos] ( 2 | [Id] INT IDENTITY (1, 1) NOT NULL, 3 | [Flag] BIT NOT NULL, 4 | [AddTime] DATETIME2 (7) NOT NULL, 5 | [LastUpdateTime] DATETIME2 (7) NOT NULL, 6 | [AdminRemark] NVARCHAR (300) NULL, 7 | [Remark] NVARCHAR (300) NULL, 8 | [UserName] NVARCHAR (MAX) NULL, 9 | [Password] NVARCHAR (MAX) NULL, 10 | [PasswordSalt] NVARCHAR (MAX) NULL, 11 | [RealName] NVARCHAR (MAX) NULL, 12 | [Phone] NVARCHAR (MAX) NULL, 13 | [Note] NVARCHAR (MAX) NULL, 14 | [ThisLoginTime] DATETIME2 (7) NOT NULL, 15 | [ThisLoginIp] NVARCHAR (MAX) NULL, 16 | [LastLoginTime] DATETIME2 (7) NOT NULL, 17 | [LastLoginIp] NVARCHAR (MAX) NULL, 18 | CONSTRAINT [PK_AdminUserInfos] PRIMARY KEY CLUSTERED ([Id] ASC) 19 | ); 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/coord/cartesian/axisLabelInterval.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Helper function for axisLabelInterval calculation 3 | */ 4 | 5 | define(function(require) { 6 | 'use strict'; 7 | 8 | var zrUtil = require('zrender/core/util'); 9 | var axisHelper = require('../axisHelper'); 10 | 11 | return function (axis) { 12 | var axisModel = axis.model; 13 | var labelModel = axisModel.getModel('axisLabel'); 14 | var labelInterval = labelModel.get('interval'); 15 | if (!(axis.type === 'category' && labelInterval === 'auto')) { 16 | return labelInterval === 'auto' ? 0 : labelInterval; 17 | } 18 | 19 | return axisHelper.getAxisLabelInterval( 20 | zrUtil.map(axis.scale.getTicks(), axis.dataToCoord, axis), 21 | axisModel.getFormattedLabels(), 22 | labelModel.getModel('textStyle').getFont(), 23 | axis.isHorizontal() 24 | ); 25 | }; 26 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/model/mixin/lineStyle.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | var getLineStyle = require('./makeStyleMapper')( 3 | [ 4 | ['lineWidth', 'width'], 5 | ['stroke', 'color'], 6 | ['opacity'], 7 | ['shadowBlur'], 8 | ['shadowOffsetX'], 9 | ['shadowOffsetY'], 10 | ['shadowColor'] 11 | ] 12 | ); 13 | return { 14 | getLineStyle: function (excludes) { 15 | var style = getLineStyle.call(this, excludes); 16 | var lineDash = this.getLineDash(); 17 | lineDash && (style.lineDash = lineDash); 18 | return style; 19 | }, 20 | 21 | getLineDash: function () { 22 | var lineType = this.get('type'); 23 | return (lineType === 'solid' || lineType == null) ? null 24 | : (lineType === 'dashed' ? [5, 5] : [1, 1]); 25 | } 26 | }; 27 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/Pages/Error.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model ErrorModel 3 | @{ 4 | ViewData["Title"] = "Error"; 5 | } 6 | 7 |

    Error.

    8 |

    An error occurred while processing your request.

    9 | 10 | @if (Model.ShowRequestId) 11 | { 12 |

    13 | Request ID: @Model.RequestId 14 |

    15 | } 16 | 17 |

    Development Mode

    18 |

    19 | Swapping to the Development environment displays detailed information about the error that occurred. 20 |

    21 |

    22 | The Development environment shouldn't be enabled for deployed applications. 23 | It can result in displaying sensitive information from exceptions to end users. 24 | For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development 25 | and restarting the app. 26 |

    27 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/effectScatter/EffectScatterView.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var SymbolDraw = require('../helper/SymbolDraw'); 4 | var EffectSymbol = require('../helper/EffectSymbol'); 5 | 6 | require('../../echarts').extendChartView({ 7 | 8 | type: 'effectScatter', 9 | 10 | init: function () { 11 | this._symbolDraw = new SymbolDraw(EffectSymbol); 12 | }, 13 | 14 | render: function (seriesModel, ecModel, api) { 15 | var data = seriesModel.getData(); 16 | var effectSymbolDraw = this._symbolDraw; 17 | effectSymbolDraw.updateData(data); 18 | this.group.add(effectSymbolDraw.group); 19 | }, 20 | 21 | updateLayout: function () { 22 | this._symbolDraw.updateLayout(); 23 | }, 24 | 25 | remove: function (ecModel, api) { 26 | this._symbolDraw && this._symbolDraw.remove(api); 27 | } 28 | }); 29 | }); -------------------------------------------------------------------------------- /src/Senparc.Mvc/Filter/JsonFilter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc.Filters; 2 | using System; 3 | using System.IO; 4 | 5 | namespace Senparc.Mvc.Filter 6 | { 7 | public class JsonFilter : ActionFilterAttribute 8 | { 9 | public string Param { get; set; } 10 | public Type JsonDataType { get; set; } 11 | public override void OnActionExecuting(ActionExecutingContext filterContext) 12 | { 13 | if (filterContext.HttpContext.Request.ContentType.Contains("application/json")) 14 | { 15 | string inputContent; 16 | using (var sr = new StreamReader(filterContext.HttpContext.Request.Body)) 17 | { 18 | inputContent = sr.ReadToEnd(); 19 | } 20 | 21 | var result = Newtonsoft.Json.JsonConvert.DeserializeObject(inputContent, JsonDataType); 22 | filterContext.ActionArguments[Param] = result; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/tooltip.js: -------------------------------------------------------------------------------- 1 | // FIXME Better way to pack data in graphic element 2 | define(function (require) { 3 | 4 | require('./tooltip/TooltipModel'); 5 | 6 | require('./tooltip/TooltipView'); 7 | 8 | // Show tip action 9 | /** 10 | * @action 11 | * @property {string} type 12 | * @property {number} seriesIndex 13 | * @property {number} dataIndex 14 | * @property {number} [x] 15 | * @property {number} [y] 16 | */ 17 | require('../echarts').registerAction( 18 | { 19 | type: 'showTip', 20 | event: 'showTip', 21 | update: 'none' 22 | }, 23 | // noop 24 | function () {} 25 | ); 26 | // Hide tip action 27 | require('../echarts').registerAction( 28 | { 29 | type: 'hideTip', 30 | event: 'hideTip', 31 | update: 'none' 32 | }, 33 | // noop 34 | function () {} 35 | ); 36 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/layout/points.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | return function (seriesType, ecModel, api) { 4 | ecModel.eachSeriesByType(seriesType, function (seriesModel) { 5 | var data = seriesModel.getData(); 6 | var coordSys = seriesModel.coordinateSystem; 7 | 8 | if (coordSys) { 9 | var dims = coordSys.dimensions; 10 | data.each(dims, function (x, y, idx) { 11 | var point; 12 | if (!isNaN(x) && !isNaN(y)) { 13 | point = coordSys.dataToPoint([x, y]); 14 | } 15 | else { 16 | // Also {Array.}, not undefined to avoid if...else... statement 17 | point = [NaN, NaN]; 18 | } 19 | 20 | data.setItemLayout(idx, point); 21 | }, true); 22 | } 23 | }); 24 | }; 25 | }); -------------------------------------------------------------------------------- /src/Senparc.Mvc/Filter/SenparcRequireHttpsAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics.CodeAnalysis; 3 | using Microsoft.AspNetCore.Mvc; 4 | using Microsoft.AspNetCore.Mvc.Filters; 5 | using Senparc.Scf.Core.Config; 6 | 7 | namespace Senparc.Mvc.Filter 8 | { 9 | [SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes", 10 | Justification = "Unsealed so that subclassed types can set properties in the default constructor or override our behavior.")] 11 | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)] 12 | public class SenparcRequireHttpsAttribute: RequireHttpsAttribute 13 | { 14 | public override void OnAuthorization(AuthorizationFilterContext filterContext) 15 | { 16 | if (SiteConfig.IsTestSite) 17 | { 18 | return;//如果是测试站,则忽略验证 19 | } 20 | 21 | base.OnAuthorization(filterContext); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/extension/bmap/BMapModel.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | function v2Equal(a, b) { 4 | return a && b && a[0] === b[0] && a[1] === b[1]; 5 | } 6 | 7 | return require('echarts').extendComponentModel({ 8 | type: 'bmap', 9 | 10 | getBMap: function () { 11 | // __bmap is injected when creating BMapCoordSys 12 | return this.__bmap; 13 | }, 14 | 15 | setCenterAndZoom: function (center, zoom) { 16 | this.option.center = center; 17 | this.option.zoom = zoom; 18 | }, 19 | 20 | centerOrZoomChanged: function (center, zoom) { 21 | var option = this.option; 22 | return !(v2Equal(center, option.center) && zoom === option.zoom); 23 | }, 24 | 25 | defaultOption: { 26 | center: null, 27 | 28 | zoom: 1, 29 | 30 | mapStyle: {}, 31 | 32 | roam: false 33 | } 34 | }); 35 | }); -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin/Areas/Admin/Pages/SenparcTrace/Index.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | using Microsoft.AspNetCore.Mvc.RazorPages; 7 | using Senparc.Areas.Admin.SenparcTraceManager; 8 | using Senparc.Scf.AreaBase.Admin.Filters; 9 | 10 | namespace Senparc.Areas.Admin.Areas.Admin.Pages 11 | { 12 | [IgnoreAuth] 13 | public class SenparcTrace_IndexModel : BaseAdminPageModel 14 | { 15 | //public List DateList { get; private set; } 16 | 17 | public void OnGet() 18 | { 19 | //DateList = SenparcTraceHelper.GetLogDate(); 20 | } 21 | 22 | public IActionResult OnGetList(int pageIndex = 1, int pageSize = 10) 23 | { 24 | var dateList = SenparcTraceHelper.GetLogDate(); 25 | return Ok(new { dateList.Count, pageIndex, List = dateList.Skip((pageIndex - 1) * pageSize) }); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/heatmap/HeatmapSeries.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var SeriesModel = require('../../model/Series'); 4 | var createListFromArray = require('../helper/createListFromArray'); 5 | 6 | return SeriesModel.extend({ 7 | type: 'series.heatmap', 8 | 9 | getInitialData: function (option, ecModel) { 10 | return createListFromArray(option.data, this, ecModel); 11 | }, 12 | 13 | defaultOption: { 14 | 15 | // Cartesian2D or geo 16 | coordinateSystem: 'cartesian2d', 17 | 18 | zlevel: 0, 19 | 20 | z: 2, 21 | 22 | // Cartesian coordinate system 23 | xAxisIndex: 0, 24 | yAxisIndex: 0, 25 | 26 | // Geo coordinate system 27 | geoIndex: 0, 28 | 29 | blurSize: 30, 30 | 31 | pointSize: 20, 32 | 33 | maxOpacity: 1, 34 | 35 | minOpacity: 0 36 | } 37 | }); 38 | }); -------------------------------------------------------------------------------- /src/Senparc.Mvc/CustomActionResults/ActionControllerExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Microsoft.AspNetCore.Mvc; 3 | using Senparc.Mvc.CustomActionResults; 4 | using Senparc.Scf.Core.Utility; 5 | 6 | namespace Senparc.Mvc 7 | { 8 | public static class ActionControllerExtensions 9 | { 10 | public static ZipResult Zip(this Controller controller, string zipFilename, IEnumerable filenames) 11 | { 12 | return Zip(controller, zipFilename, filenames, null); 13 | } 14 | 15 | public static ZipResult Zip(this Controller controller, string zipFilename, IEnumerable filenames, Dictionary newFilesFromString) 16 | { 17 | return new ZipResult(null,zipFilename, filenames, newFilesFromString,null); 18 | } 19 | 20 | public static ActionResult CheckCode(this Controller controller, CheckCodeKind checoCodeKind) 21 | { 22 | return new CheckCodeResult(checoCodeKind); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/map.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var echarts = require('../echarts'); 4 | 5 | require('./map/MapSeries'); 6 | 7 | require('./map/MapView'); 8 | 9 | require('../action/geoRoam'); 10 | 11 | require('../coord/geo/geoCreator'); 12 | 13 | echarts.registerLayout(require('./map/mapSymbolLayout')); 14 | 15 | echarts.registerVisualCoding('chart', require('./map/mapVisual')); 16 | 17 | echarts.registerProcessor('statistic', require('./map/mapDataStatistic')); 18 | 19 | echarts.registerPreprocessor(require('./map/backwardCompat')); 20 | 21 | require('../action/createDataSelectAction')('map', [{ 22 | type: 'mapToggleSelect', 23 | event: 'mapselectchanged', 24 | method: 'toggleSelected' 25 | }, { 26 | type: 'mapSelect', 27 | event: 'mapselected', 28 | method: 'select' 29 | }, { 30 | type: 'mapUnSelect', 31 | event: 'mapunselected', 32 | method: 'unSelect' 33 | }]); 34 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/pie.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var zrUtil = require('zrender/core/util'); 4 | var echarts = require('../echarts'); 5 | 6 | require('./pie/PieSeries'); 7 | require('./pie/PieView'); 8 | 9 | require('../action/createDataSelectAction')('pie', [{ 10 | type: 'pieToggleSelect', 11 | event: 'pieselectchanged', 12 | method: 'toggleSelected' 13 | }, { 14 | type: 'pieSelect', 15 | event: 'pieselected', 16 | method: 'select' 17 | }, { 18 | type: 'pieUnSelect', 19 | event: 'pieunselected', 20 | method: 'unSelect' 21 | }]); 22 | 23 | echarts.registerVisualCoding( 24 | 'chart', zrUtil.curry(require('../visual/dataColor'), 'pie') 25 | ); 26 | 27 | echarts.registerLayout(zrUtil.curry( 28 | require('./pie/pieLayout'), 'pie' 29 | )); 30 | 31 | echarts.registerProcessor( 32 | 'filter', zrUtil.curry(require('../processor/dataFilter'), 'pie') 33 | ); 34 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/model/mixin/makeStyleMapper.js: -------------------------------------------------------------------------------- 1 | // TODO Parse shadow style 2 | // TODO Only shallow path support 3 | define(function (require) { 4 | var zrUtil = require('zrender/core/util'); 5 | 6 | return function (properties) { 7 | // Normalize 8 | for (var i = 0; i < properties.length; i++) { 9 | if (!properties[i][1]) { 10 | properties[i][1] = properties[i][0]; 11 | } 12 | } 13 | return function (excludes) { 14 | var style = {}; 15 | for (var i = 0; i < properties.length; i++) { 16 | var propName = properties[i][1]; 17 | if (excludes && zrUtil.indexOf(excludes, propName) >= 0) { 18 | continue; 19 | } 20 | var val = this.getShallow(propName); 21 | if (val != null) { 22 | style[properties[i][0]] = val; 23 | } 24 | } 25 | return style; 26 | }; 27 | }; 28 | }); -------------------------------------------------------------------------------- /src/Senparc.Service/SystemEntities/SystemServiceEntitiesDbContextFactory.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Core.Models; 2 | using Senparc.Scf.XscfBase.Database; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.IO; 6 | using System.Text; 7 | 8 | namespace Senparc.Service 9 | { 10 | /// 11 | /// 设计时 DbContext 创建(仅在开发时创建 Code-First 的数据库 Migration 使用,在生产环境不会执行) 12 | /// 用于创建当前模块数据库 13 | /// PM> Add-Migration AddTables -Context SystemServiceEntities -OutputDir "SystemEntities/MigrationsForSystemServiceEntities" 14 | /// 15 | [Obsolete("SystemServiceEntities 暂时不提供实际的类型,系统数据库模型统一由 SenparcEntities 提供。")] 16 | public class SystemServiceEntitiesDbContextFactory : SenparcDesignTimeDbContextFactoryBase 17 | { 18 | /// 19 | /// 用于寻找 App_Data 文件夹,从而找到数据库连接字符串配置信息 20 | /// 21 | public override string RootDictionaryPath => Path.Combine(AppContext.BaseDirectory, "..\\..\\..\\", "..\\Senparc.Web"/* Debug模式下项目根目录 */); 22 | } 23 | } -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/coord/axisModelCommonMixin.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var zrUtil = require('zrender/core/util'); 4 | var axisHelper = require('./axisHelper'); 5 | 6 | function getName(obj) { 7 | if (zrUtil.isObject(obj) && obj.value != null) { 8 | return obj.value; 9 | } 10 | else { 11 | return obj; 12 | } 13 | } 14 | /** 15 | * Get categories 16 | */ 17 | function getCategories() { 18 | return this.get('type') === 'category' 19 | && zrUtil.map(this.get('data'), getName); 20 | } 21 | 22 | /** 23 | * Format labels 24 | * @return {Array.} 25 | */ 26 | function getFormattedLabels() { 27 | return axisHelper.getFormattedLabels( 28 | this.axis, 29 | this.get('axisLabel.formatter') 30 | ); 31 | } 32 | 33 | return { 34 | 35 | getFormattedLabels: getFormattedLabels, 36 | 37 | getCategories: getCategories 38 | }; 39 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/graph.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var echarts = require('../echarts'); 4 | var zrUtil = require('zrender/core/util'); 5 | 6 | require('./graph/GraphSeries'); 7 | require('./graph/GraphView'); 8 | 9 | require('./graph/roamAction'); 10 | 11 | echarts.registerProcessor('filter', require('./graph/categoryFilter')); 12 | 13 | echarts.registerVisualCoding('chart', zrUtil.curry( 14 | require('../visual/symbol'), 'graph', 'circle', null 15 | )); 16 | echarts.registerVisualCoding('chart', require('./graph/categoryVisual')); 17 | echarts.registerVisualCoding('chart', require('./graph/edgeVisual')); 18 | 19 | echarts.registerLayout(require('./graph/simpleLayout')); 20 | echarts.registerLayout(require('./graph/circularLayout')); 21 | echarts.registerLayout(require('./graph/forceLayout')); 22 | 23 | // Graph view coordinate system 24 | echarts.registerCoordinateSystem('graphView', { 25 | create: require('./graph/createView') 26 | }); 27 | }); -------------------------------------------------------------------------------- /src/Senparc.Core/Conventions/AutoValidateAntiForgeryTokenModelConvention.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using Microsoft.AspNetCore.Mvc.ApplicationModels; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | 8 | namespace Senparc.Core.Conventions 9 | { 10 | public class AutoValidateAntiForgeryTokenModelConvention : IPageConvention// IActionModelConvention 11 | { 12 | public void Apply(ActionModel action) 13 | { 14 | if (IsConventionApplicable(action)) 15 | { 16 | action.Filters.Add(new ValidateAntiForgeryTokenAttribute()); 17 | } 18 | } 19 | 20 | public bool IsConventionApplicable(ActionModel action) 21 | { 22 | if (action.Attributes.Any(f => f.GetType() == typeof(HttpPostAttribute)) && 23 | !action.Attributes.Any(f => f.GetType() == typeof(ValidateAntiForgeryTokenAttribute))) 24 | { 25 | return true; 26 | } 27 | return false; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/karma.coverage.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = function(config) { 2 | var configuration = { 3 | browsers: ['Firefox'], 4 | 5 | frameworks: ['browserify', 'jasmine'], 6 | 7 | preprocessors: { 8 | 'src/**/*.js': ['browserify'] 9 | }, 10 | browserify: { 11 | debug: true, 12 | transform: [['browserify-istanbul', { 13 | instrumenterConfig: { 14 | embed: true 15 | } 16 | }]] 17 | }, 18 | 19 | reporters: ['progress', 'coverage'], 20 | coverageReporter: { 21 | dir: 'coverage/', 22 | reporters: [ 23 | { type: 'html', subdir: 'report-html' }, 24 | { type: 'lcovonly', subdir: '.', file: 'lcov.info' } 25 | ] 26 | } 27 | }; 28 | 29 | // If on the CI, use the CI chrome launcher 30 | if (process.env.TRAVIS) { 31 | configuration.browsers.push('Chrome_travis_ci'); 32 | configuration.customLaunchers = { 33 | Chrome_travis_ci: { 34 | base: 'Chrome', 35 | flags: ['--no-sandbox'] 36 | } 37 | }; 38 | } else { 39 | configuration.browsers.push('Chrome'); 40 | } 41 | 42 | config.set(configuration); 43 | }; -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/radar/radarLayout.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | return function (ecModel, api) { 4 | ecModel.eachSeriesByType('radar', function (seriesModel) { 5 | var data = seriesModel.getData(); 6 | var points = []; 7 | var coordSys = seriesModel.coordinateSystem; 8 | if (!coordSys) { 9 | return; 10 | } 11 | 12 | function pointsConverter(val, idx) { 13 | points[idx] = points[idx] || []; 14 | points[idx][i] = coordSys.dataToPoint(val, i); 15 | } 16 | for (var i = 0; i < coordSys.getIndicatorAxes().length; i++) { 17 | var dim = data.dimensions[i]; 18 | data.each(dim, pointsConverter); 19 | } 20 | 21 | data.each(function (idx) { 22 | // Close polygon 23 | points[idx][0] && points[idx].push(points[idx][0].slice()); 24 | data.setItemLayout(idx, points[idx]); 25 | }); 26 | }); 27 | }; 28 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/geo/GeoView.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | 'use strict'; 4 | 5 | var MapDraw = require('../helper/MapDraw'); 6 | 7 | return require('../../echarts').extendComponentView({ 8 | 9 | type: 'geo', 10 | 11 | init: function (ecModel, api) { 12 | var mapDraw = new MapDraw(api, true); 13 | this._mapDraw = mapDraw; 14 | 15 | this.group.add(mapDraw.group); 16 | }, 17 | 18 | render: function (geoModel, ecModel, api, payload) { 19 | // Not render if it is an toggleSelect action from self 20 | if (payload && payload.type === 'geoToggleSelect' 21 | && payload.from === this.uid 22 | ) { 23 | return; 24 | } 25 | 26 | var mapDraw = this._mapDraw; 27 | if (geoModel.get('show')) { 28 | mapDraw.draw(geoModel, ecModel, api, this, payload); 29 | } 30 | else { 31 | this._mapDraw.group.removeAll(); 32 | } 33 | } 34 | }); 35 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | FileSystem 9 | FileSystem 10 | Release 11 | Any CPU 12 | 13 | True 14 | False 15 | 6f3c7d09-7fa4-41b5-9e91-945db61deb48 16 | bin\Release\netcoreapp3.1\publish1\ 17 | False 18 | netcoreapp3.1 19 | win-x64 20 | true 21 | 22 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/docs/doc/start/qa/common_problem.md: -------------------------------------------------------------------------------- 1 | # SCF常见问题 2 | 3 | > 如何修改数据库配置 4 | 5 | ![Image Text](/start/images/modify_database_connectstring.png) 6 | 7 | > .net命令dotnet ef执行报错 8 | 9 | 错误信息: 10 | ``` 11 | Could not execute because the specified command or file was not found. 12 | Possible reasons for this include: 13 | * You misspelled a built-in dotnet command. 14 | * You intended to execute a .NET Core program, but dotnet-ef does not exist. 15 | * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH. 16 | ``` 17 | 18 | 解决方案: 19 | 使用的命令为 20 | ``` 21 | dotnet ef database update 22 | ``` 23 | 查看当前dot版本为3.0 24 | 25 | 解决办法: 26 | 27 | 需要更新dotnet tool,使用的命令为: 28 | ``` 29 | dotnet tool update --global dotnet-ef --version 3.0.0-preview7.19362.6 30 | ``` 31 | 执行此命令之后再更新数据库就执行成功了。 32 | 33 | [参考地址](https://blog.csdn.net/topdeveloperr/article/details/101282099) 34 | 35 | > SCF如何调试 36 | 37 | [参考地址](https://www.cnblogs.com/szw/p/debug-remote-source-code.html) 38 | 39 | > 后台UI框架 40 | 41 | [参考地址](https://colorlib.com/polygon/gentelella/icons.html) -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/Chart.js/LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) 2013-2016 Nick Downie 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 5 | 6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 7 | 8 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 9 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/js/Admin/store.js: -------------------------------------------------------------------------------- 1 | var Store = new Vuex.Store({ 2 | state: { 3 | pageSrc: '1', 4 | resourceCodes: [], 5 | navMenu: { //侧边栏数据 6 | navMenuList: [], 7 | isCollapse:JSON.parse( window.sessionStorage.getItem('isCollapse'))|| false, 8 | variables: { 9 | menuBg: '#304156', // 背景色 10 | menuText: '#bfcbd9', // 文字色 11 | menuActiveText: '#409EFF' //激活颜色 12 | }, 13 | // 当前激活菜单的 index 14 | activeMenu: window.sessionStorage.getItem('activeMenu') || '0' 15 | } 16 | }, 17 | mutations: { 18 | changePageSrc(state, data) { 19 | state.pageSrc = data; 20 | }, 21 | saveResourceCodes(state, data) { 22 | state.resourceCodes = data; 23 | }, 24 | // 切换菜单栏状态 25 | changeIsCollapse(state,data) { 26 | state.navMenu.isCollapse = data; 27 | }, 28 | // 保存菜单数据 29 | savenavMenuList(state, data) { 30 | state.navMenu.navMenuList = data; 31 | } 32 | } 33 | }); 34 | -------------------------------------------------------------------------------- /XscfExtensionSample/MyExtensionCode/MyExtensionCode.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/Senparc.Web/Pages/Shared/_CookieConsentPartial.cshtml: -------------------------------------------------------------------------------- 1 | @using Microsoft.AspNetCore.Http.Features 2 | 3 | @{ 4 | var consentFeature = Context.Features.Get(); 5 | var showBanner = !consentFeature?.CanTrack ?? false; 6 | var cookieString = consentFeature?.CreateConsentCookie(); 7 | } 8 | 9 | @if (showBanner) 10 | { 11 | 17 | 25 | } 26 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/coord/cartesian/GridModel.js: -------------------------------------------------------------------------------- 1 | // Grid 是在有直角坐标系的时候必须要存在的 2 | // 所以这里也要被 Cartesian2D 依赖 3 | define(function(require) { 4 | 5 | 'use strict'; 6 | 7 | require('./AxisModel'); 8 | var ComponentModel = require('../../model/Component'); 9 | 10 | return ComponentModel.extend({ 11 | 12 | type: 'grid', 13 | 14 | dependencies: ['xAxis', 'yAxis'], 15 | 16 | layoutMode: 'box', 17 | 18 | /** 19 | * @type {module:echarts/coord/cartesian/Grid} 20 | */ 21 | coordinateSystem: null, 22 | 23 | defaultOption: { 24 | show: false, 25 | zlevel: 0, 26 | z: 0, 27 | left: '10%', 28 | top: 60, 29 | right: '10%', 30 | bottom: 60, 31 | // If grid size contain label 32 | containLabel: false, 33 | // width: {totalWidth} - left - right, 34 | // height: {totalHeight} - top - bottom, 35 | backgroundColor: 'rgba(0,0,0,0)', 36 | borderWidth: 1, 37 | borderColor: '#ccc' 38 | } 39 | }); 40 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/theme/vintage.js: -------------------------------------------------------------------------------- 1 | (function (root, factory) { 2 | if (typeof define === 'function' && define.amd) { 3 | // AMD. Register as an anonymous module. 4 | define(['exports', 'echarts'], factory); 5 | } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') { 6 | // CommonJS 7 | factory(exports, require('echarts')); 8 | } else { 9 | // Browser globals 10 | factory({}, root.echarts); 11 | } 12 | }(this, function (exports, echarts) { 13 | var log = function (msg) { 14 | if (typeof console !== 'undefined') { 15 | console && console.error && console.error(msg); 16 | } 17 | }; 18 | if (!echarts) { 19 | log('ECharts is not Loaded'); 20 | return; 21 | } 22 | var colorPalette = ['#d87c7c','#919e8b', '#d7ab82', '#6e7074','#61a0a8','#efa18d', '#787464', '#cc7e63', '#724e58', '#4b565b']; 23 | echarts.registerTheme('vintage', { 24 | color: colorPalette, 25 | backgroundColor: '#fef8ef', 26 | graph: { 27 | color: colorPalette 28 | } 29 | }); 30 | })); -------------------------------------------------------------------------------- /src/Senparc.SMS.Tests/Senparc.SMS.Tests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | false 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | PreserveNewest 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/chart/graph/roamAction.js: -------------------------------------------------------------------------------- 1 | define(function (require) { 2 | 3 | var echarts = require('../../echarts'); 4 | var roamHelper = require('../../action/roamHelper'); 5 | 6 | var actionInfo = { 7 | type: 'graphRoam', 8 | event: 'graphRoam', 9 | update: 'none' 10 | }; 11 | 12 | /** 13 | * @payload 14 | * @property {string} name Series name 15 | * @property {number} [dx] 16 | * @property {number} [dy] 17 | * @property {number} [zoom] 18 | * @property {number} [originX] 19 | * @property {number} [originY] 20 | */ 21 | 22 | echarts.registerAction(actionInfo, function (payload, ecModel) { 23 | ecModel.eachComponent({mainType: 'series', query: payload}, function (seriesModel) { 24 | var coordSys = seriesModel.coordinateSystem; 25 | 26 | var res = roamHelper.updateCenterAndZoom(coordSys, payload); 27 | 28 | seriesModel.setCenter 29 | && seriesModel.setCenter(res.center); 30 | 31 | seriesModel.setZoom 32 | && seriesModel.setZoom(res.zoom); 33 | }); 34 | }); 35 | }); -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/js/Admin/Pages/SenparcTrace/Index.js: -------------------------------------------------------------------------------- 1 | var app = new Vue({ 2 | el: '#app', 3 | data: { 4 | searchData: { 5 | pageIndex: 1, 6 | pageSize: 10, 7 | total: 0 8 | }, 9 | tableData: [] 10 | }, 11 | mounted() { 12 | }, 13 | created() { 14 | this.fetchData(); 15 | }, 16 | methods: { 17 | fetchData: function () { 18 | service.get(`/Admin/SenparcTrace/Index?handler=List&pageIndex=${this.searchData.pageIndex}&pageSize=${this.searchData.pageSize}`).then(res => { 19 | var responseData = res.data.data; 20 | const actualData = []; 21 | var startIndex = (this.searchData.pageIndex - 1) * this.searchData.pageSize; 22 | responseData.list.forEach(ele => { 23 | startIndex++; 24 | actualData.push({ no: startIndex, text: ele }); 25 | }); 26 | this.tableData = actualData; 27 | this.searchData.total = responseData.count; 28 | console.info(actualData); 29 | }); 30 | } 31 | } 32 | }); -------------------------------------------------------------------------------- /src/Senparc.Service/SystemEntities/MigrationsForSenparcEntities/20200622051315_update-migration.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.EntityFrameworkCore.Migrations; 3 | 4 | namespace Senparc.Web.Migrations 5 | { 6 | public partial class updatemigration : Migration 7 | { 8 | protected override void Up(MigrationBuilder migrationBuilder) 9 | { 10 | migrationBuilder.AddColumn( 11 | name: "ResourceCode", 12 | table: "SysMenus", 13 | maxLength: 30, 14 | nullable: true); 15 | migrationBuilder.AddColumn( 16 | name: "MenuType", 17 | table: "SysMenus", 18 | maxLength: 666, 19 | nullable: false, defaultValue: 0); 20 | } 21 | 22 | protected override void Down(MigrationBuilder migrationBuilder) 23 | { 24 | migrationBuilder.DropColumn( 25 | name: "ResourceCode", 26 | table: "SysMenus"); 27 | migrationBuilder.DropColumn( 28 | name: "MenuType", 29 | table: "SysMenus"); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin/Areas/Admin/Pages/SenparcTrace/DateLog.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | using Microsoft.AspNetCore.Mvc.RazorPages; 7 | using Senparc.Areas.Admin.SenparcTraceManager; 8 | using Senparc.Scf.AreaBase.Admin.Filters; 9 | 10 | namespace Senparc.Areas.Admin.Areas.Admin.Pages 11 | { 12 | [IgnoreAuth] 13 | public class SenparcTrace_DateLogModel : BaseAdminPageModel 14 | { 15 | public string Date { get; private set; } 16 | public List WeixinTraceItemList { get; private set; } 17 | 18 | public async Task OnGetAsync(string date) 19 | { 20 | await Task.CompletedTask; 21 | Date = date; 22 | WeixinTraceItemList = SenparcTraceHelper.GetAllLogs(date); 23 | } 24 | 25 | public async Task OnGetDetailAsync(string date) 26 | { 27 | await Task.CompletedTask; 28 | var weixinTraceItemList = SenparcTraceHelper.GetAllLogs(date); 29 | return Ok(weixinTraceItemList); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/echarts/src/component/toolbox/feature/Restore.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 'use strict'; 3 | 4 | var history = require('../../dataZoom/history'); 5 | 6 | function Restore(model) { 7 | this.model = model; 8 | } 9 | 10 | Restore.defaultOption = { 11 | show: true, 12 | icon: 'M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5', 13 | title: '还原' 14 | }; 15 | 16 | var proto = Restore.prototype; 17 | 18 | proto.onclick = function (ecModel, api, type) { 19 | history.clear(ecModel); 20 | 21 | api.dispatchAction({ 22 | type: 'restore', 23 | from: this.uid 24 | }); 25 | }; 26 | 27 | 28 | require('../featureManager').register('restore', Restore); 29 | 30 | 31 | require('../../../echarts').registerAction( 32 | {type: 'restore', event: 'restore', update: 'prepareAndUpdate'}, 33 | function (payload, ecModel) { 34 | ecModel.resetOption('recreate'); 35 | } 36 | ); 37 | 38 | return Restore; 39 | }); -------------------------------------------------------------------------------- /src/Senparc.Core/Models/VD/ErrorVD.Core.cs: -------------------------------------------------------------------------------- 1 | 2 | using System; 3 | 4 | namespace Senparc.Core.Models.VD 5 | { 6 | /// 7 | /// 全局所有的Error_ExceptionVD必须实现这个接口 8 | /// 9 | public interface IError_BaseVD : IBaseVD 10 | { 11 | ///// 12 | ///// 给Error_ExceptionVD用 13 | ///// 14 | //HandleErrorInfo HandleErrorInfo { get; set; } 15 | 16 | /// 17 | /// 给Error_Error404VD用 18 | /// 19 | string Url { get; set; } 20 | } 21 | 22 | 23 | public class Error_BaseVD : BaseVD, IError_BaseVD 24 | { 25 | /// 26 | /// 给Error_ExceptionVD用 27 | /// 28 | //public HandleErrorInfo HandleErrorInfo { get; set; } 29 | 30 | /// 31 | /// 给Error_Error404VD用 32 | /// 33 | public string Url { get; set; } 34 | } 35 | 36 | public class Error_ExceptionVD : Error_BaseVD 37 | { 38 | public string Message { get; set; } 39 | public Exception Exception { get; set; } 40 | } 41 | 42 | 43 | public class Error_Error404VD : Error_BaseVD 44 | { 45 | } 46 | } -------------------------------------------------------------------------------- /src/Senparc.Xscf.ExtensionAreaTemplate/Areas/Admin/Pages/MyApp/About.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model Senparc.Xscf.ExtensionAreaTemplate.Areas.MyApp.Pages.About 3 | @{ 4 | ViewData["Title"] = "扩展页面测试模块"; 5 | Layout = "_Layout_Vue"; 6 | } 7 | @section breadcrumbs{ 8 | 扩展模块 9 | 扩展页面测试模块 10 | 关于 11 | } 12 | 13 |
    14 | 15 | 16 |  关于 17 | 18 | 19 |

    @Model.XscfRegister.Description

    20 |
    21 | 隐藏菜单 22 |
    23 |
    24 |
    25 | @section scripts{ 26 | 36 | } 37 | 38 | -------------------------------------------------------------------------------- /src/Senparc.Areas.User.OldMvc/Models/HomeVD.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Senparc.Areas.User.Models.VD 4 | { 5 | public class BaseHomeVD : BaseUserVD 6 | { 7 | } 8 | 9 | public class Home_IndexVD : BaseHomeVD 10 | { 11 | } 12 | public class Home_RecoverVD : BaseHomeVD 13 | { 14 | } 15 | public class Home_LoginVD : BaseHomeVD 16 | { 17 | public string ReturnUrl { get; set; } 18 | public string Password { get; set; } 19 | public bool RememberMe { get; set; } 20 | public bool ShowCheckCode { get; set; } 21 | } 22 | public class Home_RegisterVD : BaseHomeVD 23 | { 24 | public new string UserName { get; set; } 25 | public string Email { get; set; } 26 | public string Password { get; set; } 27 | public string RePassword { get; set; } 28 | public string Phone { get; set; } 29 | 30 | public string PhoneCheck { get; set; } 31 | public string QrCodeCheck { get; set; } 32 | 33 | public int LastSeconds { get; set; } 34 | public string SmsToken { get; set; } 35 | public Guid RegGuid { get; set; } 36 | public string QrUrl { get; set; } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/lib/jquery-validation/LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | ===================== 3 | 4 | Copyright Jörn Zaefferer 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /src/Senparc.Threads/WurflThread.cs: -------------------------------------------------------------------------------- 1 | namespace Senparc.Threads 2 | { 3 | ///// 4 | ///// 异步初始化的线程 5 | ///// 6 | //public class WurflThread 7 | //{ 8 | // public WurflThread() 9 | // { 10 | // } 11 | 12 | // public void Run() 13 | // { 14 | // try 15 | // { 16 | // lock (WurflUtility.RegisterLock) 17 | // { 18 | // Thread.Sleep(10 * 1000);//停止10秒,先等第一个请求的页面通过 19 | 20 | // WurflUtility.RegisterState = "begin"; 21 | // var startTime = DateTime.Now; 22 | // Senparc.Utility.WurflUtility.RegisterWurfl(); 23 | // var endTime = DateTime.Now; 24 | // Senparc.Utility.WurflUtility.WurflStartupTime = (endTime - startTime).TotalSeconds.ToString("##.##"); 25 | // WurflUtility.RegisterState = "finish"; 26 | // } 27 | // } 28 | // catch (Exception ex) 29 | // { 30 | // WurflUtility.RegisterState = "failed"; 31 | // LogUtility.WebLogger.Error(ex.Message, ex); 32 | // } 33 | // } 34 | //} 35 | } 36 | -------------------------------------------------------------------------------- /src/Senparc.Web/wwwroot/ScfDocs/cn/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # next.js build output 61 | .next 62 | -------------------------------------------------------------------------------- /src/Senparc.Areas.Admin/Areas/Admin/Pages/Shared/_XscfModuleLayout_Menu.cshtml: -------------------------------------------------------------------------------- 1 | @* XSCF 模块页面的模板页的菜单部分 *@ 2 | @model IAreaRegister 3 | @using Senparc.Scf.Core.Areas; 4 | @using Microsoft.AspNetCore.Http; 5 | @inject IHttpContextAccessor _httpContextAccessor 6 | @functions{ 7 | /// 8 | /// 判断当前页面是否为 XSCF 子页面 9 | /// 10 | /// 11 | /// 12 | string CurrentXscfSubPage(string currentMenuUrl) 13 | { 14 | var pathAndQuery = Microsoft.AspNetCore.Http.Extensions.UriHelper.GetEncodedPathAndQuery(_httpContextAccessor.HttpContext.Request); 15 | if (pathAndQuery.Contains(currentMenuUrl, StringComparison.OrdinalIgnoreCase) || 16 | (ViewData["TempMenuUrl"] is string tempMenuUrl && currentMenuUrl.Contains(tempMenuUrl, StringComparison.OrdinalIgnoreCase))) 17 | { 18 | return "current-sub-page-xscf"; 19 | } 20 | return ""; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Senparc.Web.UI/MetaExtentions.cs: -------------------------------------------------------------------------------- 1 | using Senparc.Scf.Core.Models; 2 | using Microsoft.AspNetCore.Mvc.ViewFeatures; 3 | using Microsoft.AspNetCore.Html; 4 | using Senparc.Core.Models.VD; 5 | 6 | namespace System.Web.Mvc 7 | { 8 | public static class MetaExtentions 9 | { 10 | public static HtmlString RenderMeta(this HtmlHelper helper) 11 | { 12 | if (!(helper.ViewData.Model is IBaseVD)) 13 | { 14 | return new HtmlString(""); 15 | } 16 | 17 | IBaseVD model = helper.ViewData.Model as IBaseVD; 18 | MetaCollection metaCollection = model.MetaCollection as MetaCollection; 19 | string result = null; 20 | foreach (var item in metaCollection) 21 | { 22 | if (!string.IsNullOrEmpty(item.Value)) 23 | { 24 | result += string.Format("\r\n", item.Key.ToString(), 25 | //helper.AttributeEncode(item.Value) //COCONET 此方法已失效 26 | item.Value 27 | ); 28 | } 29 | } 30 | return new HtmlString(result); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/Senparc.Web/Pages/Shared/_ValidationScriptsPartial.cshtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 12 | 18 | 19 | --------------------------------------------------------------------------------