首页
留言板
壁纸
友链
直播
统计
推荐
百度一下
腾讯视频
Search
1
芯宇宙Excel仓库管理系统 三种数据库 | 三种网络部署模式
37 阅读
2
鞋服小店没有大单量,怎么找到低价寄快递渠道?
14 阅读
3
Excel二维码标签插件 固定资产/设备铭牌/合格证批量生成工具支持Excel、WPS,一键批量生成千百个二维码、条形码标签
14 阅读
4
别再花高价寄快递!鞋服商家专属低价寄件小程序,全国 3 元起、大件 20kg 仅 30 元,亲测靠谱
13 阅读
5
鞋服商家低价寄快递渠道推荐,电商寄件小程序散户也能享批发价
11 阅读
默认分类
资讯
技术
VBA
asp
php
分享
鞋运宝
VPS
阿里云
腾讯云
系统
windows
Linux
日常
登录
Search
标签搜索
寄快递
鞋服商家低价寄快递
低价寄快递渠道
VBA
鞋运宝
低价快递小程序
得物快递
EXCEL标签生成插件
鞋服电商
BootstrapBlazor
芯宇宙技术社
累计撰写
12
篇文章
累计收到
1
条评论
首页
栏目
默认分类
资讯
技术
VBA
asp
php
分享
鞋运宝
VPS
阿里云
腾讯云
系统
windows
Linux
日常
页面
留言板
壁纸
友链
直播
统计
推荐
百度一下
腾讯视频
搜索到
3
篇与
的结果
2026-07-29
.NET8 Blazor Server + BootstrapBlazor + PostgreSQL + Identity,同时兼容后续小程序 API复用业务代码,完全解耦
一、整体解决方案项目总览基于DDD 领域驱动设计分层架构,技术栈:.NET8 + Blazor Server + BootstrapBlazor + PostgreSQL + AspNetCore Identity + Redis缓存,支持后台管理、微信小程序 API 业务代码完全复用,低耦合易扩展。plaintextERP.Solution├─ 1. ERP.Domain.Shared # 领域共享层(最底层,无外部依赖)├─ 2. ERP.Application # 应用业务逻辑层├─ 3. ERP.Infrastructure # 基础设施实现层├─ 4. ERP.Web.Server # Blazor Server后台管理端(BootstrapBlazor)├─ 5. ERP.Web.Api # 小程序/移动端接口项目(可选扩展)测试项目├─ ERP.UnitTest # 单元测试(领域、应用层逻辑)└─ ERP.IntegrationTest # 集成测试(数据库完整流程)二、各分层完整目录、职责、依赖关系ERP.Domain.Shared 领域共享层定位:整个解决方案最底层,仅存放纯粹业务定义,无数据库、UI、第三方 SDK 依赖,所有上层项目统一引用复用。项目依赖:无任何内部项目引用plaintextERP.Domain.Shared├─ Entities # 数据库实体(PG表对应实体)│ ├─ Goods.cs│ ├─ Stock.cs│ ├─ SaleOrder.cs│ ├─ PurchaseOrder.cs│ ├─ Customer.cs│ └─ Supplier.cs├─ Abstractions # 抽象接口:仓储、领域服务(仅定义,不实现)│ ├─ IStockRepository.cs│ ├─ ISaleOrderRepository.cs│ ├─ IPurchaseRepository.cs│ └─ IUserRepository.cs├─ Dtos # 全局传输对象(入参/返回值,前后端、小程序通用)│ ├─ Stock│ │ ├─ StockQueryDto.cs│ │ └─ StockResultDto.cs│ ├─ Sale│ │ ├─ SaleCreateDto.cs│ │ └─ SaleListDto.cs│ └─ Purchase│ ├─ PurchaseInDto.cs│ └─ PurchaseResultDto.cs├─ Enums # 业务枚举:单据状态、库存变动类型、订单来源│ ├─ OrderStatus.cs│ └─ StockChangeType.cs├─ DomainServices # 纯领域计算逻辑(无DB依赖,单元测试核心)│ └─ StockCalculateService.cs # 库存扣减、加权平均成本计算└─ Common # 全局通用工具、统一返回模型├─ ApiResult.cs # 全局接口统一返回格式└─ ConstConfig.cs # 业务常量ERP.Application 应用业务逻辑层定位:封装全部业务流程,Blazor 后台、小程序 API 统一调用此层,业务代码仅编写一次,实现代码复用。项目依赖:仅引用 ERP.Domain.SharedplaintextERP.Application├─ Abstractions # 应用服务抽象接口│ ├─ IStockAppService.cs│ ├─ ISaleAppService.cs│ ├─ IPurchaseAppService.cs│ └─ IAuthAppService.cs # 登录、注册、权限校验业务接口├─ Services # 应用服务接口实现│ ├─ Stock│ │ └─ StockAppService.cs│ ├─ Sale│ │ └─ SaleAppService.cs│ ├─ Purchase│ │ └─ PurchaseAppService.cs│ └─ Auth│ ├─ AuthAppService.cs│ └─ AuthHelper.cs # 账号密码、JWT工具封装└─ Common└─ ServiceBase.cs # 应用服务基类,封装公共方法ERP.Infrastructure 基础设施层定位:所有外部依赖的实现层,隔离数据库、缓存、第三方 SDK,上层业务仅依赖抽象接口,不感知具体实现。项目依赖:引用 ERP.Domain.Shared + ERP.ApplicationplaintextERP.Infrastructure├─ Data│ ├─ AppDbContext.cs # PostgreSQL EF Core数据库上下文│ ├─ Migrations # EF数据库迁移文件│ └─ SeedData # 系统初始化种子数据(管理员账号、商品分类)├─ Repositories # 仓储接口实现,实现Domain层IxxxRepository│ ├─ StockRepository.cs│ ├─ SaleOrderRepository.cs│ ├─ PurchaseRepository.cs│ └─ UserRepository.cs├─ Identity # AspNetCore Identity 用户角色扩展│ └─ AppUser.cs├─ Cache # Redis缓存实现(库存缓存、基础数据缓存)│ └─ RedisCacheService.cs└─ ExternalServices # 第三方外部服务对接├─ WeChatMini # 微信小程序SDK(登录、支付)└─ ExcelExport # Excel单据导出工具类ERP.Web.Server Blazor Server 后台管理端定位:企业后台管理系统,基于 BootstrapBlazor 组件库,提供完整进销存可视化页面、权限管理。项目依赖:引用 ERP.Domain.Shared + ERP.Application + ERP.InfrastructureplaintextERP.Web.Server├─ Components # 页面、公共组件(Blazor核心目录)│ ├─ Pages # 所有业务页面│ │ ├─ Account # 账号相关页面│ │ │ ├─ Login.razor│ │ │ └─ Register.razor│ │ ├─ Stock # 库存管理页面│ │ │ ├─ StockIndex.razor│ │ │ └─ StockWarning.razor│ │ ├─ Sale # 销售开单、销售记录│ │ ├─ Purchase # 采购入库、采购单据│ │ ├─ CustomerSupplier # 客户、供应商档案管理│ │ └─ System # 系统设置、角色权限、参数配置│ ├─ Layouts # 全局布局母版│ │ ├─ MainLayout.razor # 后台主布局(侧边栏菜单+顶部导航)│ │ ├─ LoginLayout.razor # 登录页面独立布局│ │ └─ AuthorizeLayout.razor # 全局权限拦截布局│ ├─ Shared # 全局复用弹窗、公共组件│ │ ├─ StockDialog.razor│ │ └─ SaleOrderDialog.razor│ └─ App.razor # 全局外壳,内置BootstrapBlazorRoot根组件├─ wwwroot # 静态资源文件(仅Web.Server存放静态资源)│ ├─ css # 编译后样式文件│ ├─ scss # 原始SCSS样式源码│ ├─ images # 图片资源│ │ ├─ bg # 页面背景图│ │ └─ icon # 功能图标│ └─ js # 自定义JS脚本├─ Services # Blazor页面专属辅助服务│ └─ GlobalStateService.cs # 全局登录用户状态管理└─ Program.cs # 项目入口:DI依赖注入、中间件、BootstrapBlazor配置ERP.Web.Api 小程序 / 移动端接口项目(可选)定位:对外提供 RESTful 接口,供微信小程序、APP、H5 调用,底层完全复用 Domain、Application、Infrastructure,无需重复编写业务逻辑。项目依赖:引用 ERP.Domain.Shared + ERP.Application + ERP.InfrastructureplaintextERP.Web.Api├─ Controllers│ ├─ MiniProgramController.cs # 小程序登录、商品查询、下单接口│ └─ StockController.cs└─ Program.cs # API项目DI、中间件、JWT鉴权配置三、测试项目目录ERP.UnitTest 单元测试仅测试领域层、应用层纯逻辑,使用 Moq 模拟仓储,无需真实数据库。plaintextERP.UnitTest├─ DomainTests # 领域逻辑测试(库存加权成本计算)└─ ApplicationTests # 应用服务业务流程测试(销售、采购、登录逻辑)ERP.IntegrationTest 集成测试使用内存数据库完成完整链路测试,验证仓储、数据库、业务流程联动。plaintextERP.IntegrationTest├─ Factory # TestServer测试工厂,统一构建测试服务容器└─ BusinessTests # 完整业务流程集成测试(采购入库、销售出库全链路)四、项目依赖单向约束(禁止反向依赖)markdownERP.Domain.Shared:无内部项目引用(最底层)ERP.Application:仅引用 ERP.Domain.SharedERP.Infrastructure:引用 ERP.Domain.Shared + ERP.ApplicationERP.Web.Server / ERP.Web.Api:引用全部下层三层测试项目:引用 ERP.Domain.Shared + ERP.Application + ERP.Infrastructure五、分层架构核心优势业务代码完全复用库存、销售、账号登录逻辑仅编写一次,Blazor 后台、微信小程序 API 同步复用,无重复代码,降低维护成本。职责单一,分层解耦数据库操作仅在 Infrastructure;业务流程、业务规则仅在 Application/Domain;UI 页面、交互逻辑仅在 Blazor Web 项目。单元测试友好Domain、Application 层无数据库、UI 强耦合依赖,可快速编写单元测试,覆盖库存计算、单据核心业务逻辑。横向扩展能力强后续新增 APP、H5、第三方对接接口,仅需新建 WebApi 项目,底层领域、业务、基础设施代码无需改动。完美适配 BootstrapBlazor所有页面、布局、弹窗组件统一规范存放,静态资源集中管理,适配 Blazor Server 组件化开发模式。六、开发规范 & 避坑清单禁止在 Blazor 页面直接编写库存计算、单据业务逻辑,全部抽离至 Application 应用服务;禁止页面直接操作 DbContext 数据库上下文,所有数据操作通过 Domain 层仓储接口完成;数据库实体统一存放于 Domain.Shared,Web/Api 项目禁止重复定义实体类;图片、样式、JS 静态资源仅允许放置在 ERP.Web.Server/wwwroot,其他项目不存放静态资源;所有入参、返回 DTO 统一在 Domain.Shared 定义,后台页面、小程序接口共用一套传输模型;外部第三方依赖(数据库、Redis、微信 SDK)全部封装在 Infrastructure 层,上层业务仅依赖抽象接口。
2026年07月29日
1 阅读
0 评论
0 点赞
2026-07-29
阿里云服务器
暂无简介
2026年07月29日
2 阅读
0 评论
1 点赞
2026-07-29
cccccc
<?php // 引入Typecho核心,读取插件配置 define('__TYPECHO_ROOT_DIR__', dirname(__FILE__) . '/../../../../'); require_once __TYPECHO_ROOT_DIR__ . '/config.inc.php'; require_once __TYPECHO_ROOT_DIR__ . '/Typecho/Widget/Helper.php'; // 获取UEditor插件全部后台配置 $pluginConf = Helper::options()->plugin('UEditor'); // 输出JS文件头 header("Content-Type: application/javascript; charset=utf-8"); ?> window.UEDITOR_CONFIG = { // 上传后端接口地址 serverUrl: "<?php echo Typecho_Common::url('UEditor/ueditor/controller.php', Helper::options()->pluginUrl) ?>", // 读取插件后台云存储配置 cloud: "<?php echo $pluginConf->cloud ?? '0' ?>", cloud_only: "<?php echo $pluginConf->cloud_only ?? '' ?>", cloud_url: "<?php echo $pluginConf->cloud_url ?? '' ?>", cloud_bucket: "<?php echo $pluginConf->cloud_bucket ?? '' ?>", cloud_user: "<?php echo $pluginConf->cloud_user ?? '' ?>", cloud_password: "<?php echo $pluginConf->cloud_password ?? '' ?>", cloud_qcloud_appid: "<?php echo $pluginConf->cloud_qcloud_appid ?? '' ?>", cloud_qcloud_region: "<?php echo $pluginConf->cloud_qcloud_region ?? '' ?>", cloud_suffix: "<?php echo $pluginConf->cloud_suffix ?? '' ?>", // UEditor基础上传配置 toolbars: [ ['source', 'undo', 'redo', 'bold', 'italic', 'underline', 'strikethrough', 'forecolor', 'backcolor'], ['insertimage', 'insertvideo', 'attachment', 'link', 'unlink'], ['paragraph', 'fontsize', 'justifycenter', 'justifyleft', 'justifyright'], ['table', 'blockquote', 'code', 'horizontal', 'emotion'] ], autoHeightEnabled: true, imageActionName: "uploadimage", imageFieldName: "upfile", imageMaxSize: 10485760, imageAllowFiles: [".png", ".jpg", ".jpeg", ".gif", ".bmp", ".webp"] };
2026年07月29日
3 阅读
0 评论
0 点赞